Можно ли деактивировать CS в середине блока чтения при использовании SD-карты в режиме SPI? - PullRequest
0 голосов
/ 13 февраля 2020

В моем микроконтроллере имеется ограниченный буфер, поэтому вместо того, чтобы читать весь сектор, я пытаюсь прочитать N байтов из сектора на SD-карте, затем отправить эти N байтов целевому устройству (FPGA), а затем повторить пока весь сектор не будет прочитан. Для этого мне нужно отменить выбор чипа (CS) на SD-карте и установить CS на FPGA. Когда я заново устанавливаю CS на SD-карту, я не могу больше читать данные из этого сектора, поэтому мне интересно, завершив ли я эту транзакцию на SD-карте, отключив CS. Не могу найти спецификации CS, чтобы доказать это.

1 Ответ

1 голос
/ 13 февраля 2020

Когда вы впервые утверждаете CS, SD-карта (и любое другое устройство SPI, которое я когда-либо использовал) ожидает начала новой транзакции. Часы, в которых CS впервые заявляет, используются в качестве точки синхронизации, без которой они были бы просто бесконечным потоком битов и потребовали бы альтернативного метода синхронизации некоторого вида. Спецификации не могут явно сказать, что деактивация CS завершает транзакцию, но тот факт, что утверждение ее запускает новую, подразумевает, что.

Я думаю, карты SD (SDS C) стандартной емкости позволят вам читать блоки меньше, чем 512 байт. Это ограничит количество карт, которые вы можете использовать, но если это приемлемо, то это вариант для рассмотрения. В противном случае вам лучше всего (без изменения HW) просто читать блок снова и снова столько раз, сколько вам нужно.

...