Найти тему
Будни инженера

Способы программирования памяти AVR

Микроконтроллеры семейства AVR имеют несколько видов памяти. Если говорить об энергонезависимой памяти, то это FLASH и EEPROM. В эту память надо каким-то образом записывать данные. Иногда говорят “программировать память”, хотя с моей точки зрения это не совсем правильно. Хотя и в официальной документации можно встретить выражения типа “программируемая память”. Возможно, так повелось из-за того, что одним из видов памяти является память программ, то есть память, где хранится программа.

Микроконтроллеры AVR допускают несколько способов программирования (записи) FLASH и EEPROM памяти. Основные из них:

  • Параллельное программирование (Self-Prog)
  • Последовательное программирование

При параллельном программировании программатор передаёт в микросхему данные побайтно, параллельным способом. То есть одновременно передаются все 8 бит байта. Это делается через 8-проводную шину (хотя могут потребоваться и дополнительные проводники для синхронизации и управляющих сигналов).

Self-Prog - это возможность перепрограммирования памяти самой программой микроконтроллера. То есть программа микроконтроллера может записывать данные не только в ОЗУ, но и в энергонезависимую память. Это весьма полезная возможность, которая позволяет, например, сохранять какие-то настройки устройства или пользовательские настройки.

При последовательном программировании используется особый последовательный интерфейс, такой, например, как SPI. Последовательная запись выполняется медленнее, но зато этот способ более универсален, и требует меньше проводников для соединения между программатором и микроконтроллером (если речь идёт о прошивке микроконтроллера).

При последовательном обмене данными байты передаются поразрядно, бит за битом. Это, конечно, намного медленнее по сравнению с параллельной записью, особенно если учесть, что ещё требуются разного рода синхронизации, проверки правильности переданных данных и т.п.

Интерфейс SPI использует три провода для передачи данных, и применяется не только для записи памяти микроконтроллеров, но и для обмена данными вообще между разными устройствами. По сравнению с другими интерфейсами, например, с I2C, интерфейс SPI, хотя и использует больше проводов, но зато намного проще для программирования, что может оказать решающее влияние на выбор протокола, если вы собираетесь самостоятельно реализовать в вашей программе обмен данными.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить…