这两天没有什么事,就搞起NUC472来了,这系列是有支持SD卡控制器的,在官方给的标准外设库中有一个SD_Fats的例程,试用了一下,发现系统初始化函数里还有一些不足的地方,他把复用的接口引脚设置对了,但是注释里不对,不认真看根本发现不了这个问题,这就不说了,希望官方给的代码能严谨一些。下面说说读取数据的问题吧
读取SD卡里的数据是最终通过调用库函数SD_Read()实现的,且不说函数对各种情况的处理合不合理,也就只能算是在正常访问顺序下能够读出数据,因为感觉少了很多错误处理机制,一旦读取错误,在不调试的情况下,几乎不知道程序出了什么样的错误,不好意思,吐槽一下又给跑题了。
现在有一个奇怪的问题,就是我一次读取107个字节以下的数据,都是能够正常读取出来的,一旦超过这个值(SD_Read()函数的参数里可以最高到2的32次方的数量)就读取错误,因为数据接收完成标志位DIEN(Data Input Enable Bit)不清0,所以程序一直停在循环检测数据接收是否完成,并且DMA状态寄存器的ABORTIF(DMA Read/Write Target Abort Interrupt Flag)标志位置了1,说明DMA总线错误,官方文档里没有说到出现这个错误要怎么处理或者原因是什么,大家能帮忙分析一下这是什么原因吗,调了一下午,都没有什么进展。
|