@@ -46,28 +46,28 @@ SPIClass::SPIClass(uint32_t mosi, uint32_t miso, uint32_t sclk, uint32_t ssel)
4646
4747/* *
4848 * @brief Initialize the SPI instance.
49+ * @param device: device mode (optional), SPI_MASTER or SPI_SLAVE. Default is master.
4950 */
50- void SPIClass::begin (void )
51+ void SPIClass::begin (SPIDeviceMode device )
5152{
5253 _spi.handle .State = HAL_SPI_STATE_RESET;
5354 _spiSettings = SPISettings ();
54- spi_init (&_spi, _spiSettings.clockFreq ,
55- _spiSettings.dataMode ,
56- _spiSettings.bitOrder );
55+ _spiSettings.deviceMode = device;
56+ spi_init (&_spi, _spiSettings. clockFreq , _spiSettings.dataMode ,
57+ _spiSettings.bitOrder , _spiSettings. deviceMode );
5758}
5859
5960/* *
6061 * @brief This function should be used to configure the SPI instance in case you
6162 * don't use the default parameters set by the begin() function.
62- * @param settings: SPI settings(clock speed, bit order, data mode).
63+ * @param settings: SPI settings(clock speed, bit order, data mode, device mode ).
6364 */
6465void SPIClass::beginTransaction (SPISettings settings)
6566{
6667 if (_spiSettings != settings) {
6768 _spiSettings = settings;
68- spi_init (&_spi, _spiSettings.clockFreq ,
69- _spiSettings.dataMode ,
70- _spiSettings.bitOrder );
69+ spi_init (&_spi, _spiSettings.clockFreq , _spiSettings.dataMode ,
70+ _spiSettings.bitOrder , _spiSettings.deviceMode );
7171 }
7272}
7373
@@ -96,9 +96,8 @@ void SPIClass::setBitOrder(BitOrder bitOrder)
9696{
9797 _spiSettings.bitOrder = bitOrder;
9898
99- spi_init (&_spi, _spiSettings.clockFreq ,
100- _spiSettings.dataMode ,
101- _spiSettings.bitOrder );
99+ spi_init (&_spi, _spiSettings.clockFreq , _spiSettings.dataMode ,
100+ _spiSettings.bitOrder , _spiSettings.deviceMode );
102101}
103102
104103/* *
@@ -120,9 +119,8 @@ void SPIClass::setDataMode(uint8_t mode)
120119void SPIClass::setDataMode (SPIMode mode)
121120{
122121 _spiSettings.dataMode = mode;
123- spi_init (&_spi, _spiSettings.clockFreq ,
124- _spiSettings.dataMode ,
125- _spiSettings.bitOrder );
122+ spi_init (&_spi, _spiSettings.clockFreq , _spiSettings.dataMode ,
123+ _spiSettings.bitOrder , _spiSettings.deviceMode );
126124}
127125
128126/* *
@@ -140,9 +138,8 @@ void SPIClass::setClockDivider(uint8_t divider)
140138 _spiSettings.clockFreq = spi_getClkFreq (&_spi) / divider;
141139 }
142140
143- spi_init (&_spi, _spiSettings.clockFreq ,
144- _spiSettings.dataMode ,
145- _spiSettings.bitOrder );
141+ spi_init (&_spi, _spiSettings.clockFreq , _spiSettings.dataMode ,
142+ _spiSettings.bitOrder , _spiSettings.deviceMode );
146143}
147144
148145/* *
0 commit comments