999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32 SPI接口的M25P80FLASH的驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

2013-07-07 11:22:04鄧國榮
機(jī)電信息 2013年6期

鄧國榮

(暨南大學(xué)信息技術(shù)研究所,廣東 廣州 510075)

0 引言

M25P80FLASH可以按頁、扇區(qū)和整片擦除,并提供按頁寫數(shù)據(jù)功能,能夠方便地保存數(shù)據(jù)。STM32有獨(dú)立的SPI控制器,該控制器可以直接控制SPI FLASH的讀寫操作,自動(dòng)生成讀寫SPI FLASH控制時(shí)序。因此,本文采用STM32的SPI接口控制M25P80FLASH讀寫,分析了M25P80FLASH的讀寫時(shí)序和SPI接口的初始化,最終實(shí)現(xiàn)了M25P80FLASH的讀寫,仿真結(jié)果顯示,該方案正確、可行。

1 STM32 SPI接口簡介

STM32 SPI接口結(jié)構(gòu)框圖如圖1所示。STM32 SPI接口內(nèi)部有一個(gè)移位寄存器,當(dāng)數(shù)據(jù)從MOSI管腳輸入時(shí),數(shù)據(jù)首先通過移位寄存器移位輸入,然后保存在接收緩沖區(qū)中,由地址和數(shù)據(jù)總線讀出,當(dāng)數(shù)據(jù)寫出時(shí),寫入數(shù)據(jù)首先被寫入發(fā)送緩沖區(qū),然后由移位寄存器從MISO管腳移出。SPI接口輸入和輸出控制時(shí)序由波特率發(fā)生器產(chǎn)生,然后從SCK管腳輸出,在數(shù)據(jù)讀寫過程中同步產(chǎn)生。

圖1 STM32 SPI接口結(jié)構(gòu)圖

2 STM32 SPI接口與M25P80之間的硬件連接

STM 32 SPI接口與M25P80SPI FLASH硬件連接如圖2所示。MOSI對應(yīng)連接M25P80的數(shù)據(jù)輸出口Q,MOSO對應(yīng)M25P80的數(shù)據(jù)輸入口D,時(shí)鐘管腳SCK提供M25P80的時(shí)鐘控制管腳C,CS 對應(yīng) M25P80片選控制管腳 S[1]。

圖2 STM32與M25P80之間的硬件連接

3 M25P80驅(qū)動(dòng)的實(shí)現(xiàn)

3.1 STM32 SPI接口的初始化

STM32 SPI接口初始化流程圖如圖3所示。首先,在SPI開始配置之前,必須先配置SPI接口控制的RCC時(shí)鐘,然后配置MOSI、MOSO和SCK管腳為復(fù)用管腳,并進(jìn)一步配置管腳工作方式為推挽上拉方式,管腳最大輸出工作時(shí)鐘為50M,配置SPI管腳為雙線雙向數(shù)據(jù)傳輸方式,NSS管腳為軟件控制模式,并配置SPI控制方式為主模式,數(shù)據(jù)寬度為8 bit,數(shù)據(jù)采樣時(shí)鐘極性通過CPOL和CPHA控制,設(shè)置時(shí)鐘分頻系數(shù)和CRC校驗(yàn)方式,最后,設(shè)置數(shù)據(jù)傳輸起始位,即先傳輸數(shù)據(jù)高位還是低位。

M25P80的片選控制管腳S,可以直接用STM32的普通IO控制,需要配置為輸出模式,推免上拉,最大輸出與SPI接口管腳一致,都為50M。

圖3 SPI接口初始化配置流程

3.2 M25P80讀數(shù)據(jù)實(shí)現(xiàn)

M25P80控制讀寫的第一步就是讀取ID號(hào),只有ID正常讀取才能說明M25P80時(shí)序控制配置正常。讀M25P80控制指令為0x30,讀M25P80的ID控制指令為0x9F,緊跟控制指令READ之后的是24位讀取數(shù)據(jù)地址,然后就可以直接讀取數(shù)據(jù)了。STM32F2xx固件庫中提供了向SPI FLASH發(fā)送和接收數(shù)據(jù) API函數(shù) SPI_I2S_SendData()和 SPI_I2S_ReceiveData(),在每次數(shù)據(jù)發(fā)送時(shí),都要檢測SPI控制接口的工作狀態(tài),可以通過API函數(shù)SPI_I2S_GetFlagStatus()檢測SPI接口控制狀態(tài)。在控制指令和讀取數(shù)據(jù)地址發(fā)送之后完成,讀取數(shù)據(jù)時(shí),需向FLASH發(fā)送空指令0xA5才能啟動(dòng)數(shù)據(jù)讀取時(shí)序。

