Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Составное устройство USB на AT32. Часть 1: Подготовка

Дата публикации: 01-10-2026 09:01:35

История эта началась два года назад, когда подписчики моего канала начали регулярно и настойчиво интересоваться, когда же в «Селените появится режим автономной обработки сигналов». Базовый блок трансивера получился достаточно компактным, 100х62х23 без выступающих частей, и желание пользователей «отвязать» его от компьютера, где как раз и производилась обработка сигнала, было вполне резонным. Читать далее

Основное содержимое страницы с новостью.

Уровень сложностиСредний

Время на прочтение7 мин

Охват и читатели6.2K

Кейс

История эта началась два года назад, когда подписчики моего канала начали регулярно и настойчиво интересоваться, когда же в «Селените появится режим автономной обработки сигналов». Базовый блок трансивера получился достаточно компактным, 100×62×23 без выступающих частей, и желание пользователей «отвязать» его от компьютера, где как раз и производилась обработка сигнала, было вполне резонным.

В течение пары месяцев приём однополосного радиосигнала силами использованного в Селените микроконтроллера (MCU) STM32F411CEU6 реализовать удалось, но вычислительных мощностей этого микроконтроллера в таком режиме работы уже мало на что хватало.

Лежащий в основе конструкции радиостанции микроконтроллер STM32F411CEU6 требовалось заменить на что‑то более мощное, но так, чтобы переделки аппаратной части трансивера были минимальны, а функциональность в виде композитного устройства USB, состоящего из виртуального COM‑порта и дуплексной двухканальной звуковой карты с частотой дискретизации 96 кГц и разрядностью 16 бит, была дополнена функциональностью цифрового сигнального процессора (DSP) для автономной обработки сигнала и вывода его спектра на дисплей трансивера.

d7b7fd977abd6f5c0fb8d3c3a2c2f9c7.jpg

Замена микроконтроллера STM32F411CEU6 в корпусе QFN48 на более производительный MCU из линейки STM32 без радикальной переделки платы была невозможна, ибо в корпусах QFP48 и QFN48 такие микроконтроллеры этой компанией не выпускаются.

После долгих мучительных раздумий, и по совету коллеги @x893, мой выбор на замену пал на почти совместимые по выводам с STM32F411Cx микроконтроллеры AT32F435Cx производства Artery Technology.

Ещё одним важным для меня аргументом в выборе линейки AT32F4xx было наличие похожей на STM32CubeIDE среды разработки, а также похожего на STM32CubeMX конфигуратора. Разработчик программного обеспечения для микроконтроллеров я не настоящий, и смена платформы разработки для меня достаточно болезненна.

Собираем аппаратную часть

По документации микроконтроллеры AT32F4xx выглядели достаточно привлекательно, и с ними хотелось повозиться, чтобы разобраться с этим на практике.

«Родной» для AT32 внутрисхемный программатор‑отладчик AT‑LINK без особых проблем нашёлся в известном всем китайском интернет‑магазине за достаточно скромные деньги. Цены же на отладочные платы даже там скромными не были.

53418cbbef92b47b47738dc535ba3d4f.jpg

Решение проблемы с отладочными платами подсказал мне, опять же, @x893. Решение было простым и надёжным: «сдуть» с платки Blue Pill «родные» микроконтроллеры, и на их место запаять микроконтроллеры AT32 в корпусе QFP-48. В случае установки AT32F435CMT7 на Blue Pill теряем два GPIO (PH2 и PH3), расположенных на выводах 23 и 35, подключенных на плате к «земле». В случае же установки AT32F403ACGT7 ни одной «ножки» не теряем, поскольку его назначение выводов идентично STM32F103CBT6 полностью.

b94d7332ce0d57acc40fae33e7dfc52b.jpg

Приобретение в розницу пары плат Blue Pill, а также микроконтроллеров AT32F435CMT7 и AT32F403ACGT7 проблемой не является, как и распайка вручную микросхем в корпусе QFP-48 с шагом выводов 0.5 мм.

