Найти тему
EASYAMPER

Программирование CH32F103C8T6 с помощью среды Arduino IDE

Моя плата
Моя плата

Купил я на свою голову CH32 цена и возможности привлекли внимание. Оказалось все не так просто и красиво. Информации по поводу прошивки было крайне мало, пришлось копать самому. Чтобы никто больше не мучался я написал эту статью.

Подключаться будем по USB кабелю. Сначала я пробовал подключиться с помощью программатора - безуспешно. Я не сразу выяснил что можно "из коробки" использовать USB для прошивки (чтение даташита очень полезное дело). У STM вроде-бы так нельзя.

Для начала скачаем все необходимое, я создал и опубликовал архив для удобства. Скачайте и распакуйте.

Ссылка 1:

https://disk.yandex.ru/d/RKA8zXdEkSCv6A

Ссылка 2:

https://drive.google.com/file/d/1erWcOw_NYM3EHPQEtyengysvFszeBlfv/view?usp=sharing

Если у вас нет Arduino IDE, скачайте. Я использовал версию 1.8.19

Для начала установим официальную утилиту для прошивки. В распакованном архиве в папке WeActStudio… перейдем в Tools ( WeActStudio.BluePill-Plus-CH32-master\WeActStudio.BluePill-Plus-CH32-master\Tools ), затем установим WCHISPTool. Данная папка была скачана с Github ( https://github.com/WeActStudio/WeActStudio.BluePill-Plus-CH32.git )

установим WCHISPTool
установим WCHISPTool

После установки и входа в утилиту нажимаем на вторую вкладку (надписей почему-то нет, спасибо разработчикам).

жмем сюда
жмем сюда

Теперь переключим джампер boot0. USB кабель подключим к нижнему разъему на плате.

Положение джампера
Положение джампера
Нижний порт USB
Нижний порт USB

При заданных настройках программа должна обнаружить плату. Можете нажать Search для поиска. Настройки выставьте во всех полях, как на картинке ниже.

Вид программы при успешном обнаружении платы
Вид программы при успешном обнаружении платы

В области Download Config рекомендуется установить параметры как у меня. Далее в Download file выберем .bin файл из нашего архива. Не забудьте поставить галочку. В bin файле специальный загрузчик для плат STM, я выяснил, что он работает и для CH32.

Инфа была найдена тут: https://microkontroller.ru/stm32-projects/programmirovanie-stm32-blue-pill-cherez-usb-port-s-pomoshhyu-arduino-ide/

Выбираем bin файл, ставим галочку
Выбираем bin файл, ставим галочку

После чего пробуем прошить. Кнопка загрузки показана красной стрелкой. Справа на картинке и в программе есть лог. Несмотря на одну красную строчку, все прошилось успешно.

Возможно, если переносить код в bin, его можно загружать на плату из данной среды. Но моя попытка сделать это с помощью Arduino IDE не была успешной.

Как выглядит успешная прошивка
Как выглядит успешная прошивка

Далее отключаем плату от ПК. Переводим перемычку boot0 в первоначальное положение. Подключаем USB именно к верхнему разъему. Светодиод PC13, при подключении USB стал недолго, но часто мигать.

Положение джампера boot0 и выбранный USB разъем
Положение джампера boot0 и выбранный USB разъем

Мы успешно установили другой загрузчик. Установим драйвера для его корректной работы.

В том же архиве переходим в CH32F103_files\Arduino_STM32-master\Arduino_STM32-master\drivers\win. Откроем по очереди оба файла.

Будет открываться командная строка, процесс может оказаться не быстрым. В конце каждой установки появиться надпись: «Нажмите любую клавишу для продолжения», при нажатии любой клавиши окно закроется, установка завершится.

Установите эти драйвера
Установите эти драйвера

Далее зайдем в диспетчер устройств для проверки. Возможно потребуется переподключить плату. Среди всех устройств наша плата должна отображаться примерно так:

Maple Serial - часть названия нашего устройства после проделанных ранее действий
Maple Serial - часть названия нашего устройства после проделанных ранее действий

Если название совпадает (ваш COM может отличаться - это норма), то все сделано верно.

Далее подготовим среду Arduino IDE к работе с платой.

Откройте Arduino IDE и перейдите в настройки. В поле дополнительных ссылок введите следующее:

http://dan.drown.org/stm32duino/package_STM32duino_index.json

Нажмите ОК. Должно получиться как на картинке ниже.

Добавляем ссылку для менеджера плат в настройках IDE
Добавляем ссылку для менеджера плат в настройках IDE

Далее зайдем в Менеджер плат.

Вот где он находится
Вот где он находится

В открывшемся окне введем в поиск stm32f1. Установим результат поиска (у меня уже скачан). Далее может потребоваться закрыть и заново открыть среду, чтобы изменения вступили в силу, у меня все и так заработало.

По запросу нашелся один результат
По запросу нашелся один результат

После успешной установки среди плат должно появиться семейство STM. Выберем параметры, как на картинах ниже.

Выбираем как показано тут
Выбираем как показано тут
И тут
И тут

Выбранный порт должен иметь в названии Maple Mini. У меня это COM8.

COM 8 - порт платы в моем случае
COM 8 - порт платы в моем случае

Если все получилось, напишем программу для теста. Для этого стандартный Blink был переделан. Номер пина на котором «висит» светодиод – PC13, он также обозначен и на самой плате. Попытка написать просто «13» ни к чему хорошему не привела.

Светодиод подписан на плате - удобно, мое почтение разработчикам
Светодиод подписан на плате - удобно, мое почтение разработчикам

Далее представлен код тестовой программы.

Переделанный Blink из стандартных примеров
Переделанный Blink из стандартных примеров

Для копирования(если лень писать):

void setup() {

pinMode(PC13, OUTPUT);

}

void loop() {

digitalWrite(PC13, HIGH);

delay(1000);

digitalWrite(PC13, LOW);

delay(1000);

}

После написания кода нажмем на стандартную кнопку загрузки. Переставлять джампер boot уже не требуется. Можете пока забыть о нем.
Сообщения загрузки показаны на картинке ниже.

-20

После загрузки светодиод успешно замигал.

-21

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


Видео на канале:

Прошу отписаться в комментариях, если у вас все получилось.