AVR069: протокол обмена AVRISP mkII |
![]() |
Добавил(а) microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Здесь приведен перевод апноута AVR069: AVRISP mkII Communication Protocol [1], посвященного протоколу обмена AVRISP mkII. Описаны поддерживаемые основные команды, команды ISP и их опции (параметры), форматы команд и ответов на них. Протокол AVRISP mkII во многом совпадает с протоколом STK600 [3] (фактически является подмножеством STK600, но есть и незначительные отличия). Firmware, поддерживающее AVRISP mkII, распространяется вместе с AVR Studio® 4.12 и более поздними версиями. Определения всех команд, ответов, параметров и других заданных величин можно найти в разделе 6.1. Все параметры, относящихся к каждому конкретному устройству (микроконтроллеру AVR), можно найти в XML файлах, такой файл есть для каждого поддерживаемого устройства. XML-файлы описания устройств поставляются в составе AVR Studio. Вы можете загрузить последнюю версию AVR Studio 4 с сайта Atmel. См. раздел 4, где сказано как найти значения параметров для AVRISP mkII. [Что такое AVRISP mkII]
Если коротко, то AVRISP mkII это просто программатор AVR [2] для микроконтроллеров AVR (серий ATtinyXX, ATmegaXX и других) с интерфейсом ISP. Он может также программировать микроконтроллеры устаревшей серии AT89 (популярное некогда семейство 8051, или MSC51). Существует также множество клонов программатора AVRISP mkII, firmware которых создано на основе библиотеки LUFA. Исходный код клона программатора AVRISP mkII свободно доступен, и любой может сделать свой собственный программатор на любой макетной плате с чипом AVR USB (например на макетных платах AVR-USB162, AVR-USB162MU, AVR-USB32U4 и других). ISP означает In-System Programming (программирование в системе). При этом способе программирования микроконтроллер (программируемое устройство) запаян прямо в конечное радиоэлектронное изделие, и подключается к программатору (STK500 или AVRISP) через 4 сигнальных провода MOSI, MISO, SCK, GND (режим последовательного программирования на основе интерфейса SPI). Через эти 4 провода идет обмен данными с программируемым устройством. Также к программатору идут 2 дополнительных провода VCC и ~RST. С помощью сигнала VCC программатор (STK500 или AVRISP) определяет, имеется ли питание на программируемом устройстве, а с помощью сигнала ~RST переводит устройство в режим программирования. Режим программирования ISP также иногда называют последовательным режимом программирования (Serial Program Mode), так как данные в программируемое устройство передаются бит за битом, последовательно. [2 Обмен данными через интерфейс USB] Весь обмен данными между AVRISP mkII и компьютером PC происходит через интерфейс USB. Интерфейс USB задействует 2 конечные точки типа bulk, одна IN (направление от AVRISP mkII к компьютеру) и одна OUT (от компьютера к AVRISP mkII). Дескрипторы USB можно найти в разделе 6.2. 2.1 Формат пакета Компьютер PC (хост) отправляет команды к AVRISP mkII, который в высылает на них ответы. Каждая команда генерирует ответ. Как команды, так и ответы могут быть по размеру больше, чем максимальный размер пакета для конечных точек bulk, так что команда или ответ может быть разделен на несколько пакетов IN/OUT. Короткий пакет показывает конец команды или ответа. Команды и соответствующие им ответы показаны в разделе 3. 2.2 Драйвер USB Чтобы можно было обмениваться данными с AVRISP mkII, должен быть установлен драйвер на компьютере хоста. Драйвер может быть написан с нуля при помощи DDK (driver development kit). В пакете установки AVR Studio 4 имеется готовый драйвер USB, лицензированный от компании Jungo (www.jungo.com). После получения лицензии от Jungo, стороннее программное обеспечение (не AVR Studio) может использовать тот же драйвер, что и AVR Studio. Тогда пользователь может использовать и AVR Studio, и другие инструменты без изменения драйверов. Примечание: обновления firmware для AVRISP mkII может обновляться только с помощь специально предназначенного для этого программного обеспечения, поставляемого вместе с AVR Studio. Это автоматически требует наличия установленного драйвера, предоставленного вместе с AVR Studio. [3 Команды] Этот раздел описывает все команды, которые могут быть введены для AVRISP mkII, и все возможные ответы на них, которые отправляет AVRISP mkII обратно к хосту. Для всех команд AVRISP mkII произведет ответ, где идентификатор ответа (answer ID) будет равен идентификатору команды (command ID). Первый байт в команде всегда command ID, и первый байт в ответе всегда answer ID. 3.1 Основные команды Эти команды не относятся к какому-то конкретному режиму программирования. 3.1.1 CMD_SIGN_ON Эта команда возвращает уникальную строку подписи (сигнатуру) для AVRISP mkII, который имеет эту реализацию протокола. Значение сигнатуры будет "AVRISP_mk2". Таблица 3-1. Формат команды CMD_SIGN_ON.
Таблица 3-2. Формат ответа.
3.1.2 CMD_SET_PARAMETER Хост может установить множество параметров в AVRISP mkII. См. раздел 3.4 Параметры для описания каждого параметра. Все параметры имеют однобайтные значения. Таблица 3-3. Формат команды CMD_SET_PARAMETER.
Таблица 3-4. Формат ответа.
3.1.3 CMD_GET_PARAMETER Хост также может запросить из AVRISP mkII значения различных параметров. Таблица 3-5. Формат команды CMD_GET_PARAMETER.
Таблица 3-6. Формат ответа, если CMD_GET_PARAMETER завершилась успешно.
Таблица 3-7. Формат ответа, если CMD_GET_PARAMETER завершилась с ошибкой.
Единственная причина, которая привела к ошибке - запрос недопустимого параметра. 3.1.4 CMD_OSCCAL Эта команда производит процедуру калибровки, как описано в апноуте AVR053. Таблица 3-8. Формат команды CMD_OSCCAL.
Таблица 3-9. Формат ответа, если команда завершилась.
3.5 CMD_LOAD_ADDRESS Эта команда загружает адрес в AVRISP mkII. Далее поступят команды Program Flash, Read Flash, Program EEPROM или Read EEPROM, которые будут работать с адресом, установленным этой командой. Команда CMD_LOAD_ADDRESS используется для режимов программирования. Все вышеперечисленные команды, которые читают и записывают память, автоматически инкрементируют внутренний счетчик адреса AVRISP mkII, так что команду CMD_LOAD_ADDRESS нужно вызвать только один раз. Таблица 3-12. Формат команды CMD_LOAD_ADDRESS.
Для типов памяти, адресуемых по словам (память программ FLASH), параметр Address является адресом слова. Если в таком адресе установлен бит 31, то это означает, что последующая операция чтения/записи будет выполнена на памяти, размер которой больше 64 килобайт. Это показывает AVRISP mkII, что должна быть выполнена загрузка расширенного адреса (load extended address). См. даташит для устройств, у которых объем памяти больше 64 килобайт. Таблица 3-13. Формат ответа.
3.6 CMD_FIRMWARE_UPGRADE Когда хост пытается подключиться к программатору (AVRISP mkII), то он проверяет версию firmware. Обновление firmware инициализируется, если на компьютере имеется более новая версия. AVRISP mkII может "перегрузиться" в режим обновления (upgrade mode) путем использования этой команды. Таблица 3-12. Формат команды CMD_FIRMWARE_UPGRADE.
Таблица 3-13. Формат ответа.
Если возвращенный статус STATUS_CMD_OK, то AVRISP mkII отключится и войдет в режим обновления. 3.1.7 CMD_RESET_PROTECTION Эта команда сбрасывает систему защиты от короткого замыкания (short circuit protection) после того, как было возвращено состояние короткого замыкания через PARAM_STATUS_TGT_CONN. Таблица 3-14. Формат команды CMD_RESET_PROTECTION.
Таблица 3-15. Формат ответа.
3.2 Команды программирования ISP (ISP Programming Commands) Эти команды поддерживают программирование FLASH, EEPROM, байт фьюзов (fuse bytes), битов защиты (lock bits), сигнатуры, калибровки генератора (oscillator calibration) в режиме ISP. 3.2.1 CMD_ENTER_PROGMODE_ISP Эта команда переводит target device (программируемое устройство, микроконтроллер) в режим программирования. Таблица 3-16. Формат команды CMD_ENTER_PROGMODE_ISP.
Примечания: (1) Параметр pollValue показывает, после какого переданного через SPI байта нужно ожидать ответного байта, так как интерфейс SPI реализован двунаправленно (один байт выходит, и вместе с этим приходит другой байт). Таблица 3-17. Формат ответа.
3.2.2 CMD_LEAVE_PROGMODE_ISP Эта команда выводит AVRISP mkII (и программируемое устройство) из режима программирования. Устройство перейдет в нормальный рабочий режим выполнения программы. Таблица 3-18. Формат команды CMD_LEAVE_PROGMODE_ISP.
Таблица 3-19. Формат ответа.
3.2.3 CMD_CHIP_ERASE_ISP Эта команда выполнит очистку памяти чипа в target device (целевое программируемое устройство, микроконтроллер). Таблица 3-20. Формат команды CMD_CHIP_ERASE_ISP.
Таблица 3-21. Формат ответа.
3.2.4 CMD_PROGRAM_FLASH_ISP Эта команда будет программировать данные в память FLASH на target device, если завершится успешно. XML путь: /AVRPART/ICE_SETTINGS/STK500_2/IspProgramFlash/ Таблица 3-22. Формат команды CMD_PROGRAM_FLASH_ISP.
Описание байта режима (Mode byte) Параметр mode важен, так как он определяет, как эта команда работает. Назначение битов в байте mode показано в таблице 4-8. Таблица 4-8. Биты в байте режима.
Бит Word/Page Mode выбирает - поддерживает устройство программирование страниц, или нет. Байты команды отличаются от режима программирования по словам (word mode) и программирования по страницам (page mode). В случае word mode используются команды ISP Write Program Memory и Read Program Memory. В случае page mode используются команды Load Page, Write Program Memory Page и Read Program Memory. Инструкция read (чтение) используется, если установлено Value Polling соответствующим битом в байте режима. Бит выбора Low/High byte (3-й бит в командах Load Page, Write Program Memory) обрабатывается AVRISP mkII, так что оставьте этот бит очищенным. Значения инструкций набора команд SPI Serial Programming Instruction Set можно найти в даташите на программируемый target. В соответствии с mode выбираются различные методы завершения – Timed delay (задержка по времени), Value polling (опрос значения) или RDY/BSY polling (опрос готовности/занятости). Для операций со страницами, бит Write page указывает, должна ли быть выдана команда Write Program Memory Page после того, как данные загружены в буфер страницы. Для устройств, у которых размер страницы больше, чем AVRISP mkII можно передать в одной команде, должны быть выданы несколько команд CMD_PROGRAM_FLASH_ISP. В этом случае только последняя команда должна иметь установленным бит Write Page. Примечание: в файле XML установлены только биты 0-6, потому что бит 7 не является константой и должен управляться программным обеспечением компьютера (хоста) PC. Когда value polling используется чтобы определить, когда завершилась операция программирования, должен быть предоставлен poll1. Это значение показывает, что будет прочитано из устройства, когда осуществляется опрос при программировании. Это значение показывает, что программирование закончилось. Значение poll2 используется только для программирования EEPROM. Таблица 3-23. Формат ответа.
3.2.5 CMD_READ_FLASH_ISP Если выполнится успешно, то эта команда прочитает данные из памяти FLASH target device. Таблица 3-24. Формат команды CMD_READ_FLASH_ISP.
Таблица 4-11. Формат ответа, если CMD_READ_FLASH_ISP выполнилась.
Таблица 4-12. Формат ответа, если CMD_READ_FLASH_ISP не выполнилась.
3.2.6 CMD_PROGRAM_EEPROM_ISP См. команду CMD_PROGRAM_FLASH_ISP. 3.2.7 CMD_READ_EEPROM_ISP См. команду CMD_READ_FLASH_ISP command. 3.2.8 CMD_PROGRAM_FUSE_ISP Эта команда программирует фьюзы в target device. Таблица 3-27. Формат команды CMD_PROGRAM_FUSE_ISP.
Примечание (1): cmd1, cmd2, cmd3 и cmd4 это 4 байта команды низкого уровня ISP (из набора команд SPI Serial Programming Instruction Set, их можно найти в даташите на программируемое устройство), которая программирует фьюзы. Таблица 3-28. Формат ответа.
3.2.9 CMD_READ_FUSE_ISP Эта команда читает фьюзы в target device. Таблица 3-29. Формат команды CMD_READ_FUSE_ISP.
Примечания: (1) RetAddr показывает, после какого переданного через SPI байта нужно сохранить возвращенный байт, так как интерфейс SPI реализован двунаправленно, как дуплекс (в процессе вывода одного байта одновременно вдвигается на вход другой). Таблица 3-30. Формат ответа.
3.2.10 CMD_PROGRAM_LOCK_ISP См. CMD_PROGRAM_FUSE. Эта команда в основном делает то же, что и команда программирования фьюзов, только в ней должны быть предоставлены низкоуровневые команды ISP для программирования байта защиты. 3.2.11 CMD_READ_LOCK_ISP См. CMD_READ_FUSE. Эта команда в основном делает то же, что и команда чтения фьюзов, только в ней должны быть предоставлены низкоуровневые команды ISP для чтения байта защиты. 3.2.12 CMD_READ_SIGNATURE_ISP См. CMD_READ_FUSE. Эта команда в основном делает то же, что и команда чтения фьюзов, только в ней должны быть предоставлены низкоуровневые команды ISP для чтения одного из байт сигнатуры. 3.2.13 CMD_READ_OSCCAL_ISP См. CMD_READ_FUSE. Эта команда в основном делает то же, что и команда чтения фьюзов, только в ней должны быть предоставлены низкоуровневые команды ISP для чтения байта OSCCAL. 3.2.14 CMD_SPI_MULTI Эта обычная команда может использоваться для выполнения любых команд ISP. Команда записывает указанное количество байт в шину SPI, и при этом также возвращает указанное количество байт. Таблица 3-31. Формат команды CMD_SPI_MULTI.
Если количество байт, которое нужно принять, оказалось больше, чем количество передаваемых байт, то firmware дополнит передачу необходимым количеством нулевых (0x00) байт. Это сделано для уменьшения затрат времени на передачу от PC к программатору AVRISP mkII. Таблица 3-32. Формат ответа.
3.3 Возвращаемые значения (Return Values) В этой секции описаны все возможные возвращаемые значения, и что именно они означают. 3.3.1 STATUS_CMD_OK успешное завершение (Success), команда выполнилась успешно. 3.3.2 Предупреждения (Warnings) Все предупреждения имеют MSB установленным в 1 и MSB-1 сброшенным в 0. Таблица 3-34. Значения возврата, коды предупреждений.
3.3.3 Ошибки (Errors) Все ошибки имеют установленными в 1 и MSB, и MSB-1. Таблица 10-3. Значения возврата, коды ошибок.
3.4 Параметры Следующие параметры могут быть прочитаны и/или записаны командами CMD_GET_PARAM и CMD_SET_PARAM (поле R/W означает тип доступа R на чтение, W на запись, RW и на чтение и на запись): Таблица 3-36. Однобайтные параметры.
3.4.1 PARAM_BUILD_NUMBER_LOW PARAM_BUILD_NUMBER_LOW и 3.4.1 PARAM_BUILD_NUMBER_HIGH вместе возвращают число, которое инкрементируется с каждой сборкой (build) firmware управляющего микроконтроллера (MCU) AVRISP mkII. Это число главным образом предназначено для внутреннего использования компанией Atmel. 3.4.2 PARAM_BUILD_NUMBER_HIGH См. PARAM_BUILD_NUMBER_LOW. 3.4.3 PARAM_HW_VER Возвращает номер ревизии аппаратуры. 3.4.4 PARAM_SW_MAJOR PARAM_SW_MAJOR и PARAM_SW_MINOR возвращают версию firmware. 3.4.5 PARAM_SW_MINOR См. PARAM_SW_MAJOR. 3.4.6 PARAM_VTARGET Параметр напряжения питания цели (target voltage) указывается в вольтах x10. Например, значение параметра 42 (десятичное) соответствует 4.2V. 3.4.7 PARAM_SCK_DURATION Когда используется интерфейс программирования ISP, то тактовая частота ISP должна быть такой, чтобы она не превышала максимальную частоту, которую может поддерживать программируемое устройство. Примечание: максимальная тактовая частота ISP зависит от частоты тактов устройства (device system clock), коэффициента деления внутреннего прескалера и т. д.. AVRISP mkII поддерживает частоты ISP от 51 Гц до 8.0 МГц. Значение параметра PARAM_SCK_DURATION можно найти по алгоритму, который показан в разделе 6.3. 3.4.8 PARAM_RESET_POLARITY AVRISP mkII может программировать как семейство микроконтроллеров AT90 (AVR), так и семейство AT89 (8051). Они имеют разную полярность (активный уровень) вывода сброса RESET. Для AVR активный уровень сброса лог. 0, а для AT89 лог. 1. Этот параметр устанавливает полярность сигнала сброса. Установите параметр в 1, когда программируете AVR, и в 0, когда программируете AT89. Примечание: AVRISP mkII сохраняет этот параметр в EEPROM, так что при следующем выключении питания и новом включении заданная в последний раз установка будет снова применена к программатору. 3.4.9 PARAM_STATUS_TGT_CONN Этот параметр возвращает текущий статус соединения с target. Каждый бит в параметре означает отдельный флаг состояния. См. таблицу ниже:
Установленный в лог. 1 бит означает ошибку - короткое замыкание сигнала, target не обнаружен, установлен в сокет в обратной полярности. Если возвращенное значение параметра 0x00, то это значит, что все в порядке. Если любой бит *_CONN_FAIL_* установлен в единицу, то нужно выдать команду CMD_RESET_PROTECTION. Параметр должен быть проверен перед началом последовательности программирования, чтобы убедиться в корректном подключении target. Также параметр должен быт проверен после процедуры программирования, потому что программирование могло завершиться с ошибкой из-за короткого замыкания. Короткое замыкание может быть определено только после того, как выдана команда входа в режим программирования (Enter Progmode), потому что управляющие схемы AVRISP mkII изолированы, когда AVRISP mkII находится в режиме ожидания. 3.4.10 PARAM_DISCHARGEDELAY Имя параметра переводится как "параметр задержки для разряда". Этот параметр устанавливает период времени, в течение которого сигнал сброса имеет высокое сопротивление каждый раз, когда он должен быть переключен. Назначение параметра - уменьшить ток, который происходит из-за разряда/заряда конденсатора, который иногда подключен к сигналу сброса (reset pin). Когда сброс переключается, то подключается резистор номиналом 510 Ом, который ограничивает пиковый ток до значения, допустимого для внутренних компонентов AVRISP mkII. Задержка должна быть установлена в значение t > 510 Ом * C. Если конденсатор не подключен, то этот параметр может быть установлен в 0. [4 Значения параметров в файлах XML] Firmware программатора AVRISP mkII использует параметры для выбора алгоритмов программирования устройств (микроконтроллеров). Набор параметров является специфичным для определенного устройства AVR, так что наборы установок параметров находятся в файле описания устройства, который имеет формат XML (XML part description file). Здесь описывается, где можно найти значения параметров AVRISP mkII в файле XML, специфичном для конкретного устройства. После того, как Вы установили AVR Studio 4, все файлы XML можно найти в папке "%ProgramFiles%\Atmel\AVR Tools\PartDescriptionFiles\. Прим. переводчика: для Atmel Studio 6.0 файлы XML расположены во многих папках. Файлы описания устройств, относящиеся к AVRISP mkII, находятся в папке c:\Program Files\Atmel\Atmel Studio 6.0\tools\AVRISPmkII\xml\. В других папках под папкой tools находятся XML-файлы для другого инструментария (AVRDragon, AVRISPmkII, JTAGICEmkII, STK500 и т. п.). Рис. 6-1. Пример файла XML: ATmega2561.xml. Откройте файл XML специальной программой редактирования/просмотра (xml editor/viewer, например XML Notepad или Internet Explorer). Все специфичные параметров устройства для STK500 и AVRISP размещены в узле STK500_2. Параметры команды CMD_ENTER_PROGMODE_ISP ищите в /AVRPART/ICE_SETTINGS_STK500_2/IspEnterProgMode. [5 Пример последовательности команд] Этот раздел содержит примеры - как подключиться к AVRISP mkII со стороны компьютера (PC Frontend), и как прочитать сигнатуру из устройства. См. раздел 3 Команды для описания команд и параметров. 7.1 Подключение (Connect) Последовательность команд и параметров, отправляемая из AvrStudio в AVRISP mkII для подключения перечислена ниже. • CMD_SIGN_ON 7.2 Чтение сигнатуры (Read Signature) Ниже приведена последовательность команд и параметров, отправляемая от AvrStudio к AVRISP mkII, чтобы прочитать сигнатуру устройства через ISP. Обратите внимание, что для выполнения этого нужно подключить к AVRISP mkII программируемое устройство (target device). • CMD_SET_PARAMETER, PARAM_RESET_POLARITY [6 Приложение] 6.1 Команды и параметры // *** [ Константы основных команд ] *** #define CMD_SIGN_ON 0x01 #define CMD_SET_PARAMETER 0x02 #define CMD_GET_PARAMETER 0x03 #define CMD_OSCCAL 0x05 #define CMD_LOAD_ADDRESS 0x06 #define CMD_FIRMWARE_UPGRADE 0x07 #define CMD_RESET_PROTECTION 0x0A // *** [ Константы команд ISP ] *** #define CMD_ENTER_PROGMODE_ISP 0x10 #define CMD_LEAVE_PROGMODE_ISP 0x11 #define CMD_CHIP_ERASE_ISP 0x12 #define CMD_PROGRAM_FLASH_ISP 0x13 #define CMD_READ_FLASH_ISP 0x14 #define CMD_PROGRAM_EEPROM_ISP 0x15 #define CMD_READ_EEPROM_ISP 0x16 #define CMD_PROGRAM_FUSE_ISP 0x17 #define CMD_READ_FUSE_ISP 0x18 #define CMD_PROGRAM_LOCK_ISP 0x19 #define CMD_READ_LOCK_ISP 0x1A #define CMD_READ_SIGNATURE_ISP 0x1B #define CMD_READ_OSCCAL_ISP 0x1C #define CMD_SPI_MULTI 0x1D // *** [ Константы состояния ] *** // Успех #define STATUS_CMD_OK 0x00 // Предупреждения (Warnings) #define STATUS_CMD_TOUT 0x80 #define STATUS_RDY_BSY_TOUT 0x81 #define STATUS_SET_PARAM_MISSING 0x82 // Ошибки (Errors) #define STATUS_CMD_FAILED 0xC0 #define STATUS_CMD_UNKNOWN 0xC9 // *** [ Константы параметров ] *** #define PARAM_BUILD_NUMBER_LOW 0x80 #define PARAM_BUILD_NUMBER_HIGH 0x81 #define PARAM_HW_VER 0x90 #define PARAM_SW_MAJOR 0x91 #define PARAM_SW_MINOR 0x92 #define PARAM_VTARGET 0x94 #define PARAM_SCK_DURATION 0x98 #define PARAM_RESET_POLARITY 0x9E #define PARAM_STATUS_TGT_CONN 0xA1 #define PARAM_DISCHARGEDELAY 0xA4 // Статус #define STATUS_ISP_READY 0x00 #define STATUS_CONN_FAIL_MOSI 0x01 #define STATUS_CONN_FAIL_RST 0x02 #define STATUS_CONN_FAIL_SCK 0x04 #define STATUS_TGT_NOT_DETECTED 0x10 #define STATUS_TGT_REVERSE_INSERTED 0x20 6.2 Дескрипторы USB (USB Descriptors) Таблица 6-1. Дескриптор устройства (Device descriptor)
Таблица 6-2. Дескриптор конфигурации (Configuration descriptor)
Таблица 6-3. Дескриптор интерфейса (Interface descriptor)
Таблица 6-4. Дескриптор конечной точки (Endpoint descriptor) IN
Таблица 6-5. Дескриптор конечной точки (Endpoint descriptor) OUT
6.3 Вычисление тактовой частоты SCK для интерфейса ISP AVRISP mkII поддерживает ряд частот SCK, показанных ниже в массиве avrispmkIIfreqs. Используйте алгоритм CalcSckDur(), чтобы найти значение параметра PARAM_SCK_DURATION по требуемой частоте SCK. // Частоты SCK интерфейса ISP, поддерживаемые // AVRISP mkII при программировании. double avrispmkIIfreqs[] = { 8000000, 4000000, 2000000, 1000000, 500000, 250000, 125000, 96386, 89888, 84211, 79208, 74767, 70797, 67227, 64000, 61069, 58395, 55945, 51613, 49690, 47905, 46243, 43244, 41885, 39409, 38278, 36200, 34335, 32654, 31129, 29740, 28470, 27304, 25724, 24768, 23461, 22285, 21221, 20254, 19371, 18562, 17583, 16914, 16097, 15356, 14520, 13914, 13224, 12599, 12031, 11511, 10944, 10431, 9963, 9468, 9081, 8612, 8239, 7851, 7498, 7137, 6809, 6478, 6178, 5879, 5607, 5359, 5093, 4870, 4633, 4418, 4209, 4019, 3823, 3645, 3474, 3310, 3161, 3011, 2869, 2734, 2611, 2484, 2369, 2257, 2152, 2052, 1956, 1866, 1779, 1695, 1615, 1539, 1468, 1398, 1333, 1271, 1212, 1155, 1101, 1049, 1000, 953, 909, 866, 826, 787, 750, 715, 682, 650, 619, 590, 563, 536, 511, 487, 465, 443, 422, 402, 384, 366, 349, 332, 317, 302, 288, 274, 261, 249, 238, 226, 216, 206, 196, 187, 178, 170, 162, 154, 147, 140, 134, 128, 122, 116, 111, 105, 100, 95.4, 90.9, 86.6, 82.6, 78.7, 75.0, 71.5, 68.2, 65.0, 61.9, 59.0, 56.3, 53.6, 51.1 }; UCHAR CalcSckDur(long sckFrequency) { UCHAR paramSckDuration; // По умолчанию самое маленькое значение. paramSckDuration = (UCHAR)sizeof(avrispmkIIfreqs)-1; // Найти первую частоту, которая меньше запрашиваемой. for (int i = 0; i < sizeof(avrispmkIIfreqs); i++) { if (avrispmkIIfreqs[i] <= sckFrequency) { paramSckDuration = i; break; } } return paramSckDuration; } [Ссылки] 1. AVR069: AVRISP mkII Communication Protocol site:atmel.com. |