spi協議可參考:https://www.cnblogs.com/lethe1203/p/18083528
ECSPI(Enhanced Configurable Serial Peripheral Interface)是由NXP Semiconductors(原飛利浦半導體部門)開發的,imx6ull上一共有四組spi介面,每組暫存器都是一樣的,都是以第一組為例。
典型的SPI BURST傳輸圖:
ECSPI的feature:
1、全雙工同步序列介面
2、主/從可配置四晶片
3、選擇(SS)訊號支援多個外設
4、傳輸延續功能允許無限長度資料傳輸
5、32位寬64 entery FIFO傳輸和接收資料
6、極性和相位的晶片選擇(SS)和SPI時鐘(SCLK)可配配置
7、直接記憶體訪問(DMA)
8、支援最大操作頻率參考時脈頻率。
ECSPI暫存器描述:
如下圖,解析下主要暫存器的含義與操作方法:
1、RXDATA
RXDATA是一個只讀暫存器,該暫存器有一個64 x 32bit深度的fifo,此暫存器儲存了從外部SPI裝置接收到的資料,最大允許word大小的操作。
在接收資料就緒位RR時,可讀
2、TXDATA
TXDATA暫存器是一個只寫暫存器,該暫存器有64 x 32bit深度的fifo,當禁用掉ECSPI時(清除ECSPI_CONREG(EN)位),寫入該暫存器將無效。
如果實際傳輸的bit數超過了burst length的長度,將忽略額外的長度
3、CONREG
CONREG暫存器的關鍵bit位:
bit0:置1,使能SPI
bit3:置1,表示TX有資料立即開啟突發訪問
bit[7:4]:設定SPI通道主從模式,bit7為通道3,bit4為通道0,我們使用SS0,也就是設定bit4為1
bit[31:20]:突發長度,設定為0x7,表示一次突發傳輸長度為8
4、CONFIGREG
bit[0]:為PHA,設定為0,表示序列時鐘第一個跳變沿開始採集資料
bit[4]:為POL,設定為0,表示SCLK空閒的時候為低電平
bit[8]:設定為0
bit[16]:設定為0,表示空閒的時候資料線為高
bit[20]:設定為0,表示SCLK空閒時為低
5、STATREG
bit[0]:表示TXFIFO為空,我們在傳送資料之前等待TXFIFO為空,設定為1
bit[3]:表示RXFIFO是否有資料,為1的時候表示RXFIFO至少有一個word的資料,我們在接收資料的時候要等待該暫存器為1
等等