请教关于SD时钟速度问题.

[复制链接]
3936|7
 楼主| alphal 发表于 2008-7-21 09:56 | 显示全部楼层 |阅读模式
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的优化有点不好用,有的文件必须优化,有的文件不能优化,否则就出问题,真是怪哉.

是SD总线接口.
古道热肠 发表于 2008-7-21 10:07 | 显示全部楼层

SD卡如果采用SPI通讯,应该是能同步的

SPI是同步串口,即同步时钟由主控器产生,SPI从机按CLK来进行响应.所以速度快点慢点都应该能正常工作的.您得仔细看程序是否结构良好,容错与超时判断是否恰当.
pheavecn 发表于 2008-7-21 10:21 | 显示全部楼层

貌似lpc的spi就是最多8M

以前用lpc2136的时候是这样的。
用stm32f可以跑24M
 楼主| alphal 发表于 2008-7-21 10:35 | 显示全部楼层

是SD总线接口的.

您得仔细看程序是否结构良好,容错与超时判断是否恰当.

此话怎讲?
容错?
超时判断?

都是读MCI Status寄存器出来的,不需要我多加判断.
 楼主| alphal 发表于 2008-7-21 15:00 | 显示全部楼层

没人遇到此种问题吗?

 楼主| alphal 发表于 2008-7-23 10:25 | 显示全部楼层

我的是SD总线滴....非spi.

古道热肠 发表于 2008-7-23 10:49 | 显示全部楼层

SD卡SD总线工作没做过研究,觉得重点还是要看资料及实物时序

建议先到同行类似应用打探一下行情,确定您的硬件架构目前肯定能上到20多M的外频,出现问题仅仅是软件处理不当的问题,要把握好方向,不能一错到底.
 楼主| alphal 发表于 2008-7-23 11:45 | 显示全部楼层

对,应该先问问这个SD时钟能跑到20M以上.谢谢肠版提醒!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

112

主题

473

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部