@@ -57,9 +57,10 @@ SPIClass::SPIClass(uint32_t mosi, uint32_t miso, uint32_t sclk, uint32_t ssel)
57
57
void SPIClass::begin (void )
58
58
{
59
59
_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 );
63
64
}
64
65
65
66
/* *
@@ -69,14 +70,12 @@ void SPIClass::begin(void)
69
70
*/
70
71
void SPIClass::beginTransaction (SPISettings settings)
71
72
{
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
+ }
80
79
}
81
80
82
81
/* *
@@ -90,71 +89,67 @@ void SPIClass::endTransaction(void)
90
89
/* *
91
90
* @brief Deinitialize the SPI instance and stop it.
92
91
*/
93
- void SPIClass::end ()
92
+ void SPIClass::end (void )
94
93
{
95
94
spi_deinit (&_spi);
96
95
}
97
96
98
97
/* *
99
98
* @brief Deprecated function.
100
99
* Configure the bit order: MSB first or LSB first.
101
- * @param _bitOrder : MSBFIRST or LSBFIRST
100
+ * @param bitOrder : MSBFIRST or LSBFIRST
102
101
*/
103
102
void SPIClass::setBitOrder (BitOrder bitOrder)
104
103
{
105
- _spiSettings.bOrder = bitOrder;
104
+ _spiSettings.bitOrder = bitOrder;
106
105
107
- spi_init (&_spi, _spiSettings.clk ,
108
- _spiSettings.dMode ,
109
- _spiSettings.bOrder );
106
+ spi_init (&_spi, _spiSettings.clockFreq ,
107
+ _spiSettings.dataMode ,
108
+ _spiSettings.bitOrder );
110
109
}
111
110
112
111
/* *
113
112
* @brief Deprecated function.
114
113
* 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
116
115
* @note
117
116
* Mode Clock Polarity (CPOL) Clock Phase (CPHA)
118
117
* SPI_MODE0 0 0
119
118
* SPI_MODE1 0 1
120
119
* SPI_MODE2 1 0
121
120
* SPI_MODE3 1 1
122
121
*/
123
- void SPIClass::setDataMode (uint8_t _mode )
122
+ void SPIClass::setDataMode (uint8_t mode )
124
123
{
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
+ }
134
126
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 );
138
133
}
139
134
140
135
/* *
141
136
* @brief Deprecated function.
142
137
* 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.
144
139
* If 0, default SPI speed is used.
145
140
*/
146
- void SPIClass::setClockDivider (uint8_t _divider )
141
+ void SPIClass::setClockDivider (uint8_t divider )
147
142
{
148
- if (_divider == 0 ) {
149
- _spiSettings.clk = SPI_SPEED_CLOCK_DEFAULT;
143
+ if (divider == 0 ) {
144
+ _spiSettings.clockFreq = SPI_SPEED_CLOCK_DEFAULT;
150
145
} else {
151
146
/* Get clk freq of the SPI instance and compute it */
152
- _spiSettings.clk = spi_getClkFreq (&_spi) / _divider ;
147
+ _spiSettings.clockFreq = spi_getClkFreq (&_spi) / divider ;
153
148
}
154
149
155
- spi_init (&_spi, _spiSettings.clk ,
156
- _spiSettings.dMode ,
157
- _spiSettings.bOrder );
150
+ spi_init (&_spi, _spiSettings.clockFreq ,
151
+ _spiSettings.dataMode ,
152
+ _spiSettings.bitOrder );
158
153
}
159
154
160
155
/* *
@@ -163,7 +158,7 @@ void SPIClass::setClockDivider(uint8_t _divider)
163
158
* @param data: byte to send.
164
159
* @return byte received from the slave.
165
160
*/
166
- byte SPIClass::transfer (uint8_t data)
161
+ uint8_t SPIClass::transfer (uint8_t data)
167
162
{
168
163
spi_transfer (&_spi, &data, sizeof (uint8_t ), SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
169
164
return data;
@@ -179,14 +174,14 @@ uint16_t SPIClass::transfer16(uint16_t data)
179
174
{
180
175
uint16_t tmp;
181
176
182
- if (_spiSettings.bOrder ) {
177
+ if (_spiSettings.bitOrder ) {
183
178
tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
184
179
data = tmp;
185
180
}
186
181
spi_transfer (&_spi, (uint8_t *)&data, sizeof (uint16_t ),
187
182
SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
188
183
189
- if (_spiSettings.bOrder ) {
184
+ if (_spiSettings.bitOrder ) {
190
185
tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
191
186
data = tmp;
192
187
}
@@ -197,11 +192,11 @@ uint16_t SPIClass::transfer16(uint16_t data)
197
192
/* *
198
193
* @brief Transfer several bytes. Only one buffer used to send and receive data.
199
194
* 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
201
196
* this buffer.
202
- * @param _count : number of bytes to send/receive.
197
+ * @param count : number of bytes to send/receive.
203
198
*/
204
- void SPIClass::transfer (void *_buf , size_t _count )
199
+ void SPIClass::transfer (void *buf , size_t count )
205
200
{
206
201
if ((count != 0 ) && (buf != NULL )) {
207
202
spi_transfer (&_spi, ((uint8_t *)buf), count,
@@ -212,7 +207,15 @@ void SPIClass::transfer(void *_buf, size_t _count)
212
207
/* *
213
208
* @brief Not implemented.
214
209
*/
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)
216
219
{
217
220
UNUSED (interruptNumber);
218
221
}
0 commit comments