Микроконтроллер AT32F403ACGT7 был приобретён «за компанию» с целью посмотреть возможности этого достаточно распространённого бюджетного чипа. Он же и будет героем последующего повествования, ибо доступен, недорог и обладает неплохим соотношением «цена/производительность».

Устанавливаем программную часть

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

Формирование среды разработки программного обеспечения для микроконтроллеров AT32 началось с установки AT32 IDE v1.0.14 для ОС Windows.

Во время установки AT32 IDE все параметры были выбраны по умолчанию, и каких‑то вопросов не возникло.

Далее путём разархивации был установлен конфигуратор AT32 Work Bench v1.2.04 для Windows, а затем был скачан пакет драйверов для MCU AT32F403A.

Архив с пакетом драйверов содержит папку с примерами, которые значительно облегчили мне понимание того, что и как с этим микроконтроллером нужно делать.

Прямые ссылки для получения вышеуказанного программного обеспечения:

https://arterytek.com/download/AT32%20IDE/AT32_IDE_V1.0.14_Windows.zip

https://arterytek.com/download/AT32%20Workbench/AT32_Work_Bench_Win‑x86_64_V1.2.04.zip

https://arterytek.com/download/BSP/AT32F403A_407_Firmware_Library_V2.2.2.zip

Создаём проект в конфигураторе

Опыт разработки составного устройства USB у меня уже был, поэтому я решил пойти уже проторенным ранее путём и начал процесс разработки составного устройства USB с генерации проекта виртуального COM‑порта (USB Communication Device Class, USB CDC) средствами конфигуратора AT32 Work Bench.

После выбора типа микроконтроллера я, уже наученный горьким опытом «окирпичивания» микроконтроллеров STM32, работу с проектом начал с конфигурирования подключения внутрисхемного программатора‑отладчика, ибо в STM32CubeMX интерфейс связи с отладчиком по умолчанию отключен:

903e4c7d4ee25ac520b1e3212c7a127d.jpg

И тут, нужно отдать должное разработчикам Artery Technology, интерфейс связи с JTAG по пяти проводам подключен по умолчанию. Для программирования и отладки далее по тексту будет использоваться исключительно AT‑LINK, поэтому заменяем «JTAG (5pin)» на «SWD».

Далее настраиваем тактирование микроконтроллера. На плате есть два кварцевых резонатора: частотой 8 МГц и частотой 32 678 Гц. Первый подключен к цепям HEXT, другой — к LEXT. Отражаем это в конфигурации:

fe1434761dec07a8cdbffc359c970877.jpg

Затем включаем на микроконтроллере интерфейс USB. Сигнал SOF (Start Of Frame) вовне не выводим:

e40004fa0f4a2fefe8c7801fbd247b16.jpg

Проверяем схему тактирования. Убеждаемся, что частота резонатора, подключенного к цепям HEXT, равна 8 МГц, а интерфейс USB тактируется, как и рекомендовано производителем, от HICK, внутреннего генератора 48 МГц с автоподстройкой:

62762c5c406bddaacbecabc824455d66.jpg

Рекомендация тактировать USB от HICK связана, в том числе, и с тем, что в составе микроконтроллера нет отдельной PLL для интерфейсов I2S, поэтому сформировать из одного источника сигналы тактирования и интерфейса I2S, и интерфейса USB в этом случае достаточно проблематично.

Теперь мы готовы к тому, чтобы зайти в раздел «Middleware» и выбрать в качестве устройства USB виртуальный COM‑порт:

9b3967a17d2e45fffc6cb17a73863ab8.jpg

Здесь нужно обратить внимание на опцию «Endpoint FIFO Auto Malloc». Из‑за отсутствия подобной функциональности в STM32CubeMX мне пришлось потратить очень много времени, но так и не удалось разобраться с организацией буфера USB в микроконтроллерах STM32F103, в результате чего я чуть не забросил проект «Селенит» на самых ранних стадиях.

Теперь, когда конфигурация сформирована, можно переходить к генерации кода проекта. Прописываем путь для сохранения проекта прямо в рабочее пространство (workspace) AT32 IDE. В качестве целевой IDE выбираем «родную» AT32 IDE. Генерировать для каждого интерфейса микроконтроллера отдельную пару файлов «*.c» и «*.h» я нужным не считаю (галочку отжал). И теперь остаётся только подключить к генератору кода пакет драйверов для MCU AT32F403A:

