RA6M3 HMI Board 之SDHI实践

描述

原文:https://club.rt-thread.org/ask/article/83cc823b1c25ced9.html

           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)设备的接入与访问。

RT-Thread

SD/MMC Host 接口框图

 

1.3 开发软件

RT-Studio

 

1.4 硬件设计

SD卡连接的是SDHI1,引脚连接如下所示:

RT-Thread

 


           2.步骤说明

2.1新建工程

- 点击文件,新建RT-Thread项目

RT-Thread

 

- 基于开发板,选择HMI-Board,本次基于模板工程即可,调试器选择DAP-Link,接口SWD,板载的调试器,方便调试。

RT-Thread

 

2.2芯片底层驱动配置

- 完成工程新建后,右击RA Smart Configurator选择FSP3.5.0的安装路径,用于配置芯片底层硬件驱动

RT-Thread

 

- 配置完成后,双击进入配置页面

RT-Thread

 

- 选择Pins,找到SDHI,选择SD-MMC 1bit

RT-Thread

 

- 然后找到Stacks,配置SDHI,配置为1bit,同时添加DTC

RT-Thread

 

- 配置完成后,点击Generate Project Content,会将配置同步到刚才的新建工程配置。

RT-Thread

 

2.3 RT-Thread 配置

- 双击RT-Thread Setting,进入配置页面,点亮DFS,Fatfs以及SDIO

RT-Thread

 

- 右击进入配置项,在硬件下是使能SDHI以及文件系统

RT-Thread

 

- 在组件下选择使用设备虚拟文件系统,进行配置

RT-Thread

 

- 选择对设备使用devfs

RT-Thread

 

- 接下来找到使用SD/MMC设备驱动程序进行配置,然后点击保存,关闭配置页面

RT-Thread

 


           3.代码验证

编译工程,下载,将内存卡插入板载的SD卡槽

RT-Thread

 

打开终端,复位,查看输出,内存卡读取成功,但是挂载失败

RT-Thread

 

这里我研究了一段时间,根据输出可以看出,刚开始读取设备得到的是0,然后开始挂挂载,导致挂载失败,之后又读取到了设备,说明时序不对。

RT-Thread

 

接下来找到内存卡挂载的文件,mnt.c,在board文件下,ports文件下

RT-Thread

 

将挂载SD卡的程序挪出来,放在之后初始化,这里我选择的是新建一个函数

RT-Thread

 

新建一个函数用于挂载SD卡,先进行一个延时,然后格式化SD卡,这个步骤可以使用命令行操作,会把内存卡的内容清掉。

RT-Thread

 

将刚才的SD卡挂载函数放在main函数前,这里放在末尾初始化,避免时序的原因挂载不上

RT-Thread

 

重编译,下载程序,查看终端输出,直接挂载成功

RT-Thread

 

接下来就可以使用命令对SD进行操作了,新建一个文件夹

RT-Thread

 

将RA6M3输入到Test.txt,然后读取Test.txt

RT-Thread

 


           4.总结

本次HMI-Board 的SDHI使用已经完成,刚开始对SDIO和SDHI的区别进行了介绍,然后新建工程实现对SD卡的操作,在本次使用过程中遇到时序上的问题,刚开始不知道什么原因,后面慢慢查询调试找到了问题所在,本次实现的是简单的SD卡操作,后面有时间的话打算实现使用板载屏幕做一个电子小说阅读器。

 

———————End———————

 

RT-Thread线下入门培训

7月 - 上海,南京

 

1.免费 2.动手实验+理论 3.主办方免费提供开发板 4.自行携带电脑,及插线板用于笔记本电脑充电 5.参与者需要有C语言、单片机(ARM Cortex-M核)基础,请提前安装好RT-Thread Studio 开发环境

 

报名通道

 

 

RT-Thread

 

 

 

 

 

 

立即扫码报名

 

 

 

(报名成功即可参加)

 

 

扫码添加rtthread2020可参加活动可加微信拉进活动现场微信群

 

RT-Thread

主办单位

 

RT-Thread

 

报名链接:https://jinshuju.net/f/UYxS2k  

 


原文标题:RA6M3 HMI Board 之SDHI实践

文章出处:【微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分