HCS12X單片機的SD卡FAT文件系統(tǒng)讀寫設(shè)計[3]

終端與業(yè)務(wù) 責任編輯:kaixiu 2010-11-19

摘要:3.2HCSl2XSPl模塊初始化MC9S12XSl28MAA單片機包含2個串行外設(shè)接口SPI,可以很方便地實現(xiàn)對MicroSD卡接口的數(shù)據(jù)傳輸。為了配置時鐘和數(shù)據(jù)長度,需要對SPI控制寄存器(SPCRl和SPICR2)、SPI波特率寄存器SPIBR和SPI數(shù)據(jù)寄存器SPIDR進行設(shè)置:使能SPI模塊,將SPICRl中的MSTR位置1使單片機工作在主機模式,產(chǎn)生串行時鐘來同步主從

  3.2 HCSl2XSPl模塊初始化

  MC9S12XSl28MAA單片機包含2個串行外設(shè)接口SPI,可以很方便地實現(xiàn)對Micro SD卡接口的數(shù)據(jù)傳輸。為了配置時鐘和數(shù)據(jù)長度,需要對SPI控制寄存器(SPCRl和SPICR2)、SPI波特率寄存器SPIBR和SPI數(shù)據(jù)寄存器SPIDR進行設(shè)置:使能SPI模塊,將SPICRl中的MSTR位置1使單片機工作在主機模式,產(chǎn)生串行時鐘來同步主從雙方的移位寄存器,配置SPI時鐘極性位與SPI時鐘相位控制位,使能從機輸出選擇;初始化SPI波特率寄存器。

  3.3 SD卡初始化

  SD卡初始數(shù)據(jù)傳輸需工作在低于400 kb/s的頻率,因此配置SPI波特率寄存器,以工作在低速模式下。片選信號后應(yīng)延時至少74個時鐘周期。SD卡默認缺省使用SD總線傳輸協(xié)議,主機需要發(fā)出命令CMDO(CMD_GO_IDLE_STATE)才能使SD卡工作在SPI傳輸模式下,當單片機返回0x 01時說明已經(jīng)進入了IDLE狀態(tài)。此時應(yīng)循環(huán)發(fā)送CMD55+ACMD41以確認是否為SD卡,如果回應(yīng)超時則發(fā)送CMDl(CMD_SEND_OP_COND)以確認是否為MMC卡。經(jīng)實驗發(fā)現(xiàn),Kingston公司的Micro SD卡使用CMD55+ACMD41或者CMDl都可以進行激活。激活SD卡的SPI模式后SD卡進入準備狀態(tài),此時發(fā)送CMDl6(CMD_SET_BLOCKLEN)設(shè)置SD卡的讀寫塊大小,然后重新配置SPI波特率寄存器SPIBR使單片機SPI工作在高速頻率下,延時8個時鐘周期后返回,完成SD卡初始化。圖2為SD卡SPI高速模式初始化流程。

  3.4讀寫單塊數(shù)據(jù)

  SD卡單塊數(shù)據(jù)的讀取是先通過單片機發(fā)送CMDl7(CMD_READ_SINGLE_BLOCK)命令,以SD卡指定數(shù)據(jù)塊起始位地址作為參數(shù),如果讀取成功SD卡會返回1個R1命令作為響應(yīng)。然后發(fā)送1個起始數(shù)據(jù)命令,接著發(fā)送單塊字節(jié)數(shù)量的數(shù)據(jù)并接收SPI數(shù)據(jù)寄存器SPIDR中的數(shù)據(jù),最后是2字節(jié)CRC校驗。

  SD卡單塊數(shù)據(jù)的寫入與讀取相似,通過單片機發(fā)送CMD24(CMD_WRITE_SINGLE_BLOCK)命令,以SD卡指定數(shù)據(jù)塊起始位地址作為參數(shù),如果讀取成功SD卡會返回1個R1命令作為響應(yīng)。然后發(fā)送1個起始數(shù)據(jù)命令,接著發(fā)送單塊字節(jié)數(shù)量的需寫入數(shù)據(jù),最后是2字節(jié)CRC校驗。

[1]  [2]  [3]  [4]  [5]  [6]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準!

通信工程師備考資料免費領(lǐng)取

去領(lǐng)取

距離2025 通信工程師考試

還有
  • 1
  • 7
  • 2
專注在線職業(yè)教育24年

項目管理

信息系統(tǒng)項目管理師

廠商認證

信息系統(tǒng)項目管理師

信息系統(tǒng)項目管理師

學(xué)歷提升

!
咨詢在線老師!