简介
本文主要介绍基于Numaker-IoT-M487开发板的SD卡功能验证,由于为初次使用RT-Thread系统,摸索了一下使用,感觉还是挺容易上手的系统,鉴于理解有限,后文中如有理解错误之处,还请大佬指出,在此先谢谢了,闲言少续,直奔主题。
环境搭建
验证所需硬件环境:
Numaker-IoT-M487开发板
Micro-USB线
SD卡
读卡器
验证使用软件环境
RT-Thread Studio IDE
RT-Thread OS version 4.0.4
Numaker-IoT-M487 SDK库version 1.0.0
硬件接线如下图
2、硬件对应原理图接口如下图
验证流程介绍
RT-Thread Studio软件环境搭建、板载SDK包下载以及搭建基础test工程方法这里就不单独介绍了
SD卡系统驱动验证配置
双击工程中RT-Thread Settings进入RT-Thread系统配置界面,依次设置如下
void SD_RD_Test()
{
#define Data_Size (30*1024)
static uint8_t data_buff[Data_Size]="hello world!";
uint32_t t1=0;
uint32_t t2=0;
uint32_t t=0;
int fd = open("/test.txt",O_WRONLY|O_CREAT);
if (fd<0)
{
rt_kprintf("open fail\n");
return ;
}
t1=rt_tick_get();
write(fd, data_buff, Data_Size);
t2=rt_tick_get();
t=t2-t1;
rt_kprintf("write SD time:%d ms\n",t);
close(fd);
rt_kprintf("write sucess\n");
rt_thread_mdelay(500);
fd = open("/test.txt",O_RDONLY);
if (fd<0)
{
rt_kprintf("open fail\n");
return ;
}
memset(data_buff,0,Data_Size);
t1=rt_tick_get();
read(fd, data_buff, Data_Size);
t2=rt_tick_get();
t=t2-t1;
rt_kprintf("read SD time:%d ms\n",t);
close(fd);
rt_kputs(data_buff);
}
`
int main(int argc, char **argv)
{
if defined(RT_USING_PIN)
int counter = 0;
/ set LEDR1 pin mode to output /
rt_pin_mode(LEDR, PIN_MODE_OUTPUT);
rt_pin_mode(LEDG, PIN_MODE_OUTPUT);
rt_pin_mode(LEDY, PIN_MODE_OUTPUT);
while (counter < 1)
{
rt_pin_write(LEDR, PIN_HIGH);
rt_pin_write(LEDG, PIN_LOW);
rt_pin_write(LEDY, PIN_HIGH);
rt_thread_mdelay(500);
rt_pin_write(LEDR, PIN_LOW);
rt_pin_write(LEDG, PIN_HIGH);
rt_pin_write(LEDY, PIN_LOW);
rt_thread_mdelay(500);
//rt_kprintf("Led process\n");
SD_RD_Test();
}
endif
return 0;
}
添加完成,编译下载至MCU中,查看运行效果
验证效果展示
1、Log输出结果
Log输出与程序一致
2、将SD卡取下,放置读卡器中,插入电脑,查看SD中的文件数据
SD中文件内容与程序写入内容一致
3、读写速度测试,测试读写size大小为30K,读写时间如下
估算读写速度为:
写入速度:2325kb/s
读取速度:4347kb/s
总结
初次使用RT-Thread Studio配置RT-Thread OS系统,配置挺方便的,但需要对系统先有一些基础的认识。
原作者: sgj245609615