新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于STM32 DIO接口驅(qū)動SD卡的設(shè)計(上)

基于STM32 DIO接口驅(qū)動SD卡的設(shè)計(上)

作者:?陳啟武 王飛 袁彬 時間:2017-03-06 來源:電子產(chǎn)品世界 收藏

引言
     隨著鐵路貨運速度的提高,時速160km/h的快速貨車運 行安全智能監(jiān)測系統(tǒng)已成為研究的重要課題。由于貨車具有 運行周期長的特點,監(jiān)測系統(tǒng)采集到的各種實時的數(shù)據(jù), 包括防滑控制、軸溫預(yù)警、列車定位、轉(zhuǎn)向架失穩(wěn)等信息, 需要大量的存儲空間。主控制器采集到這些數(shù)據(jù)后,需要通 過存儲卡將數(shù)據(jù)保存下來,然后通過GPRS無線模塊讀取卡 數(shù)據(jù)信息發(fā)送到通用計算機上,以作進一步的分析和處理。 目前常用的存儲器有 U 盤、FLASH 芯片、SD 卡等。是 一種容量大(最大可達32GB)、性價比高、體積小、訪問 接口簡單、易于集成的存儲卡,采用可解決上述采集 數(shù)據(jù)的存儲和傳輸問題;采用ARM Cortex ?-M3內(nèi)核的32位 微控制器STM32F103作為主控制器,STM32F103 自帶標(biāo)準(zhǔn) 的接口,使用其自帶的SDIO接口驅(qū)動,在4位SD模式 下,最高通信速度可達 24MHz,最高每秒可傳輸12M字節(jié)數(shù) 據(jù),可快速地實現(xiàn)對SD卡的訪問。

1  硬件功能原理與設(shè)計
1.1  SD卡簡介
S D 卡 ( S e c u r e  D i g i t a l Memor y Card) 是一種基于半 導(dǎo)體閃存工藝的存儲卡,它的 外形和接口如圖1 所示。 S D 卡 有 9 個 引 腳 與 外 部 通 信 , 支 持 SPI和SDIO兩種模式, 不同模 式下,SD卡引腳功能描述如表1所示。在具體的通信過程中,主機只能選擇一種通信模式。

本文引用地址:http://www.butianyuan.cn/article/201703/344842.htm

圖1  SD卡的外形和接口
主控制器STM32F103可支持SDIO模式,在該模式下,CS為主控制器向SD卡發(fā)送的片選信號,CMD為主控制器向SD卡 發(fā)送的命令/響應(yīng)信號,CLK為主控制器向SD卡發(fā)送的時鐘 信號,DAT0、DAT1和DAT2分別為SD卡的3個數(shù)據(jù)線。
SD卡的內(nèi)部結(jié)構(gòu)如圖2所示,SD卡內(nèi)部不僅有大量的 存儲單元,還具有卡接口控制器、寄存器以及SDIO和SPI兩 種模式的對外接口等。外部主控制器并不直接訪問卡內(nèi)存儲 單元,而是通過卡的接口控制器與存儲器單元接口相連來訪 問卡的外部信號線??▋?nèi)存儲單元的讀、寫、擦除等操作由 卡接口控制器根據(jù)主控器發(fā)出的命令自動處理完成,而主控 制器無需知道卡內(nèi)如何操作、管理存儲單元,這將大大降低 主控制器對存儲器操作的負擔(dān)。SD卡內(nèi)部有6個寄存器,其 中四個信息寄存器用來設(shè)置和保存卡的關(guān)鍵信息,另外兩個 狀 態(tài) 寄 存 器 用 來配 置 和 操 作 卡 當(dāng) 前的狀態(tài)。
1.2  SDIO接口
原理
S   D   I   O( S e c u r e D i g i t a l I n p u t    a n d O u t p u t ) , 即 安全 數(shù) 字 輸 入 輸 出接口。 它由SD存 儲 卡 的 規(guī) 范 發(fā) 展 而 來 , 在 機 械 、 電 路 、 功 耗 、 信 號 與 軟 件 上 與 多

圖2   SD卡的內(nèi)部結(jié)構(gòu)

