硬汉嵌入式论坛

 找回密码
 立即注册
查看: 8319|回复: 27
收起左侧

[SD/SDIO] SDMMC+FatFs+DMA问题

  [复制链接]

10

主题

140

回帖

170

积分

初级会员

积分
170
发表于 2019-9-4 16:20:08 | 显示全部楼层 |阅读模式
板子是安富莱V7的核心板,自己画的底板,底板功能较简单,之前已经调试过其他功能,比如SDRAM等均正常。
因为不用DMA的话,SD卡是可以正常访问的。所以基本可以排除硬件故障。
因为没有高速卡,所以时钟分频不是官方的2,用的是4,即25MHz。
引脚PC1用来控制SD卡电源,低电平开启SD卡电源,这是与安富莱官方底板的差异。不过这不影响程序。

根据V7的例程“V7-025_FatFS文件系统例子(SD卡)”做了些许修改,驱动程序之类几乎没有动,下载附件便知。
用串口调试软件发送“1”,第1次可以列出目录下所有文件。
之后就一直出错,显示“【1 - ViewRootDir】打开根目录失败  (FR_DISK_ERR:底层硬件错误)”。

使用CUBEMX工具生成的代码,f_mount没有问题,返回FR_OK。但是列文件或读写文件时均显示错误“2”,即“FR_INT_ERR”。
附件中有ioc文件,方便使用cubemx打开。

刚开始觉得一切可能比较顺利,就使用FreeRTOS。由于一直出错,就去掉了操作系统,使用裸机方案,仍然不行。
时间充裕,乐于助人的高手,麻烦帮助一下。不胜感激!!!
sdmmc_test.zip (3.7 MB, 下载次数: 440)

官方例程稍许改动.zip (5.91 MB, 下载次数: 369)



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2019-9-4 16:47:58 | 显示全部楼层
QQ截图20190904164745.jpg
回复

使用道具 举报

10

主题

140

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-9-4 17:05:52 | 显示全部楼层
关闭cache也一样。不知硬汉将我的程序写入板子试了没有?反正挺奇怪的,试了很多个例程都不行。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2019-9-4 17:07:31 | 显示全部楼层
lvehe 发表于 2019-9-4 17:05
关闭cache也一样。不知硬汉将我的程序写入板子试了没有?反正挺奇怪的,试了很多个例程都不行。

把你CubeMX生产的那个吗,好的,晚上我直接在V7上帮你测试下
回复

使用道具 举报

0

主题

138

回帖

138

积分

初级会员

积分
138
QQ
发表于 2019-9-4 17:47:35 | 显示全部楼层
未命名图片.png
回复

使用道具 举报

0

主题

138

回帖

138

积分

初级会员

积分
138
QQ
发表于 2019-9-4 17:55:56 | 显示全部楼层

看了下,楼主的程序好像已经有这两个函数了
回复

使用道具 举报

10

主题

140

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-9-4 19:02:35 | 显示全部楼层
wx_D4tOZzZO 发表于 2019-9-4 17:55
看了下,楼主的程序好像已经有这两个函数了

都是自动生成,一般不会存在少函数的情况
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
发表于 2019-9-5 00:04:01 | 显示全部楼层
字节对齐,用DMA
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2019-9-5 08:24:29 | 显示全部楼层
用你的第2个例子测试了,正常
QQ截图20190905082416.jpg
回复

使用道具 举报

10

主题

140

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-9-5 13:26:01 | 显示全部楼层
看了一下ST官方的例程,是在Target页选中AXI SRAM区,即所有变量默认在AXI SRAM区。
此外,ST官方例程将AXI SRAM区MPU设置为不缓存,不共享,不缓冲。
于是我也这样设置后就正常了!!!
MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;

虽然硬汉说他测试没问题,但在我这边,测试就是始终通不过。
目前唯一正常的情况就是按ST官方的设置。话说,到底为什么会有这种区别?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2019-9-5 14:09:09 | 显示全部楼层
lvehe 发表于 2019-9-5 13:26
看了一下ST官方的例程,是在Target页选中AXI SRAM区,即所有变量默认在AXI SRAM区。
此外,ST官方例程将AX ...

这么神奇,配置成Strongly Ordered可以的话,那么昨天我发的配置成Device也可以才对。
修改下面的参数试试
QQ截图20190905140851.jpg

回复

使用道具 举报

10

主题

140

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-9-5 14:32:36 | 显示全部楼层
eric2013 发表于 2019-9-5 14:09
这么神奇,配置成Strongly Ordered可以的话,那么昨天我发的配置成Device也可以才对。
修改下面的参数试 ...

