@@ -53,28 +53,28 @@ SPIClass::SPIClass(uint32_t mosi, uint32_t miso, uint32_t sclk, uint32_t ssel)
5353
5454/* *
5555 * @brief Initialize the SPI instance.
56+ * @param device: device mode (optional), SPI_MASTER or SPI_SLAVE. Default is master.
5657 */
57- void SPIClass::begin (void )
58+ void SPIClass::begin (SPIDeviceMode device )
5859{
5960 _spi.handle .State = HAL_SPI_STATE_RESET;
6061 _spiSettings = SPISettings ();
61- spi_init (&_spi, _spiSettings.clockFreq ,
62- _spiSettings.dataMode ,
63- _spiSettings.bitOrder );
62+ _spiSettings.deviceMode = device;
63+ spi_init (&_spi, _spiSettings. clockFreq , _spiSettings.dataMode ,
64+ _spiSettings.bitOrder , _spiSettings. deviceMode );
6465}
6566
6667/* *
6768 * @brief This function should be used to configure the SPI instance in case you
6869 * don't use the default parameters set by the begin() function.
69- * @param settings: SPI settings(clock speed, bit order, data mode).
70+ * @param settings: SPI settings(clock speed, bit order, data mode, device mode ).
7071 */
7172void SPIClass::beginTransaction (SPISettings settings)
7273{
7374 if (_spiSettings != settings) {
7475 _spiSettings = settings;
75- spi_init (&_spi, _spiSettings.clockFreq ,
76- _spiSettings.dataMode ,
77- _spiSettings.bitOrder );
76+ spi_init (&_spi, _spiSettings.clockFreq , _spiSettings.dataMode ,
77+ _spiSettings.bitOrder , _spiSettings.deviceMode );
7878 }
7979}
8080
@@ -103,9 +103,8 @@ void SPIClass::setBitOrder(BitOrder bitOrder)
103103{
104104 _spiSettings.bitOrder = bitOrder;
105105
106- spi_init (&_spi, _spiSettings.clockFreq ,
107- _spiSettings.dataMode ,
108- _spiSettings.bitOrder );
106+ spi_init (&_spi, _spiSettings.clockFreq , _spiSettings.dataMode ,
107+ _spiSettings.bitOrder , _spiSettings.deviceMode );
109108}
110109
111110/* *
@@ -127,9 +126,8 @@ void SPIClass::setDataMode(uint8_t mode)
127126void SPIClass::setDataMode (SPIMode mode)
128127{
129128 _spiSettings.dataMode = mode;
130- spi_init (&_spi, _spiSettings.clockFreq ,
131- _spiSettings.dataMode ,
132- _spiSettings.bitOrder );
129+ spi_init (&_spi, _spiSettings.clockFreq , _spiSettings.dataMode ,
130+ _spiSettings.bitOrder , _spiSettings.deviceMode );
133131}
134132
135133/* *
@@ -147,9 +145,8 @@ void SPIClass::setClockDivider(uint8_t divider)
147145 _spiSettings.clockFreq = spi_getClkFreq (&_spi) / divider;
148146 }
149147
150- spi_init (&_spi, _spiSettings.clockFreq ,
151- _spiSettings.dataMode ,
152- _spiSettings.bitOrder );
148+ spi_init (&_spi, _spiSettings.clockFreq , _spiSettings.dataMode ,
149+ _spiSettings.bitOrder , _spiSettings.deviceMode );
153150}
154151
155152/* *
0 commit comments