eric2013 发表于 2019-7-18 09:03:54

F4系列标准库库SDIO的FatFS例子修改一个bug,可提升4线SDIO的DMA稳定性

修改后的例子:
static/image/hrline/4.gif
diskio.C文件中disk_write函数的单块和多块写入后,等待操作都错误的写成了等待读完成
这两个地方要修改为SD_WaitWriteOperation


连续测试20次2MB文件的读写,全部正确无错误。




eric2013 发表于 2019-7-18 09:17:50

这个问题是此贴坛友帮忙发现的。

SDIO驱动SD卡的写多块的问题
http://www.armbbs.cn/forum.php?mod=viewthread&tid=94473&fromuid=58
(出处: 安富莱电子论坛)

morning_enr6U 发表于 2019-7-19 09:31:56

细微之处,见真情啊!!!:loveliness:

咸喜喜 发表于 2020-5-11 15:46:20

学习坛友的细心 ! 我读了野火家的驱动 , 都没看出这个问题 . 以后要再细心一些.顶硬汉论坛!

eric2013 发表于 2020-5-12 07:28:12

咸喜喜 发表于 2020-5-11 15:46
学习坛友的细心 ! 我读了野火家的驱动 , 都没看出这个问题 . 以后要再细心一些.顶硬汉论坛!

我们这个是手抖写错的,你的是咋回事

tianqi911 发表于 2020-6-24 17:16:56

:lol标记之。

eric2013 发表于 2020-6-24 17:21:52

tianqi911 发表于 2020-6-24 17:16
标记之。

最好还是浏览器收藏,然后分类,效果是最好的,然后手机,电脑和pad同步标签,这样以后有问题查找比较方便。

tianqi911 发表于 2020-6-28 12:20:04

eric2013 发表于 2020-6-24 17:21
最好还是浏览器收藏,然后分类,效果是最好的,然后手机,电脑和pad同步标签,这样以后有问题查找比较方 ...

好的。我试试这种方法。

tanjing2017 发表于 2020-6-28 19:03:05

支持硬汉。
然后建议以后的代码都放在git上,你那边有修改了,我们可以直接更新。这样子比较方便。

eric2013 发表于 2020-6-29 09:52:27

tanjing2017 发表于 2020-6-28 19:03
支持硬汉。
然后建议以后的代码都放在git上,你那边有修改了,我们可以直接更新。这样子比较方便。

例子太多,Github太卡了。

浇了汁鸡 发表于 2021-6-21 10:32:17

eric2013 发表于 2020-6-29 09:52
例子太多,Github太卡了。

可以考虑放到国内的gitee上,这样代码可以由大家一起维护,毕竟git在版本维护方面优势巨大

浇了汁鸡 发表于 2021-6-21 10:42:46

你们使用的标准库的xxx_sdio_sd.c里还有一个小BUG,SD_WriteBlock和SD_WriteMultiBlocks函数里错误的配置了SDIO_IT_RXOVERR,应该是配置SDIO_FLAG_TXUNDERR, 这个st在后续新版本发现但只发现修复了一半,至今最新的库中仍是错的。。。

eric2013 发表于 2021-6-21 11:21:33

浇了汁鸡 发表于 2021-6-21 10:32
可以考虑放到国内的gitee上,这样代码可以由大家一起维护,毕竟git在版本维护方面优势巨大
谢谢建议,不折腾这些git了。

不方便用户下载。不用git 用户太多了。

eric2013 发表于 2021-6-21 11:28:50

浇了汁鸡 发表于 2021-6-21 10:42
你们使用的标准库的xxx_sdio_sd.c里还有一个小BUG,SD_WriteBlock和SD_WriteMultiBlocks函数里错误的配置了 ...

1、标准库版除了你指出的这个,还有别的bug,此贴
继续提升STM32F4的4线SDIO DMA方式的读写稳定性,发布新版案例(2020-06-30)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=98560

2、HAL库版的所有这些bug都修正了,此贴:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255

unsv29 发表于 2022-8-12 16:40:48

浇了汁鸡 发表于 2021-6-21 10:42
你们使用的标准库的xxx_sdio_sd.c里还有一个小BUG,SD_WriteBlock和SD_WriteMultiBlocks函数里错误的配置了 ...

为什么说“应该是配置SDIO_FLAG_TXUNDERR”?

eric2013 发表于 2022-8-12 17:02:24

unsv29 发表于 2022-8-12 16:40
为什么说“应该是配置SDIO_FLAG_TXUNDERR”?
Wirte是发送,当然要配置为TXUNDERR了,配置为RXOVERR是有误的。

unsv29 发表于 2022-8-15 21:57:48

eric2013 发表于 2022-8-12 17:02
Wirte是发送,当然要配置为TXUNDERR了,配置为RXOVERR是有误的。

谢谢!一般人真注意不到这个。

miaoguoqiang 发表于 2023-1-6 23:29:51

HAL库没有这个SD_WaitWriteOperation,是用的读取标志位加tick超时判断,DMA + SDIO 四线模式每秒钟一次性写8K数据可以很稳定吗

eric2013 发表于 2023-1-7 00:39:21

miaoguoqiang 发表于 2023-1-6 23:29
HAL库没有这个SD_WaitWriteOperation,是用的读取标志位加tick超时判断,DMA + SDIO 四线模式每秒钟一次性写8 ...

可以,但要注意实时写入问题,注意一点就是随着写入文件越来越大,写一次的时间会不断加上。最好文件大小超过一定值后,再创建个新文件继续写。

miaoguoqiang 发表于 2023-1-7 12:51:17

eric2013 发表于 2023-1-7 00:39
可以,但要注意实时写入问题,注意一点就是随着写入文件越来越大,写一次的时间会不断加上。最好文件大小 ...

F446 SDIO+DMA不定时会出现`Hardware I / O driver error`.然后必须重新挂载才能继续写入.感觉中断会影响到数据的写入

eric2013 发表于 2023-1-9 00:08:51

miaoguoqiang 发表于 2023-1-7 12:51
F446 SDIO+DMA不定时会出现`Hardware I / O driver error`.然后必须重新挂载才能继续写入.感觉中断会影响 ...

如果怀疑中断影响,可以关闭中断其它中断,排查下试试。

小溪733 发表于 2023-2-8 11:28:11

谢谢,学习了
页: [1]
查看完整版本: F4系列标准库库SDIO的FatFS例子修改一个bug,可提升4线SDIO的DMA稳定性