SD卡是一種微型,、低功耗,、可移動的Flash多功能存儲卡,,該卡向上兼容MMC卡,,并增加了智能保護機制,,以有效地防止盜版,,同時具有更快的傳輸速率及更高的存儲容量,可廣泛用于便攜式消費類電子產品中,。本文首先介紹了STC12C5A60S2單片機在SPI協(xié)議下與SD卡的硬件接口電路,,然后簡要闡述了SPI總線模式以及軟件模擬的SPI總線數(shù)據通訊,最后給出了實現(xiàn)SD卡的初始化和讀寫操作的軟件流程,。
1 STC單片機
STCl2C5A60S2/AD/PWM系列單片機是宏晶科技生產的單時鐘/機器周期(IT)的單片機,,這是一種高速、低功耗,、超強抗干擾的新一代805l單片機,,它的指令代碼完全兼容傳統(tǒng)8051,但速度比8051快8~12倍.工作電壓為5.5~3.3 V (5 V單片機),,工作頻率范圍為O~35 MHz,。該單片機內部集成有MAX810專用復位電路,2路PWM,,8路高速10位A/D轉換(250 K/S),,片上還集成有1280字節(jié)RAM,I/O口驅動能力均可達到20 mA,,無需專用編程器和仿真器數(shù)秒內即可通過串口(P3.0/P3.1)下載用戶程序,,由于其帶有通用全雙工異步串行口(UART),因此,,特別適合電機控制,,而且干擾較強的場合。
2 硬件電路設計
本SD卡讀寫系統(tǒng)中的接口電路采用的STCl2C5A60S2單片機控制,并通過軟件編程實現(xiàn)SPI模式的數(shù)據傳輸(包括串行時鐘,、數(shù)據的輸入和輸出),。在SPI模式下。單片機與SD卡的連接主要有四根線(包括時鐘線,,兩根數(shù)據傳輸線和一根片選線),,其接口硬件連接電路如圖1所示。
圖2所示是基于STCl2C5A60S2單片機的SD卡讀寫電路設計原理圖,,其中包括STC12C5A60S2單片機的晶振電路和復位電路SD卡連接電路,、和SD卡套插座連接電路。
3 通訊模式的選擇
通常,,SD卡有兩種總線模式,,即SD總線模式和SPI總線模式。其中SD總線模式采用四條數(shù)據線并行傳輸數(shù)據,,數(shù)據傳輸速率高,,但是傳輸協(xié)議復雜,只有少數(shù)單片機才提供有此接口,,而用軟件方法模擬SD總線又比較繁瑣,,會降低SD卡的數(shù)據傳輸速率;而SPI總線模式只有一條數(shù)據傳輸線,。傳輸協(xié)議簡單,,易于實現(xiàn),雖然數(shù)據傳輸速率較低,,但絕大多數(shù)中高檔單片機都提供有SPI總線,,同時由于其易于用軟件方法來模擬。因此,,本設計采用SPI總線模式,。
SPI總線技術是MOTOROIA公司推出的一種同步串行總線接口,是目前單片機應用系統(tǒng)中最常用的幾種串行擴展接口之一,。 SPI總線主要通過三根線進行數(shù)據傳輸,,包括同步時鐘線SCK、主機輸入/從機輸出數(shù)據線MISO,、主機輸出/從機輸人數(shù)據線MOSI,。另外,它還有一條低電平有效的從機片選線CS,,片選信號以及同步時鐘脈沖由主機提供,。SPI總線模式的數(shù)據是以字節(jié)為單位進行傳輸?shù)模鳈C與SD卡的各種通信都由主機控制,。
4 軟件設計
4.1 SD卡的初始化
SD卡從上電到對SD卡進行正確的讀寫操作,,往往都需要一個上電初始化的過程,。SD卡上電后,主機必須先向SD卡發(fā)送74個時鐘周期,,以完成SD卡的上電過程,。通常SD卡上電后會自動進入SD總線模式,并在SD總線模式下向SD卡發(fā)送復位命令(CMD0),。因此,,主機在對SD卡進行任何操作前,,都必須先要拉低SD卡的片選信號CS(card select),,以使SD卡進入SPI總線模式,然后再由主機向SD卡發(fā)送命令,。SD卡可以響應主機發(fā)來的各種應答信號,,同時向主機發(fā)送一個特殊的數(shù)據響應標志。若主機讀到的應答信號為01,,即表明SD卡已進人SPI模式,,此時,主機即可不斷地向SD卡發(fā)送命令字(CMDl)并讀取SD卡的應答信號,,直到應答信號為00,,表明SD卡已完成初始化過程,并準備好接受下一命令,。此后,,系統(tǒng)便可讀取SD卡的各寄存器,以進行讀寫等操作,。SD卡初始化流程如圖3所示,。下面是SD卡初始化的程序代碼:
|
|
|
4.2 SD卡的讀寫
SD卡的數(shù)據傳輸主要通過塊讀寫來實現(xiàn)。塊長度默認為512 KB,。當RAM中已存放由模數(shù)轉換模塊傳來的512 KB數(shù)據時,,單片機便向SD卡寫入此塊數(shù)據。塊讀取時,,可發(fā)送命令CMDl7,,接收到的應答信號為0x00。這樣就可以直接接收數(shù)據了,,接收到的數(shù)據的第1個字節(jié)為數(shù)據令牌0xfe,,后面的為接收到的數(shù)據,當輸出口變?yōu)楦唠娖綍r,。表明讀取操作完成,。SD卡的讀操作與寫操作相同,故此不再贅述,。圖4所示是SD卡的讀寫軟件流程圖,。其具體程序代碼如下:
|
|
|
5 結束語
該SD卡與STCl2C5A60S2單片機的接口電路已在實際的試驗板上驗證成功,,并已證明可以正確實現(xiàn)數(shù)據通訊,故可對SD卡上的文件進行各種操作,。