一、概述
在操作相關(guān)flash器件的時候,需要先發(fā)指令再讀數(shù)據(jù),或者先發(fā)指令再發(fā)地址再發(fā)dummy再讀相關(guān)數(shù)據(jù)。而先楫的SPI控制器中,SPI傳輸包括了命令、地址和數(shù)據(jù)字段,提供了專用的寄存器來存儲這些字段,不需要開發(fā)者自行去填充。本文使用hpm6200evk開發(fā)板,flash器件是華邦的W25Q64JV。使用hpm_sdk進行開發(fā)。
SPI四線模式,統(tǒng)稱也就QSPI。
本文是作者在使用先楫的SPI調(diào)試flash器件的心得,僅僅作為參考。
二、開發(fā)流程
(一)外設(shè)引腳初始化
需要初始化下SPI時鐘,由于SDK使用的是單線常規(guī)模式的SPI,所以引腳上我們還需要初始化IO2和IO3兩個引腳。
(二)SPI模式初始化
華邦的W25Q64JV使用的SPI模式是mode0或者mode3。這里使用mode0。可以使用sdk的api接口spi_format_init進行初始化
(三)SPI頻率
先楫的SPI SCLK可以達到80M,這里由于是杜邦線接的flash模塊,波形會存在失真,使用該flash可以達到50M的QSPI速度。
使用SDK的spi_master_timing_init api接口進行SPI頻率調(diào)整。
(四)指令操作(單線模式SPI操作)
1. 華邦相關(guān)flash都會有手冊,這里使用了SDK的spi_transfer api接口封裝了一個指令操作的API。下面根據(jù)這個api配合flash器件的手冊命令進行說明。
比如使用90命令讀取制造商設(shè)備ID的時候,使用單線模式,需要先發(fā)指令,再發(fā)兩個dummy,之后就是讀取。
那么使用spi_transfer賦值以下結(jié)構(gòu)體
cmd_enable:使能命令段傳輸
addr_enable:使能地址段傳輸
addr_pahase_fmt:選擇是單線模式還是四線模式傳輸?shù)刂?/p>
trans_mode:選擇的傳輸模式,比如同時讀寫,僅寫,僅讀,寫讀,讀寫,寫填充讀,讀填充寫等
dmmy_cnt:填充的數(shù)量
依靠上述說明,可以使用單線模式,傳輸模式為填充再讀。填充數(shù)量為2
通過波形查看,是沒什么問題的。
從以下可知,單線模式收發(fā)指令是沒什么問題的。
(五)讀寫操作(四線模式QSPI操作)
這里舉例讀操作,讀操作有好幾條指令。這里舉例使用Fast Read Quad I/O指令,也就是EBh指令。這里需要先發(fā)指令,再發(fā)地址(地址使用四線模式),再發(fā)三個填充dummy,之后再讀。
擦除指令,可寫入指令跟以上類似,這里測試sector0的0頁地址。
對0頁的256字節(jié)進行1到256賦值,然后再讀取,這時候會是0~255 0變化。查看波形可以知道,讀寫正常。
三、總結(jié)
先楫的spi外設(shè)支持常規(guī)單線single spi,雙線dual spi,四線quad spi。有著專用的操作flash的寄存器。極大方便開發(fā)相關(guān)flash器件。
-
FlaSh
+關(guān)注
關(guān)注
10文章
1665瀏覽量
150987 -
SPI
+關(guān)注
關(guān)注
17文章
1783瀏覽量
94732 -
外設(shè)
+關(guān)注
關(guān)注
0文章
42瀏覽量
11863
發(fā)布評論請先 登錄
先楫半導(dǎo)體HPM6E8Y:先楫實時控制芯片驅(qū)動的機器人關(guān)節(jié)“芯”時代

【強勢上新】HPM5E00:EtherCAT運動控制MCU,先楫半導(dǎo)體再拓工業(yè)總線產(chǎn)品新版圖

【強勢上新】HPM5E00:EtherCAT運動控制MCU,先楫半導(dǎo)體再拓工業(yè)總線產(chǎn)品新版圖

先楫半導(dǎo)體HPM OBOX 離線燒錄器正式發(fā)布
先楫HPM6E00技術(shù)日 | 百人研討共話工業(yè)應(yīng)用創(chuàng)新及發(fā)展趨勢
戰(zhàn)略合作丨華秋商城攜手先楫半導(dǎo)體,共創(chuàng)新篇

先楫HPM6E00新品上市在即

有獎提問!先楫半導(dǎo)體HPM6E00系列新品發(fā)布會!!
工業(yè)芯標桿,邀您來圍觀——先楫HPM6E00新品上市在即

先楫半導(dǎo)體與您相約嵌入式盛會embedded world China Conference2024

評論