最近写一SD驱动,目前对于大部分卡各方面均正常,
但创见的个别型号都出现以下状况:
插入卡之后卡片初始化正常,各CMD的正常且回应正常
(最后一个发的是CMD6--Change Function, 检查Respon数据正常)。
但就在初始化完成发送CMD17读Block时,控制器返回State CRC Error,
软件系统会读不到分区表。
如果过一段时间,重新再发CMD17又都会正常读取了。
不知各位大侠有何高见?
CMD6之后需要做特殊的状态查询或等待才可以继续发CMD17吗?
我在SD有Spec上好像没看到。
在SD Status register里有一个BIT判断是否发送完成.必须等待它置位.
你也可以在发送CMD17后等待200ms就没问题了,不过这样就比较慢,对读写大数据不好.
PRG_DONE 1 = Card has finished programming and is not busy
DATA_TRAN_DONE 1 = Data transmission to card has completed
这两个标志位都要判断.
后来发现不是Command的问题,Power Manager中关Clock关得太早了。