SD卡驱动已经完成,但有以下问题还未解决,希望大家指点一下: 1.SD卡的读写用中断方式的时候,MCI时钟最多只能设置为6M,否则会出现underrun error,大概是接收/发送中断进入的时间赶不上SD的接收/发送时间,等到进入中断读写FIFO的时候,已经产生underrun error了,可是我的中断程序已经很简单了,为何这个时间还是慢了,有点蹊跷,难道这样只能用6M时钟了?...
2.于是我用DMA来传输数据,这下MCI时钟可以跑到18M了,设为25M就不行了,一次都运行不了,等不到DMA的接收完成信号.而且用12M时钟的时候,运行读写测试程序,跑1个多小时后也会出现等不到DMA的接收完成信号,原因未明.......
3.老大要求时钟最少跑25M,看手册说SD卡普通模式时钟为0-25M,高速模式为0-50M,目前是普通模式,可跑不到25M,是个问题...下一步设高速模式看看,看DMA还会不会出问题....我的卡是TOSHIBA class6的,应该能支持该模式吧. 4.我的驱动兼容SDHC(High Capacity SD Memory Card),我测试用的SDHC卡也是TOSHIBA class6的,相同条件下,发现SDHC比SD要慢20%左右,比较奇怪,SDHC比SD速度慢吗,还是我的程序的问题?
我们用的LPC2378,开发工具是keil MDK + GCC,另外感觉GCC的优化有点不好用,有的文件必须优化,有的文件不能优化,否则就出问题,真是怪哉. |