BlueProg
Аппаратная часть
Проект программатора BlueProg, выполненный в среде KiCad.
В папке КД находятся pdf-файлы документации на плату. Текстовые документы сгенерированы в программе ДокГОСТ.
Про использование BlueProg в качестве JTAG-адаптера и преобразователя USB<->UART можно прочитать на странице проекта.

Программная часть
Проект выполнен на основе открытого проекта ch55x_jtag автора diodep, и предназначен для микроконтроллера CH552P WCH.
Сборка проекта выполняется запуском файла Make в SDCC. Подробнее про процесс сборки можно прочитать здесь.
Прошивка выполняется файлом .bin, который можно сгенерировать самостоятельно или взять из архива.
Распиновка микроконтроллера CH552P в проекте следующая:
P1.1 - LED
P1.4 - TRST
P1.5 - TDI
P1.6 - TDO
P1.7 - TCK
P3.0 - UART_RX
P3.1 - UART_TX
P3.2 - TMS
P3.4 - SRST
P3.3 - управление ключом питания
Программная часть v1.0 и v1.1 предназначены изначальной версии платы BlueProg.
Версия 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:
- увеличена скорость работы программатора за счёт оптимизации кода;
- добавлена возможность считывать версию прошивки Blueprog и выключать/включать напряжение +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.
Обновление прошивки программатора
Для записи новой версии прошивки в программатор нужно установить программу WCHISPTool с официального сайта WCH и выбрать в ней файл .bin для нужной версии прошивки BlueProg (см. рисунок ниже). Затем для перехода в режим программирования на плате BlueProg нужно соединить (например, при помощи пинцета) выводы конденсатора С2 и резистора R5, как показано на рисунке ниже, и после этого подключить по USB программатор к компьютеру. При этом светодиод СТАТУС на плате должен начать тускло светиться, а в программе WCHISPTool в поле DevList должен появиться микроконтроллер CH552. Далее нажимаем кнопку Download, и дожидаемся сообщения об успешном завершении программирования.
Примечание
Скорость передачи данных по UART при использовании BlueProg в качестве USB<->UART преобразователя в программе задаётся как 1М/baud_rate, и округляется до целого числа. Таким образом, чем меньше скорость, тем точнее она устанавливается. Погрешность установки частоты, связанная с таким округлением, приводит к отклонению около 3,5% для скорости 115200 бит/с. Поэтому не стоит устанавливать скорости выше 57600, за исключением 100к, 125к, 250к, 500к и 1М, так как для них деление происходит без остатка, и частота устанавливается точно.
Минимальная скорость передачи данных по UART в прошивке программатора задаётся как 1М/4/256, и составляет 1 кбит/с.
Лицензия
MIT