1.前言說明
1.1 本章內容
首先對SDHI和SDIO本質上的區別進行說明,然后使用RT-Studio新建工程進行開發,通過RASC對RA6M3的底層硬件配置,然后使用SDHI接口實現SD的識別,搭配文件系統對SD卡進行讀寫操作,同時記錄開發遇到的問題。
1.2 模塊介紹
本次的測評任務是SDHI,之前用SDIO用的比較多,不太了解SDHI,先對SDHI進行介紹:
SDHI是Secure Digital Host Interface的縮寫,是一種SD存儲卡控制器的接口規范。SDHI負責管理SD存儲卡的內部狀態,并將讀寫請求發送到存儲卡中。SDHI與處理器之間進行通信,以便處理器可以直接訪問SD存儲卡。
而SDIO是Secure Digital Input/Output的縮寫,是一種基于SD標準的接口規范,主要用于連接各種外部設備,例如Wi-Fi模塊、藍牙模塊、數字相機等。SDIO定義了一個特定的層次結構,使設備之間能夠簡單地交換數據。
SDIO和SDHI分別描述了兩個不同的方面:SDIO提供與外部設備通信的功能,而SDHI提供主機與SD存儲卡通信的功能。兩者在功能和應用場景上并不相同。
RA6M3的SDHI可以支持1-bit和4-bit總線用于連接SD、SDHC以及SDXC不同格式的存儲卡,也可以支持1-bit、4-bit和8-bit的MMC總線,用于供eMMC4.51(JEDEC標準JESD84-B451)設備的接入與訪問。
SD/MMC Host 接口框圖
1.3 開發軟件
RT-Studio
1.4 硬件設計
SD卡連接的是SDHI1,引腳連接如下所示:
2.步驟說明
2.1新建工程
點擊文件,新建RT-Thread項目
基于開發板,選擇HMI-Board,本次基于模板工程即可,調試器選擇DAP-Link,接口SWD,板載的調試器,方便調試。
2.2芯片底層驅動配置
完成工程新建后,右擊RA Smart Configurator選擇FSP3.5.0的安裝路徑,用于配置芯片底層硬件驅動
配置完成后,雙擊進入配置頁面
選擇Pins,找到SDHI,選擇SD-MMC 1bit
然后找到Stacks,配置SDHI,配置為1bit,同時添加DTC
配置完成后,點擊Generate Project Content,會將配置同步到剛才的新建工程配置。
2.3 RT-Thread 配置
雙擊RT-Thread Setting,進入配置頁面,點亮DFS,Fatfs以及SDIO
在組件下選擇使用設備虛擬文件系統,進行配置
選擇對設備使用devfs
接下里找到使用SD/MMC設備驅動程序進行配置,然后點擊保存,關閉配置頁面
3.代碼驗證
編譯工程,下載,將內存卡插入板載的SD卡槽
打開終端,復位,查看輸出,內存卡讀取成功,但是掛載失敗
這里我研究了一段時間,根據輸出可以看出,剛開始讀取設備得到的是0,然后開始掛掛載,導致掛載失敗,之后有讀取到了設備,說明時序不對。
接下來找到內存卡掛載的文件,mnt.c,在board文件下,ports文件下
將掛載SD卡的程序挪出來,放在之后初始化,這里我選擇的是新建一個函數
新建一個函數用于掛載SD卡,先進行一個延時,然后格式化SD卡,這個步驟可以使用命令行操作,會把內存卡的內容清掉。
將剛才的SD卡掛載函數放在main函數前,這里放在末尾初始化,避免時序的原因掛載不上
重編譯,下載程序,查看終端輸出,直接掛載成功
接下里就可以使用命令對SD進行操作了,新建一個文件夾
將RA6M3輸入到Test.txt,然后讀取Test.txt
4.總結
本次HMI-Board 的SDHI使用已經完成,剛開始對SDIO和SDHI的區別進行了介紹,然后新建工程實現對SD卡的操作,在本次使用過程中遇到時序上的問題,剛開始不知道什么原因,后面慢慢查詢調試找到了問題所在,本次實現的是簡單的SD卡操作,后面有時間的話打算實現使用板載屏幕做一個電子小說閱讀器。
-
處理器
+關注
關注
68文章
18927瀏覽量
227237 -
調試器
+關注
關注
1文章
297瀏覽量
23568 -
RT-Thread
+關注
關注
31文章
1239瀏覽量
39437 -
FatFS文件系統
+關注
關注
0文章
12瀏覽量
7498 -
DTC控制
+關注
關注
0文章
18瀏覽量
1152 -
RA6M3
+關注
關注
0文章
52瀏覽量
58
發布評論請先 登錄
相關推薦
評論