|
|
@@ -429,15 +429,28 @@ void SPI1Class::setClockDivider_noInline(uint32_t clk) |
|
|
|
updateCTAR1(ctar); |
|
|
|
} |
|
|
|
|
|
|
|
bool SPI1Class::pinIsChipSelect(uint8_t pin) |
|
|
|
uint8_t SPI1Class::pinIsChipSelect(uint8_t pin) |
|
|
|
{ |
|
|
|
if (pin == 6 || pin == 31) return true; |
|
|
|
return false; |
|
|
|
switch (pin) { |
|
|
|
case 6: return 0x01; // CS0 |
|
|
|
case 31: return 0x01; // CS0 |
|
|
|
#ifdef USE_SDCARD_PINS |
|
|
|
case 58: return 0x02; //CS1 |
|
|
|
case 62: return 0x01; //CS0 |
|
|
|
case 63: return 0x04; //CS2 |
|
|
|
#endif |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
bool SPI1Class::pinIsChipSelect(uint8_t pin1, uint8_t pin2) |
|
|
|
{ |
|
|
|
return false; // only one CS bith 6 and 31 or logially the same. |
|
|
|
uint8_t pin1_mask, pin2_mask; |
|
|
|
if ((pin1_mask = (uint8_t)pinIsChipSelect(pin1)) == 0) return false; |
|
|
|
if ((pin2_mask = (uint8_t)pinIsChipSelect(pin2)) == 0) return false; |
|
|
|
//Serial.printf("pinIsChipSelect %d %d %x %x\n\r", pin1, pin2, pin1_mask, pin2_mask); |
|
|
|
if ((pin1_mask & pin2_mask) != 0) return false; |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
uint8_t SPI1Class::setCS(uint8_t pin) |
|
|
@@ -445,6 +458,11 @@ uint8_t SPI1Class::setCS(uint8_t pin) |
|
|
|
switch (pin) { |
|
|
|
case 6: CORE_PIN6_CONFIG = PORT_PCR_MUX(7); return 0x01; // PTD4 |
|
|
|
case 31: CORE_PIN31_CONFIG = PORT_PCR_MUX(2); return 0x01; // PTD5 |
|
|
|
#ifdef USE_SDCARD_PINS |
|
|
|
case 58: CORE_PIN58_CONFIG = PORT_PCR_MUX(2); return 0x02; //CS1 |
|
|
|
case 62: CORE_PIN62_CONFIG = PORT_PCR_MUX(2); return 0x01; //CS0 |
|
|
|
case 63: CORE_PIN63_CONFIG = PORT_PCR_MUX(2); return 0x04; //CS2 |
|
|
|
#endif |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |