程序通过了,发出复位命令后就收到正确的响应了。
确实是SPI的事!
可是又发现问题
430发出命令计算卡容量:cardSize=MMC_ReadCardSize();计算出的结果是2032 664 576bytes
但是卡放入读卡器中用WinHex查看,它给出的结果是Free Space:2030 960 640bytes,Total Capacity(总容量):2031 226 368bytes。(这个Free Space是总容量减去文件系统所占的容量后的真正的数据区容量)。问题就是430计算的卡容量与用WinHex查看的结果不一致。
我觉得这个卡容量的误差倒是不大,可能是两个程序计算容量的算法上的不一致。更要命的问题是,430执行写SD卡命令mmcWriteSector(266240, buffer); (266240是我用WinHex查看SD卡真正数据区的开始地址,前面是引导扇区、FAT和根目录区),然后执行读SD卡命令mmcReadSector(266240, bbuffer);用cspy中watch查看buffer和bbuffer两个数组,发现内容确实一样,但是我用WinHex查看查看SD卡地址266240,没有写入任何数全是0!
不知debug对这种现象有什么高见
再次感谢debug的解释,谢谢您