Микропроцессоры и микроконтроллеры

 
 
 
«Ограничение возможностей языка с целью предотвращения программистских ошибок в лучшем случае опасно.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: Каналы ввода-вывода на основе МК51 :: Интерфейс внутрисистемного программирования SPI

Интерфейс внутрисистемного программирования SPI

В микроконтроллерах AT89Sxxxx реализована возможность изменения содержимого памяти программ при нахождении МК в целевой системе – ISP – in-system programming. Эта возможность обеспечивается наличием последовательного интерфейса SPI. Этот интерфейс, кроме целей программирования, в некоторых моделях может также обеспечивать обмен данными между несколькими микроконтроллерами. Скорость обмена – до 1,5 Мбит/с.

Согласно стандарту интерфейса SPI, в нем присутствуют такие сигналы (в скобках указана соответствующая физическая линия порта МК):

MOSI (P1.5) – master output slave input – информационный выход контроллера, инициирующего обмен (ведущего) – вход ведомого контроллера;

MISO (P1.6) – master input slave output – информационный вход контроллера, инициирующего обмен (ведущего) – выход ведомого контроллера;

SCK (P1.7) – serial clock – линия синхронизации; тактовые импульсы формирует ведущий контроллер;

SS (P1.4) – slave select – линия выбора ведомого устройства; ведомое устройство должно формировать на этом выходе “0”.

Настройка интерфейса SPI для обмена данными с другими микроконтроллерами производится путем установки битов специальных РСФ:

SPCR – SPI control register, SPSR – SPI status register и SPDR – SPI data register. Битовая структура этих регистров в данной статье не рассматривается.

Для целей физического программирования Flash-памяти интерфейс SPI используется совместно с сигналом Reset, а линия SS не задействована. При подаче высокого уровня на вход Reset контроллер переходит в режим сброса, одновременно являющийся режимом записи памяти программ.

Физическое программирование Flash-памяти может быть выполнено непосредственно с ПЭВМ. Для выдачи сигналов программирования можно использовать LPT-порт, а необходимый протокол (последовательность команд, адресов и данных для записи) реализуется специальным программным обеспечением. Таким образом, через линии параллельного LPT-порта реализуется побитовая передача данных.

Программирование выполняется через кабель, построенный по схеме:

Линия
интерфейса SPI

Линия МК (номер вывода)

Линия LPT-порта
(контакт разъема DB-25)

MOSI

P1.5 (6)

7

MISO

P1.6 (7)

10

SCK

P1.7 (8)

8

RST

Reset (9)

6

GND

Vss – GND (20)

18-25 (все соединить)

Кабель рекомендуется выполнять таким образом, чтобы каждый сигнальный провод образовывал витую пару с проводником GND (можно использовать плоский многожильный кабель с индивидуальной экранировкой проводов). Длина кабеля не должна превышать 1 м.

В качестве специализированного программного обеспечения можно использовать, например, программу-загрузчик AEC_ISP.exe, свободно распространяемую фирмой AEC Corp. Входной информацией для загрузчика AEC_ISP является скомпилированный файл прикладной программы, представленный в формате Intel HEX (такой формат файла формируется практически всеми компиляторами, в том числе и средой MCStudio). Загрузчик позволяет выполнить физическое программирование контроллеров типов AT89S51, AT89S52, AT89S8252, AT89S53. Одновременно с памятью программ может быть выполнена запись данных в EEPROM. Также загрузчик автоматически производит верификацию (проверку содержимого) Flash - и EEPROM-памяти. Программа-загрузчик AEC_ISP реализована как DOS-приложение.