|
幾天老師讓我折騰一下SD卡SPI模式讀寫(暫時無FAT文件系統(tǒng),F(xiàn)AT對我這個新手比較耗時),下個學期來研究下FAT文件系統(tǒng),到時候有機會也跟大家交流交流~
因為51單片機無SPI總線接口,所以用軟件模擬SPI總線。重點和難點主要在于SD卡SPI模式的初始化,讀寫SD卡。
哦對了,我用的是MMC卡,不過MMC卡是向上兼容的,所以SD卡手冊頁基本適用于MMC卡。
下面我把調(diào)試過程中遇到的一些問題以及主要代碼,流程圖貼出來供交流,歡迎指點。
SD卡和單片機間的電平轉(zhuǎn)換我是用三極管9013做開關,不過我們需要一個5V(用于單片機)和3.3V(用于SD卡)的電源哦~到網(wǎng)上搜下就有了,我就不多說了。
發(fā)幾個比較主要的手冊:
SD卡在單片機上的應用.pdf
(530.72 KB, 下載次數(shù): 288)
2016-11-15 12:40 上傳
點擊文件名下載附件
FAT文件系統(tǒng)原理.pdf
(1.18 MB, 下載次數(shù): 189)
2016-11-15 12:09 上傳
點擊文件名下載附件
SD卡接口描述 .pdf
(1.54 MB, 下載次數(shù): 128)
2016-11-15 12:10 上傳
點擊文件名下載附件
SD卡使用手冊.pdf
(1.12 MB, 下載次數(shù): 138)
2016-11-15 12:10 上傳
點擊文件名下載附件
SPI總線協(xié)議.pdf
(1.48 MB, 下載次數(shù): 130)
2016-11-15 12:10 上傳
點擊文件名下載附件
一些調(diào)試總結:
1、寫完代碼開始硬件調(diào)試的時候,發(fā)現(xiàn)在keil上調(diào)試仿真的時候控制開發(fā)板上的LED等閃爍是沒問題的,可是下到單片機上調(diào)試卻發(fā)現(xiàn)很不符合邏輯,該閃的時候不閃,不該閃的時候閃個不停。后來發(fā)現(xiàn)原來是我定義一個緩沖區(qū)(用來接收從SD卡讀取的數(shù)據(jù))定義到data去了,改成xdata之后又行了。不過不明白為什么,有人知道嗎?
2、SD卡手冊中提示:After power up, the host starts the clock and sends the initializing sequence on the CMD line. This sequence is a contiguous stream of logical ‘1’s. The sequence length is the maximum of 1msec, 74 clocks or the supply-ramp-uptime; the additional 10 clocks (over the 64 clocks after what the card should be ready for communication) is provided to eliminate power-up synchronization problems.
即:在SD卡上電期間需要往SD卡發(fā)送連續(xù)的高電平‘1’
3、寫完一個命令后延時8個時鐘,以確保和SD卡時鐘同步。
4、寫完一個數(shù)據(jù)塊時返回的數(shù)據(jù)為 0X×××00101,調(diào)試過程中發(fā)現(xiàn)收到的數(shù)據(jù)是0xE5,但數(shù)據(jù)依然可以寫進去,搞了半天,還以為數(shù)據(jù)手冊有誤呢~(要有懷疑精神嘛^_^),其實0xE5也是沒錯的。
……
先說這幾點吧!調(diào)試過程中沒注意記下問題,下次會注意點哈~如果有人也在做這個有不明白的一起交流,都是新手,怕啥?哈哈~
|
評分
-
查看全部評分
|