Введение

В этой статье я хочу поделиться своим опытом знакомства с микроконтроллерами компании Artery Technology, которые представляют собой одну из альтернатив STM. Рассмотрим, какие модели микроконтроллеров и макетных плат доступны для покупки, скачаем ПО и библиотеки от производителя и сравним их с привычным STM32. Цель статьи — на примере своего опыта показать, что из себя представляют микроконтроллеры Artery, какие у них есть приятные и сомнительные стороны, и что нового они могут предложить. Надеюсь, этот материал станет полезным ориентиром в выборе компонентов для ваших разработок.

Для начала покажу свои макетки и программаторы, с которыми я поработал: 

Опробованные отладки и программаторы
Опробованные отладки и программаторы

Маленькая отладка (AT32F403ACGU7) и маленькие программаторы (CMSIS-DAP и DAPLink\ST-Link) я купил у компании WeAct на алиэкспрессе за весьма скромные деньги. На мой взгляд, это отличный набор, чтобы опробовать контроллер, но есть нюанс - данные программаторы не поддерживаются родной средой разработк (AT32IDE). Отладка не представляет из себя ничего особенного, практически клон black pill от этого производителя.

Black pill и ее аналог на AT32
Black pill и ее аналог на AT32

Большая белая плата уже поинтереснее - это AT-START-F407. По виду сразу понятно, что разработчики вдохновлялись платами Nucleo - отламывающийся программатор (AT-Link), ардуино совместимые пины, общее оформление. Но элементов поиграться на плате очень мало - многоцветный светодиод, USB да микросхема памяти - не густо для платы, которая на момент покупки стоила 3к, а сейчас стоит много больше…Не круто.

Самостоятельный программатор AT-Link ничего интересного не представляет.

Наличие и характеристики

Оригинальные платы как-то очень дорого стоят в отечественных магазинах, на али отсутствуют в принципе. В наших магазинах присутствует в основном контроллеры серии F4 (Cortex-M4). По разнообразию в несколько раз меньше, чем STM32 или GD32. Характеристики этой линейки от Artery похожи на аналогичную от STM, разве что частота работы повыше - 240 МГц против 180\168 МГц. Преимуществом тут является конечно цена контроллера - от Artery они дешевле двух вышеупомянутых конкурентов.

Распиновка контроллера

Разница в распиновках контроллеров STM и Artery не такая уж и большая. На серии F4 отличие состоит в том, что STM32F4 содержит выводы Vcap (у AT32 эти выводы либо не используются, либо это обычный пин), что позволяет разрабатывать практически идентичные платы под два разных чипа. 

Найди 5 отличий
Найди 5 отличий

Еще у Artery есть интересные документ: “Migration Guide” и “Cross-references between AT32 MCU and Sxx32”, которые помогут подобрать аналог для STM32(F1-F4) и GD32. НО в России выбор контроллеров ограничен, поэтому для себя я искал аналог в начале по одинаковому корпусу, а после проверял, собирается ли в в местном CubeMX нужная мне периферия на положенные места или нет. Важно уточнить, что я не проверял совместимость прям по всей-всей периферии, поэтому будьте внимательны, если займетесь этим.

Описание библиотек производителя

Производитель поставляет свои библиотеки для работы с его контроллерами, но сравнить его с HAL stm32 нельзя. HAL от ST хоть и часто ругают, но он позволяет сократить время разработки проекта за счет того, что многие вещи в нем уже реализованы и их удобно использовать. Аналогичный продукт от artery сильно проще и местами представляет из себя совсем уж минимальный функционал. Сравним функции отправки данных на HAL STM32 и AT32:

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)

- позволяет отправить по любому UART массив данных. У AT32 же:

void usart_data_transmit(usart_type* usart_x, uint16_t data) 

