一、概述
在操作相關(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進(jìn)行開發(fā)。
SPI四線模式,統(tǒng)稱也就QSPI。
本文是作者在使用先楫的SPI調(diào)試flash器件的心得,僅僅作為參考。
二、開發(fā)流程
(一)外設(shè)引腳初始化
需要初始化下SPI時鐘,由于SDK使用的是單線常規(guī)模式的SPI,所以引腳上我們還需要初始化IO2和IO3兩個引腳。
(二)SPI模式初始化
華邦的W25Q64JV使用的SPI模式是mode0或者mode3。這里使用mode0??梢允褂胹dk的api接口spi_format_init進(jìn)行初始化
(三)SPI頻率
先楫的SPI SCLK可以達(dá)到80M,這里由于是杜邦線接的flash模塊,波形會存在失真,使用該flash可以達(dá)到50M的QSPI速度。
使用SDK的spi_master_timing_init api接口進(jìn)行SPI頻率調(diào)整。
(四)指令操作(單線模式SPI操作)
1. 華邦相關(guān)flash都會有手冊,這里使用了SDK的spi_transfer api接口封裝了一個指令操作的API。下面根據(jù)這個api配合flash器件的手冊命令進(jìn)行說明。
比如使用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é)進(jìn)行1到256賦值,然后再讀取,這時候會是0~255 0變化。查看波形可以知道,讀寫正常。
三、總結(jié)
先楫的spi外設(shè)支持常規(guī)單線SPI,雙線duad spi,四線quad spi。有著專用的操作flash的寄存器。極大方便開發(fā)相關(guān)flash器件。
-
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177803 -
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120230 -
FlaSh
+關(guān)注
關(guān)注
10文章
1633瀏覽量
147939 -
SPI
+關(guān)注
關(guān)注
17文章
1706瀏覽量
91501 -
先楫半導(dǎo)體
+關(guān)注
關(guān)注
10文章
214瀏覽量
2102
原文標(biāo)題:開發(fā)者分享|先楫hpm6000的SPI外設(shè)使用四線模式操作讀寫華邦flash
文章出處:【微信號:HPMicro,微信公眾號:先楫半導(dǎo)體HPMicro】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論