我的微控制器缓冲区有限,因此,不是读取整个扇区,而是尝试从SD卡上的扇区读取N个字节,然后将这N个字节发送到目标设备(FPGA),然后重复执行直到整个扇区都被读取。为此,我必须将片选(CS)置为无效,然后将CS置为FPGA。当我在SD卡上重新设置CS时,似乎无法从该扇区读取更多数据,因此我想知道是否通过取消CS来终止SD卡上的该事务。不过,似乎找不到CS规范来证明这一点。
[当您首次声明CS时,SD卡(以及我使用过的所有其他SPI设备)期望开始新的事务。 CS首先声明的时钟用作同步点,没有它,它将只是一个无限的比特流,并且需要某种替代的同步方法。规范可能没有明确地说断言CS会终止事务,但是断言它会启动一个新事务这一事实意味着。
我认为标准容量SD(SDSC)卡可以让您读取小于512字节的块。这将限制您可以使用的卡,但如果可以接受,则可以考虑。否则,最好的选择(不修改硬件)可能是根据需要反复读取该块。