溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SPI方式讀取外部FLASH抓取時(shí)序圖

發(fā)布時(shí)間:2020-07-25 04:33:44 來(lái)源:網(wǎng)絡(luò) 閱讀:5150 作者:weiqi7777 欄目:開發(fā)技術(shù)

         使用STM32SPI控制器,對(duì)外部的W25X16 FLASH2M字節(jié))芯片進(jìn)行操作。以下為邏輯分析儀抓取的時(shí)序。

         以下是該FLASH芯片的命令表。

    SPI方式讀取外部FLASH抓取時(shí)序圖

 

1、          1、讀取器件ID。

先拉低片選信號(hào)CS,再發(fā)送命令0XAB,再發(fā)送三個(gè)字節(jié)的dummy。讀取第四個(gè)字節(jié)數(shù)據(jù),數(shù)據(jù)就是device ID。最后拉高CS,結(jié)束一次操作。

    SPI方式讀取外部FLASH抓取時(shí)序圖

         以下是發(fā)送命令0XAB放大的圖??梢钥闯?/span>CLK空閑狀態(tài)是高電平(CPOL = 1),偶數(shù)邊沿為采樣時(shí)刻(CPHA = 1)。

    SPI方式讀取外部FLASH抓取時(shí)序圖

 

2、          2、讀取jedec標(biāo)準(zhǔn)ID

先拉低片選信號(hào)CS,再發(fā)送命令0X9f,讀取三個(gè)數(shù)據(jù)。最后拉高CS,結(jié)束一次操作。

第一個(gè)數(shù)據(jù):生產(chǎn)廠商

第二個(gè)數(shù)據(jù):存儲(chǔ)器類型

第三個(gè)數(shù)據(jù):容量

    SPI方式讀取外部FLASH抓取時(shí)序圖

 

3、         3、 寫使能

Flash在寫數(shù)據(jù),擦除,寫狀態(tài)寄存器之前,首先要打開寫使能。打開寫使能的方法也很簡(jiǎn)單,發(fā)送命令0x06即可。

    SPI方式讀取外部FLASH抓取時(shí)序圖

 

4、         4、 寫數(shù)據(jù)

拉低片選,發(fā)送命令0x02,表示寫操作。發(fā)送3個(gè)字節(jié)的地址。因?yàn)檫x用的flash芯片大小為2M,地址范圍為0x00_0000 – 0x1f_ffff。所以需要24位表示地址。因此要發(fā)送3個(gè)字節(jié)來(lái)表征寫入的地址。

   SPI方式讀取外部FLASH抓取時(shí)序圖

         三個(gè)地址發(fā)送完畢后,就開始發(fā)送要寫入的數(shù)據(jù)。

         數(shù)據(jù)寫完畢后,拉高片選即可。

    SPI方式讀取外部FLASH抓取時(shí)序圖

         在寫數(shù)據(jù)完成后,要讀取flash芯片的狀態(tài)寄存器,判斷器件狀態(tài)。

         讀取狀態(tài)寄存器,所用命令為0x05,第二個(gè)SPI周期即為讀取的狀態(tài)寄存器值,可以一直讀取該狀態(tài)寄存器的值。

SPI方式讀取外部FLASH抓取時(shí)序圖

當(dāng)讀到狀態(tài)寄存器的值為0x00后,表示器件完成寫操作。

    SPI方式讀取外部FLASH抓取時(shí)序圖

 

5、          5、扇區(qū)擦除

使用命令0x20對(duì)扇區(qū)進(jìn)行擦除。

         擦除是從寫入扇區(qū)地址開始到扇區(qū)結(jié)束地址之間的內(nèi)容擦除。即如果寫入擦除的地址是0x00_0010,那么就會(huì)將0x00_0010 – 0x00_0FFF(一個(gè)扇區(qū)大小是4k)之間的內(nèi)存區(qū)域擦除為0xff。

    SPI方式讀取外部FLASH抓取時(shí)序圖

6、          

                6、塊擦除

和扇區(qū)擦除一樣,只是發(fā)的命令為0xd8,擦除的最大大小是64KB。

 

