chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于SPI_FLASH時(shí)序描述及驅(qū)動(dòng)編程

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-25 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ⅰ、寫(xiě)在前面

寫(xiě)這篇文章的目的有兩點(diǎn):1.讓大家知道SPI在實(shí)際應(yīng)用開(kāi)發(fā)中的重要意義; 2.讓大家掌握SPI FLASH存儲(chǔ)芯片的時(shí)序及驅(qū)動(dòng)編程。

市面上的SPI FLASH類(lèi)型很多,但是絕大部的芯片在硬件和軟件上都是兼容的。雖然本文是以華邦的W25X16芯片為例來(lái)講述時(shí)序。其實(shí),其它大部分SPI FLASH都適用。

有必要看芯片手冊(cè),按照手冊(cè)一步一步寫(xiě)程序嗎?

1、如果你是初學(xué)者,而且還有很多時(shí)間,建議花些時(shí)間掌握一下! 原因在于作為嵌入式開(kāi)發(fā)者,需要對(duì)芯片的編程有一定了解,在以后工作項(xiàng)目中如果有使用新的芯片,自己就能很容易編寫(xiě)驅(qū)動(dòng)(如果沒(méi)有現(xiàn)成的驅(qū)動(dòng))。

2、如果你是工作了一斷時(shí)間,自己對(duì)芯片驅(qū)動(dòng)編程有一些經(jīng)驗(yàn),在需要使用新的芯片,如果有現(xiàn)成的、比較成熟的驅(qū)動(dòng),那么,你可以不用再話費(fèi)時(shí)間自己親自編寫(xiě)驅(qū)動(dòng)(編寫(xiě)驅(qū)動(dòng)很費(fèi)時(shí)間,還需要花費(fèi)一定時(shí)間驗(yàn)證)。

關(guān)于本文的更多詳情請(qǐng)往下看。

Ⅱ、實(shí)例工程下載

筆者針對(duì)于初學(xué)者提供的例程都是去掉了許多不必要的功能,精簡(jiǎn)了官方的代碼,對(duì)初學(xué)者一看就明白,以簡(jiǎn)單明了的工程供大家學(xué)習(xí)。

筆者提供的實(shí)例工程都是在板子上經(jīng)過(guò)多次測(cè)試并沒(méi)有問(wèn)題才上傳至360云盤(pán),歡迎下載測(cè)試、參照學(xué)習(xí)。

提供下載的軟件工程是基于Keil(MDK-ARM) V5版本、STM32F103ZE芯片,但F1其他型號(hào)也適用(適用F1其他型號(hào): 關(guān)注微信,回復(fù)“修改型號(hào)”)。

STM32F10x_SPI(硬件接口)讀寫(xiě)Flash(25Q16)實(shí)例源代碼工程:

https://yunpan.cn/c6mfRJWva6AJ2訪問(wèn)密碼 4bc4

STM32F10x_SPI(軟件模擬)讀寫(xiě)Flash(25Q16)實(shí)例源代碼工程:

https://yunpan.cn/c6mf6zyzCaMwd訪問(wèn)密碼 cf45

SPI FLASH資料:

https://yunpan.cn/c6Yi3agWUnGNQ訪問(wèn)密碼 d790

STM32F1資料:

https://yunpan.cn/crBUdUGdYKam2訪問(wèn)密碼 ca90

Ⅲ、關(guān)于SPIFLASH

1.SPI FLASH芯片系列

SPI FLASH的種類(lèi)及型號(hào)有很多,但根據(jù)筆者的了解及經(jīng)驗(yàn),雖然存在這些差異,但他們之間的兼容性是很好的。

如:W25Xxx系列、W25Qxx系列、GD25Qxx系列、M25Pxx系列、KM25Lxx系列、SST25VFxx系列、AT25F系列等。

2.SPI FLASH命名

每一家公司的芯片型號(hào)命名可能略有差異,但看手冊(cè)就能明白。我們以華邦的W25系列芯片來(lái)舉例說(shuō)明:


W:代表華邦公司

25X:代表SPI FLASH類(lèi)型(25X是基本芯片, 25Q是快速芯片)

16:代表16MBit,即2M字節(jié)(64代表8M字節(jié), 128代表16M字節(jié),依次下去)

這個(gè)需要大家了解的(主要在項(xiàng)目研發(fā)初級(jí)階段對(duì)芯片的選型上使用到)。其他公司的芯片,查看方法類(lèi)似.對(duì)比如圖是ST公司的M25PExx系列芯片:

3.W25Xxx讀寫(xiě)特性

讀:無(wú)要求

寫(xiě):需要擦除才能寫(xiě),一次最多可寫(xiě)入256字節(jié)(可編程頁(yè))。

擦除:最小扇區(qū)擦除(4K)、可塊擦除(64K)、 可整個(gè)芯片擦除。

Ⅳ、SPIFLASH時(shí)序及編程

這里還是以華邦的W25X16為例來(lái)說(shuō)明(其他大部分兼容),請(qǐng)下載手冊(cè)【W(wǎng)25Xxx手冊(cè)(英文版)】參考。

1.預(yù)先了解W25Xxx

A.控制和狀態(tài)寄存器命令(默認(rèn):0x00)

BIT位 7 6 5 4 3 2 1 0

SPR RV TB BP2 BP1 BP0 WEL BUSY

SPR:默認(rèn)0,狀態(tài)寄存器保護(hù)位,配合WP使用

TB,BP2,BP1,BP0:FLASH區(qū)域?qū)懕Wo(hù)設(shè)置

WEL:寫(xiě)使能鎖定

BUSY:忙標(biāo)記位(1,忙;0,空閑)

B.指令集表

編程主要就圍繞這些“指令”來(lái)編程。在我提供的軟件工程代碼“sflash.h”文件中就定義了和手冊(cè)對(duì)應(yīng)的指令,如下圖:

2.寫(xiě)使能(0x06)

在操作寫(xiě)(控制、數(shù)據(jù))之前,都需要發(fā)送一條“寫(xiě)使能”指令。

時(shí)序如下圖:


源代碼程序:

3.寫(xiě)失能(0x04)

和“寫(xiě)使能”類(lèi)似,要失能寫(xiě),在操作寫(xiě)(控制、數(shù)據(jù))之后,都需要發(fā)送一條“寫(xiě)失能”指令。

時(shí)序如下圖:

源代碼程序:

4.讀狀態(tài)/控制(0x05)

W25X芯片唯一的狀態(tài)寄存器,各個(gè)位的意思請(qǐng)看上面的介紹,比如判斷忙不忙,就需要讀狀態(tài)。

時(shí)序如下圖:

源代碼程序:

5.寫(xiě)狀態(tài)/控制(0x01)

寫(xiě)狀態(tài)/控制 和 讀狀態(tài)/控制類(lèi)似。

時(shí)序如下圖:

源代碼程序:

6.讀數(shù)據(jù)(0x03)

這個(gè)就是我們重要的讀數(shù)據(jù)指令。1.寫(xiě)入指令0x03; 2.寫(xiě)入24位地址; 3.連續(xù)讀出N字節(jié)數(shù)據(jù)(只要有時(shí)鐘,可以連續(xù)讀出多字節(jié));

時(shí)序如下圖:

源代碼程序:

7.快速讀數(shù)據(jù)(0x0B)

“快速讀數(shù)據(jù)”和“讀數(shù)據(jù)”類(lèi)似,但它的區(qū)別:1.讀數(shù)據(jù)速度更快; 2.需要在寫(xiě)入地址之后需要8個(gè)時(shí)鐘的等待。

1.寫(xiě)入指令0x0B; 2.寫(xiě)入24位地址; 3.寫(xiě)入8個(gè)時(shí)鐘; 4.連續(xù)讀出N字節(jié)數(shù)據(jù)(只要有時(shí)鐘,可以連續(xù)讀出多字節(jié));

時(shí)序如下圖:

源代碼程序:

8.快速雙通道讀數(shù)據(jù)(0x3B)

“快速雙通道讀數(shù)據(jù)”和“快速讀數(shù)據(jù)”類(lèi)似,但它的區(qū)別:在讀數(shù)據(jù)的時(shí)候是兩條通道,也就是我們平時(shí)主機(jī)的輸出引腳(MOSI)在這個(gè)時(shí)候拿來(lái)當(dāng)做輸入引腳讀數(shù)據(jù)。

注意:

使用該指令功能,需要改變SPI底層驅(qū)動(dòng)(即需要改變MOSI引腳的輸入輸出狀態(tài))。針對(duì)初學(xué)者,我提供的工程也沒(méi)有寫(xiě)的那么復(fù)雜,即該指令功能沒(méi)有(感興趣的朋友可研究一下)。

9.寫(xiě)數(shù)據(jù)(頁(yè)編程)(0x02)

“寫(xiě)數(shù)據(jù)”和“讀數(shù)據(jù)”類(lèi)似,但寫(xiě)數(shù)據(jù)都是在同一條數(shù)據(jù)(DIO)線上,讀數(shù)據(jù)在地址之后是在DO數(shù)據(jù)上。

1.寫(xiě)入指令0x02; 2.寫(xiě)入24位地址; 3.連續(xù)寫(xiě)入N字節(jié)數(shù)據(jù)(只要有時(shí)鐘,可以連續(xù)寫(xiě)入多字節(jié),注意這里一次不能超過(guò)256字節(jié)數(shù)據(jù));

時(shí)序如下圖:

源代碼程序:

10.塊擦除(0xD8)

W25Xxx塊的多少有芯片型號(hào)決定,一塊數(shù)據(jù)大小64K。

W25X16共2M字節(jié),有16塊(2M/64K = 16)

W25X64共8M字節(jié),有64塊(8M/64K = 64)

以此類(lèi)推...

注意:這個(gè)塊的地址是和數(shù)據(jù)的地址對(duì)應(yīng),我們程序塊擦除中將塊區(qū)分開(kāi)來(lái)。

時(shí)序如下圖:

源代碼程序:

11.扇區(qū)擦除(0x20)

W25Xxx扇區(qū)的多少有芯片型號(hào)決定,扇區(qū)數(shù)據(jù)大小4K。

W25X16共2M字節(jié),有256塊(2M/4K = 256)

W25X64共8M字節(jié),有1024塊(8M/4K = 1024)

以此類(lèi)推...

同樣,我們程序扇區(qū)擦除中將扇區(qū)以扇區(qū)的形式區(qū)分開(kāi)來(lái)。

時(shí)序如下圖:

源代碼程序:

12.芯片擦除(0xC7)

這條指令是擦除整個(gè)芯片內(nèi)容,如果要繼續(xù)操作芯片,需要等待擦除完成(檢查忙信號(hào))。

時(shí)序如下圖:

源代碼程序:

13.掉電(低功耗)(0xB9)

需要將芯片處于低功耗,發(fā)送該指令。

時(shí)序如下圖:

源代碼程序:

14.喚醒/ID(0xAB)

該指令有兩個(gè)功能:1.將處于低功耗的芯片喚醒(常用); 2.讀取設(shè)備ID(不常用)。

發(fā)送該指令可以將芯片喚醒,繼續(xù)發(fā)送3字節(jié)無(wú)效數(shù)據(jù),可繼續(xù)讀出設(shè)備ID.由于讀取設(shè)備ID有單獨(dú)的指令,這里基本不常用于讀設(shè)備ID(程序中也沒(méi)有該功能)。

時(shí)序如下圖:

源代碼程序:

15.讀取ID(0x90)

這個(gè)指令讀取兩字節(jié)數(shù)據(jù)(ID):高字節(jié)是廠家Manufacturer,低字節(jié)是芯片型號(hào)ID.

如我開(kāi)發(fā)板上是W25Q128,讀到的ID是:0XEF17

W25X16讀到的ID是:EF14

時(shí)序如下圖:

源代碼程序:

16.JEDEC_ID(0x9F)

出于兼容性考慮,有些芯片廠家使用該指令讀取ID,這條指令和上一條指令類(lèi)似。

與上一條指令不同點(diǎn):1.不用發(fā)送3字節(jié)無(wú)效數(shù)據(jù); 2.讀出來(lái)的ID是3字節(jié)(依次是:廠家ID、批次ID、型號(hào)ID)。

時(shí)序如下圖:

源代碼程序:

以上就是關(guān)于W25Xxx芯片所有的指令,其他廠家芯片或許還有一些指令,請(qǐng)根據(jù)情況看手冊(cè)編寫(xiě)相應(yīng)代碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1761

    瀏覽量

    155938
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1994

    瀏覽量

    88726
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1900

    瀏覽量

    102185
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    通用SPI接口的NOR Flash存儲(chǔ)器特性

    在嵌入式系統(tǒng)設(shè)計(jì)中,NOR Flash存儲(chǔ)器憑借其快速讀取和可靠的數(shù)據(jù)存儲(chǔ)能力,成為代碼存儲(chǔ)與直接執(zhí)行(XIP)的核心器件。英尚代理推出的一款適合工業(yè)級(jí)應(yīng)用的SPI接口NOR Flash芯片
    的頭像 發(fā)表于 04-07 15:15 ?172次閱讀

    JL杰理AC696N系列芯片SPI接口實(shí)戰(zhàn):驅(qū)動(dòng)Flash、LCD與RGB燈

    文章闡述了,杰理AC696N系列芯片功能:驅(qū)動(dòng)Flash、LCD、RGB等。AC696N開(kāi)發(fā)板支持SPI主機(jī)模式,可輕松驅(qū)動(dòng)這種類(lèi)型外設(shè)。
    的頭像 發(fā)表于 04-01 17:49 ?1241次閱讀
    JL杰理AC696N系列芯片<b class='flag-5'>SPI</b>接口實(shí)戰(zhàn):<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>Flash</b>、LCD與RGB燈

    從NOR Flash 到 NAND Flash 和SD NAND,從底層結(jié)構(gòu)到應(yīng)用差異

    nor flash,nor nand,sd nand,spi nor,nand flash
    的頭像 發(fā)表于 03-05 18:24 ?454次閱讀
    從NOR <b class='flag-5'>Flash</b> 到 NAND <b class='flag-5'>Flash</b> 和SD NAND,從底層結(jié)構(gòu)到應(yīng)用差異

    深入解析Rockchip SFC驅(qū)動(dòng)SPI Flash傳輸流程與問(wèn)題排查指南

    Controller)驅(qū)動(dòng)spi-rockchip-sfc.c),用于高效管理SPI Flash的讀寫(xiě)傳輸。本文基于Linux內(nèi)核驅(qū)動(dòng)
    的頭像 發(fā)表于 02-04 07:13 ?844次閱讀
    深入解析Rockchip SFC<b class='flag-5'>驅(qū)動(dòng)</b>:<b class='flag-5'>SPI</b> <b class='flag-5'>Flash</b>傳輸流程與問(wèn)題排查指南

    SPI NOR FlashSPI NAND Flash存儲(chǔ)芯片的區(qū)別

    SPI NOR FlashSPI NAND Flash并非相互替代,而是互補(bǔ)關(guān)系。SPI NOR勝在讀取速度快、使用簡(jiǎn)單、可靠性高,是代碼
    的頭像 發(fā)表于 01-29 16:58 ?923次閱讀
    <b class='flag-5'>SPI</b> NOR <b class='flag-5'>Flash</b>和<b class='flag-5'>SPI</b> NAND <b class='flag-5'>Flash</b>存儲(chǔ)芯片的區(qū)別

    國(guó)產(chǎn)SPI NOR Flash接口閃存介紹

    在當(dāng)今各類(lèi)電子設(shè)備對(duì)存儲(chǔ)性能要求日益提升的背景下,SPI NOR Flash憑借其高速讀取、低功耗及靈活接口等優(yōu)勢(shì),成為嵌入式系統(tǒng)代碼存儲(chǔ)的關(guān)鍵元件。GT25Q系列SPI NOR Flash
    的頭像 發(fā)表于 12-26 11:51 ?683次閱讀

    FPGA實(shí)現(xiàn)基于SPI協(xié)議的Flash驅(qū)動(dòng)控制芯片擦除

    本篇博客具體包括SPI協(xié)議的基本原理、模式選擇以及時(shí)序邏輯要求,采用FPGA(EPCE4),通過(guò)SPI通信協(xié)議,對(duì)flash(W25Q16BV)存儲(chǔ)的固化程序進(jìn)行芯片擦除操作。
    的頭像 發(fā)表于 12-02 10:00 ?2910次閱讀
    FPGA實(shí)現(xiàn)基于<b class='flag-5'>SPI</b>協(xié)議的<b class='flag-5'>Flash</b><b class='flag-5'>驅(qū)動(dòng)</b>控制芯片擦除

    高性能SPI NOR FLASH芯片ZB25VQ系列推薦

    在嵌入式系統(tǒng)、物聯(lián)網(wǎng)設(shè)備及各類(lèi)存儲(chǔ)應(yīng)用中,SPI NOR FLASH芯片因其接口簡(jiǎn)單、功耗低、讀寫(xiě)速度快等特點(diǎn),成為代碼存儲(chǔ)與數(shù)據(jù)緩存的常見(jiàn)選擇。SPI NOR FLASH是一種基于
    的頭像 發(fā)表于 12-01 14:52 ?900次閱讀

    MCU200T的SPI FLASH驅(qū)動(dòng)程序的單條指令設(shè)計(jì)

    設(shè)計(jì),由SPI串行外設(shè)接口協(xié)議規(guī)定,我們所作的先要滿(mǎn)足SPI協(xié)議,同時(shí)我們需要查到MCU200T外掛的SPIFLASH的數(shù)據(jù)手冊(cè),以便我們了解到我們需要的指令,指令碼,以及指令對(duì)應(yīng)的時(shí)序。 我們先來(lái)講如何卡
    發(fā)表于 10-28 08:01

    通用bootloader無(wú)法使用45db161flash怎么解決?

    通用bootloader不選“支持spi flash”,download放于片內(nèi)flash,正常啟動(dòng),ota正常,app驅(qū)動(dòng)at45db161讀寫(xiě)正常。通用bootloader選“支持
    發(fā)表于 09-18 08:23

    SPI NOR FLASH是什么,與SPI NAND Flash的區(qū)別

    SPI NOR FLASH是什么? ? SPI NOR FLASH是一種非易失性存儲(chǔ)器,它通過(guò)串行接口進(jìn)行數(shù)據(jù)傳輸,具有讀寫(xiě)速度快、可靠性高、體積小等優(yōu)點(diǎn)。它采用類(lèi)似SRAM的存儲(chǔ)方式
    的頭像 發(fā)表于 08-21 09:26 ?1896次閱讀

    SFUD驅(qū)動(dòng)庫(kù)實(shí)戰(zhàn)手冊(cè):串行SPI Flash開(kāi)發(fā)全流程解析

    工作原理與實(shí)戰(zhàn)技巧。 SFUD( Serial Flash Universal Driver)是開(kāi)源的串行SPI Flash通用驅(qū)動(dòng)庫(kù)。 ? 旨在解決不同品牌及規(guī)格串行
    的頭像 發(fā)表于 07-29 13:19 ?863次閱讀
    SFUD<b class='flag-5'>驅(qū)動(dòng)</b>庫(kù)實(shí)戰(zhàn)手冊(cè):串行<b class='flag-5'>SPI</b> <b class='flag-5'>Flash</b>開(kāi)發(fā)全流程解析

    FLASH燒寫(xiě)/編程白皮書(shū)

    白皮書(shū):如何燒寫(xiě)Flash——不同場(chǎng)景不同需求下的選擇認(rèn)識(shí)Flash?NAND vs. NOR如何燒寫(xiě)/編程不同方案比較
    發(fā)表于 07-28 16:05 ?0次下載

    瑞薩RA8D1 MCU的OSPI Flash適配指南

    OSPI Flash(Octal SPI Flash)是一種基于SPI(串行外設(shè)接口)擴(kuò)展的高速串行Flash存儲(chǔ)器,采用8-bit數(shù)據(jù)總線
    的頭像 發(fā)表于 07-17 11:24 ?3358次閱讀
    瑞薩RA8D1 MCU的OSPI <b class='flag-5'>Flash</b>適配指南

    如何通過(guò)SFL為設(shè)備添加Flash編程支持

    SEGGER Flash Loader(SFL)是J-Link設(shè)備支持套件(DSK)的一部分,通過(guò)SFL,用戶(hù)可以為自己的新設(shè)備添加Flash編程支持。
    的頭像 發(fā)表于 05-19 16:35 ?1691次閱讀
    如何通過(guò)SFL為設(shè)備添加<b class='flag-5'>Flash</b><b class='flag-5'>編程</b>支持