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

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

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

主機(jī)首先通過MOSI線向FLASH芯片發(fā)送第一個(gè)字節(jié)數(shù)據(jù)為“9Fh”,當(dāng)FLASH芯片收到該數(shù)據(jù)后,它會(huì)解讀成主機(jī)向它發(fā)送了“JEDEC指令”,然后它就作出該命令的響應(yīng):通過MISO線把它的廠商ID(M7-M0)及芯片類型(ID15-0)發(fā)送給主機(jī),主機(jī)接收到指令響應(yīng)后可進(jìn)行校驗(yàn)。常見的應(yīng)用是主機(jī)端通過讀取設(shè)備ID來測(cè)試硬件是否連接正常,或用于識(shí)別設(shè)備。
對(duì)于FLASH芯片的其它指令,都是類似的,只是有的指令包含多個(gè)字節(jié),或者響應(yīng)包含更多的
數(shù)據(jù)。
實(shí)際上,編寫設(shè)備驅(qū)動(dòng)都是有一定的規(guī)律可循的。首先我們要確定設(shè)備使用的是什么通訊協(xié)議。
如上一章的EEPROM使用的是I2C,本章的FLASH 使用的是SPI。那么我們就先根據(jù)它的通訊協(xié)議,選擇好RA6M5的硬件模塊,并進(jìn)行相應(yīng)的I2C或SPI模塊初始化。
接著,我們要了解目標(biāo)設(shè)備的相關(guān)指令,因?yàn)椴煌脑O(shè)備,都會(huì)有相應(yīng)的不同的指令。如EEPROM中會(huì)把第一個(gè)數(shù)據(jù)解釋為內(nèi)部存儲(chǔ)矩陣的地址(實(shí)質(zhì)就是指令)。而FLASH則定義了更多的指令,有寫指令、讀指令、讀ID指令等等。最后,我們根據(jù)這些指令的格式要求,使用通訊協(xié)議向設(shè)備發(fā)送指令,達(dá)到控制設(shè)備的目標(biāo)。
為了方便使用,我們把FLASH芯片的常用指令編碼使用宏來封裝起來,后面需要發(fā)送指令編碼
的時(shí)候我們直接使用這些宏即可。
列表1:FLASH指令編碼表
左右滑動(dòng)查看完整內(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
+關(guān)注
關(guān)注
10文章
1747瀏覽量
155483 -
瑞薩
+關(guān)注
關(guān)注
37文章
22481瀏覽量
90823 -
指令
+關(guān)注
關(guān)注
1文章
623瀏覽量
37523 -
QSPI
+關(guān)注
關(guān)注
0文章
55瀏覽量
13355
原文標(biāo)題:控制FLASH的指令——瑞薩RA系列FSP庫(kù)開發(fā)實(shí)戰(zhàn)指南(78)
文章出處:【微信號(hào):瑞薩嵌入式小百科,微信公眾號(hào):瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
瑞薩RA系列MCU FSP庫(kù)開發(fā)實(shí)戰(zhàn)指南(09)存儲(chǔ)器映射
瑞薩RA系列FSP庫(kù)開發(fā)實(shí)戰(zhàn)指南之I2C讀寫EEPROM實(shí)驗(yàn)
瑞薩RA系列FSP庫(kù)開發(fā)實(shí)戰(zhàn)指南之QSPI通訊協(xié)議簡(jiǎn)介
瑞薩RA系列FSP庫(kù)開發(fā)實(shí)戰(zhàn)指南之QSPI讀寫外部Flash芯片實(shí)驗(yàn)
瑞薩RA系列FSP庫(kù)開發(fā)實(shí)戰(zhàn)指南之QSPI控制FLASH的指令
評(píng)論