23.2
控制FLASH的指令
對主機端(RA6M5)來說,只是它遵守最基本的QSPI通訊協(xié)議發(fā)送出的數(shù)據(jù),但在設備端(FLASH 芯片)把這些數(shù)據(jù)解釋成不同的意義,所以才成為指令。
查看FLASH芯片的數(shù)據(jù)手冊《AT25SF321B》,可了解各種它定義的各種指令的功能及指令格式,見表23?2。
表23?2FLASH常用芯片指令表
(摘自規(guī)格書《AT25SF321B》)

該表中的第一列為指令名,第二列為指令編碼,第三至第N列的具體內(nèi)容根據(jù)指令的不同而有不同的含義。其中帶括號的字節(jié)參數(shù),方向為FLASH向主機傳輸,即命令響應,不帶括號的則為主機向FLASH傳輸。表中“A0~A23”指FLASH芯片內(nèi)部存儲器組織的地址;“M0~M7”為廠商號(MANUFACTURER ID);“ID0-ID15”為FLASH芯片的ID;“dummy”指該處可為任意數(shù)據(jù);“D0~D7”為FLASH內(nèi)部存儲矩陣的內(nèi)容。
在FLSAH芯片內(nèi)部,存儲有固定的廠商編號(M7-M0)和不同類型FLASH芯片獨有的編號(ID15-
ID0),見表23?3。
表23?3 FLASH數(shù)據(jù)手冊的設備ID說明

通過指令表中的讀ID指令“JEDEC ID”可以獲取這兩個編號,該指令編碼為“9Fh”,其中“9Fh”是指16進制數(shù)“9F”(相當于C 語言中的0x9F)。緊跟指令編碼的三個字節(jié)分別為FLASH芯片輸出的“(M7-M0)”、“(ID15-ID8)”及“(ID7-ID0)”。
此處我們以該指令為例,配合其指令時序圖進行講解,見下圖。

主機首先通過MOSI線向FLASH芯片發(fā)送第一個字節(jié)數(shù)據(jù)為“9Fh”,當FLASH芯片收到該數(shù)據(jù)后,它會解讀成主機向它發(fā)送了“JEDEC指令”,然后它就作出該命令的響應:通過MISO線把它的廠商ID(M7-M0)及芯片類型(ID15-0)發(fā)送給主機,主機接收到指令響應后可進行校驗。常見的應用是主機端通過讀取設備ID來測試硬件是否連接正常,或用于識別設備。
對于FLASH芯片的其它指令,都是類似的,只是有的指令包含多個字節(jié),或者響應包含更多的
數(shù)據(jù)。
實際上,編寫設備驅動都是有一定的規(guī)律可循的。首先我們要確定設備使用的是什么通訊協(xié)議。
如上一章的EEPROM使用的是I2C,本章的FLASH 使用的是SPI。那么我們就先根據(jù)它的通訊協(xié)議,選擇好RA6M5的硬件模塊,并進行相應的I2C或SPI模塊初始化。
接著,我們要了解目標設備的相關指令,因為不同的設備,都會有相應的不同的指令。如EEPROM中會把第一個數(shù)據(jù)解釋為內(nèi)部存儲矩陣的地址(實質(zhì)就是指令)。而FLASH則定義了更多的指令,有寫指令、讀指令、讀ID指令等等。最后,我們根據(jù)這些指令的格式要求,使用通訊協(xié)議向設備發(fā)送指令,達到控制設備的目標。
為了方便使用,我們把FLASH芯片的常用指令編碼使用宏來封裝起來,后面需要發(fā)送指令編碼
的時候我們直接使用這些宏即可。
列表1:FLASH指令編碼表
左右滑動查看完整內(nèi)容
/*FLASH 常用命令*/ #defineWriteEnable 0x06 #defineWriteDisable 0x04 #defineReadStatusReg 0x05 #defineWriteStatusReg 0x01 #defineReadData 0x03 #defineFastReadData 0x0B #defineFastReadDual 0x3B #definePageProgram 0x02 #defineBlockErase 0xD8 #defineSectorErase 0x20 #defineChipErase 0xC7 #definePowerDown 0xB9 #defineReleasePowerDown 0xAB #defineDeviceID 0xAB #defineManufactDeviceID 0x90 #defineJedecDeviceID 0x9F /* 其它*/ #definesFLASH_ID 0x1F8701 #defineDummy_Byte 0xFF
-
FlaSh
+關注
關注
10文章
1747瀏覽量
155481 -
瑞薩
+關注
關注
37文章
22481瀏覽量
90811 -
指令
+關注
關注
1文章
623瀏覽量
37523 -
QSPI
+關注
關注
0文章
55瀏覽量
13355
原文標題:控制FLASH的指令——瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南(78)
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
瑞薩RA系列MCU FSP庫開發(fā)實戰(zhàn)指南(09)存儲器映射
瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之QSPI通訊協(xié)議簡介
瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之QSPI讀寫外部Flash芯片實驗
瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之QSPI控制FLASH的指令
評論