Skip to content

Commit

Permalink
[SPI] Minor update to SPI API (#117)
Browse files Browse the repository at this point in the history
- Update setDefaultFrequency() to be more user-friendly
- Update setDataMode to remove useless contents

Co-authored-by: Michael Zhang <[email protected]>
  • Loading branch information
xidameng and M-ichae-l authored Sep 2, 2022
1 parent 8d50f62 commit a9b8b2e
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 22 deletions.
31 changes: 12 additions & 19 deletions Arduino_package/hardware/libraries/SPI/src/SPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ SPIClass::SPIClass(void *pSpiObj, int mosi, int miso, int clk, int ss)

pinUserSS = -1;
initStatus = false;
dataBits = 8; // default databits is 8 bits
dataMode = SPI_MODE0; // default datamode is mode 0

#if defined(BOARD_RTL8721DM)
defaultFrequency = 2000000;
Expand All @@ -55,7 +57,7 @@ SPIClass::SPIClass(void *pSpiObj, int mosi, int miso, int clk, int ss)
void SPIClass::beginTransaction(uint8_t pin, SPISettings settings)
{
bitOrder = settings._bitOrder;
spi_format((spi_t *)pSpiMaster, 8, settings._dataMode, 0);
spi_format((spi_t *)pSpiMaster, dataBits, dataMode, 0);
spi_frequency((spi_t *)pSpiMaster, settings._clock);

//log_uart_disable_printf();
Expand Down Expand Up @@ -98,7 +100,7 @@ void SPIClass::begin(void)
(PinName)pinCLK,
(PinName)pinSS
);
spi_format((spi_t *)pSpiMaster, 8, 0, 0);
spi_format((spi_t *)pSpiMaster, dataBits, dataMode, 0);
spi_frequency((spi_t *)pSpiMaster, defaultFrequency);

// Mark SPI init status
Expand All @@ -125,7 +127,7 @@ void SPIClass::begin(int ss)
(PinName)pinCLK,
(PinName)pinSS
);
spi_format((spi_t *)pSpiMaster, 8, 0, 0);
spi_format((spi_t *)pSpiMaster, dataBits, dataMode, 0);
spi_frequency((spi_t *)pSpiMaster, defaultFrequency);

// Mark SPI init status
Expand Down Expand Up @@ -254,27 +256,21 @@ void SPIClass::setBitOrder(BitOrder _order)
}

// bits: data frame size, 4-16 supported.
void SPIClass::setDataMode(uint8_t _pin, uint8_t _bits, uint8_t _mode)
void SPIClass::setDataMode(uint8_t _bits, uint8_t _mode)
{
dataBits = _bits;
dataMode = _mode;
if(initStatus) {
(void)_pin;
spi_format((spi_t *)pSpiMaster, _bits, _mode, 0);
} else {
printf("Error: SPI is not initialized yet, please initialize SPI before using this API\r\n");
while(1);
spi_format((spi_t *)pSpiMaster, dataBits, dataMode, 0);
}
}

void SPIClass::setDataMode(uint8_t _pin, uint8_t _mode)
{
setDataMode(_pin, 8, _mode);
}

void SPIClass::setDataMode(uint8_t _mode)
{
setDataMode(pinSS, _mode);
setDataMode(dataBits, _mode);
}


void SPIClass::setClockDivider(uint8_t _pin, uint8_t _divider)
{
(void)_pin;
Expand All @@ -293,12 +289,9 @@ void SPIClass::setClockDivider(uint8_t _div)

void SPIClass::setDefaultFrequency(int _frequency)
{
defaultFrequency = _frequency;
if(initStatus) {
defaultFrequency = _frequency;
spi_frequency((spi_t *)pSpiMaster, defaultFrequency);
} else {
printf("Error: SPI is not initialized yet, please initialize SPI before using this API\r\n");
while(1);
}
}

Expand Down
6 changes: 3 additions & 3 deletions Arduino_package/hardware/libraries/SPI/src/SPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,7 @@ class SPIClass {
void setBitOrder(uint8_t _pin, BitOrder _bitOrder);
void setBitOrder(BitOrder _order);

void setDataMode(uint8_t _pin, uint8_t _bits, uint8_t _mode);
void setDataMode(uint8_t _pin, uint8_t _mode);
void setDataMode(uint8_t _bits, uint8_t _mode);
void setDataMode(uint8_t _mode);

void setClockDivider(uint8_t _pin, uint8_t _divider);
Expand All @@ -107,7 +106,8 @@ class SPIClass {
int pinUserSS;
BitOrder bitOrder;
bool initStatus; // flag to mark SPI init status

u8 dataBits;
u8 dataMode;
int defaultFrequency;
};

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,5 @@ For all `release` information, please visit this [link](https://github.com/ambio
</br>

## 3. Contributing to Ameba

Please spend 5 mins to read the **Coding Style** and **Contribution Guideline** at [here](https://github.com/ambiot/ambd_arduino/wiki/Contributing-to-Ameba) before you contribute.

0 comments on commit a9b8b2e

Please sign in to comment.