|
28 | 28 |
|
29 | 29 | const SPISettings DEFAULT_SPI_SETTINGS = SPISettings(); |
30 | 30 |
|
31 | | -SPIClass::SPIClass(SERCOM *p_sercom, uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI) |
| 31 | +SPIClass::SPIClass(SERCOM *p_sercom, uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI, SercomSpiTXPad PadTx, SercomRXPad PadRx) |
32 | 32 | { |
33 | 33 | initialized = false; |
34 | 34 | assert(p_sercom != NULL); |
35 | 35 | _p_sercom = p_sercom; |
36 | 36 |
|
| 37 | + // pins |
37 | 38 | _uc_pinMiso = uc_pinMISO; |
38 | 39 | _uc_pinSCK = uc_pinSCK; |
39 | 40 | _uc_pinMosi = uc_pinMOSI; |
| 41 | + |
| 42 | + // SERCOM pads |
| 43 | + _padTx=PadTx; |
| 44 | + _padRx=PadRx; |
40 | 45 | } |
41 | 46 |
|
42 | 47 | void SPIClass::begin() |
@@ -65,7 +70,7 @@ void SPIClass::config(SPISettings settings) |
65 | 70 | { |
66 | 71 | _p_sercom->disableSPI(); |
67 | 72 |
|
68 | | - _p_sercom->initSPI(SPI_PAD_2_SCK_3, SERCOM_RX_PAD_0, SPI_CHAR_SIZE_8_BITS, settings.bitOrder); |
| 73 | + _p_sercom->initSPI(_padTx, _padRx, SPI_CHAR_SIZE_8_BITS, settings.bitOrder); |
69 | 74 | _p_sercom->initSPIClock(settings.dataMode, settings.clockFreq); |
70 | 75 |
|
71 | 76 | _p_sercom->enableSPI(); |
@@ -197,4 +202,8 @@ void SPIClass::detachInterrupt() { |
197 | 202 | // Should be disableInterrupt() |
198 | 203 | } |
199 | 204 |
|
200 | | -SPIClass SPI( &sercom4, PIN_SPI_MISO, PIN_SPI_SCK, PIN_SPI_MOSI ); |
| 205 | +#if SPI_INTERFACES_COUNT > 0 |
| 206 | + |
| 207 | +SPIClass SPI( &PERIPH_SPI, PIN_SPI_MISO, PIN_SPI_SCK, PIN_SPI_MOSI, PAD_SPI_TX, PAD_SPI_RX ); |
| 208 | + |
| 209 | +#endif // SPI_INTERFACES_COUNT > 0 |
0 commit comments