- позволяет отправить всего лишь один байт. Внутри функции буквально одна строчка, где значение, которая принимается, перекладывается в Data register (USART_DT). И usart_data_transmit не позволяет отправлять сразу весь массив. И такого тут довольно много, проще уж самому написать полноценную функцию или обратиться на прямую к регистру, чем использовать местный полуфабрикат. Единственное, что я взял из кода производителя, это инициализация SWD и тактирования, и то только потому, что лень было переписывать. 

Отличия в регистрах

При открытие Reference Manual для AT32F403 в глаза бросается то, что многие элементы отличаются от аналогичныху STM на одну-две буквы в названии: TIM превратился в TMR, PWR а PWC и т.д. Увы, регистры не идут один в один, как у STM32, местами есть отличия (например ремап организован по другому: у STM32 у каждого вывода прописывается, какой именно альтернативной функцией он будет, а у AT32 есть отдельный блок регистров для переноса). Так что просто установить код с одного контроллера на другой не получится.

Документация и материал в интернете

В плане документации ST конечно впереди. Документация по Artery есть, но ее мало. Примеры тоже есть, их много, но они написаны под свою библиотеку, что не очень информативно, если пишешь на регистрах. По AT32 в интернетах я видел небольшую серию статей на хабре и еще пару статей и видео. Из полезного это репозиторий WeAct, у которых я купил макетку, содержащий примеры. Основным источником информации для меня были, как ни странно, проекты и статьи для STM32, которые я переводил на регистры AT32, и примеры из их кодогенератора. 

Софт от производителя

Перейдем к самой интересной части - софт от производителя. Китайские разработчики сделал свои версии основных программ для STM - клоны CubeIDE, CubeMX и CubeProgrammer. Самая интересная программа это WorkBench, позволяющий создавать начальный проект, в котором уже будет настроена вся периферия. Он выглядит менее привлекательно, чем CubeMX, но при этом имеет некоторые преимущества, например он рассчитывает частоту таймера, когда выставляешь предделитель и период (при настройке CAN аналогично).

Партия одобряет
Партия одобряет

Данная программа умеет генерировать проекты для Keil, AT32IDE, Eclipse_gcc и IAR. Проверял только первые два и все работало хорошо. Чаще всего данную программу я использовал чтобы получить пример, в котором можно посмотреть, как инициализируется та или иная периферия, нежели чем создавал рабочие проекты.

Вторая полезная программа - ICP Programmer. Позволяет прошить контроллер или считать с него уже залитую прошивку.

Увы, поддерживает только AT-Link и Jlink
Увы, поддерживает только AT-Link и Jlink

Эта программа также позволяет защитить контроллер от чтения прошивки.

И еще я видел программу для прошивки контроллера через иные интерфейсы и софт для расчета коэффициентов CAN (справа): 

 

Самым последним упомяну AT32IDE. Уже по названию ясно, что это продукт на базе Eclipse. Это ПО не видело мой DAP программатор, поэтому работала тут только оригинальная плата. В отличие от STM32IDE, тут не получится открыть конфигурационный файл проекта, но в целом работать можно.

Заключение

Я поработал с Artery несколько месяцев, отчасти из необходимости по работе, отчасти из желания покопаться в чем-то новом. И вот что я решил для себя на данный момент - с контроллером работать я буду, если снова появятся заказы, требующие китайские компоненты, но вот если необходимо собрать что-то срочно, я лучше воспользуюсь контроллером STM32 с его HAL, кучей примеров и наличием огромного количества статей в интернете. Да, много материалов для STM32 можно транслировать и на AT32, но для этого нужно потратить чуть больше времени, которого порой просто нету. С другой стороны, если закручивание гаек доберется до ST и их микроконтроллеры вдруг перестанут быть доступны для закупки, то я без раздумий пересяду на Artery. 

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

P.s. Увы, не имею опыта работы с микроконтроллерами от GigaDevice, поэтому полноценно с ними сравнить не смогу. Изначально выбор пал на Artery по причине его более низкой цены.

Комментарии (1)


  1. x89377
    01.02.2025 09:17

    Процессоры конечно неплохие, но сайт https://www.arterychip.com/en они прикрыли.