Readme.md

СинийПрограмматор/BlueProg

Аппаратная часть

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

В папке КД находятся pdf-файлы документации на плату. Текстовые документы сгенерированы в программе ДокГОСТ.

Про использование программатора в качестве JTAG-адаптера и преобразователя USB<->UART можно прочитать на странице проекта.

BlueProg

Программная часть

Проект выполнен на основе открытого проекта ch55x_jtag автора diodep, и предназначен для микроконтроллера CH32X035 WCH. Аппаратная часть до изм. 3 была сделана на основе микроконтроллера CH552P WCH.

Соответствие аппаратной и программной частей приведено в таблице:

Программная часть Аппаратная часть
v1.0, v1.1 Изначальная версия (изм.0)
v2.0 - v2.9 Изм.0 с доработкой, Изм.1, Изм.2
v.3.0 Изм.3

Сборка проекта v1.0, v1.1, v2.0-v2.9 выполняется запуском файла Make в SDCC. Подробнее про процесс сборки можно прочитать здесь.
Прошивка выполняется файлом .bin, который можно сгенерировать самостоятельно или взять из архива.
Сборка проекта v3.0 выполняется в среде MounRiver Studio II.
Прошивка выполняется файлом .hex, который можно сгенерировать самостоятельно или взять из архива.
Распиновка микроконтроллера в проекте следующая:

Назначение Вывод CH552 в изм.0-изм.2 Вывод CH32X035 в изм.3
LED P1.1 PA0
TRST P1.4 PC15
TDI P1.5 PA7
TDO P1.6 PA6
TCK P1.7 PA5
UART_RX P3.0 PA3
UART_TX P3.1 PA2
TMS P3.2 PA4
SRST P3.4 PB11
Ключ питания P3.3 (в изм.1,изм.2) PB12

История изменений в программной части:
В v1.1 исправлены замеченные ошибки.
Версия v2.0 предназначена для платы изм. 1 и отличается тем, что там есть управление ключом подачи питания на соединитель JTAG.
Версия v2.1 отличается тем, что добавлена функциональность USB<->UART преобразователя.
В версии v2.2 исправлена ошибка, в некоторых приводившая к появлению предупреждения “Warn : Batch memory read encountered DMI error 2. Falling back on slower reads”.
В версии v2.3 немного увеличена скорость работы программатора за счёт оптимизации кода.
Версия v2.4:

  • увеличена скорость работы программатора за счёт оптимизации кода;
  • добавлена возможность считывать версию прошивки программатора и выключать/включать напряжение +5В на выводе 19 соединителя XS2.
    Для считывания версии в командной строке нужно перейти в папку, в которой находится openocd.exe, и ввести следующее:
openocd -c "adapter driver ftdi" -c "ftdi vid_pid 0x16c0 0x05dc" -c "ftdi layout_init 0x0040 0x00fb" -c "ftdi channel 0" -c "transport select jtag" -c "init" -c "ftdi layout_signal VERSION -input 0xFF00" -c "ftdi get_signal VERSION"  -c "exit"

В результате появится число в шестнадцатиричной форме вида 0х2400, которое будет означать версию программы 2.4.
Для включения/выключения питания в командной строке также нужно перейти в папку, в которой находится openocd.exe, и ввести следующее:

openocd -c "adapter driver ftdi" -c "ftdi vid_pid 0x16c0 0x05dc" -c "ftdi layout_init 0x0040 0x00fb"  -c "ftdi channel 0" -c "transport select jtag" -c "init" -c "ftdi layout_signal PWR_OFF -data 0x0080" -c "ftdi set_signal PWR_OFF 0" -c "exit"

В результате питание 5 В будет подаваться на вывод 19 соединителя XS2. Чтобы выключить питание, нужно в команде выше заменить PWR_OFF 0 на PWR_OFF 1.
В версии v2.5 интерфейс UART автоматически распознаётся операционной системой Windows как COM-порт, и не требует дополнительной настройки через Zadig.
В версии v2.6 интерфейс UART автоматически распознаётся также и операционной системой Linux как ttyACMx.
В версии v2.7 исправлены замеченные ошибки, из-за которых программатор не работал с последними версиями OpenOCD.
В версии v2.8 увеличена скорость работы за счёт использования двойного буфера данных USB OUT, а также добавлена поддержка изменения скорости адаптера.
В версии v2.9 исправлены замеченные ошибки, немного увеличена скорость работы за счёт использования двойного буфера данных USB IN, а также добавлено сохранение состояния ключа питания в энергонезависимой памяти.
Версия v3.0 аналогична версии 2.9, но перенесена на микроконтроллер CH32X035 (в основе лежат пример SimulateCDC от WCH и версия 2.9).

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

Для записи новой версии прошивки в программатор нужно установить программу WCHISPTool с (https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html) и выбрать в ней файл .bin для нужной версии прошивки BlueProg (см. рисунок ниже). Затем для перехода в режим программирования на плате программатора нужно соединить (например, при помощи пинцета) выводы конденсатора С2 и резистора R5, как показано на рисунке ниже, и после этого подключить по USB программатор к компьютеру. При этом светодиод СТАТУС на плате должен начать тускло светиться, а в программе WCHISPTool в поле DevList должен появиться микроконтроллер CH552. Далее нажимаем кнопку Download, и дожидаемся сообщения об успешном завершении программирования.
BlueProg_Download_Firmware

Примечание

В версиях программы v2.1-v2.9 для CH552 скорость передачи данных по UART при использовании программатора в качестве USB<->UART преобразователя задаётся как 1М/baud_rate, и округляется до целого числа. Таким образом, чем меньше скорость, тем точнее она устанавливается. Погрешность установки частоты, связанная с таким округлением, приводит к отклонению около 3,5% для скорости 115200 бит/с. Поэтому не стоит устанавливать скорости выше 57600, за исключением 100к, 125к, 250к, 500к и 1М, так как для них деление происходит без остатка, и частота устанавливается точно.
Минимальная скорость передачи данных по UART в прошивке программатора задаётся как 1М/4/256, и составляет 1 кбит/с.

В версии программы v3.0 для CH32X035 скорость передачи данных по UART при использовании программатора в качестве USB<->UART преобразователя задаётся как 48М/baud_rate, и округляется до целого числа. Таким образом, чем меньше скорость, тем точнее она устанавливается. Для стандартной скорости 115200 бит/с погрешность установки частоты составляет всего 0,16%. Но при установке высоких нестандартных скоростей следует выбирать их таким образом, чтобы погрешность не была слишком большой. Лучше выбирать скорости, на которые деление происходит без остатка, и частота устанавливается точно.
Минимальная скорость передачи данных по UART в прошивке программатора задаётся как 48М/65635, и составляет 732 бит/с.

Лицензия

MIT

Описание
Проект программатора СинийПрограмматор/BlueProg включает аппаратную и программную части
Конвейеры
0 успешных
0 с ошибкой
Разработчики