OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2498|回复: 3

遇到一个STM32H743 SD卡读取的奇葩现象,请各位大神指教?

[复制链接]

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-7-14
在线时间
19 小时
发表于 2019-9-8 22:56:07 | 显示全部楼层 |阅读模式
1金钱
原子的板子,跑例程没有发现问题。

用 STM32Cube FW_H7 V1.5.0  HAL库的函数初始化,读取卡片信息正常,DMA方式第一次读取任何SECTOR都正常。

第二次及以后读取数据如果在第一次读取的BUFFER上读取数据,上一次读取的数据未被覆盖,读取操作不报错。

如果再定义一个BUFFER是没有读取过数据的,读取的数据正确。

比如在buffer处写入一个扇区数据512个,在buffer+256处开始第二次读取数据,程序都正常,无错误报出。

buffer0-511都是第一次读取的数据,第二次读取的数据在buffer256-511处会丢失,buffer512-767处的的数据正确。



换句话说,任何读入数据的内存都相对于DMA读取函数被设置为只读的,其它代码都可以正常读写buffer里的数据。

是不是我初始化SDMMC时缺了什么?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

185

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-7-15
在线时间
47 小时
发表于 2019-9-9 10:54:05 | 显示全部楼层
每次读完清空接收BUFF,可以试试。可能是DMA的时序出了问题。
回复

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-7-14
在线时间
19 小时
 楼主| 发表于 2019-9-10 06:33:21 | 显示全部楼层
五月爸爸 发表于 2019-9-9 10:54
每次读完清空接收BUFF,可以试试。可能是DMA的时序出了问题。

谢谢!如果用CUBE 自动建立HAL库工程,就是最小系统原子的SD驱动初始化都会锁死。

所以就用了原子的非DMA读写函数加HAL库的初始化函数,系统可以跑了。

F7的HAL库很顺利,几乎不用自己写任何代码,SD的DMA操作就完成了,没想到H7的遇到问题了。
回复

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-7-14
在线时间
19 小时
 楼主| 发表于 2019-9-10 06:40:29 | 显示全部楼层
可能是CUBE的BUG,F7有初始化SD DMA 的界面,H7 竟然没有,开始还以为H7有专用DMA通道,看了手册发现没有。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 10:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表