Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1 2. Интерфейс SPI 0 - fill � О ш 111 (.) 111 Q. � "' i ш"' + � 1 111 - t ..J о u a u а 1111111 1 2 3 4 5 6 7 Рис. 1 2.З. Подключение flash-кapты ММС к схеме, показанной на рис 1 2 . 2 ; самодельный разъем для присоединения карты (справа) П одача команд и инициализация ММС 337 Общий принцип работы интерфейса SPI в картах немного отличается от привычно го нам побайтного доступа. Если помните, в главе 3 было сказано, что в интерфейсе SPI нет никакого маркера, разделяющего байты, - это попросту бесконечный по ток битов, синхронизированных фронтами по линии SCL. У карт памяти, которые и сами могут иметь самое разное устройство и применяться с различными контрол лерами, между информационными посылками могут присутствовать достаточно большие промежутки, необходимые контроллеру или карте на то, чтобы «перева рить» нужную информацию. Поэтому промежуток до команды, или от команды до получения отклика, или до начала массива данных (см. далее описание команд) может быть произвольным. Поскольку внутреннего тактового генератора у карты нет, то работа ее в таких пау зах обеспечивается тактами по линии CLK, при этом на линии DI должен быть вы ставлен высокий уровень (что равносильно посылке байтов, равных $ FF) . На линии DO в большинстве случаев при этом также присутствует высокий уровень, за ис ключением состояния, когда карта занята, например, записью блока в память ( вuzY ) , - тогда здесь низкий уровень . Стандарт устанавливает для большинства таких промежутков максимальное значение в 8 восьмибитовых посылок (мини мальное может быть в разных случаях как О, так и 1 ) . Первый (старший) бит любой команды (либо байта отклика, о чем далее) всегда равен нулю, так что по сбросу в нулевое состояние на линии можно определить начало информационного байта. Аналогично, массив данных всегда предваряется байтом, в котором последний (младший) бит равен нулю ($ FE, о чем далее), так что устройство «знает», когда на чинать отсчитывать данные. Общий принцип подачи команд и данных иллюстрируется приведенной на рис. 1 2 .4 диаграммой, отображающей пример процедуры записи блока данных.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==