Програмний I2C проти апаратного: запускаємо U8x8 на CH32V003
У проєкті з OLED-дисплеєм та мікроконтролером STM32F103 виниклопитання : чи можна це здешевити? Що, якщо використати CH32V003? Багато ніжок не потрібно, корпусу SOP16 вистачить. Головне питання — як він працюватиме з OLED SSD1306. Перевіримо це. Як я писав раніше, U8x8 має легко портуватися і може працювати з програмним I2C (bit-bang). Перенесення коду з CMSIS пройшло дуже швидко — кілька чашок кави, і приклад у мене запрацював. Ось код функції u8x8_gpio_and_delay_ch32v : uint8_t u8x8_gpio_and_delay_ch32v(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr) { switch(msg) { case U8X8_MSG_GPIO_AND_DELAY_INIT: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef init = {0}; init.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; init.GPIO_Mode = GPIO_Mode_Out_OD; init.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &init); break; case U8X8_MSG_DELAY_MILLI: De...