Блок с датойБлок с временемБлок с возрастом сайта
Mr.ALB

    Анатолий Беляев (aka Mr.ALB). Персональный сайт

    Да пребудут с вами Силы СВЕТА!

     

    Arduino #38. WCH CH32V003x

    Купил в конце 2024 года микроконтроллеры серии CH32V003x фирмы WCH. Данный микроконтроллер новинка и толком ещё не понятно как он программируется. Разбираемся.

    Среда Arduino IDE пока в разработке, но что-то уже работает. Показываю как программировать через Arduino IDE. Надеюсь, что со временем среду доведут до нормального состояния и можно будет всё легко и просто программировать как и другие микроконтроллеры и платы Arduino.

    CH32V003x

    Технические параметры

    • Серия: CH32V003
    • Ядро: RISC-V
    • Ширина шины данных: 32
    • Тактовая частота, МГц: 48
    • Количество входов/выходов: 18
    • Объем памяти программ: 16k
    • Тип памяти программ: flash
    • Объем RAM: 2k
    • Наличие АЦП/ЦАП: АЦП
    • Встроенные интерфейсы: SPI, I²C, UART
    • Встроенная периферия: Adv/GP Timer, WDOG, OPA
    • Напряжение питания: 3.3V/5.0V
    • Рабочая температура: -40…85°С
    • Корпус: TSSOP20/SOP-16/SOP-8
    • Вес, г: 0.25

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


    CH32V003F4P6, 20 ног
    Pic 1. CH32V003F4P6, 20 ног

    CH32V003A4M6, 16 ног
    Pic 2. CH32V003A4M6, 16 ног

    CH32V003J4M6, 8 ног
    Pic 3. CH32V003J4M6, 8 ног

    Как программировать

    Для программирования понадобится свой программатор WCH-LinkE(RV), который можно купить на Али-экспрессе рублей за 300-400, в зависимости от исполнения. Ниже на фото привожу программатор, который покупал себе, но сейчас появились более простые программаторы в виде небольшой платы, без корпуса.

    Программатор WCH-LinkE(RV)
    Pic 3. Программатор WCH-LinkE(RV)

    Для программирования этих МК предусмотрен всего один вывод 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
      
    

    Порты GPIO

    В микроконтроллере есть три группы портов: порты A, C и D, и в каждой группе есть определённое количество контактов.

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

    Использование GPIO

    GPIO в основном используются для подключения светодиодов, управления реле, передачи сигналов состояния и управления при подключении других устройств, а также для управления ЖК-дисплеями, например OLED, в режиме SPI, где SPI эмулируется с помощью битовых сигналов GPIO и т.д.

    EEPROM

    Пока с EEPROM не разбирался, но на вскидку там как в ESP32, часть флэш памяти эмулируется под EEPROM. Нужно разбираться.

    Сброс/Reset

    Аппаратного сброса на этом чипе как бы нет, или не нашёл, но можно определить любую ножку под сброс и подключить функцию программного системного сброса. Тут надо заметить, если чип зависнет, то и сброс не получится, остаётся вариант разрыва питания. Можно именно так реализовать сброс – кнопка с нормально замкнутыми контактами по питанию, при нажатии на неё будет разрыв питания и затем запуск программы с начала.

    Arduino IDE

    Чтобы программировать эти микроконтроллеры с помощью среды Ардуино, нужно под неё установить ядро. Как установить ядро для МК 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) это удалось сделать.

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


    Приложение



    Анатолий Беляев.

    . Mr.ALB
    Предыдущая страница Страница 39 Далее