Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1 2. Интерфейс SPI 331 Конкретная микросхема выбирается аппаратно через контакт «выбор кристалл а» CS (напомним, что активный уровень на этом выводе - низкий, потому обычно он обозначается с инверсией). На рис . 1 2 . 1 приведены диаграммы записи и чтения для памяти 45DB0 1 1 B, кото рыми мы будем руководствоваться в написании программы. Операции записи и чтения в буфере специального ожидания не требуют и происходят в реальном вре мени. Процедура записи страницы из буфера в основную flаsh-память с одновре менным стиранием занимает до 20 мс (по отдельности эти операции заняли бы 1 5 и 1 О мс, соответственно) . Обратная операция переноса страницы из основной памяти в буфер выполняется гораздо быстрее (250 мкс), но также требует ожидания. Так что после посылки команды на запись или на чтение страницы нужно либо выждать заведомо большее время, либо проверять старший бит RDY/вuzy регистра статуса микросхемы, который сбрасывается на время чтения или записи/стирания . Установка в единичное состояние этого бита означает, что микросхема готова к следующей операции. Второй способ, естественно, более корректен, и мы пойдем именно этим путем. Запись в буфер cs Ох84 х Х Х, BFAB BFA7-0 Перенос буфера в страницу flаsh-памяти ёs n n+1 · · · � 81 ХХХХ Ох84 Xr · r , РА8-7 Х РА6-О, Х Х Х ХХХ Х Перенос страницы flаsh-памяти в буфер Чтение буфера cs РАб-0, Х х Рис. 1 2. 1 . Диаграммы записи и чтения данных через встроенный буфер для flаsh-памяти серии 45DBxxxB (Х - любое значение, п - последовательнь1й номер байта данных) Первый байт в каждом случае - код операции, для наглядности эти коды приведе ны непосредственно на диаграммах рис . 1 2 . 1 . В адресации буфера и страницы памяти имеются определенные нюансы . Так, адрес в буфере всегда предваряется пустым байтом с произвольным значением (на диаграммах обозначен, как Х), остальные биты адреса располагаются в двух байтах (полный адрес буфера объемом
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==