基于單片機的SD卡FAT文件系統(tǒng)讀寫設(shè)計
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:
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波特率寄存器,以工作在低速模式下。片選信號后應延時至少74個時鐘周期。SD卡默認缺省使用SD總線傳輸協(xié)議,主機需要發(fā)出命令CMDO(CMD_GO_IDLE_STATE)才能使SD卡工作在SPI傳輸模式下,當單片機返回0x 01時說明已經(jīng)進入了IDLE狀態(tài)。此時應循環(huán)發(fā)送CMD55+ACMD41以確認是否為SD卡,如果回應超時則發(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高速模式初始化流程。
51單片機相關(guān)文章:51單片機教程
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
晶振相關(guān)文章:晶振原理 鎖相環(huán)相關(guān)文章:鎖相環(huán)原理
評論