ESP32入門學習 SPI主機

2021-08-22 07:29:22 字數 1475 閱讀 4300

esp32有四個spi外設,包含spi0、spi1、hspi和vspi。spi0完全專用於flash快取記憶體,esp32用於將spi快閃儲存器裝置對映到記憶體中。spi1是與spi0連線到相同的硬體線路上,用於寫入快閃儲存器晶元。hspi和vspi是使用者自由使用的。spi1、hspi和vspi都有三個晶元選擇線(cs),允許它們作為主機驅動多達三個spi裝置。

spi主機驅動允許使用者與spi從機自由通訊,包含多執行緒程式設計環境也是一樣。它完全透明地處理dma傳輸來讀取和寫入資料,並使用自動處理同一spi主機與匯流排上不同spi從機進行通訊。

注:暫時驅動中只實現了hspi和vspi。

全雙工模式下,spi同時傳送和接收,總長度 = command_bits  +address_bits  +trans_conf.length 。 trans_conf.rx_length指示的是接收到buff中的資料長度。

半雙工模式下,spi單獨傳送和接收。傳送長度為 trans_conf.length ,接收長度為trans_conf.rx_length 。

因為不是每個spi裝置都有命令和位址位,所以在配置中,command_bits為0時,沒有命令位;address_bits為0時,沒有位址位。

當 rx_buffer = null時(或者spi_use_rxdata 沒有設定時),不執行接收操作;當 tx_buffer = null時(或者spi_use_txdata 沒有設定時),跳過傳送操作。

spi介面有兩種io方式,一種是io復用功能,另外一種是gpio矩陣,因為gpio的輸入延遲比較高,io復用引腳可以實現80mhz速率,而gpio矩陣只能達到40mhz。

spi的復用io口

引腳名稱

hspi

vspi

引腳號引腳號

cs015

5sclk

1418

miso

1219

mosi

1323

quadwp222

quadhd

41、定義 bus_config 和 dev_config 結構體,指定使用的spi和io口,不用的訊號引腳設定為-1,以及設定時鐘速率等

例:

/* 定義spi裝置控制代碼 */

spi_device_handle_t spi;

/* 設定spi匯流排引腳配置 */

spi_bus_config_t buscfg=;

/* 設定spi匯流排軟體配置 */

spi_device_inte***ce_config_t devcfg=;

/* 初始化spi */

ret=spi_bus_initialize(hspi_host, &buscfg, 1);

esp_error_check(ret);

/* 例項化spi裝置控制代碼 */

ret=spi_bus_add_device(hspi_host, &devcfg, &spi);

esp_error_check(ret);

ESP32 學習記錄

首次接觸freertos和espressif的產品,例如我,那還是要先來個整體印象,然後再逐個深化。做專案的都知道,老闆們是不允許我們四平八穩的研究完然後再開始專案。那也不妨礙咱們要有自己的節奏,既要平衡專案的進度,也要按照事情的規律來做事情 這就需要快速的準備一些預備知識,磨刀不誤砍柴功,倉促上陣...

ESP32學習 外設 timer

typedef struct timer config t 定時器初始化結構體成員6個,從上到下依次是,中斷使能,計數使能,中斷模式,計數方向,自動過載,分頻係數。timer init timer group 0,timer 1,timerconfig 初始化結構體後,呼叫初始化函式,三個引數包括,...

ESP32學習 外設 UART

brief uart configuration parameters for uart param config function typedef struct uart config t esp32總共有三個串列埠分別是uart num0,uart num1,uart num2。串列埠0作為軟體...