16067d0094bbbba8a59abf34a02b8e40.jpg

Архив с пакетом драйверов мы уже скачали с сайта производителя, поэтому в запущенной программе управления пакетами выбираем загрузку из локального источника, подставляем скачанный ранее файл архива и убеждаемся, что он установился успешно:

a56554bc86e05b6f1354a98b3b8be718.jpg

По завершении процесса генерации кода AT32 Work Bench предлагает открыть проект в IDE. Мне это представляется очень удобным, так как избавляет от необходимости «колдовать» с настройками импорта проекта.

f6e4be1331a788b4b4e392dd29db2502.jpgКомпилируем проект и настраиваем конфигурацию запуска и отладки

Сформированный проект в AT32 IDE открылся и откомпилировался без особых проблем. Интерфейс во многом сходен со ставшей мне привычной STM32CubeIDE, но есть нюансы…

Наибольшее количество времени у меня ушло, чтобы разобраться, как же связать AT‑LINK с AT32 IDE. Интуиция оказалась бессильна, выручила документация:

deff539612e3e52c593cbec98ee65bd5.jpg

Мастер настройки конфигурации запуска и отладки (Launch Configuration) здесь запускается не из контекстного меню проекта как в STM32CubeIDE. И, кстати, AT32 IDE поддерживает «из коробки» работу с внутрисхемным программатором‑отладчиком SEGGER J‑Link:

1ef9841eee58827c2935cc43b9ebc6d3.jpg

Итак, отмечаем наш проект в списке, назначаем ему конфигурацию «Run», стартуем кнопкой «Launch…». Контролируем результаты компиляции:

dd1e02827b7634f8b5532ae09b1b2467.jpg

Контролируем процесс загрузки прошивки в микроконтроллер. По окончании процесса загрузки жмём кнопку «Terminate»:

8906524def3e2cf843548c9a2b67cdd7.jpg

Включаем нашу самодельную отладочную плату в разъём USB компьютера. Контролируем появление нового COM‑порта. Подключаемся к этому порту программой терминала. Наблюдаем в окне программы терминала «эхо»:

f09f0733341f4ad20ac039627b7380ef.jpgКраткие выводы и дальнейшие действия

Вот так мы, не написав руками ни единой строчки кода, получили готовый виртуальный COM‑порт USB на базе микроконтроллера AT32F403ACGT7 производства компании Artery Technology. 

В следующей части эпоса мы вооружимся документацией по классам устройств USB и проведём анализ того, что было сгенерировано конфигуратором AT32 Work Bench, и как это можно приспособить к разработке составного устройства.

Данный цикл публикаций состоит из четырёх частей:

Составное устройство USB на AT32. Часть 1: Подготовка <--- Вы тут

Составное устройство USB на AT32. Часть 2: ВиртуальныйCOM-порт и его доработки

Составное устройство USB на AT32. Часть 3: Звуковое устройство и его доработки

Составное устройство USB на AT32. Часть 4: Составное устройство Audio + CDC

© 2026 ООО «МТ ФИНАНС»

Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Hello World для STM3209.5829-09-2026
2C++29 — начало. Встреча ISO C++ в Брно07.9917-08-2026
3Запускаем Cyrix MediaGX: на что действительно был способен первый APU из 199704.6626-09-2026
4[Перевод] Как я запустил Bad Apple с частотой 20 fps на E‑Ink дисплее за $71011.9227-09-2026
5The FPGA Chronicles: Exploring the Tang Nano 20K037.1628-09-2026
6Запускаем Cyrix MediaGX: на что действительно был способен первый APU из 199706.2226-09-2026
7Вышел журнал «СВЧ электроника» №3/2026013.4509-09-2026
8Забытые технологии недалекого прошлого. Почему стандартизация уничтожила эти амбициозные проекты09.5127-09-2026
9Двухпанельный файловый менеджер на Delphi. Из NDN с любовью…06.9627-09-2026

Классификация: Наука. Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 11.38. Источник: habr.com.