问题找到了。
SCK时钟线没有设置为上拉。
就是这么神奇,不用DMA就正常,用DMA就不正常。可能DMA太快了,不上拉就容易出错。
我的板子上没有焊上拉电阻,全靠芯片内部上拉电阻。你的正常是因为底板带上拉电阻。
感谢硬汉和各位有心人!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2019-9-6 08:37:15 | 显示全部楼层
lvehe 发表于 2019-9-5 14:32
问题找到了。
SCK时钟线没有设置为上拉。
就是这么神奇,不用DMA就正常,用DMA就不正常。可能DMA太 ...

谢谢告知最后原因。
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-10-10 20:15:21 | 显示全部楼层
楼主能否把最终成功的工程发一个出来。我这里遇到问题就连 f_mount都挂载不上。一用DMA的话就会有  RXOVERR: 已接收 FIFO 上溢错误或 IDMA 写入传输错误。谢谢了!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2019-10-11 10:24:55 | 显示全部楼层
cut_down 发表于 2019-10-10 20:15
楼主能否把最终成功的工程发一个出来。我这里遇到问题就连 f_mount都挂载不上。一用DMA的话就会有  RXOVERR ...

直接论坛置顶帖下载我们V7的例子就行。
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2019-10-11 20:16:07 | 显示全部楼层
eric2013 发表于 2019-10-11 10:24
直接论坛置顶帖下载我们V7的例子就行。

好的,谢谢
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2020-2-2 11:47:47 | 显示全部楼层
我也遇见了一模一样的问题,原来是这个原因啊。
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2020-2-2 12:02:03 | 显示全部楼层
lvehe 发表于 2019-9-5 14:32
问题找到了。
SCK时钟线没有设置为上拉。
就是这么神奇,不用DMA就正常,用DMA就不正常。可能DMA太 ...

不对啊,安富莱的V7板子SCK也没有上拉电阻的。我现在遇见跟你的一摸一样的问题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-2-2 12:16:33 | 显示全部楼层
sanit 发表于 2020-2-2 12:02
不对啊,安富莱的V7板子SCK也没有上拉电阻的。我现在遇见跟你的一摸一样的问题。

V7的有,在底板上呢。
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2020-2-2 12:25:11 | 显示全部楼层
eric2013 发表于 2020-2-2 12:16
V7的有,在底板上呢。

1580617316(1).jpg 原理图上显示SCK没有加上拉电阻,由于板子在公司,无法实际确认。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2020-2-2 13:07:32 | 显示全部楼层
sanit 发表于 2020-2-2 12:25
原理图上显示SCK没有加上拉电阻,由于板子在公司,无法实际确认。

明白你的意思了,这个SCK引脚没有加过外置上拉。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-6-30 09:06:57 | 显示全部楼层
果然是引脚引脚上拉的问题 ,已经顺利解决
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-10-26 00:18:17 | 显示全部楼层
既然V7的板子上没有加上拉,但是V7的板子可以正常工作,说明根本原因还不是SCK的上拉问题,应该是SCK的信号完整性的问题。规范上说CMD要加上拉。SCK和D0-D3可以不用外接上拉。可能根本原因是SCK在25Mhz的情况下,信号的质量不好造成的。串接个小电阻可能更能够解决问题。我在弄SDIO WIFI,调试的时候用IDMA试试
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2021-4-13 12:43:48 | 显示全部楼层
请问一下,这个cubemx中fatfs开启use dam template无法挂载,怎么解决呀?关闭这个选项是可以正常使用的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2021-4-13 17:17:50 | 显示全部楼层
fuji 发表于 2021-4-13 12:43
请问一下,这个cubemx中fatfs开启use dam template无法挂载,怎么解决呀?关闭这个选项是可以正常使用的

你说的是使用DMA方式吧
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2021-4-15 13:17:21 | 显示全部楼层
eric2013 发表于 2021-4-13 17:17
你说的是使用DMA方式吧

嗯,对的。
使用软件生成的FATFS不知道为啥一直无法挂载,调试的时候看到是调用dma的读写了。
之后放弃,使用了帖中的示例。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2021-4-16 10:46:37 | 显示全部楼层
fuji 发表于 2021-4-15 13:17
嗯,对的。
使用软件生成的FATFS不知道为啥一直无法挂载,调试的时候看到是调用dma的读写了。
之后放弃 ...

直接使用我这个整, 例子V025
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2021-4-21 10:18:35 | 显示全部楼层
fuji 发表于 2021-4-15 13:17
嗯,对的。
使用软件生成的FATFS不知道为啥一直无法挂载,调试的时候看到是调用dma的读写了。
之后放弃 ...

额,我这是H743利用CUBEMX生成Makefile的修改方法,也就是修改ld文件把>DTCMRAM AT> FLASH替换为>RAM_D1 AT> FLASH
微信截图_20210421101429.png
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 02:24 , Processed in 0.268049 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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