<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > HCS12X單片機的SD卡FAT文件系統(tǒng)讀寫設(shè)計

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

          作者: 時間:2010-11-15 來源:網(wǎng)絡(luò) 收藏

          2 硬件設(shè)計
          SD卡有2種操作模式:SD卡模式、SPI模式。SD卡模式允許通過4線高速總線傳輸,但由于大部分無此接口模塊,故選擇SPI模式。HCSl2X系列內(nèi)部都帶有此同步串行外部設(shè)備接口(Serial Peripheral Interface,SPI)。可以通過SPI系統(tǒng)組成一個通信速率比SCI高的同步網(wǎng)絡(luò),故使用SPI模式可以把外設(shè)減少到最低。SPI模式相對于SD卡模式的缺點是損失了傳輸速度;但是目前的微處理器的處理速度越來越高,利用SPI模式大都能滿足工程需要。
          HCSl2X單片機的全雙工8位SPI模塊有4個引腳,分別為主入從出引腳MISO、主入從出引腳MOSI、串行時鐘引腳SCK以及從機片選引腳SS。當CS信號線為低電平時,主機開始所有的總線傳輸。數(shù)據(jù)從單片機的MOSI引腳同步輸入Micro SD卡的DA引腳,Micro SD卡返回數(shù)據(jù)由DO線同步輸入單片機的MISO引腳,數(shù)據(jù)在CLK信號的上升沿同步輸入和輸出。

          3 軟件設(shè)計
          3.1 HCSl2X總線時鐘超頻
          MC9S12XSl28MAA默認總線時鐘默認同外接晶振相關(guān),但可以通過配置PLL鎖相環(huán)實現(xiàn)單片機總線超頻,從而加快SD卡讀取速率。實驗中可通過下列代碼將單片機總線頻率超頻到80MHz:

          c.JPG

          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高速模式初始化流程。

          b.JPG



          關(guān)鍵詞: 單片機

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();