7、          7、芯片擦除

擦除整個(gè)芯片,發(fā)送命令0xc7。

SPI方式讀取外部FLASH抓取時(shí)序圖

 

8、         8、 讀數(shù)據(jù)

FLASH的讀數(shù)據(jù)有三種方式:

 

第一種是普通讀方式:

先拉低片選信號(hào)CS,再發(fā)送命令0X03,發(fā)送讀取數(shù)據(jù)的地址,3個(gè)字節(jié)。后面每個(gè)SPI周期,就是讀取的數(shù)據(jù)。

 

    SPI方式讀取外部FLASH抓取時(shí)序圖

         第二種是快速讀方式(fast read):

先拉低片選信號(hào)CS,再發(fā)送命令0X0b,發(fā)送讀取數(shù)據(jù)的地址,3個(gè)字節(jié)。發(fā)送一個(gè)dummySPI周期,后面每個(gè)SPI周期,就是讀取的數(shù)據(jù)。

         快速讀方式,要等待5個(gè)SPI周期后,才開始讀取有效信息。而普通讀模式下,只需等待4個(gè)SPI周期后,就可以讀取有效信息了。

    SPI方式讀取外部FLASH抓取時(shí)序圖

         第三種是快速雙通道讀方式(fast read dual output

拉低片選CS,發(fā)送命令0x3b,發(fā)送讀取數(shù)據(jù)的地址,3個(gè)字節(jié)。發(fā)送一個(gè)dummySPI周期,后面每個(gè)SPI周期,就是讀取的數(shù)據(jù)。

SPI方式讀取外部FLASH抓取時(shí)序圖

         從時(shí)序圖??闯鲞@種讀方式下,MOSIMISO都參與了讀數(shù)據(jù)的傳輸。所以在這種模式下,一個(gè)SPI可以讀取兩個(gè)字節(jié)。

                        第一個(gè)字節(jié)              第二個(gè)字節(jié)

         MISO    (1D7, 1D5, 1D3, 1D2)    (2D7, 2D5, 2D3, 2D2)

         MOSI        (1D6, 1D4, 1D2, 1D0)    (2D6, 2D4, 2D2, 2D0)

 

         下面通過(guò)波形圖比較一下三種讀取數(shù)據(jù)方式:

 

普通read讀取的波形圖。第一個(gè)有效數(shù)據(jù)在第5個(gè)SPI處,值為0x69 第二個(gè)有效數(shù)據(jù)在第6個(gè)SPI處,值為0x20。

     SPI方式讀取外部FLASH抓取時(shí)序圖

Fast read讀取的波形圖。第一個(gè)有效數(shù)據(jù)在第6個(gè)SPI處,值為0x69,第二個(gè)有效數(shù)據(jù)在第7個(gè)SPI處,值為0x20。

      SPI方式讀取外部FLASH抓取時(shí)序圖

Fast read dual讀取的波形圖。MOSIMISO同時(shí)參與數(shù)據(jù)的讀取。第一個(gè)有效數(shù)據(jù)和第二個(gè)有效數(shù)據(jù)在第6個(gè)SPI處。

MISO   0 1 1 0  0 1 0 0         ( 1D7, 1D5, 1D3, 1D1)    ( 2D7, 2D5, 2D3, 2D1) 

         MOSI   1 0 0 1  0 0 0 0   1D6, 1D4, 1D2, 1D0  2D6, 2D4, 2D2, 2D0

         組合得到第一個(gè)數(shù)據(jù)   01 10 10 01  0x69

組合得到第二個(gè)數(shù)據(jù)   00 10 00 00  0x20

      SPI方式讀取外部FLASH抓取時(shí)序圖

       從抓取的波形圖,來(lái)學(xué)習(xí)SPI驅(qū)動(dòng)外部的FLASH,是可以很直觀的看到數(shù)據(jù)傳輸?shù)倪^(guò)程,從而對(duì)SPI協(xié)議及外部的FLASH驅(qū)動(dòng)有更深的了解。



    可以下載pdf,查看清晰波形圖片信息。




附件:http://down.51cto.com/data/2367271
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI