www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]Ⅰ、寫在前面前面文章講述過關(guān)于SPI的驅(qū)動(dòng)(硬件SPI 和 軟件模擬SPI),本文接著那篇文章來(lái)講述關(guān)于SPI應(yīng)用中【FLASH時(shí)序描述及驅(qū)動(dòng)編程】。寫這篇文章的目的有兩點(diǎn):1.讓大家知道SPI在實(shí)際應(yīng)用開發(fā)中的重要意義; 2.

Ⅰ、寫在前面

前面文章講述過關(guān)于SPI的驅(qū)動(dòng)(硬件SPI 和 軟件模擬SPI),本文接著那篇文章來(lái)講述關(guān)于SPI應(yīng)用中【FLASH時(shí)序描述及驅(qū)動(dòng)編程】。

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

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

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

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

2、如果你是工作了一斷時(shí)間,自己對(duì)芯片驅(qū)動(dòng)編程有一些經(jīng)驗(yàn),在需要使用新的芯片,如果有現(xiàn)成的、比較成熟的驅(qū)動(dòng),那么,你可以不用再話費(fèi)時(shí)間自己親自編寫驅(qū)動(dòng)(編寫驅(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)過多次測(cè)試并沒有問題才上傳至360云盤,歡迎下載測(cè)試、參照學(xué)習(xí)。

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

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

https://yunpan.cn/c6mfRJWva6AJ2訪問密碼

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

https://yunpan.cn/c6mf6zyzCaMwd訪問密碼

SPI FLASH資料:

https://yunpan.cn/c6SNxZMtiiZfc訪問密碼 dbca

STM32F1資料:

https://yunpan.cn/crBUdUGdYKam2訪問密碼ca90

Ⅲ、關(guān)于SPIFLASH

1.SPI FLASH芯片系列

SPI FLASH的種類及型號(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類型(25X是基本芯片, 25Q是快速芯片)

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

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

3.W25Xxx讀寫特性

讀:無(wú)要求

寫:需要擦除才能寫,一次最多可寫入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:寫使能鎖定

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

B.指令集表

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

2.寫使能(0x06)

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

時(shí)序如下圖:

源代碼程序:

3.寫失能(0x04)

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

時(shí)序如下圖:

源代碼程序:

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

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

時(shí)序如下圖:

源代碼程序:

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

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

時(shí)序如下圖:

源代碼程序:

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

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

時(shí)序如下圖:

源代碼程序:

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

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

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

時(shí)序如下圖:

源代碼程序:

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

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

注意:

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

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

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

1.寫入指令0x02; 2.寫入24位地址; 3.連續(xù)寫入N字節(jié)數(shù)據(jù)(只要有時(shí)鐘,可以連續(xù)寫入多字節(jié),注意這里一次不能超過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)

以此類推...

注意:這個(gè)塊的地址是和數(shù)據(jù)的地址對(duì)應(yīng),我們程序塊擦除中將塊區(qū)分開來(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)

以此類推...

同樣,我們程序扇區(qū)擦除中將扇區(qū)以扇區(qū)的形式區(qū)分開來(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(程序中也沒有該功能)。

時(shí)序如下圖:

源代碼程序:

15.讀取ID(0x90)

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

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

W25X16讀到的ID是:EF14

時(shí)序如下圖:

源代碼程序:

16.JEDEC_ID(0x9F)

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

與上一條指令不同點(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è)編寫相應(yīng)代碼。

Ⅴ、說(shuō)明

本文主要是為初學(xué)者提供一個(gè)編程的思路,及如何根據(jù)時(shí)序編程。

以上總結(jié)僅供參考,若有不對(duì)之處,敬請(qǐng)諒解。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