STM32F429 SDIO8线 MMC开启DMA后DMA结束回调不会调用
和示例一样 在fatfs的read和write里面以DMA方式读写,但是奇怪后面的HAL_MMC_RxCpltCallback和HAL_MMC_TxCpltCallback一直没调用到ReadStatus和WriteStatus一直是0
是我哪里配置有问题 还是说是少了什么启用命令
现在SDIO的时钟速度配套的多少,降低速度。 eric2013 发表于 2024-1-30 13:09
现在SDIO的时钟速度配套的多少,降低速度。
现在配置的ClockDiv=8
也就是180/8=22.5
频率降到16倍频还是不行
断点调试一步步跟进发现进了MMC_DMAError
错误码HAL_DMA_ERROR_TE LinY 发表于 2024-1-30 15:33
断点调试一步步跟进发现进了MMC_DMAError
错误码HAL_DMA_ERROR_TE
把硬件流控制打开试试。 eric2013 发表于 2024-1-30 15:40
把硬件流控制打开试试。
找到原因了
是有.c里面用了IRAM2
我把他关了 只用IRAM1
这样HAL_MMC_RxCpltCallback和HAL_MMC_TxCpltCallback就能调到了
硬件流控我也开了。
但是现在是出现另外的问题,我用的sdio+fatfs+虚拟U盘挂载了一个32G颗粒
1.就是用DMA比不用还慢
2.用DMA有时候会出现异常,会提示U盘需要修复
3.拷贝文件进U盘时,瞬间完成然后实际文件没在里面的
4.用DMA有时候会出现异常,f_mount等等函数会直接提示FR_DISK_ERR
感觉DMA不研究透 问题太多了
LinY 发表于 2024-1-30 17:13
找到原因了
是有.c里面用了IRAM2
我把他关了 只用IRAM1
谢谢告知问题原因。
防不胜防,这个CCM RAM是不支持DMA的。 也是遇到过,不过没仔细研究,官方的例子也是先是1线模式,初始化后改为4线:lol 待处理问题,我用的sdio+fatfs+虚拟U盘挂载了一个32G颗粒
1.用DMA比不用还慢
2.用DMA有时候会出现异常,会提示U盘需要修复
3.拷贝文件进U盘时,瞬间完成然后显示文件也在里面,断点之后实际文件没有
4.用DMA有时候会出现异常,f_mount等等函数会直接提示FR_DISK_ERR
感觉DMA不研究透 问题太多了
对我这样的新手 用HAL库是开发起来友好多了 不用去操作具体寄存器层面了
但是只是会用,都不知道为啥这么调用。
这个DMA感觉用HAL不一定能搞定了 估计还得去看看具体DS
搞完MMC的DMA 回头还得看看ETH的DMA
难搞哦
LinY 发表于 2024-1-31 16:00
待处理问题,我用的sdio+fatfs+虚拟U盘挂载了一个32G颗粒
1.用DMA比不用还慢
2.用DMA有时候会出现异常, ...
DMA要处理4字节对齐问题,你应该没有处理。 eric2013 发表于 2024-2-1 08:10
DMA要处理4字节对齐问题,你应该没有处理。
我也是STM32F429的,有试过按照这个去配置的,也没效果
LinY 发表于 2024-2-1 14:49
我也是STM32F429的,有试过按照这个去配置的,也没效果
难道F4对eMMC的支持确实不太稳定。
页:
[1]