在每次向FLAHS發(fā)送數(shù)據(jù)之前,必須先將片選管腳拉低,在每次數(shù)據(jù)讀取完成之后,必須拉高。

3.3 M25P80擦除實(shí)現(xiàn)

M25P80FLASH在寫數(shù)據(jù)之前,必須首先擦除。首先,發(fā)送擦除控制指令,有3種擦除FLASH方式,頁擦除、扇區(qū)擦除和整片擦除,可以根據(jù)需要選擇擦除方式,頁擦除每次擦除一頁空間大小,為256 Byte空間,扇區(qū)擦除空間大小為1個(gè)扇區(qū)為64K,整片擦除就是將整個(gè)空間數(shù)據(jù)都擦除。按頁擦除需要的時(shí)間是最短的,適用于對于擦除時(shí)間要求比較短的情況下,扇區(qū)擦除和整片擦除都需要比較長的時(shí)間,而且擦除區(qū)域大,需要擦除的數(shù)據(jù)區(qū)域也大,不適宜實(shí)時(shí)擦除數(shù)據(jù)更新情況,適用于一次性寫入大片數(shù)據(jù)情況。

3.4 M25P80寫數(shù)據(jù)實(shí)現(xiàn)

M25P80寫數(shù)據(jù)之前,首先需要擦除需要寫入空間數(shù)據(jù),然后才能寫入數(shù)據(jù),每次寫數(shù)據(jù)之前還需要寫使能,即設(shè)置狀態(tài)寄存器的WEL位為高電平同時(shí),需要檢查狀態(tài)寄存器的SRWD寫保護(hù)位,高電平為寫保護(hù)失效,低電平為寫保護(hù)使能,在每次數(shù)據(jù)寫入時(shí),必須SRWD為高電平,即寫保護(hù)失效才能寫入數(shù)據(jù)。M25P80按頁寫入數(shù)據(jù)時(shí)序圖如圖4所示,按頁寫數(shù)據(jù)一次可以寫入256 Byte,M25P80只提供按頁寫數(shù)據(jù)命令,只能一次寫入一頁數(shù)據(jù)。

圖4 M25P80按頁寫入數(shù)據(jù)時(shí)序圖

由于M25P80只能一次寫入一頁數(shù)據(jù),只能一次寫入256 Byte數(shù)據(jù),而且M25P80的地址空間是按頁分配的,每次不能跨頁寫數(shù)據(jù),一次只能在一頁中寫數(shù)據(jù),所以,當(dāng)寫入數(shù)據(jù)超出一頁時(shí),就需要多次寫入數(shù)據(jù)。M25P80多頁寫數(shù)據(jù)處理流程圖如圖5所示。首先,寫入數(shù)據(jù)之前,需要先擦寫寫入地址空間數(shù)據(jù),然后判斷寫入起始地址是否是頁初始地址,如果是頁初始地址,再判斷寫入數(shù)據(jù)長度是否超出一頁大小,如果是,數(shù)據(jù)計(jì)算需要寫入的頁數(shù)N,把數(shù)據(jù)寫入N頁地址空間中,并將最后剩余字節(jié)寫入第N頁的下一頁中,如果寫入數(shù)據(jù)長度小于一頁,只需要直接將數(shù)據(jù)寫入指定頁中即可。如果寫入地址不是頁初始地址,首先需要判斷數(shù)據(jù)是否超出一頁,如果沒有超出一頁大小,還需要判斷寫入數(shù)據(jù)長度是否大于寫入數(shù)據(jù)起始地址到頁尾的剩余字節(jié)數(shù),如果是,則寫滿寫入頁地址空間,并將剩余字節(jié)寫入下一頁中,如果寫入數(shù)據(jù)小于寫入數(shù)據(jù)起始地址到頁尾的剩余字節(jié)數(shù),則直接將數(shù)據(jù)寫入指定頁中即可;如果寫入數(shù)據(jù)超出一頁大小,首先填滿起始頁地址空間,然后計(jì)算剩余數(shù)據(jù)需要寫入頁數(shù)N,將剩余數(shù)據(jù)寫入N頁地址空間中,最后,將剩余字節(jié)寫入第N頁的下一頁中即可[2-3]。

4 仿真結(jié)果與分析

圖5 SPI FLASH多頁寫數(shù)據(jù)處理流程圖

