CH552G — доступный микроконтроллер на основе модифицированной архитектуры E8051. По ряду параметров он уступает популярной Atmega328, но для множества DIY задач вполне подойдёт. А ещё, у него есть встроенный USB интерфейс, так что для работы с данным МК не потребуется внешний USB-UART.
На отладочной плате CH552G, помимо самого микроконтроллера есть пара кнопок, отвечающих за сброс и режим загрузки. Индикатор питания, и тестовый светодиод на выводе P3.3.
Приобрести отладочную плату можно в магазине RobotClass:
Спецификация
- ядро: E8051;
- режим отладки: swd;
- рабочая частота: 24 МГц;
- память программ (ПЗУ): 16 кбайт;
- память данных (ОЗУ): 1280 байт (1024 xRAM + 256 iRAM);
- память данных (Flash): 128 байт.
- напряжение питания: от 2,8 до 5 В;
- размер: 41 x 20 мм;
- монтажные отверстия: 36 x 15,2 мм.
Периферия
- таймеры: 3;
- ШИМ: 8-разрядный, 2 канала;
- SPI: 1;
- USART: 2;
- АЦП: 8-разрядный, 4 канала;
- ёмкостный датчик (Touch): 5;
- внешние прерывания: 2;
- GPIO: 17.
Схема контактов
Настройка среды Arduino IDE
Скачав и установив среду Arduino IDE мы не найдём в списке отладочные платы на базе CH552G. Чтобы добавить данную плату в Arduino IDE нужно проделать кое-какие дополнительные действия.
Шаг 1. Запускаем среду и переходим в настройки
Запускаем Arduino IDE, заходим в меню Файл и далее выбираем пункт Настройки.
Шаг 2. Ссылка на хранилище настроек для плат CH552G
Затем, на форме настроек в поле «Дополнительные ссылки для менеджера плат» жмём кнопку справа от этого поля и в появившемся окне вставляем ссылку:
https://raw.githubusercontent.com/DeqingSun/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json
Должно получиться вот так:
Шаг 3. установка пакета с платами CH552G
Теперь заходим в меню Инструменты, далее в пункт Плата и затем Менеджер плат.
На открывшейся форме в строке поиска пишем «CH552», после чего в результатах поиска появляется пакет с названием «CH55xDuino MCS51 plain C core (non-C++)«. Жмём кнопку Установить.
Ждём завершения установки, наблюдая за уровнем загрузки снизу. Это может занять 1-3 минуты.
Теперь если зайти в меню Инструменты и далее Плата, можно увидеть, что появился новый раздел плат CH55x Boards. Готово!
Питание от 3.3В
При питании от источника 3.3 В, микроконтроллер сможет стабильно работать только на частоте 12 МГц. Так что в настройках платы в Arduino IDE следует выбрать параметр Clock Source: 12 MHz (internal), 3.3V or 5V.
Установка USB драйвера
Чтобы компьютер смог распознать плату на порту USB, необходимо установить дополнительный драйвер. Ссылка есть в конце инструкции.
Программирование CH552G
Теперь напишем простую программу для CH552G и загрузим её на микроконтроллер. Пусть первая программа, как обычно, будет мигать встроенным светодиодом.
На плате CH552G от RobotClass встроенный светодиод подключен к выводу P3.3, так что в программе в среде Arduino IDE ему будет соответствовать номер 33. Пишем код.
#define LED_BUILTIN 33
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
В настройках платы в Arduino IDE можно ничего не менять. Просто жмём кнопку Загрузка и смотрим на светодиод.
Принципиальная схема
Полезные ссылки
Драйвер CH372:
https://download.robotclass.ru/Drivers/CH372/CH372DRV.EXE
Техническая документация на CH552G:
https://shop.robotclass.ru/image/data/datasheets/CH552DS1.PDF
Плата пришла с прошитым blink’ом. Прошивка по инструкции не помогала — появлялась ошибка «Cannot perform port reset: TOUCH: error during reset: opening port at 1200bps: Invalid serial port». Гугл подсказал, что для прошивки платы необходимо отключить ее от питания и USB, затем зажав кнопку Boot включить — она на несколько секунд переходит в режим прошивки, потом переключается в обычный.
На Windows 11 из коробки в режиме прошивки не было нужного USB-драйвера.
На сайте с проектом https://github.com/wagiminator/CH552-USB-OLED нашел инструкции, что для bootloader’а подойдет драйвер CH732 https://www.wch-ic.com/downloads/CH372DRV_EXE.html
После установки драйвера и запуска платы в режиме бутлоадера прошилась успешно.
Прошу дополнить статью ссылками и инструкцией!