久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2428|回復: 1
打印 上一主題 下一主題
收起左側

RISC-V MCU開發實戰 (二):SD初應用

[復制鏈接]
跳轉到指定樓層
樓主
軟件平臺: MounRiver Studio(MRS),硬件平臺:CH32V103開發板,以及一張小于32G SD卡。

1、SD卡簡介

SD存儲卡( Secure Digital Memory Card)是一種基于半導體快閃存儲器的新一代高速存儲設備。SD存儲卡的技術是從MMC卡( MultiMedia Card格式上發展而來,在兼容SD存儲卡基礎上發展了SDIO( SD Input/ Output)卡,此兼容性包括機械,電子,電力,信號和軟件,通常將SD、SDIO卡俗稱SD存儲卡。

SD卡具有高記憶容量、快速數據傳輸率、極大的移動靈活性以及很好的安全性,它被廣泛地應用于便攜式裝置上,例如數碼相機、平板電腦和多媒體播放器等。根據SD卡容量大小不同,可將SD卡分為以下幾類:
0~2G:SD卡;2~32G:SDHC卡;32~2T:SDXC卡;

其中,SD卡協議和SDHC卡版本協議基本兼容,但SDXC卡與SD卡和SDHC卡相差較大,本文主要介紹使用SD卡和SDHC卡。
控制器對SD卡進行讀寫通信操作一般有兩種通信接口可選,一種是SPI接口,另外一種是SDIO接口。 SPI協議驅動SD卡方式相較于SDIO驅動SD卡方式,使用引腳資源少,控制程序相對較為簡單,但傳輸速度不如使用SDIO接口的快。由于CH32V103開發板上SD卡槽與芯片引腳的連接方式為SPI驅動方式,因此本文采用SPI協議驅動SD卡方式。

使用SPI方式驅動SD卡需要用到以下幾個寄存器:
① CID:卡識別號(Card identification number),用來識別卡的唯一的個體號碼;
② CSD:卡的特定數據(Card Specific Data),指卡的操作條件信息;
③ SCR:SD配置寄存器(SD Configuration Register),SD卡特殊性信息;
④ OCR:操作條件寄存器(Operation conditions register)
關于SD卡其他寄存器信息,可參考SD 簡易規格文件《 Physical Layer Simplified Specification V2.0》。
關于SD命令格式,固定為48bit,通過命令線(CMD)連續傳輸,其具體命令格式以及命令解釋如下:

起始位和終止位:命令的主體包含在起始位與終止位之間,它們都只包含一個數據位,起始位為0,終止位為1。
傳輸標志:用于區分傳輸方向,該位為1時表示命令,方向為主機傳輸到SD卡,該位為0時表示響應,方向為SD卡傳輸到主機。
命令主體內容包括命令、地址信息/參數和 CRC 校驗三個部分。
1)命令號:它固定占用6bit,所以總共有64個命令(代號: CMD0~CMD63),每個命令都有特定的用途,部分命令不適用于SPI總線,或不適用于SD卡操作,只是專門用于MMC卡或者SDI/O卡。
2)地址/參數:每個命令有32bit地址信息/參數用于命令附加內容,例如,廣播命令沒有地址信息,這32bit用于指定參數,而尋址命令這32bit用于指定目標SD卡的地址,使用SPI總線驅動時,通過片選引腳來選擇不同的卡,所以使用這些命令時地址可填充任意值。
3)CRC7校驗:長度為7bit的校驗位用于驗證命令傳輸內容正確性,如果發生外部干擾導致傳輸數據個別位狀態改變將導致校準失敗,也意味著命令傳輸失敗,SD卡不執行命令。使用SPI驅動時,命令中的CRC7校驗默認是關閉的,即這CRC7校驗位中可以寫入任意值而不影響通訊,僅在發送CMD0命令時需要強制帶標準的CRC7校驗。
SPI模式下有以下幾個重要的操作指令:

SD卡R1響應格式如下:

