<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式處理器MPC8250與CF卡的接口設計

嵌入式處理器MPC8250與CF卡的接口設計

作者: 時(shí)間:2012-06-27 來(lái)源:網(wǎng)絡(luò ) 收藏

當寫(xiě)入一個(gè)扇區的數據時(shí),首先比較所寫(xiě)入的扇區號(CurrSectorNum),是否與備份數據的扇區號(SaveSectorNum)一致,如果一致,則把數據寫(xiě)入備份數據中,并且設置SectorDirty為“1”;否則,判斷備份數據是否更改,即SectorDirty是否為“1”;如果不是,則從CF卡中讀取扇區號為CurrSectorNum的數據到tempSect中;否則,先把tempSect的數據寫(xiě)回CF卡,然后從CF卡中讀取扇區號為CurrSectorNum的數據到tempSect中。最后,設置備份數據扇區號SaveSectorNum為當前數據的扇區號CurrSectorNum,將指定數據寫(xiě)到備份數據中,并且設置SectorDirty為“1”。

2.3 讀寫(xiě)數據的相關(guān)寄存器

根據CF卡標準,不能直接訪(fǎng)問(wèn)CF卡的數據區域,而需要通過(guò)訪(fǎng)問(wèn)CF卡內的相關(guān)寄存器(這些寄存器的基地址在CF卡初始化時(shí)配置,見(jiàn)2.1節)間接讀取或者寫(xiě)入數據。在訪(fǎng)問(wèn)CF卡時(shí)必須對它們進(jìn)行正確配置:

(1)扇區數目寄存器(Sector_CNT Register)

讀寫(xiě)操作時(shí),保存需要傳送的扇區數目。如果為0,則選擇256個(gè)扇區;如果操作成功,操作結束時(shí)此寄存器為0;如果操作不成功,此寄存器包含了有待完成的扇區數目。

(2)磁頭寄存器(Select_HEAD Register)

其中包含了LBA位(1比特),用于設置地址訪(fǎng)問(wèn)方式?!埃薄保煟蹋拢粒撸停铮洌澹牉檫壿嫷刂吩L(fǎng)問(wèn)方式,“0”為柱面/磁頭/扇區訪(fǎng)問(wèn)方式。本系統選擇邏輯地址訪(fǎng)問(wèn)方式,則該寄存器還包含了邏輯地址的24~27位。

(3)扇區編號寄存器(Sector_NUM Register)

在采用邏輯地址訪(fǎng)問(wèn)方式時(shí),該寄存器包含了邏輯地址的0~7位。

(4)柱面低位寄存器(Cylinder_LO Register)

在采用邏輯地址訪(fǎng)問(wèn)方式時(shí),該寄存器包含了邏輯地址的8~15位。

(5)柱面高位寄存器(Cylinder_HI Register)

在采用邏輯地址訪(fǎng)問(wèn)方式時(shí),該寄存器包含了邏輯地址的16~23位。

(6)狀態(tài)寄存器(Status Register)

反映了CF卡的狀態(tài),其中包含了CF卡忙(Busy)位、出錯位(Err)、是否準備就緒位(Rdy)等。

(7)數據寄存器(Data Register)

存放讀寫(xiě)數據,是一個(gè)16位寄存器。

2.4 讀數據

從CF卡讀取一個(gè)扇區的數據,如圖3所示。因為系統采用的CF卡的扇區大小為:SectorSize = 512字節,假設讀寫(xiě)數據的地址為Addr,則該地址所在的扇區號為:

Sector = Addr % SectorSize。

首先配置寄存器,設置讀取的扇區數目、相應地址和訪(fǎng)問(wèn)模式;然后發(fā)送讀命令(0x20),等待CF卡空閑且準備就緒,再從數據寄存器中連續讀取一個(gè)扇區的數據;完成讀取后,等待CF卡空閑;程序返回。

2.5 寫(xiě)數據

將數據寫(xiě)入CF卡的操作與從CF卡讀取數據的操作類(lèi)似,如圖4所示。首先配置寄存器,設置寫(xiě)入的扇區數目、相應地址和訪(fǎng)問(wèn)模式;然后發(fā)送寫(xiě)命令(0x30),等待CF卡空閑并且處于準備狀態(tài),連續向數據寄存器寫(xiě)入一個(gè)扇區的數據;完成寫(xiě)入后,等待CF卡空閑,程序返回。

本設計采用的操作系統是μC/OS——一個(gè)源代碼完全公開(kāi)的嵌入式操作系統。所有讀寫(xiě)CF卡的函數都用C語(yǔ)言編制,并能在系統中有效工作。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 嵌入式處理器 MPC8250 CF卡

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>