基于STCl2C5A60S2單片機的SD卡讀寫(xiě)
4 軟件設計
4.1 SD卡的初始化
SD卡從上電到對SD卡進(jìn)行正確的讀寫(xiě)操作,往往都需要一個(gè)上電初始化的過(guò)程。SD卡上電后,主機必須先向SD卡發(fā)送74個(gè)時(shí)鐘周期,以完成SD卡的上電過(guò)程。通常SD卡上電后會(huì )自動(dòng)進(jìn)入SD總線(xiàn)模式,并在SD總線(xiàn)模式下向SD卡發(fā)送復位命令(CMD0)。因此,主機在對SD卡進(jìn)行任何操作前,都必須先要拉低SD卡的片選信號CS(card select),以使SD卡進(jìn)入SPI總線(xiàn)模式,然后再由主機向SD卡發(fā)送命令。SD卡可以響應主機發(fā)來(lái)的各種應答信號,同時(shí)向主機發(fā)送一個(gè)特殊的數據響應標志。若主機讀到的應答信號為01,即表明SD卡已進(jìn)人SPI模式,此時(shí),主機即可不斷地向SD卡發(fā)送命令字(CMDl)并讀取SD卡的應答信號,直到應答信號為00,表明SD卡已完成初始化過(guò)程,并準備好接受下一命令。此后,系統便可讀取SD卡的各寄存器,以進(jìn)行讀寫(xiě)等操作。SD卡初始化流程如圖3所示。下面是SD卡初始化的程序代碼:
4.2 SD卡的讀寫(xiě)
SD卡的數據傳輸主要通過(guò)塊讀寫(xiě)來(lái)實(shí)現。塊長(cháng)度默認為512 KB。當RAM中已存放由模數轉換模塊傳來(lái)的512 KB數據時(shí),單片機便向SD卡寫(xiě)入此塊數據。塊讀取時(shí),可發(fā)送命令CMDl7,接收到的應答信號為0x00。這樣就可以直接接收數據了,接收到的數據的第1個(gè)字節為數據令牌0xfe,后面的為接收到的數據,當輸出口變?yōu)楦唠娖綍r(shí)。表明讀取操作完成。SD卡的讀操作與寫(xiě)操作相同,故此不再贅述。圖4所示是SD卡的讀寫(xiě)軟件流程圖。其具體程序代碼如下:
5 結束語(yǔ)
該SD卡與STCl2C5A60S2單片機的接口電路已在實(shí)際的試驗板上驗證成功,并已證明可以正確實(shí)現數據通訊,故可對SD卡上的文件進(jìn)行各種操作。
評論