@@ -57,9 +57,10 @@ SPIClass::SPIClass(uint32_t mosi, uint32_t miso, uint32_t sclk, uint32_t ssel)
5757void SPIClass::begin (void )
5858{
5959 _spi.handle .State = HAL_SPI_STATE_RESET;
60- spi_init (&_spi, _spiSettings.clk ,
61- _spiSettings.dMode ,
62- _spiSettings.bOrder );
60+ _spiSettings = SPISettings ();
61+ spi_init (&_spi, _spiSettings.clockFreq ,
62+ _spiSettings.dataMode ,
63+ _spiSettings.bitOrder );
6364}
6465
6566/* *
@@ -69,14 +70,12 @@ void SPIClass::begin(void)
6970 */
7071void SPIClass::beginTransaction (SPISettings settings)
7172{
72- _spiSettings.clk = settings.clk ;
73- _spiSettings.dMode = settings.dMode ;
74- _spiSettings.bOrder = settings.bOrder ;
75- _spiSettings.noReceive = settings.noReceive ;
76-
77- spi_init (&_spi, _spiSettings.clk ,
78- _spiSettings.dMode ,
79- _spiSettings.bOrder );
73+ if (_spiSettings != settings) {
74+ _spiSettings = settings;
75+ spi_init (&_spi, _spiSettings.clockFreq ,
76+ _spiSettings.dataMode ,
77+ _spiSettings.bitOrder );
78+ }
8079}
8180
8281/* *
@@ -90,71 +89,67 @@ void SPIClass::endTransaction(void)
9089/* *
9190 * @brief Deinitialize the SPI instance and stop it.
9291 */
93- void SPIClass::end ()
92+ void SPIClass::end (void )
9493{
9594 spi_deinit (&_spi);
9695}
9796
9897/* *
9998 * @brief Deprecated function.
10099 * Configure the bit order: MSB first or LSB first.
101- * @param _bitOrder : MSBFIRST or LSBFIRST
100+ * @param bitOrder : MSBFIRST or LSBFIRST
102101 */
103102void SPIClass::setBitOrder (BitOrder bitOrder)
104103{
105- _spiSettings.bOrder = bitOrder;
104+ _spiSettings.bitOrder = bitOrder;
106105
107- spi_init (&_spi, _spiSettings.clk ,
108- _spiSettings.dMode ,
109- _spiSettings.bOrder );
106+ spi_init (&_spi, _spiSettings.clockFreq ,
107+ _spiSettings.dataMode ,
108+ _spiSettings.bitOrder );
110109}
111110
112111/* *
113112 * @brief Deprecated function.
114113 * Configure the data mode (clock polarity and clock phase)
115- * @param _mode : SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3
114+ * @param mode : SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3
116115 * @note
117116 * Mode Clock Polarity (CPOL) Clock Phase (CPHA)
118117 * SPI_MODE0 0 0
119118 * SPI_MODE1 0 1
120119 * SPI_MODE2 1 0
121120 * SPI_MODE3 1 1
122121 */
123- void SPIClass::setDataMode (uint8_t _mode )
122+ void SPIClass::setDataMode (uint8_t mode )
124123{
125- if (SPI_MODE0 == _mode) {
126- _spiSettings.dMode = SPI_MODE_0;
127- } else if (SPI_MODE1 == _mode) {
128- _spiSettings.dMode = SPI_MODE_1;
129- } else if (SPI_MODE2 == _mode) {
130- _spiSettings.dMode = SPI_MODE_2;
131- } else if (SPI_MODE3 == _mode) {
132- _spiSettings.dMode = SPI_MODE_3;
133- }
124+ setDataMode ((SPIMode)mode);
125+ }
134126
135- spi_init (&_spi, _spiSettings.clk ,
136- _spiSettings.dMode ,
137- _spiSettings.bOrder );
127+ void SPIClass::setDataMode (SPIMode mode)
128+ {
129+ _spiSettings.dataMode = mode;
130+ spi_init (&_spi, _spiSettings.clockFreq ,
131+ _spiSettings.dataMode ,
132+ _spiSettings.bitOrder );
138133}
139134
140135/* *
141136 * @brief Deprecated function.
142137 * Configure the clock speed
143- * @param _divider : the SPI clock can be divided by values from 1 to 255.
138+ * @param divider : the SPI clock can be divided by values from 1 to 255.
144139 * If 0, default SPI speed is used.
145140 */
146- void SPIClass::setClockDivider (uint8_t _divider )
141+ void SPIClass::setClockDivider (uint8_t divider )
147142{
148- if (_divider == 0 ) {
149- _spiSettings.clk = SPI_SPEED_CLOCK_DEFAULT;
143+ if (divider == 0 ) {
144+ _spiSettings.clockFreq = SPI_SPEED_CLOCK_DEFAULT;
150145 } else {
151146 /* Get clk freq of the SPI instance and compute it */
152- _spiSettings.clk = spi_getClkFreq (&_spi) / _divider ;
147+ _spiSettings.clockFreq = spi_getClkFreq (&_spi) / divider ;
153148 }
154149
155- spi_init (&_spi, _spiSettings.clk ,
156- _spiSettings.dMode ,
157- _spiSettings.bOrder );
150+ spi_init (&_spi, _spiSettings.clockFreq ,
151+ _spiSettings.dataMode ,
152+ _spiSettings.bitOrder );
158153}
159154
160155/* *
@@ -163,7 +158,7 @@ void SPIClass::setClockDivider(uint8_t _divider)
163158 * @param data: byte to send.
164159 * @return byte received from the slave.
165160 */
166- byte SPIClass::transfer (uint8_t data)
161+ uint8_t SPIClass::transfer (uint8_t data)
167162{
168163 spi_transfer (&_spi, &data, sizeof (uint8_t ), SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
169164 return data;
@@ -179,14 +174,14 @@ uint16_t SPIClass::transfer16(uint16_t data)
179174{
180175 uint16_t tmp;
181176
182- if (_spiSettings.bOrder ) {
177+ if (_spiSettings.bitOrder ) {
183178 tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
184179 data = tmp;
185180 }
186181 spi_transfer (&_spi, (uint8_t *)&data, sizeof (uint16_t ),
187182 SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
188183
189- if (_spiSettings.bOrder ) {
184+ if (_spiSettings.bitOrder ) {
190185 tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
191186 data = tmp;
192187 }
@@ -197,11 +192,11 @@ uint16_t SPIClass::transfer16(uint16_t data)
197192/* *
198193 * @brief Transfer several bytes. Only one buffer used to send and receive data.
199194 * begin() or beginTransaction() must be called at least once before.
200- * @param _buf : pointer to the bytes to send. The bytes received are copy in
195+ * @param buf : pointer to the bytes to send. The bytes received are copy in
201196 * this buffer.
202- * @param _count : number of bytes to send/receive.
197+ * @param count : number of bytes to send/receive.
203198 */
204- void SPIClass::transfer (void *_buf , size_t _count )
199+ void SPIClass::transfer (void *buf , size_t count )
205200{
206201 if ((count != 0 ) && (buf != NULL )) {
207202 spi_transfer (&_spi, ((uint8_t *)buf), count,
@@ -212,7 +207,15 @@ void SPIClass::transfer(void *_buf, size_t _count)
212207/* *
213208 * @brief Not implemented.
214209 */
215- void SPIClass::usingInterrupt (uint8_t interruptNumber)
210+ void SPIClass::usingInterrupt (int interruptNumber)
211+ {
212+ UNUSED (interruptNumber);
213+ }
214+
215+ /* *
216+ * @brief Not implemented.
217+ */
218+ void SPIClass::notUsingInterrupt (int interruptNumber)
216219{
217220 UNUSED (interruptNumber);
218221}
0 commit comments