STM32F072 USB без кварца в VS Code

STM32F072 USB без кварца в VS Code

STM32F0C8T6 – это очень дешевый 32 битный микроконтроллер. Этот чип может быть интересной заменой привычной ATmega328 на платах Arduino DIY проектах. Я выбрал этот чип для экспериментов в основном по двум причинам:

1. Встроенный USB модуль, который может работать БЕЗ внешнего кварцевого резонатора. Только от встроенного тактового генератора частотой 48 МГц. Таким образом на этом контроллере можно создать USB устройство в котором нет ни одного кварцевого резонатора. Это еще больше удешевляет готовое устройство.

2. Очень низкая цена. Я купил десяток таких чипов на Алиэкспресс по цене примерно 0.5 доллара да штуку. Кроме того, у чипа много других архитектурных преимуществ, которые вы можете оценить из таблицы ниже.

ХарактеристикаSTM32F072C8T6ATmega328p
Архитектура ядраARM Cortex-M0 (32-бит)AVR RISC (8-бит)
Тактовая частотаДо 48 МГцДо 20 МГц
Flash-память64 КБ32 КБ
SRAM16 КБ2 КБ
EEPROMНет (эмулируется во Flash)1 КБ
Контроллер DMAЕсть (7 каналов)Нет
Напряжение питания2.0 – 3.6 В1.8 – 5.5 В
АЦП12-бит (до 16 каналов)10-бит (8 каналов в TQFP, 6 в DIP)
ЦАПЕсть (12-бит, 2 канала)Нет
ИнтерфейсыUSB 2.0 (Crystal-less), 2x I2C, 2x SPI, 4x USART, CAN1x I2C (TWI), 1x SPI, 1x UART

Вдохновляет также наличие на борту 12 битного двухканального ЦАП, который можно с успехом использовать для вывода различных аналоговых сигналов в наших самодельных проектах.

Из недостатков STM32F072C8T6 можно отметить меньший диапазон напряжения питания (3.3V), отсутствие выделенной энергонезависимой памяти EEPROM и более высокий порог вхождения для начинающих программистов по сравнению с ATmega328p/Arduino.

К сожалению я не нашел готовых плат с этим контроллером по адекватной цене, поэтому решил заказать десяток отдельных микроконтроллеров. Микроконтроллер поставляется в SMD корпусе с 48 выводами и шагом выводов 0.5 мм. Поэтому я заказал также небольшие универсальные макетные платы-переходники для подобных чипов.

STM32F072 USB без кварца в VS Code

Это двухсторонняя плата. С одной стороны можно установить чип с шагом 0.5 мм, а с другой стороны – с шагом 0.8 мм. Так как у нас чип с 48 выводами, а на плату можно установить чип до 100 выводов, то у нас остается место для компонентов обвязки.

STM32F072 USB без кварца в VS Code

Вид собранной платы с установленным контроллером и другими элементами

STM32F072 USB без кварца в VS Code

С обратной стороны плат соединения выполнены тонким одножильным проводом.

схема минимальной обвязки STM32F072

Это схема минимальной обвязки, необходимой для того, чтобы микроконтроллер можно было прошить с помощью программатора STLINK. Я начал с этой схемы. После того, как я убедился в работоспособности контроллера на этой плате, я добавил USB порт, светодиод на вывод PA0 и стабилизатор напряжения на 3.3 V чтобы плата могла получать питание от +5V порта USB.

Полная схема тестовой платы с STM32F072

Полная схема тестовой платы с STM32F072

Для включения питания от USB необходимо установить перемычку J1. В этом случае нельзя подавать питание 3.3 V от программатора на пин VDD. Если вы планируете подавать питание на плату от программатора, то снимите перемычку J1.

В качестве программатора я использовал свою старую плату STM32 Discovery F0 с микроконтроллером STM32F051R8T6 на борту. На этой плате также имеется качественный программатор STLINK V2, который можно настроить на программирование внешних микроконтроллеров. Для этого нужно снять две перемычки на плате Discovery.

STM32F072 USB без кварца в VS Code

Плата STM32F0 DISCOVERY, которую я использовал в качестве программатора. Левая (на фото) половина плата с чипом меньшего размера – это встроенный в плату программатор STLINK V2, который можно использовать для прошивки внешних контроллеров. Можно также использовать популярный программатор STLINK – “китайский свисток” с Алиэкспресс. Будет работать так же.

Для прошивки можно использовать утилиту STM32Cube Programmer или струю программу STM32 ST-LINK utility. Обе программы работают хорошо. STM32Cube Programmer удобен тем, что понимает файлы прошивок формата .elf, котоорые не видит старая ST-LINK utility. Для использования ST-LINK utility нужно принудительно включать в IDE (в компиляторе) генерацию HEX файлов, которая обычно отключена по умолчанию.

STM32F072 USB без кварца в VS Code

Приложение STM32 ST-LINK utility

STM32F072 USB без кварца в VS Code

Приложение STM32Cube Programmer

Для написания программы для контроллера я использовал редактор Visual Studio Code с плагином от STM32. Для первоначальной настройки контроллера и генерации проекта была использована программа STM32 CubeMX

Цель этого тестового проекта – создать USB устройство, которое реализует виртуальный COM порт при подключении в компьютеру и проверить его работу через программу – терминал.

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

STM32F072 USB в VS Code: От хаоса CubeMX до чистого C (Без кварца!)

Посмотреть подробный обучающий видеоролик о создании USB CDC устройства на STM32F072C8T6 (The video includes an English soundtrack. To select it, click the gear icon in the player)

Скачать файлы проекта можно по этой ссылке…

В моих конструкциях я использовал удобные самодельные маленькие разъемы, которые я сделал из стандартных Arduino – перемычек типа “мама-мама”.

STM32F072 USB без кварца в VS Code

Для фиксации ряда пинов использую маленький корпус, напечатанный на 3D принтере. 3D модель корпуса под 5-пиновый разъем (например для SWD разъема программирования STM32) можно скачать по этой ссылке…

STM32F072 USB без кварца в VS Code

Leave a Reply