表1   SD卡在不同模式下的引腳定義
種存儲卡完全兼容,可支持多媒體卡(MMC卡)、SD存儲卡、SDIO卡;并且可擴展性較強,可以連接多種SDIO接口 設(shè)備,如藍牙、WIFI、GPRS、照相機等。SDIO與SD卡規(guī)范 的一個重要區(qū)別是增加了低速標(biāo)準(zhǔn),以最小的硬件開支支持 低速I/O數(shù)據(jù)傳輸能力。
STM32F1的 SDIO控制器包含2個部分:SDIO 適配器模 塊和 AHB 總線接口,其功能框圖如圖3所示。SDIO_D[7:0] 為SDIO數(shù)據(jù)總線,如果一個 SD卡接到了總線上,可以通過 主機配置數(shù)據(jù)傳輸方式使用SDIO_D0或SDIO_D[3:0],所有 的數(shù)據(jù)線都工作在推挽模式。復(fù)位后默認情況下,SDIO_ D 0 用 于 數(shù) 據(jù) 傳 輸 , 初 始 化 后 主 機 可 以 改 變 數(shù) 據(jù) 總 線 的 寬 度,采用4位總線SDIO_D[3:0]傳輸數(shù)據(jù)。
SDIO_CMD為命令/響應(yīng)接口。SDIO的命令分為應(yīng)用 相關(guān)命令(ACMD)和通用命令(CMD)兩部分,發(fā)送應(yīng) 用相關(guān)命令之前必須先發(fā)送通用 命令。每發(fā)送一個命令, SD卡都會給出一個應(yīng)答,以告知主機該命令的執(zhí)行情況或 返回主機所需的數(shù)據(jù),這個應(yīng)答我們稱之為響應(yīng),響應(yīng)也在 SDIO_CMD線上串行傳輸。STM32F1的 SDIO 控制器支持 2 種響應(yīng)類型,即:短響應(yīng)(48位)和長響應(yīng)(136位),這 兩種響應(yīng)類型都帶 CRC 錯誤檢測。
SDIO_CK為卡時鐘輸出接口。根據(jù)卡類型的不同,可 能有好幾個區(qū)間,這就涉及到時鐘頻率的設(shè)置,SDIO_CK 與 SDIO適配器時鐘(SDIOCLK)的關(guān)系為:
SDIO_CK=SDIOCLK/(2+CLKDIV)
上式中,SDIOCLK 為SDIO掛接在AHB總線上的接口時 鐘(對于STM32F1系列是72MHz);CLKDIV 則是時鐘分頻 系數(shù),可以通過SDIO的 SDIO_CLKCR 寄存器進行設(shè)置(要 確保SDIO_CK不超過卡的最大操作頻率)。
1.3  硬件連接
主 控 制 器 選 用 大 容 量 、 增 強 型 的 芯 片 STM32F103ZET6,其與SD卡座的電路連接圖如圖4所示。 SDIO_D0(PC8)、SDIO_D1(PC9)、SDIO_D2(PC10) 和SDIO_D3(PC11)這4個引腳接上拉電阻,通過3.3V的電
源給SD卡端提供灌電流,從而提高STM32F103ZET6芯片的

圖3    STM32F1的SDIO控制器功能框圖

圖4  STM32F103ZET6與SD卡座的電路連接圖 驅(qū)動能力;
SDIO_CK(PC12)直接與卡的CLK端相連,用 于向SD卡發(fā)送時鐘信號。除了SDIO接口的連接外,還有兩根控制線:SD_CD(PD5)用于檢測SD卡接口與卡座是否接好,若完全接好則該引腳為低電平,否則為高電平;SD_ WP(PD6)用于檢測SD卡當(dāng)期是否設(shè)置寫保護,寫保護時 該引腳為高電平,否則為低電平。

2  軟件設(shè)計
軟件設(shè)計主要包括硬件層配置以及驅(qū)動層配置。硬件 層配置主要包括配置SD I O 相關(guān)寄存器、 識別卡類型、 獲 取卡信息,實現(xiàn)對SD卡的初始化;驅(qū)動層配置主要是利用 SDIO接口驅(qū)動SD卡進行讀、寫操作。利用ST官方提供的固 件庫函數(shù)可大大提高軟件設(shè)計的效率,STM32F1 的 SDIO 相 關(guān)操作的函數(shù)分布在源文件 stm32f10x_sdio.c 以及對應(yīng)的頭 文件 stm32f10x_sdio.h 中。(未完待續(xù))



關(guān)鍵詞: STM32 DIO SD卡

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