|
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