ATmega128L單片機的MiCrOSD卡讀寫
摘要 針對電腦橫機控制系統對花型文件數據存儲的要求,在ATmegal28L單片機基礎上采用Micro SD卡實現嵌入式文件系統。文章介紹了Micro SD卡的特點、FAT文件系統、SPI模式協議以及硬件接口的實現。通過ATmegal28L的SPI模式與Micro SD卡進行同步數據傳輸,實現Micro SD卡的讀寫,以FAT32文件格式建立相應的文件系統,把數據以文件方式寫入Micro SD卡。通過單片機向Micro SD卡發送讀寫扇區命令,完成文件的創建、打開、讀寫、刪除等操作。
關鍵詞 ATmegal28L Micro SD卡 串行外設協議 文件分配表
引 言
隨著工業控制系統功能的增強,系統對于存儲介質的安全、容量、性能的要求越來越高。Micro SD卡是在SD卡和Mini SD卡基礎上發展起來的一種多功能存儲卡,具備串行和隨機存取能力,可以通過專用優化速度的串行接口訪問,數據傳輸可靠,安全性好,傳輸速度快,存儲容量大,體積小,被列為目前全球最小的迷你存儲卡。Micro SD卡支持SD模式和SPI模式。隨著高性能單片機的性能不斷提高,利用高性能、低功耗的AVR 8位ATmegal28L單片機的串行外設接口SPI與Micro SD卡之間進行高速同步數據傳輸,設計開發了一種嵌入式文件系統。
1 硬件電路設計
MicrO SD卡的接口可以支持兩種操作模式:SD模式和SPI模式。主機系統可以選擇其中任一模式。SD卡模式允許4線的高速數據傳輸,傳輸速率高,但是大部分單片機無此接口,使用軟件模擬協議復雜。SPI模式使用簡單通用的SPI通道接口就可實現數據傳輸,目前大多數單片機提供SPI接口。SPI模式的優勢在于可以使用標準主機,從而把外設減少到最低。SPI模式相對于SD模式的缺點是損失了傳輸速度;但是目前的微處理器的處理速度越來越高,利用SPI模式大都能滿足工程需要。
Micro SD卡要求用全雙工、8位的SPI操作。
ATmegal28L單片機和Micro SD卡之間只需要4根信號線就可以完成數據的讀寫,當CS信號線為低電平時,主機開始所有的總線傳輸。數據從單片機的MOSI引腳同步輸入Micro SD卡的DI引腳,并由Micro SD卡的DO線同步輸入單片機的MISO引腳,數據在CLK信號的上升沿同步輸入和輸出。在每個數據傳輸的結尾還必須提供8個額外的時鐘,以允許Micro SD卡完成任何未完結的操作。由于Micro SD卡的電壓為3.3 V,所以選擇需要支持3.3 V的I/O端口輸出的ATmegal28L單片機。另外,使用SPI模式時,為了防止在無卡接人或卡驅動器呈高阻態時總線懸空,根據SD卡規范,這些信號需要在主機端用10 kQ~100 kΩ的上拉電阻,其硬件連接電路如圖1所示。
2 軟件設計
2.1 Micro SD卡初始化為SPI總線模式
ATmegal28L單片機包含一個串行外設接口SPI,可以方便地對Micro SD卡接口進行配置。為了配置時鐘和數據長度,需要對SPI控制寄存器SPCR和SPI狀態寄存器SPSR進行設置:使能SPI,選擇單片機為主機模式,時鐘上升沿鎖存數據,并且對SPI時鐘進行設置。Micro SD卡的SPI模式通信由主機控制。每一個指令或數據塊由8位的字節和CS標志構成,SPI通信由指令、響應和數據組成。主機先將Micro SD卡的片選CS置低,激活MicroSD卡進人工作狀態。
評論