@@ -213,10 +213,12 @@ void spi_enable_pins(spi_t *obj, uint8_t enable, PinName mosi, PinName miso, Pin
213
213
obj -> spi .spi -> ROUTELOC0 &= ~_USART_ROUTELOC0_CSLOC_MASK ;
214
214
obj -> spi .spi -> ROUTELOC0 |= pin_location (cs , PinMap_SPI_MOSI )<<_USART_ROUTELOC0_CSLOC_SHIFT ;
215
215
}
216
+ obj -> spi .location = obj -> spi .spi -> ROUTELOC0 ;
217
+ obj -> spi .route = route ;
216
218
obj -> spi .spi -> ROUTEPEN = route ;
217
219
}
218
220
#else
219
- uint32_t route = USART_ROUTE_CLKPEN | ( obj -> spi . location << _USART_ROUTE_LOCATION_SHIFT ) ;
221
+ uint32_t route = USART_ROUTE_CLKPEN ;
220
222
221
223
if (mosi != NC ) {
222
224
route |= USART_ROUTE_TXPEN ;
@@ -227,7 +229,9 @@ void spi_enable_pins(spi_t *obj, uint8_t enable, PinName mosi, PinName miso, Pin
227
229
if (!obj -> spi .master ) {
228
230
route |= USART_ROUTE_CSPEN ;
229
231
}
232
+ route |= obj -> spi .location << _USART_ROUTE_LOCATION_SHIFT ;
230
233
obj -> spi .spi -> ROUTE = route ;
234
+ obj -> spi .route = route ;
231
235
}
232
236
#endif
233
237
void spi_enable (spi_t * obj , uint8_t enable )
@@ -324,25 +328,17 @@ void spi_format(spi_t *obj, int bits, int mode, int slave)
324
328
default :
325
329
clockMode = usartClockMode0 ;
326
330
}
327
-
328
- //save state
329
- #ifdef _USART_ROUTEPEN_RESETVALUE
330
- uint32_t route = obj -> spi .spi -> ROUTEPEN ;
331
- uint32_t loc = obj -> spi .spi -> ROUTELOC0 ;
332
- #else
333
- uint32_t route = obj -> spi .spi -> ROUTE ;
334
- #endif
335
331
uint32_t iflags = obj -> spi .spi -> IEN ;
336
332
bool enabled = (obj -> spi .spi -> STATUS & (USART_STATUS_RXENS | USART_STATUS_TXENS )) != 0 ;
337
333
338
334
usart_init (obj , 100000 , databits , (slave ? false : true), clockMode );
339
335
340
336
//restore state
341
337
#ifdef _USART_ROUTEPEN_RESETVALUE
342
- obj -> spi .spi -> ROUTEPEN = route ;
343
- obj -> spi .spi -> ROUTELOC0 = loc ;
338
+ obj -> spi .spi -> ROUTEPEN = obj -> spi . route ;
339
+ obj -> spi .spi -> ROUTELOC0 = obj -> spi . location ;
344
340
#else
345
- obj -> spi .spi -> ROUTE = route ;
341
+ obj -> spi .spi -> ROUTE = obj -> spi . route ;
346
342
#endif
347
343
obj -> spi .spi -> IEN = iflags ;
348
344
0 commit comments