完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我是使用的STM32F103VDT6芯片,TF卡使用的是sandisk class4 4G的。使用的是SDIO+DMA官方例程,单独测试没有发现问题,但是当我开启其他中断时(不管什么中断),比如我开启tiM3定时中断,中断频率为200Hz,中断中执行一个for循环来模拟中断处理,只要for循环的执行时间较长,就会出现TF卡的操作卡死问题,就是TF卡操作一直在等待DMA标志,并且for循环越长出现这种卡死的概率越大,当达到一定程度后TF卡完全不能操作。我大概估算了一下,差不多在中断执行时间达到总时间的20%左右就会明显有卡死现象,达到50%左右就基本上不能正常操作TF卡了。
由于我需要降低功耗,所以将主频降的比较低,4MHz,所以中断处理相对来说就显得执行时间较长,这样我才意识到这个问题,后来直接用官方例程实测,开通一个TIM3中断,执行for循环延时,当达到一定程度后,可以重现这个问题,所以我觉得应该是固件库或者是硬件的原因,不知道你们有没有发现这个问题,可以的话你们也可以这样测试一下,看能否重现这个问题,要是能解决的话,希望帮忙解决一下,要是这个问题得不到解决的话,我们只能放弃使用这个芯片了。 |
|
相关推荐
28个回答
|
|
|
改成1BIT的数据模式就OK了 至于原因可能就是DMA与SD卡的读取速度不匹配造成的 导致FIFO溢出错误,而DMA死等
|
|
|
|
|
zhuqunwei 发表于 2018-12-10 12:26 你说需要开启流控是啥意思,我也遇到了这个问题,希望您帮忙解决一下。QQ:1075785006 |
|
|
|
|
|
if (errorstatus == SD_OK)
{ /* 最后为了提高读写,开启4bits模式 */ errorstatus = SD_EnableWideBusOperation(SDIO_BusWide_1b); } 用官网例程的话采用1bit模式就行了,应该是4bit模式和DMA配置方面的问题,具体的正在研究。 |
|
|
|
|
|
使用DMA需要加硬件流控
|
|
|
|
|
|
|
|
zhuqunwei 发表于 2018-12-10 12:26 您好,关于您很久之前遇到的这个问题,我最近也遇到了,并且很纠结。请问您当时是怎么解决的?就是加了硬件流控么?可我加了硬件流控之后就会出现CRC校验错误。 |
|
|
|
|
|
都是高手啊 小白还看不懂
|
|
|
|
|
|
楼主我DMA加了流控 但是还是会在发送CMD17的时候出现问题 最后要么是DTIMEOUT要么是RXOVERR,你知道原因吗
|
|
|
|
|
|
谢谢分享!
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
651 浏览 0 评论
712 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
4375 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
3176 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2629 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-10 02:17 , Processed in 2.285280 second(s), Total 87, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1563