基于AT89C52單片機(jī)的SD卡的讀寫(xiě)設(shè)計(jì)
發(fā)布時(shí)間:2008/8/19 0:00:00 訪問(wèn)次數(shù):520
設(shè)計(jì)方案
應(yīng)用at89c52讀寫(xiě)sd卡有兩點(diǎn)需要注意。首先,需要尋找一個(gè)實(shí)現(xiàn)at89c52單片機(jī)與sd卡通訊的解決方案;其次,sd卡所能接受的邏輯電平與at89c52提供的邏輯電平不匹配,需要解決電平匹配問(wèn)題。
通訊模式
sd卡有兩個(gè)可選的通訊協(xié)議:sd模式和spi模式。sd模式是sd卡標(biāo)準(zhǔn)的讀寫(xiě)方式,但是在選用sd模式時(shí),往往需要選擇帶有sd卡控制器接口的mcu,或者必須加入額外的sd卡控制單元以支持sd卡的讀寫(xiě)。然而,at89c52單片機(jī)沒(méi)有集成sd卡控制器接口,若選用sd模式通訊就無(wú)形中增加了產(chǎn)品的硬件成本。在sd卡數(shù)據(jù)讀寫(xiě)時(shí)間要求不是很?chē)?yán)格的情況下,選用spi模式可以說(shuō)是一種最佳的解決方案。因?yàn)樵趕pi模式下,通過(guò)四條線就可以完成所有的數(shù)據(jù)交換,并且目前市場(chǎng)上很多mcu都集成有現(xiàn)成的spi接口電路,采用spi模式對(duì)sd卡進(jìn)行讀寫(xiě)操作可大大簡(jiǎn)化硬件電路的設(shè)計(jì)。
雖然at89c52不帶sd卡硬件控制器,也沒(méi)有現(xiàn)成的spi接口模塊,但是可以用軟件模擬出spi總線時(shí)序。本文用spi總線模式讀寫(xiě)sd卡。
電平匹配
sd卡的邏輯電平相當(dāng)于3.3v ttl電平標(biāo)準(zhǔn),而控制芯片at89c52的邏輯電平為5v cmos電平標(biāo)準(zhǔn)。因此,它們之間不能直接相連,否則會(huì)有燒毀sd卡的可能。出于對(duì)安全工作的考慮,有必要解決電平匹配問(wèn)題。
要解決這一問(wèn)題,最根本的就是解決邏輯器件接口的電平兼容問(wèn)題,原則主要有兩條:一為輸出電平器件輸出高電平的最小電壓值,應(yīng)該大于接收電平器件識(shí)別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平的最大電壓值,應(yīng)該小于接收電平器件識(shí)別為低電平的最高電壓值。
一般來(lái)說(shuō),通用的電平轉(zhuǎn)換方案是采用類似sn74alvc4245的專用電平轉(zhuǎn)換芯片,這類芯片不僅可以用作升壓和降壓,而且允許兩邊電源不同步。但是,這個(gè)方案代價(jià)相對(duì)昂貴,而且一般的專用電平轉(zhuǎn)換芯片都是同時(shí)轉(zhuǎn)換8路、16路或者更多路數(shù)的電平,相對(duì)本系統(tǒng)僅僅需要轉(zhuǎn)換3路來(lái)說(shuō)是一種資源的浪費(fèi)。
考慮到sd卡在spi協(xié)議的工作模式下,通訊都是單向的,于是在單片機(jī)向sd卡傳輸數(shù)據(jù)時(shí)采用晶體管加上拉電阻法的方案,基本電路如圖1所示。而在sd卡向單片機(jī)傳輸數(shù)據(jù)時(shí)可以直接連接,因?yàn)樗鼈冎g的電平剛好滿足上述的電平兼容原則,既經(jīng)濟(jì)又實(shí)用。
這個(gè)方案需要雙電源供電(一個(gè)5v電源、一個(gè)3.3v電源供電),3.3v電源可以用ams1117穩(wěn)壓管從5v電源穩(wěn)壓獲取。
硬件接口設(shè)計(jì)
sd卡提供9pin的引腳接口便于外圍電路對(duì)其進(jìn)行操作,9pin的引腳隨工作模式的不同有所差異。在spi模式下,引腳1(dat3)作為spi片選線cs用,引腳2(cmd)用作spi總線的數(shù)據(jù)輸出線mosi,而引腳7(dat0)為數(shù)據(jù)輸入線miso,引腳5用作時(shí)鐘線(clk)。除電源和地,保留引腳可懸空。
本文中控制sd卡的mcu是atmel公司生產(chǎn)的低電壓、高性能cmos 8位單片機(jī)at89c52,內(nèi)含8k字節(jié)的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器和256字節(jié)的隨機(jī)存儲(chǔ)數(shù)據(jù)存儲(chǔ)器。由于at89c52只有256字節(jié)的數(shù)據(jù)存儲(chǔ)器,而sd卡的數(shù)據(jù)寫(xiě)入是以塊為單位,每塊為512字節(jié),所以需要在單片機(jī)最小系統(tǒng)上增加一片ram。本系統(tǒng)中ram選用存儲(chǔ)器芯片hm62256,容量為32k。對(duì)ram進(jìn)行讀寫(xiě)時(shí),鎖存器把低8位地址鎖存,與p2口的8位地址數(shù)據(jù)構(gòu)成16位地址空間,從而可使sd卡一次讀寫(xiě)512字節(jié)的塊操作。系統(tǒng)硬件圖如圖2所示。
軟件設(shè)計(jì)
spi工作模式
sd卡在上電初期自動(dòng)進(jìn)入sd總線模式,在此模式下向sd卡發(fā)送復(fù)位命令cmd0。如果sd卡在接收復(fù)位命令過(guò)程中cs低電平有效,則進(jìn)入spi模式,否則工作在sd總線模式。
對(duì)于不帶spi串行總線接口的at89c52單片機(jī)來(lái)說(shuō),用軟件來(lái)模擬spi總線操作的具體做法是:將p1.5口(模擬clk線)的初始狀態(tài)設(shè)置為1,而在允許接收后再置p1.5為0。這樣,mcu在輸出1位sck時(shí)鐘的同時(shí),將使接口芯片串行左移,從而輸出1位數(shù)據(jù)至at89c52單片機(jī)的p1.7(模擬miso線),此后再置p1.5為1,使單片機(jī)從p1.6(模擬mosi線)輸出1位數(shù)據(jù)(先為高位)至串行接口芯片。至此,模擬1位數(shù)據(jù)輸入輸出便完
設(shè)計(jì)方案
應(yīng)用at89c52讀寫(xiě)sd卡有兩點(diǎn)需要注意。首先,需要尋找一個(gè)實(shí)現(xiàn)at89c52單片機(jī)與sd卡通訊的解決方案;其次,sd卡所能接受的邏輯電平與at89c52提供的邏輯電平不匹配,需要解決電平匹配問(wèn)題。
通訊模式
sd卡有兩個(gè)可選的通訊協(xié)議:sd模式和spi模式。sd模式是sd卡標(biāo)準(zhǔn)的讀寫(xiě)方式,但是在選用sd模式時(shí),往往需要選擇帶有sd卡控制器接口的mcu,或者必須加入額外的sd卡控制單元以支持sd卡的讀寫(xiě)。然而,at89c52單片機(jī)沒(méi)有集成sd卡控制器接口,若選用sd模式通訊就無(wú)形中增加了產(chǎn)品的硬件成本。在sd卡數(shù)據(jù)讀寫(xiě)時(shí)間要求不是很?chē)?yán)格的情況下,選用spi模式可以說(shuō)是一種最佳的解決方案。因?yàn)樵趕pi模式下,通過(guò)四條線就可以完成所有的數(shù)據(jù)交換,并且目前市場(chǎng)上很多mcu都集成有現(xiàn)成的spi接口電路,采用spi模式對(duì)sd卡進(jìn)行讀寫(xiě)操作可大大簡(jiǎn)化硬件電路的設(shè)計(jì)。
雖然at89c52不帶sd卡硬件控制器,也沒(méi)有現(xiàn)成的spi接口模塊,但是可以用軟件模擬出spi總線時(shí)序。本文用spi總線模式讀寫(xiě)sd卡。
電平匹配
sd卡的邏輯電平相當(dāng)于3.3v ttl電平標(biāo)準(zhǔn),而控制芯片at89c52的邏輯電平為5v cmos電平標(biāo)準(zhǔn)。因此,它們之間不能直接相連,否則會(huì)有燒毀sd卡的可能。出于對(duì)安全工作的考慮,有必要解決電平匹配問(wèn)題。
要解決這一問(wèn)題,最根本的就是解決邏輯器件接口的電平兼容問(wèn)題,原則主要有兩條:一為輸出電平器件輸出高電平的最小電壓值,應(yīng)該大于接收電平器件識(shí)別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平的最大電壓值,應(yīng)該小于接收電平器件識(shí)別為低電平的最高電壓值。
一般來(lái)說(shuō),通用的電平轉(zhuǎn)換方案是采用類似sn74alvc4245的專用電平轉(zhuǎn)換芯片,這類芯片不僅可以用作升壓和降壓,而且允許兩邊電源不同步。但是,這個(gè)方案代價(jià)相對(duì)昂貴,而且一般的專用電平轉(zhuǎn)換芯片都是同時(shí)轉(zhuǎn)換8路、16路或者更多路數(shù)的電平,相對(duì)本系統(tǒng)僅僅需要轉(zhuǎn)換3路來(lái)說(shuō)是一種資源的浪費(fèi)。
考慮到sd卡在spi協(xié)議的工作模式下,通訊都是單向的,于是在單片機(jī)向sd卡傳輸數(shù)據(jù)時(shí)采用晶體管加上拉電阻法的方案,基本電路如圖1所示。而在sd卡向單片機(jī)傳輸數(shù)據(jù)時(shí)可以直接連接,因?yàn)樗鼈冎g的電平剛好滿足上述的電平兼容原則,既經(jīng)濟(jì)又實(shí)用。
這個(gè)方案需要雙電源供電(一個(gè)5v電源、一個(gè)3.3v電源供電),3.3v電源可以用ams1117穩(wěn)壓管從5v電源穩(wěn)壓獲取。
硬件接口設(shè)計(jì)
sd卡提供9pin的引腳接口便于外圍電路對(duì)其進(jìn)行操作,9pin的引腳隨工作模式的不同有所差異。在spi模式下,引腳1(dat3)作為spi片選線cs用,引腳2(cmd)用作spi總線的數(shù)據(jù)輸出線mosi,而引腳7(dat0)為數(shù)據(jù)輸入線miso,引腳5用作時(shí)鐘線(clk)。除電源和地,保留引腳可懸空。
本文中控制sd卡的mcu是atmel公司生產(chǎn)的低電壓、高性能cmos 8位單片機(jī)at89c52,內(nèi)含8k字節(jié)的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器和256字節(jié)的隨機(jī)存儲(chǔ)數(shù)據(jù)存儲(chǔ)器。由于at89c52只有256字節(jié)的數(shù)據(jù)存儲(chǔ)器,而sd卡的數(shù)據(jù)寫(xiě)入是以塊為單位,每塊為512字節(jié),所以需要在單片機(jī)最小系統(tǒng)上增加一片ram。本系統(tǒng)中ram選用存儲(chǔ)器芯片hm62256,容量為32k。對(duì)ram進(jìn)行讀寫(xiě)時(shí),鎖存器把低8位地址鎖存,與p2口的8位地址數(shù)據(jù)構(gòu)成16位地址空間,從而可使sd卡一次讀寫(xiě)512字節(jié)的塊操作。系統(tǒng)硬件圖如圖2所示。
軟件設(shè)計(jì)
spi工作模式
sd卡在上電初期自動(dòng)進(jìn)入sd總線模式,在此模式下向sd卡發(fā)送復(fù)位命令cmd0。如果sd卡在接收復(fù)位命令過(guò)程中cs低電平有效,則進(jìn)入spi模式,否則工作在sd總線模式。
對(duì)于不帶spi串行總線接口的at89c52單片機(jī)來(lái)說(shuō),用軟件來(lái)模擬spi總線操作的具體做法是:將p1.5口(模擬clk線)的初始狀態(tài)設(shè)置為1,而在允許接收后再置p1.5為0。這樣,mcu在輸出1位sck時(shí)鐘的同時(shí),將使接口芯片串行左移,從而輸出1位數(shù)據(jù)至at89c52單片機(jī)的p1.7(模擬miso線),此后再置p1.5為1,使單片機(jī)從p1.6(模擬mosi線)輸出1位數(shù)據(jù)(先為高位)至串行接口芯片。至此,模擬1位數(shù)據(jù)輸入輸出便完
熱門(mén)點(diǎn)擊
- 用于ATmega128的軟件UART范例程序
- 單片機(jī)驅(qū)動(dòng)蜂鳴器原理與設(shè)計(jì)
- 51單片機(jī)8*8點(diǎn)陣LED顯示原理及程序
- PIC單片機(jī)CRC校驗(yàn)程序
- 80C51原始IP核內(nèi)部RAM的擴(kuò)展方案
- 單片機(jī)的圖形化編程方法探討
- 用AT89S51單片機(jī)來(lái)制作的手動(dòng)計(jì)數(shù)器
- Proteus在單片機(jī)系統(tǒng)設(shè)計(jì)中的應(yīng)用
- TEA5767收音機(jī)模塊的C51控制程序
- pic單片機(jī)的模擬I2C通信
推薦技術(shù)資料
- 硬盤(pán)式MP3播放器終級(jí)改
- 一次偶然的機(jī)會(huì)我結(jié)識(shí)了NE0 2511,那是一個(gè)遠(yuǎn)方的... [詳細(xì)]
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車(chē)用精準(zhǔn)定位
- 高效先進(jìn)封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究