SD_FIFO上溢错误的问题

2019-08-13 22:50发布

新年了首先祝大家新年好,看帖回帖给帮助的17年发大财!!
一个SD卡读取块的程序,总是在发送CMD17命令后在SDIO_STA寄存器中总能读到RXOVERR,不知道为何,想请大神帮助解答一下FIFO发生上溢错误不就是读取速度太慢吗,还有情况能导致这个问题的发生?
2017-01-29 20-40-42.jpg 2017-01-29 20-41-09.jpg 读一个块的函数
2017-01-29 20-42-11.jpg 设置总线宽度的函数
2017-01-29 20-42-36.jpg 主函数
   最后,新年了,真心祝福大家新年好,给大家拜个年,感谢各位大神在我学习stm32的路上提供的帮助,希望大家鸡年行大运,谢谢大家!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
zhu83453958
1楼-- · 2019-08-14 03:56
找到问题了,程序本身没有什么错误,最大的错误在与464行和494行,两个判断语句错打成了“或”的关系,之所以出现溢出的问题,我想是因为我用仿真器仿真的缘故,因为硬件上单片机发送了CMD17命令后(如果命令没有错),单片机均能收到响应,而这些响应在SDIO的寄存器里一时半会改变不了(除非有新的命令执行),所以仿真器能够正确读出响应,然而仿真器能控制单片机的读,却无法控制SD卡的发,所以发送完CMD17后,SD卡一定已经开始不停地发数据了,由于单片机被控制着读取数据,但是它的读取时间由于仿真的关系必定大大低于实际实际,换句话说,SD卡可能发了已经一半数据了,而单片机才开始读,这就导致了每次SDIO_DCONT寄存器数值在开始的时候就不是初始的512,然后就是要不出现FIFO上溢错误,要不就是出现超时错误(实际上SD卡已经将数据发送光了,就没得发了)。
总结一句话,被仿真器害死了!!!!!
正点原子
2楼-- · 2019-08-14 09:14
帮顶
正点原子
3楼-- · 2019-08-14 14:17
 精彩回答 2  元偷偷看……
zhu83453958
4楼-- · 2019-08-14 17:30
正点原子 发表于 2017-1-29 22:45
帮顶

别光顶啊,原子哥,我是来求助的啊
zhu83453958
5楼-- · 2019-08-14 20:44
有人帮忙回答下吗?
zhu83453958
6楼-- · 2019-08-15 02:20
第464行  在判断STA寄存器状态时候写错了  应该是与的关系
运行的结果总是一会超时,一会就溢出的,请大神帮忙啊

一周热门 更多>