@@ -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 = DEFAULT_SPI_SETTINGS;
61
+ spi_init (&_spi, _spiSettings.getClockFreq (),
62
+ _spiSettings.getDataMode (),
63
+ _spiSettings.getBitOrder ());
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.getClockFreq (),
76
+ _spiSettings.getDataMode (),
77
+ _spiSettings.getBitOrder ());
78
+ }
80
79
}
81
80
82
81
/* *
@@ -102,39 +101,37 @@ void SPIClass::end()
102
101
*/
103
102
void SPIClass::setBitOrder (BitOrder bitOrder)
104
103
{
105
- _spiSettings.bOrder = bitOrder;
104
+ _spiSettings.setBitOrder ( bitOrder) ;
106
105
107
- spi_init (&_spi, _spiSettings.clk ,
108
- _spiSettings.dMode ,
109
- _spiSettings.bOrder );
106
+ spi_init (&_spi, _spiSettings.getClockFreq () ,
107
+ _spiSettings.getDataMode () ,
108
+ _spiSettings.getBitOrder () );
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
+
123
+ void SPIClass::setDataMode (uint8_t mode)
124
124
{
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
- }
125
+ setDataMode ((SPIMode)mode);
126
+ }
134
127
135
- spi_init (&_spi, _spiSettings.clk ,
136
- _spiSettings.dMode ,
137
- _spiSettings.bOrder );
128
+ void SPIClass::setDataMode (SPIMode mode)
129
+ {
130
+ _spiSettings.setDataMode (mode);
131
+
132
+ spi_init (&_spi, _spiSettings.getClockFreq (),
133
+ _spiSettings.getDataMode (),
134
+ _spiSettings.getBitOrder ());
138
135
}
139
136
140
137
/* *
@@ -146,15 +143,15 @@ void SPIClass::setDataMode(uint8_t _mode)
146
143
void SPIClass::setClockDivider (uint8_t _divider)
147
144
{
148
145
if (_divider == 0 ) {
149
- _spiSettings.clk = SPI_SPEED_CLOCK_DEFAULT;
146
+ _spiSettings.setClockFreq ( SPI_SPEED_CLOCK_DEFAULT) ;
150
147
} else {
151
- /* Get clk freq of the SPI instance and compute it */
152
- _spiSettings.clk = spi_getClkFreq (&_spi) / _divider;
148
+ /* Get clock freq of the SPI instance and compute it */
149
+ _spiSettings.setClockFreq ( spi_getClkFreq (&_spi) / _divider) ;
153
150
}
154
151
155
- spi_init (&_spi, _spiSettings.clk ,
156
- _spiSettings.dMode ,
157
- _spiSettings.bOrder );
152
+ spi_init (&_spi, _spiSettings.getClockFreq () ,
153
+ _spiSettings.getDataMode () ,
154
+ _spiSettings.getBitOrder () );
158
155
}
159
156
160
157
/* *
@@ -163,9 +160,9 @@ void SPIClass::setClockDivider(uint8_t _divider)
163
160
* @param data: byte to send.
164
161
* @return byte received from the slave.
165
162
*/
166
- byte SPIClass::transfer (uint8_t data)
163
+ uint8_t SPIClass::transfer (uint8_t data)
167
164
{
168
- spi_transfer (&_spi, &data, sizeof (uint8_t ), SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
165
+ spi_transfer (&_spi, &data, sizeof (uint8_t ), SPI_TRANSFER_TIMEOUT, _spiSettings.getSkipRecv () );
169
166
return data;
170
167
}
171
168
@@ -179,14 +176,14 @@ uint16_t SPIClass::transfer16(uint16_t data)
179
176
{
180
177
uint16_t tmp;
181
178
182
- if (_spiSettings.bOrder ) {
179
+ if (_spiSettings.getBitOrder () ) {
183
180
tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
184
181
data = tmp;
185
182
}
186
183
spi_transfer (&_spi, (uint8_t *)&data, sizeof (uint16_t ),
187
- SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
184
+ SPI_TRANSFER_TIMEOUT, _spiSettings.getSkipRecv () );
188
185
189
- if (_spiSettings.bOrder ) {
186
+ if (_spiSettings.getBitOrder () ) {
190
187
tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
191
188
data = tmp;
192
189
}
@@ -197,22 +194,30 @@ uint16_t SPIClass::transfer16(uint16_t data)
197
194
/* *
198
195
* @brief Transfer several bytes. Only one buffer used to send and receive data.
199
196
* 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
197
+ * @param buf : pointer to the bytes to send. The bytes received are copy in
201
198
* this buffer.
202
- * @param _count : number of bytes to send/receive.
199
+ * @param count : number of bytes to send/receive.
203
200
*/
204
- void SPIClass::transfer (void *_buf , size_t _count )
201
+ void SPIClass::transfer (void *buf , size_t count )
205
202
{
206
203
if ((count != 0 ) && (buf != NULL )) {
207
204
spi_transfer (&_spi, ((uint8_t *)buf), count,
208
- SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
205
+ SPI_TRANSFER_TIMEOUT, _spiSettings.getSkipRecv () );
209
206
}
210
207
}
211
208
212
209
/* *
213
210
* @brief Not implemented.
214
211
*/
215
- void SPIClass::usingInterrupt (uint8_t interruptNumber)
212
+ void SPIClass::usingInterrupt (int interruptNumber)
213
+ {
214
+ UNUSED (interruptNumber);
215
+ }
216
+
217
+ /* *
218
+ * @brief Not implemented.
219
+ */
220
+ void SPIClass::notUsingInterrupt (int interruptNumber)
216
221
{
217
222
UNUSED (interruptNumber);
218
223
}
0 commit comments