我一直在尝试用LPC1766 SPI外设做一个 SD 卡接口,现在我陷入了一个我无法在任何地方找到答案的问题。
问题是:SDHC 卡没有按预期响应写入和读取命令。
在基于 Chan 的流程图和 NXP 应用说明的初始化上一切正常。我可以区分卡片版本,读取 OCR、CID、CSD 并确定它们的大小。
在这一步之后,我开始每隔一秒写入一个块并读回它以检查数据完整性。在金士顿 SDHC 4 GB 4 类卡上,我可以发送第一个写入命令,但在第二个上,卡甚至没有向 CMD24 应答(0x00 或 0x01)。使用 SanDisk 4 GB Class 4 卡,结果是不同的,每个命令都由卡回答,但是在读回数据时我只得到零(我确定我没有写零)。如果我使用 SDSC 卡,一切正常。
我知道 SDHC 是块寻址而不是字节寻址,并且我需要发送 ACMD41 和 CCS 以用于 SDHC。我也知道时钟频率不是问题(使用 400 KHz 启动,然后 20 MHz 写入/读取),因为我刚刚打开 CRC 检查并且所有卡都在接受命令和数据。如果我停止计算 CRC,所有卡都会拒绝命令和数据。