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

 
 
 
«Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.»
Brian W. Kernighan.
Русский | Українська


Микропроцессоры и микроконтроллеры :: Каналы ввода-вывода на основе МК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-приложение.