Как чип ATmega32U4 распознается через USB?

У меня есть чип ATmega32U4, который можно подключить к печатной плате и подключить к ПК через USB. Когда это будет сделано, Windows 10 (если установлены соответствующие драйверы) распознает устройство как чип ATmega32U4.

Что отвечает в микросхеме за реакцию на разъем USB? Как это работает?

  • Это тоже так называемый загрузчик, который хранится во флэш-памяти?
  • Это программное обеспечение, поставляемое Atmel, хранится во флэш-памяти? Потому что тогда что произойдет, когда я перепишу флэш-память? Будет ли он больше не распознаваться Windows?

Ответы (2)

На микроконтроллере, таком как ATmeaga32u4, эти контакты USB подключены к небольшому количеству специального оборудования для обработки сигналов USB. Но это оборудование в значительной степени просто выполняет электронику, оно не контролирует, какие данные отправляются или принимаются. И данные должны быть отправлены и получены для идентификации устройства и перечисления. Если на чипе нет программного обеспечения, данные не отправляются, и чип вообще не будет пересчитывать. Windows, вероятно, сообщит, что «одно из USB-устройств, подключенных к этому компьютеру, неисправно», но может вообще его не обнаружить.

Но чипы обычно идут с завода с загрузчиком DFU на них (хотя есть и полностью пустые и по-разному запрограммированные чипы). Загрузчик DFU идентифицирует себя как устройство класса DFU, а также предоставляет ПК идентификатор поставщика (VID) и идентификатор продукта (PID). Затем ПК просматривает список драйверов, чтобы найти тот, который утверждает, что поддерживает этот VID и PID. Предположительно вы установили Atmel Flip, который включает в себя драйвер, и драйвер знает, что этот VID/PID означает ATmega32u4 с загрузчиком DFU. Таким образом, Windows загружает этот драйвер, и драйвер сообщает Windows, что это ATmega32u4.

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

Но пока ваше приложение работает, загрузчика нет. Таким образом, загрузчик не может выполнить перечисление, не может передать VID/PID компьютеру и т. д. Вместо этого все это придется делать вашему приложению. И это сложно. Но хорошая новость заключается в том, что есть библиотеки, которые делают большую часть работы за вас. Самый распространенный называется LUFA . Вам также нужно будет купить/выбрать свой собственный VID/PID и написать драйвер для вашего устройства.

Спасибо за дополнительную информацию! Итак, когда я записывал свой собственный скомпилированный файл .HEX во флэш-память ATmega32u4, я обычно не удалял заводской загрузчик по умолчанию? Как я мог (повторно) активировать загрузчик, чтобы Windows снова обнаружила чип (и, таким образом, я мог снова прошить на него другую программу)?
Когда вы программируете чип с помощью программатора, обычно есть возможность «сначала стереть». Если этот флажок установлен, загрузчик стирается, если нет, то нет. Если вы программируете загрузчик, он не удалит себя. Если загрузчик все еще существует, вы можете запустить его, 1) установив предохранитель BOOTRST, 2) прижав контакт HWB к земле во время сброса (требуется предохранитель HWBEN) или 3) инструкцию JMP в вашем приложении. См. atmel.com/Images/doc7618.pdf
@ДжекБ. Загрузчик DFU не стирается, если вы сначала стираете его перед программированием через DFU. Загрузчик находится в защищенном наборе страниц, и вы должны использовать ICSP для сброса защитных предохранителей. Обновлена ​​документация DFU, см. здесь: atmel.com/Images/doc7745.pdf

Итак, для микроконтроллеров вы должны написать прошивку, которая обрабатывает USB, и это включает реакцию на пакеты от хоста, которые запрашивают такие вещи, как идентификатор поставщика и продукта.

Итак, на вашем микроконтроллере работает программное обеспечение, которое взаимодействует с вашим ПК в соответствии со стандартом USB.

Скорее всего, да, это прошивка загрузчика, предварительно прошитая Atmel — причина в том, что вы просто можете собрать устройство, а затем быстро запрограммировать его. Очень удобно для производства!

Находится ли этот загрузчик в памяти, доступной для записи пользователем, и при каких обстоятельствах он запускается при запуске, очень многое зависит. В паспорте вашего устройства и руководствах пользователя будет подробная информация об этом. Найдите загрузчик, USB и, возможно, «DFU», профиль USB для загрузки прошивки.