diff --git a/libraries/SPI/keywords.txt b/libraries/SPI/keywords.txt index 47738f9fa4..0ef26e8a41 100644 --- a/libraries/SPI/keywords.txt +++ b/libraries/SPI/keywords.txt @@ -17,7 +17,10 @@ transfer KEYWORD2 #setBitOrder KEYWORD2 setDataMode KEYWORD2 setClockDivider KEYWORD2 - +setMISO KEYWORD2 +setMOSI KEYWORD2 +setSCLK KEYWORD2 +setSSEL KEYWORD2 ####################################### # Constants (LITERAL1) diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index e3a73f8163..b69dc194ac 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -112,6 +112,17 @@ class SPIClass { SPIClass(); SPIClass(uint8_t mosi, uint8_t miso, uint8_t sclk, uint8_t ssel = (uint8_t)NC); + // setMISO/MOSI/SCLK/SSEL have to be called before begin() + void setMISO(uint32_t miso) { _spi.pin_miso = digitalPinToPinName(miso); }; + void setMOSI(uint32_t mosi) { _spi.pin_mosi = digitalPinToPinName(mosi); }; + void setSCLK(uint32_t sclk) { _spi.pin_sclk = digitalPinToPinName(sclk); }; + void setSSEL(uint32_t ssel) { _spi.pin_ssel = digitalPinToPinName(ssel); }; + + void setMISO(PinName miso) { _spi.pin_miso = (miso); }; + void setMOSI(PinName mosi) { _spi.pin_mosi = (mosi); }; + void setSCLK(PinName sclk) { _spi.pin_sclk = (sclk); }; + void setSSEL(PinName ssel) { _spi.pin_ssel = (ssel); }; + void begin(uint8_t _pin = CS_PIN_CONTROLLED_BY_USER); void end(void); diff --git a/libraries/Wire/keywords.txt b/libraries/Wire/keywords.txt index f464dca8a3..9bb1703584 100644 --- a/libraries/Wire/keywords.txt +++ b/libraries/Wire/keywords.txt @@ -17,6 +17,8 @@ endTransmission KEYWORD2 requestFrom KEYWORD2 onReceive KEYWORD2 onRequest KEYWORD2 +setSCL KEYWORD2 +setSDA KEYWORD2 ####################################### # Instances (KEYWORD2) diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 1f041e1341..7c033d0aac 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -67,6 +67,11 @@ class TwoWire : public Stream public: TwoWire(); TwoWire(uint8_t sda, uint8_t scl); + // setSCL/SDA have to be called before begin() + void setSCL(uint32_t scl) { _i2c.scl = digitalPinToPinName(scl); }; + void setSDA(uint32_t sda) { _i2c.sda = digitalPinToPinName(sda); }; + void setSCL(PinName scl) { _i2c.scl = scl; }; + void setSDA(PinName sda) { _i2c.sda = sda; }; void begin(); void begin(uint8_t); void begin(int);