From a9b8b2ef96238159ba0ea470a43e230a713b5174 Mon Sep 17 00:00:00 2001 From: SimonXI <41950436+xidameng@users.noreply.github.com> Date: Fri, 2 Sep 2022 11:49:31 +0800 Subject: [PATCH] [SPI] Minor update to SPI API (#117) - Update setDefaultFrequency() to be more user-friendly - Update setDataMode to remove useless contents Co-authored-by: Michael Zhang <35476432+M-ichae-l@users.noreply.github.com> --- .../hardware/libraries/SPI/src/SPI.cpp | 31 +++++++------------ .../hardware/libraries/SPI/src/SPI.h | 6 ++-- README.md | 1 + 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/Arduino_package/hardware/libraries/SPI/src/SPI.cpp b/Arduino_package/hardware/libraries/SPI/src/SPI.cpp index ba30e603..8fca8231 100644 --- a/Arduino_package/hardware/libraries/SPI/src/SPI.cpp +++ b/Arduino_package/hardware/libraries/SPI/src/SPI.cpp @@ -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; @@ -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(); @@ -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 @@ -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 @@ -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; @@ -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); } } diff --git a/Arduino_package/hardware/libraries/SPI/src/SPI.h b/Arduino_package/hardware/libraries/SPI/src/SPI.h index 9c533683..348215f4 100644 --- a/Arduino_package/hardware/libraries/SPI/src/SPI.h +++ b/Arduino_package/hardware/libraries/SPI/src/SPI.h @@ -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); @@ -107,7 +106,8 @@ class SPIClass { int pinUserSS; BitOrder bitOrder; bool initStatus; // flag to mark SPI init status - + u8 dataBits; + u8 dataMode; int defaultFrequency; }; diff --git a/README.md b/README.md index e8b3cbcd..e7c2bd11 100644 --- a/README.md +++ b/README.md @@ -53,4 +53,5 @@ For all `release` information, please visit this [link](https://github.com/ambio
## 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.