Daily MaverickJoburg crisis cannot be solved without competent City leadershipESPNPremier League depth charts for most popular teams: Who is key?The Jerusalem PostWho will teach the next generation?PunchNigeria@66: 2027 election will test our democratic maturity – JonathanBollywood HungamaDisha Patani completes a decade in Bollywood as MS Dhoni: The Untold Story turns 10: “Beyond grateful ”Il Fatto Quotidiano“Il lusso? Se c’è non me lo nego ma non lo cerco. Non ho lo yatch di 40 metri o la Lamborghini. Il mio aspetto? C’è il fascino sottile della decomposizione delle carni”: Paolo Bonolis si raccontaسكاي نيوز عربيةاستطلاع يفجر مفاجأة بشأن رونالدو.. ماذا يريد مشجعو البرتغال؟RTBF InfoDes feux et dégradations lors d'un mouvement spontané d'élèves devant plusieurs écoles de LiègeBBC News BrasilGoogle remove mais de 40 canais com falsos médicos de IA após reportagens da BBC News BrasilEgypt IndependentEgypt thwarts Israel’s plans to build Suez Canal alternative: Deputy Prime MinisterColliderAlmost 30 Years Ago, 'Buffy the Vampire Slayer' Did 'Obsession' in This Action-Packed EpisodeRMF24Korea prostuje słowa Trumpa o inwestycjach za miliardy
The Daily Newsstand · Free, Always
Thursday, October 1, 2026

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

Translate

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

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

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

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

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

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

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

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

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

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

Приобретение в розницу пары плат 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 интерфейс связи с отладчиком по умолчанию отключен:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вот так мы, не написав руками ни единой строчки кода, получили готовый виртуальный 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 ООО «МТ ФИНАНС»

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

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.