Купил в конце 2024 года микроконтроллеры серии CH32V003x фирмы WCH. Данный микроконтроллер новинка и толком ещё не понятно как он программируется. Разбираемся.
Среда Arduino IDE пока в разработке, но что-то уже работает. Показываю как программировать через Arduino IDE. Надеюсь, что со временем среду доведут до нормального состояния и можно будет всё легко и просто программировать как и другие микроконтроллеры и платы Arduino.
Обратите внимание на то, что данный микроконтроллер выпускается в трёх разных корпусах. Чем меньше ног, тем меньше возможностей по подключению, хотя сам чип один и тот же во всех корпусах. Частично выводы мультиплексируются, т.е. на одну и ту же ногу возможно подключить разные порты, но всё равно не все, что имеются в корпусе с 20 ножками.
Для программирования понадобится свой программатор WCH-LinkE(RV), который можно купить на Али-экспрессе рублей за 300-400, в зависимости от исполнения. Ниже на фото привожу программатор, который покупал себе, но сейчас появились более простые программаторы в виде небольшой платы, без корпуса.
Для программирования этих МК предусмотрен всего один вывод SWDIO/PD1. Поэтому к программатору МК подключается тремя проводами. Однако программатор интересен тем, что у него есть выводы и для последовательного порта, через который можно выводить сообщения. UART реализован в МК на PD5(TX)/PD6(RX). На программаторе можно выбрать питание +3.3V или +5V.
CH32V003 WCH-LinkE(RV) -------- ------------- VSS(GND) - GND VDD(VCC) - 5V(3V3) PD1/SWIO - SWDIO - для программирования Дополнительно UART WCH-LinkRV(E) ---- ------------- PD5/UTX - RX PD6/URX - TX
В микроконтроллере есть три группы портов: порты A, C и D, и в каждой группе есть определённое количество контактов.
Каждый вывод порта может быть настроен как выход GPIO и использоваться в приложении.
GPIO в основном используются для подключения светодиодов, управления реле, передачи сигналов состояния и управления при подключении других устройств, а также для управления ЖК-дисплеями, например OLED, в режиме SPI, где SPI эмулируется с помощью битовых сигналов GPIO и т.д.
Пока с EEPROM не разбирался, но на вскидку там как в ESP32, часть флэш памяти эмулируется под EEPROM. Нужно разбираться.
Аппаратного сброса на этом чипе как бы нет, или не нашёл, но можно определить любую ножку под сброс и подключить функцию программного системного сброса. Тут надо заметить, если чип зависнет, то и сброс не получится, остаётся вариант разрыва питания. Можно именно так реализовать сброс – кнопка с нормально замкнутыми контактами по питанию, при нажатии на неё будет разрыв питания и затем запуск программы с начала.
Чтобы программировать эти микроконтроллеры с помощью среды Ардуино, нужно под неё установить ядро. Как установить ядро для МК CH32V003?
В Arduino IDE добавьте следующую ссылку:
Меню->Настройки->в поле «Дополнительные URL-адреса для менеджеров доменов»: https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json
Затем вы можете выполнить поиск «ch32» в «диспетчере плат», найти установочный пакет и установить его.
На сегодняшний момент пробовал, через установленное таким способом ядро, программировать ШИМ, но ничего не работало. Удалось победить только, если скачать уже немного доделанный архив ядра и перезаписать его вручную. Вот после этого удалось запустить через среду Arduino IDE ШИМ (PWM) сигналы.
Поддержка ядра Arduino для плат CH32 EVT: https://github.com/openwch/arduino_core_ch32?ysclid=m5uyyhvnuc211383963 Скачать архив и перезаписать ядро WCH в папке: C:\Users\Пользователь\AppData\Local\Arduino15\packages\WCH
Замечу, что для программирования чипов WCH имеется своя среда MounRiver Studio
, но она как бы тоже ещё "сырая". Пробовал там программировать разные корпуса. Так для J4M6 в настройках не сохраняется программатор! Как выхожу, так всё обнуляется, а когда настраиваю, то вроде всё настраивается, позволяет запрограммировать один раз, а потом опять лезть в настройки и выставлять программатор... Вообще среда эта замороченная и любителям Ардуино-простоты будет проблемно разбираться во всех тех кодах, которые нужно написать, чтобы просто поморгать светодиодиком.
Сейчас примеров под эти чипы в интернете немного, и в основном они программируют не из-под среды Arduino IDE. Подождём. Думаю всё появится.
Чтобы потренироваться в программировании МК CH32V003 решил сделать Лампу настроения
. Для неё нужен RGB светодиод и управлять им через три канала ШИМ (PWM). На двух типах корпусов (F4P6, A4M6) это удалось сделать.
По мере сил и возможностей, буду у себя на сайте публиковать и под эти микроконтроллеры какие-нибудь скетчи.
Лампа-настроения*:h32v003a4m6_PWM_reset.rar2025-01-27