Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

60 Часть /. Общие принципы устройства и функционирования Аtте/ А VR по SPI у различных устройств может сильно различаться , хотя в его основе всегда лежит последовательный побитный сдвиг в каждом такте частоты , задаваемой «мас­ тером» на выводе SCK. Существуют также различающиеся по комбинации логических уровней режимы (mode) О, 1 , 2 и 3 (см . главу 1 2) , а также SPI с б6льшим количеством линий данных (их мы рассматривать здесь не будем) . Для сигнализации об окончании цикла сдвига в аппаратном SPI МК АVR преду­ смотрено отдельное прерывание и установка специального флага SPIF. Буфериза­ ция по передаче одинарная (т. е. нельзя записать следующий байт, пока полностью не передали предыдущий), а при чтении - двойная (т. е. принятый байт можно прочесть во время обмена). При этом необходимо следить, чтобы принятая посылка была считана из регистра данных SPI прежде, чем завершится цикл сдвига новой посылки. В противном случае первый байт будет потерян . Никаких стартовых-стоповых битов в SPI не предусматривается, и если обмен не­ прерывный, то выделить начало байта, чтобы синхронизировать чтение/запись, не­ возможно. Поэтому обычно на время чтения генератор приостанавливают и заодно подают сигнал высокого уровня на CS (если этот вывод используется вообще), чтобы остановить ведомого и привести его в исходное состояние. По паузе в пере­ даче (во время которой уровень на линии SCK может принимать выбранное в зави­ симости от режима значение) можно устанавливать синхронизацию начала очеред­ ного байта или кадра, если это необходимо. Другой способ выделить начало ин­ формационной последовательности приводится в главе 12 применительно к обмену с картами памяти. Значения скорости обмена по SРI-интерфейсу не стандартизованы и могут дости­ гать у некоторых микросхем десятков Мбит/с (так, в микросхемах памяти серии AT45DBxxxD тактовая частота может достигать 66 МГц) . Аппаратный SPI МК AVR предполагает максимальную частоту тактирования равной 1 /4 от частоты так­ тового сигнала МК. Отметим, что SP!-интерфейс последовательного программ иро­ вания, имеющийся во всех моделях МК АVR, - не то же самое, что пользова­ тельский SP 1 для обмена информацией (обратите внимание, что на схеме, показан­ ной на рис. 2 . 1 , они размещены в разных местах), и в общем случае у них могут даже не совпадать выводы. Кроме того, не все модели МК АVR обладают полно­ функциональным аппаратным SPI, несмотря на то, что в них имеется возможность последовательного программирования по этому интерфейсу. В младших моделях семейства Tiny с объемом памяти 1 кбайт SPI вообще отсутствует, а в других моде­ лях (вроде АТtiny23 1 3 ) он может быть реализован только через интерфейс USI (о котором рассказано в этой главе далее) . Существуют, разумеется, и программные методы имитации SPI (в частности, они описаны в Appl ication Notes АVR320). Более подробно об обращении с SPI рассказано в главе 12. SPI , как правило, служит для высокоскоростного обмена между микросхемами в пределах одной платы или, как максимум, одного устройства. Обмен данными со многими типами карточек памяти, включая и наиболее распространенные в на­ стоящее время карточки Secure Digital (SD), есть также просто вариант SPI . Кроме собственно SPI, в различных микросхемах можно встретить его модификацию под названием интерфейс Microwire (3-wire) . Он отличается тем, что работает сразу

RkJQdWJsaXNoZXIy MTExODQxMg==