關于SD卡具體信息,可參考《 Physical Layer Simplified Specification V2.0》。
2、MRS中開發流程
1)首先新建一個CH32V103C8T6 的工程,這個要與對應芯片對應

上圖最下方紅框中是對選中芯片的資源的簡單介紹,方便查詢

2) 新建完工程之后,我們打開main.c文件,可以看到主函數只是一些初始化和串口打印,我們自己的主函數邏輯可以添加在打印下面就可以了;
3) 新建一個hardware的文件夾,右鍵工程new->folder,填寫文件名,點擊finish即可,我們可以以同樣的方式在hardware目錄下再新建SD目錄,SPI目錄,條理清晰。
4) 在SPI目錄下,New>Source File,填寫文件名spi.c,內容是SPI初始化函數以及讀寫函數,在新建個spi.h文件用來聲明函數,這個新的頭文件需要添加到頭文件尋址路徑中,點擊菜單欄工程屬性頁按鈕,在彈出的頁面中,如下圖,點擊綠色加號添加路徑即可

部分代碼截圖如下,有詳細注釋,不再贅述


5) 在 SD目錄下新建sd.c ,sd.h,添加頭文件路徑方式與上條一致,sd.h文件主要包括各種宏定義及函數聲明,包括SD卡類型定義、SD卡指令定義等以及函數聲明;
sd.c文件主要進行SD初始化等操作,關于SD卡初始化函數SD_Initialize,其具體操作流程如下:
(1)調用SD_SPI_Init函數初始化GPIO口及SPI工作模式,同時控制片選引腳使之輸出高電平;
(2)利用for循環并調用SD_SPI_ReadWriteByte函數進行10讀寫操作,,同時產生80個時鐘信號,滿足SD卡初始化至少需要74個時鐘的要求;
(3)調用SD_SendCmd函數發送CMD0命令,復位SD卡同時進入空閑狀態;
(4)調用SD_SendCmd函數發送相關命令對SD卡版本類型進行判斷,同時返回響應信息。
關于sd.c文件中其他函數,程序中都有相應注釋,可結合注釋以及《 Physical Layer Simplified Specification V2.0》手冊進行理解。

部分代碼如下:




6) main.c文件主要進行相關函數初始化以及SD卡插入檢測、初始化檢測以及讀取SD卡容量大小

7) 在工具欄中點擊編譯按鈕,進行編譯,生成二進制文件,開發環節結束
3、驗證
點擊菜單欄下載按鈕,進行下載,插入SD卡,從串口助手可以看到輸出正常





4.png (43.56 KB, 下載次數: 159)

4.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:955654 發表于 2022-4-27 16:18 | 只看該作者
您好,請問有完整的源碼嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲成av人片在线观看桃 | 国产98色在线 | 日韩 | 国产精品国产三级国产aⅴ原创 | 99久久精品国产麻豆演员表 | 中文字幕精品一区久久久久 | www.色五月.com | 午夜小视频免费观看 | 2019天天干夜夜操 | 国产精品久久久久久影视 | 国产一区二区三区久久久久久久久 | 美女高潮网站 | 亚洲狠狠 | 亚洲欧美国产精品一区二区 | 日本久久精品视频 | 久久网一区二区三区 | 成人在线视频网址 | 日韩在线一区二区三区 | 噜噜噜噜狠狠狠7777视频 | 欧美国产精品 | 国产精品99久久久久久宅男 | 韩国电影久久 | 伊人在线视频 | 久久国产精品无码网站 | 欧美成年人视频在线观看 | 韩国主播午夜大尺度福利 | 国产精品3区 | 天天色av | 五月激情久久 | 成人免费视频 | 国产一二三区免费视频 | www国产精品 | 国产成人叼嘿视频在线观看 | 国产精品久久久久久久久久免费看 | 色综合美女 | www国产成人免费观看视频 | 国产精品国产三级国产aⅴ中文 | 国产精品99久久久久久宅男 | 国产精品久久一区二区三区 | 亚洲精品一区二区在线观看 | 日韩1区| 欧美日韩亚洲在线 |