2020年3月14日星期六

arduino node32s use SPI notes

使用ESP32 之 SPI 問題紀錄

使用arduino IDE 1.8.8版 進行開發
選擇開發版 Node32s

相關使用參數與AVR系列差異不大

但是要注意的是
1.使用前的宣告
2.函式使用上的差異

arduino uno 使用時
-----------初始設定----------
SPI.setDataMode(mode);//SPI_MODE0  SPI_MODE1 SPI_MODE2 SPI_MODE3
SPI.setBitOrder(order);   //LSBFIRST or MSBFIRST
SPI.setClockDivider(divider);//SPI_CLOCK_DIV2
                                                //SPI_CLOCK_DIV4
                                                //SPI_CLOCK_DIV8
                                                //SPI_CLOCK_DIV16
                                                //SPI_CLOCK_DIV32
                                                //SPI_CLOCK_DIV64
                                                //SPI_CLOCK_DIV128
SPI.begin();

-------讀取SPI資料時-------
digitalWrite(CHIP_SELECT, LOW);
SPI.transfer(0x00);//SPI.transfer16(0x00);
digitalWrite(CHIP_SELECT, HIGH);


ESP32使用時
-----------初始設定----------
hspi = new SPIClass(HSPI);
hspi->begin();
---------------------------------

-------讀取SPI資料時-------
hspi->beginTransaction(SPISettings(spiClk, MSBFIRST, SPI_MODE0));
var = hspi->transfer16(0x00);//SPI.transfer(0x00);
hspi->endTransaction();
---------------------------------

由於ESP32是32位元,在使用函式讀取時可以直接使用transfer16(0x00);或是transfer();
而arduino uno雖然也可以使用transfer16();函式,但是就其實就是讀取兩次,如下圖所示
光讀取速度ESP32就比UNO快很多了


沒有留言:

發佈留言

打賞按讚