2011年6月5日 星期日

DIY - PIC:PIC18F4550 MCHPMSD 初始化 (八十)

DIY - PIC:PIC18F4550 MCHPMSD 初始化 (八十):

計劃中程式首先將 SD 記憶卡先初始化,然後讀取 SD 記憶卡的文件檔案資料,最後寫入資料。
▲ BWS SD 記憶卡程式流程圖
▲ Microchip  MCHPMSD 的文件檔案
 Microchip  MCHPMSD 的初始化是由 InitFAT(),原始程式開始時是先執行 InitializeSystem(),但發覺同 InitFAT() 的執行十分相似,不同的是 InitializeSystem() 會執行 USB 初始化,但 InitFAT() 祇會執行 SD 記憶卡初始化。

▲ initFAT 副程式流程圖
 SD 記憶卡初始化會啟動 SPI 模式,需要使用的命令有3個:CMD0、ACMD41、CMD55(使用 ACMD 類的指令前應先發 CMD55,CMD55 起到一個切換到 ACMD 類命令的作用)。而且在發出 CMD0 命令前,必須在向 SD 記憶卡發送之前向 SD 記憶卡發送 74+ 個時鐘。因為在上電初期,電壓的上升過程時,根據 SD記憶卡組織的計算約合 64 個 CLK 週期才能到達 SD 記憶卡的正常工作電壓,這個叫做 Supply ramp up time,其後的 10 個 CLK 是為了與 SD 記憶卡同步,之後開始 CMD0 的操作,嚴格按照此項操作,一定沒有問題。

SD 記憶卡的 SPI 匯流排,在 SPI CLK 在上升沿時會讀入 SD 記憶卡的資料,在 SPI CLK在下降沿時會輸出資料到 SD 記憶卡。首先使 CS 為低電平,片選 SD 記憶卡,在 SD 記憶卡的 DI 寫入指令;寫入指令後還要附加 8 個填充時鐘,是 SD 記憶卡完成內部操作,之後在 SD 記憶卡的 DO上接受回應,回應接受完畢使 CS 為低電平,再附加 8 個填充時鐘。

相關網址:
※ DIY - PIC:SD 記憶卡規格 (七十)
※ DIY - PIC: FAT 表檔案配置表種類 (七十一)
※ DIY - PIC:SD 記憶卡 FAT 表 (七十二)
※ DIY - PIC:SD 記憶卡初始化 (七十三)
※ DIY - PIC:PIC18F4550 SD 記憶卡電路 (七十四)
※ DIY - PIC:PIC18F4550 SD 記憶卡穩壓電路 (七十五)
※ DIY - PIC:PIC18F4550 SD 記憶卡程式 (七十六)
※ DIY - PIC:PIC18F4550 MCHPMSD 實驗板 (七十七)
※ DIY - PIC:PIC18F4550 MCHPMSD 程式介紹 (七十八)
※ DIY - PIC:PIC18F4550 MCHPMSD 編程開始 (七十九)
※ DIY - PIC:PIC18F4550 MCHPMSD 初始化 (八十)
※ DIY - PIC:PIC18F4550 MCHPMSD 讀取 SD 記憶卡程式 (八十一)
※ DIY - PIC:PIC18F4550 MCHPMSD 寫入 SD 記憶卡程式 (八十二)
※ DIY - PIC:PIC18F4550 MCHPMSD SD 記憶卡程式 (八十三)

相關網址:
※ SD 記憶卡
※ SDHC 記憶卡
※ SDXC 記憶卡

沒有留言:

張貼留言