SPI и микросхема флэш-памяти, основы

В SPI у меня есть несколько вопросов...

Я понимаю, как синхронизируются биты, но как разграничиваются байты?

Требуется ли контакт выбора ведомого только для включения высокого импеданса вывода данных? Или это также требуется для разграничения байтов/слов?

Кроме того: из того, что я прочитал ( техническое описание PIC16f74 ) , у меня сложилось впечатление, что SPI может быть 3-проводным, и есть режимы адресации, в которых я так запутался, что думаю, я сделаю вид, что не читал на данный момент!

Я просто взаимодействую с PIC16F с 8-битной флэш-памятью Atmel AT45DB011D , так что ничего больше на линиях SPI. У него также есть многобайтовые команды, так как же он их разграничивает?

SPI и использование микросхемы флэш-памяти для меня совершенно новые, любое краткое руководство было бы здорово!

Ответы (1)

В SPI нет концепции «разграничения» байтов. Тот простой факт, что 8 битов были переданы, составляет байт, а девятый бит будет первым битом следующего байта.

В SPI прием начинается, когда линия выбора чипа опускается (или поднимается для некоторых чипов). Затем данные синхронизируются по одному биту за раз в сдвиговый регистр. По мере поступления каждого бита регистр сдвига перемешивает все биты на единицу вниз.

Микросхема SPI обычно имеет фиксированный размер сдвигового регистра и не ограничивается размерами байтов. Некоторые из них кратны 8 битам, что хорошо, некоторые имеют 10 бит, некоторые 17 бит и т. д.

Если вы тактируете больше, чем требуется, первые биты как бы выпадают из конца регистра сдвига и теряются, поэтому, если у вас 10-битный регистр сдвига, и вы можете отправлять только кратные 8 битам (что общий с микросхемами PIC), тогда, если вы отправляете первый байт как 6 битов 0, за которыми следуют 2 бита данных, затем второй байт из 8 битов данных, первые 6 битов будут отброшены, поскольку они выпадают из конца, и сдвиговый регистр будет содержать только последние 10 бит.

Режимы адресации в основном берут несколько дополнительных битов в потоке данных SPI и сравнивают их с набором контактов, привязанных либо к высокому, либо к низкому уровню на микросхеме. Если они совпадают, то следует воздействовать на данные в сдвиговом регистре. Если они этого не делают, его следует выбросить.

Некоторые микросхемы SPI включают функцию сквозной передачи, с помощью которой вы можете объединить их в цепочку, и когда данные синхронизируются в первую микросхему, то, что находится в конце ее регистра сдвига и обычно отбрасывается, отправляется на выходной контакт. Затем он может поступать на вход следующего чипа, таким образом передавая данные по линии от чипа к чипу. В этом случае очень важно убедиться, что ваши данные упакованы в один поток без битов, которые вы обычно отбрасываете (может быть сложно, если чипы не используют кратные 8 битам).

Количество «проводов» в SPI в лучшем случае вводит в заблуждение, поскольку на самом деле оно не говорит вам, сколько реальных проводов необходимо.

Обычно у вас есть:

  • Часы
  • Выбор чипа
  • Данные в
  • Выход данных

Некоторые чипы могут не иметь вывода данных, и они только принимают данные в них. Некоторые объединяют вход и выход вместе, поэтому вам нужно как-то разделить их — либо программно, если можете, либо аппаратно.

Если у вас есть как данные на входе, так и данные на выходе, то SPI может работать в полнодуплексном режиме (но не всегда), когда вы синхронизируете данные в сдвиговый регистр, данные также синхронизируются для чтения. Это не часто используется, так как большинство систем полагаются на отправку команды до того, как может произойти ответ. Иногда есть еще одна линия, чтобы сигнализировать, когда данные закончили отправляться на устройство SPI и должен быть отправлен ответ. Однако чаще это происходит, когда получено определенное количество битов или определенная комбинация битов. Обычно начало передачи дополняется 0, а затем сигнализирует устройству о начале приема с помощью стартового бита.

Есть много способов сделать это, и кажется, что никто никогда не делает то же самое, что и все остальные, а иногда даже как они сами.

SPI определяет способ передачи данных, а не способ их формирования.