STM32的SPI接口控制M25P80仿真結(jié)果圖如圖6所示。首先,STM32控制頁擦除M25P80的地址空間0x00對應(yīng)的頁,然后向FLASH中寫入SPI_SendData[]中的數(shù)據(jù),寫完之后,再讀取FLASH對應(yīng)地址中的數(shù)據(jù),將結(jié)果存放到SPI_RecData[]中,仿真結(jié)果顯示,寫入數(shù)據(jù)和讀出數(shù)據(jù)一致,說明FLASH已經(jīng)正常讀寫了。

圖6 SPI FLASH數(shù)據(jù)讀寫仿真圖

5 結(jié)語

本文分析了M25P80FLASH的讀寫控制時(shí)序,并針對M25P80的多頁寫數(shù)據(jù)功能進(jìn)行了詳細(xì)的分析和介紹,并使用STM32的SPI控制接口實(shí)現(xiàn)了對M25P80FLASH的讀寫控制。仿真結(jié)果顯示,STM32的 SPI控制接口可以實(shí)現(xiàn)對M25P80FLASH的讀寫控制。

[1]關(guān)珊珊,周潔敏.基于Xilinx FPGA的SPI Flash控制器設(shè)計(jì)與驗(yàn)證[J].電子器件,2012,2(35):216~220

[2]張立為,鐘慧敏.實(shí)現(xiàn)基于FPGA的SPI Flash控制器設(shè)計(jì)[J].微計(jì)算機(jī)信息,2010,6(26):124~126

[3]唐琳,方方,張保靜,等.基于ARM的多通道SPI Flash控制器設(shè)計(jì)[J].核電子學(xué)與探測技術(shù),2012,5(32):583~586

主站蜘蛛池模板: 欧美精品二区| 久久久久九九精品影院 | 国产激情第一页| 免费jjzz在在线播放国产| 九色视频最新网址 | 亚洲综合色吧| 久久久久久高潮白浆| 亚洲日韩在线满18点击进入| 青青热久麻豆精品视频在线观看| 亚洲免费播放| 无码区日韩专区免费系列| AV熟女乱| 国产原创演绎剧情有字幕的| 97国产在线播放| 欧美a级完整在线观看| 亚洲人成在线免费观看| 国产成人精品亚洲日本对白优播| 一级一毛片a级毛片| 成人在线观看一区| 亚洲一区精品视频在线| 国产爽爽视频| 成人久久精品一区二区三区 | 国产激情无码一区二区APP| 全部免费特黄特色大片视频| 日本日韩欧美| 久996视频精品免费观看| 欧美日韩第三页| 欧类av怡春院| 亚洲区欧美区| 亚洲国产精品无码久久一线| 亚洲一区二区日韩欧美gif| 国产国产人成免费视频77777| 欧美成人手机在线视频| 国产成人调教在线视频| 福利在线免费视频| 重口调教一区二区视频| 国产精品成人AⅤ在线一二三四| 中文无码伦av中文字幕| 国产精品人莉莉成在线播放| 全裸无码专区| 成人午夜亚洲影视在线观看| 久久精品亚洲中文字幕乱码| 自慰网址在线观看| 国产丰满大乳无码免费播放| 操操操综合网| 日韩成人在线视频| 亚洲人成网址| 这里只有精品在线播放| 欧美日韩动态图| 白丝美女办公室高潮喷水视频| 国产免费久久精品99re丫丫一| 国产国语一级毛片| 亚洲成a人片在线观看88| 国产精品视频免费网站| 五月天在线网站| 毛片在线播放网址| 手机在线免费毛片| 亚洲成av人无码综合在线观看 | 欧美国产菊爆免费观看| 色妞www精品视频一级下载| 女人18一级毛片免费观看 | 91成人在线观看| 亚洲综合网在线观看| 亚洲国产精品一区二区第一页免| 日韩av手机在线| 亚洲毛片在线看| 小13箩利洗澡无码视频免费网站| 日本亚洲成高清一区二区三区| 日韩精品一区二区三区免费| 成人免费午间影院在线观看| 欧美成a人片在线观看| 亚洲品质国产精品无码| 久久精品亚洲专区| 亚洲综合久久成人AV| 国产成人免费手机在线观看视频 | 成人自拍视频在线观看| 亚洲日本中文字幕天堂网| 青青草原国产免费av观看| 免费观看国产小粉嫩喷水| 99热亚洲精品6码| 欧美日韩午夜| 国产成a人片在线播放|