歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

SD卡引腳及spi模式基本操作過程

  • 資源ID:10027954       資源大?。?span id="x0zirax" class="font-tahoma">345KB        全文頁數(shù):13頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

SD卡引腳及spi模式基本操作過程

SD 卡引腳及 spi 模式基本操作過程 摘自網(wǎng)絡 對于 SD 卡的硬件結(jié)構(gòu) 在官方的文檔上有很詳細的介紹 如 SD 卡內(nèi)的存儲器結(jié)構(gòu) 存儲單元組織方式等內(nèi)容 要實現(xiàn)對它的讀寫 最核心的是它的時序 筆者在經(jīng)過了實際 的測試后 使用 51 單片機成功實現(xiàn)了對 SD 卡的扇區(qū)讀寫 并對其讀寫速度進行了評估 下面先來講解 SD 卡的讀寫時序 SD 卡的引腳定義 SD 卡引腳功能詳述 SD 模式 SPI 模式引腳 編號 名稱 類型 描述 名稱 類型 描述 1 CD DAT3 IO 或 PP 卡檢測 數(shù)據(jù)線 3 CS I 片選 2 CMD PP 命令 回應 DI I 數(shù)據(jù)輸入 3 VSS1 S 電源地 VSS S 電源地 4 VDD S 電源 VDD S 電源 5 CLK I 時鐘 SCLK I 時鐘 6 VSS2 S 電源地 VSS2 S 電源地 7 DAT0 IO 或 PP 數(shù)據(jù)線 0 DO O 或 PP 數(shù)據(jù)輸出 8 DAT1 IO 或 PP 數(shù)據(jù)線 1 RSV 9 DAT2 IO 或 PP 數(shù)據(jù)線 2 RSV 注 S 電源供給 I 輸入 O 采用推拉驅(qū)動的輸出 PP 采用推拉驅(qū)動的輸入輸出 SD 卡 SPI 模式下與單片機的連接圖 SD 卡支持兩種總線方式 SD 方式與 SPI 方式 其中 SD 方式采用 6 線制 使用 CLK CMD DAT0 DAT3 進行數(shù)據(jù)通信 而 SPI 方式采用 4 線制 使用 CS CLK DataIn DataOut 進行數(shù)據(jù)通信 SD 方式時的數(shù)據(jù)傳輸速度與 SPI 方式要快 采用單片機對 SD 卡進行讀寫時一般都采用 SPI 模式 采用不同的初始化方式可以使 SD 卡工作于 SD 方式或 SPI 方式 這里只對其 SPI 方式進行介紹 SPI 方式驅(qū)動 SD 卡的方法 SD 卡的 SPI 通信接口使其可以通過 SPI 通道進行數(shù)據(jù)讀寫 從應用的角度來看 采 用 SPI 接口的好處在于 很多單片機內(nèi)部自帶 SPI 控制器 不光給開發(fā)上帶來方便 同時 也見降低了開發(fā)成本 然而 它也有不好的地方 如失去了 SD 卡的性能優(yōu)勢 要解決這 一問題 就要用 SD 方式 因為它提供更大的總線數(shù)據(jù)帶寬 SPI 接口的選用是在上電初 始時向其寫入第一個命令時進行的 以下介紹 SD 卡的驅(qū)動方法 只實現(xiàn)簡單的扇區(qū)讀寫 1 命令與數(shù)據(jù)傳輸 1 命令傳輸 SD 卡自身有完備的命令系統(tǒng) 以實現(xiàn)各項操作 命令格式如下 命令的傳輸過程采用發(fā)送應答機制 過程如下 每一個命令都有自己命令應答格式 在 SPI 模式中定義了三種應答格式 如下表所示 字節(jié) 位 含義 7 開始位 始終為 0 6 參數(shù)錯誤 5 地址錯誤 4 擦除序列錯誤 3 CRC 錯誤 2 非法命令 1 擦除復位 1 0 閑置狀態(tài) 字節(jié) 位 含義 7 開始位 始終為 0 6 參數(shù)錯誤 5 地址錯誤 4 擦除序列錯誤 3 CRC 錯誤 2 非法命令 1 擦除復位 1 0 閑置狀態(tài) 7 溢出 CSD 覆蓋 6 擦除參數(shù) 5 寫保護非法 4 卡 ECC 失敗 3 卡控制器錯誤 2 未知錯誤 1 寫保護擦除跳過 鎖 解鎖失敗 2 0 鎖卡 字節(jié) 位 含義 7 開始位 始終為 0 6 參數(shù)錯誤 5 地址錯誤 4 擦除序列錯誤 3 CRC 錯誤 1 2 非法命令 1 擦除復位 0 閑置狀態(tài) 2 5 全部 操作條件寄存器 高位在前 寫命令的例程 C 程序 向 SD 卡中寫入命令 并返回回應的第二個字節(jié) unsigned char Write Command SD unsigned char CMD unsigned char tmp unsigned char retry 0 unsigned char i 禁止 SD 卡片選 SPI CS 1 發(fā)送 8 個時鐘信號 Write Byte SD 0 xFF 使能 SD 卡片選 SPI CS 0 向 SD 卡發(fā)送 6 字節(jié)命令 for i 0 i 0 x06 i Write Byte SD CMD 獲得 16 位的回應 Read Byte SD read the first byte ignore it do 讀取后 8 位 tmp Read Byte SD retry while tmp 0 xff return tmp 初始化 SD 卡的初始化是非常重要的 只有進行了正確的初始化 才能進行后面的各項操作 在初始化過程中 SPI 的時鐘不能太快 否則會造初始化失敗 在初始化成功后 應盡量 提高 SPI 的速率 在剛開始要先發(fā)送至少 74 個時鐘信號 這是必須的 在很多讀者的實 驗中 很多是因為疏忽了這一點 而使初始化不成功 隨后就是寫入兩個命令 CMD0 與 CMD1 使 SD 卡進入 SPI 模式 初始化時序圖 初始化例程 C 程序 初始化 SD 卡到 SPI 模式 unsigned char SD Init unsigned char retry temp unsigned char i unsigned char CMD 0 x40 0 x00 0 x00 0 x00 0 x00 0 x95 SD Port Init 初始化驅(qū)動端口 Init Flag 1 將初始化標志置 1 for i 0 isector count sectorBuffer dat 6 vinf sector count sector count sectorBuffer dat 7 vinf sector count sector count sectorBuffer dat 8 獲取 multiplier vinf sector multiply sectorBuffer dat 9 vinf sector multiply sector multiply sectorBuffer dat 10 獲取 SD 卡的容量 vinf size MB vinf sector count 9 vinf sector multiply get the name of the card Read CID SD sectorBuffer dat vinf name 0 sectorBuffer dat 3 vinf name 1 sectorBuffer dat 4 vinf name 2 sectorBuffer dat 5 vinf name 3 sectorBuffer dat 6 vinf name 4 sectorBuffer dat 7 vinf name 5 0 x00 end flag 以上程序?qū)⑿畔⒀b載到一個結(jié)構(gòu)體中 這個結(jié)構(gòu)體的定義如下 typedef struct SD VOLUME INFO SD SD Card info unsigned int size MB unsigned char sector multiply unsigned int sector count unsigned char name 6 VOLUME INFO TYPE 扇區(qū)讀 扇區(qū)讀是對 SD 卡驅(qū)動的目的之一 SD 卡的每一個扇區(qū)中有 512 個字節(jié) 一次扇區(qū) 讀操作將把某一個扇區(qū)內(nèi)的 512 個字節(jié)全部讀出 過程很簡單 先寫入命令 在得到相應 的回應后 開始數(shù)據(jù)讀取 扇區(qū)讀的時序 扇區(qū)讀的程序例程 C 程序 unsigned char SD Read Sector unsigned long sector unsigned char buffer unsigned char retry 命令 16 unsigned char CMD 0 x51 0 x00 0 x00 0 x00 0 x00 0 xFF unsigned char temp 地址變換 由邏輯塊地址轉(zhuǎn)為字節(jié)地址 sector sector 24 CMD 2 sector CMD 3 sector 將命令 16 寫入 SD 卡 retry 0 do 為了保證寫入命令 一共寫 100 次 temp Write Command MMC CMD retry if retry 100 return READ BLOCK ERROR block write Error while temp 0 Read Start Byte form MMC SD Card FEh Start Byte Now data is ready you can read it out while Read Byte MMC 0 xfe readPos 0 SD get data 512 buffer 512 字節(jié)被讀出到 buffer 中 return 0 其中 SD get data 函數(shù)如下 獲取數(shù)據(jù)到 buffer 中 void SD get data unsigned int Bytes unsigned char buffer unsigned int j for j 0 j Bytes j buffer Read Byte SD 扇區(qū)寫 扇區(qū)寫是 SD 卡驅(qū)動的另一目的 每次扇區(qū)寫操作將向 SD 卡的某個扇區(qū)中寫入 512 個字節(jié) 過程與扇區(qū)讀相似 只是數(shù)據(jù)的方向相反與寫入命令不同而已 扇區(qū)寫的時序 扇區(qū)寫的程序例程 C 程序 寫 512 個字節(jié)到 SD 卡的某一個扇區(qū)中去 返回 0 說明寫入成功 unsigned char SD write sector unsigned long addr unsigned char Buffer unsigned char tmp retry unsigned int i 命令 24 unsigned char CMD 0 x58 0 x00 0 x00 0 x00 0 x00 0 xFF addr addr 24 CMD 2 addr CMD 3 addr 寫命令 24 到 SD 卡中去 retry 0 do 為了可靠寫入 寫 100 次 tmp Write Command SD CMD retry if retry 100 return tmp send commamd Error while tmp 0 在寫之前先產(chǎn)生 100 個時鐘信號 for i 0 i 100 i Read Byte SD 寫入開始字節(jié) Write Byte MMC 0 xFE 現(xiàn)在可以寫入 512 個字節(jié) for i 0 i 512 i Write Byte MMC Buffer CRC Byte Write Byte MMC 0 xFF Dummy CRC Write Byte MMC 0 xFF CRC Code tmp Read Byte MMC read response if tmp return WRITE BLOCK ERROR Error 等到 SD 卡不忙為止 因為數(shù)據(jù)被接受后 SD 卡在向儲存陣列中編程數(shù)據(jù) while Read Byte MMC 0 xff 禁止 SD 卡 SPI CS 1 return 0 寫入成功 此上內(nèi)容在筆者的實驗中都已調(diào)試通過 單片機采用 STC89LE 單片機 SD 卡的初 始化電壓為 2 0V 3 6V 操作電壓為 3 1V 3 5V 因此不能用 5V 單片機 或進行分壓處 理 工作于 22 1184M 的時鐘下 由于所采用的單片機中沒硬件 SPI 采用軟件模擬 SPI 因此讀寫速率都較慢 如果要半 SD 卡應用于音頻 視頻等要求高速場合 則需要選 用有硬件 SPI 的控制器 或使用 SD 模式 當然這就需要各位讀者對 SD 模式加以研究 有了 SPI 模式的基礎 SD 模式應該不是什么難事

注意事項

本文(SD卡引腳及spi模式基本操作過程)為本站會員(gbs****77)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!