【国民技术N32项目移植】1. 新建工程+LED与按键跳坑总结
【国民技术N32项目移植】2. 硬件IIC驱动OLED
上一篇文章讲解了如何使用硬件IIC来驱动OLED,硬件IIC相比较于软件IIC有速度快的优势,如果是软件IIC驱动,刷新频率可能会跟不上。
因为使用了RT-Thread OS,为了便于OLED的驱动,会使用软件包SSD1306,但是SSD1306是使用RT-Thread OS的软件IIC驱动的,为了与硬件IIC结合起来使用,添加了SSD1306的软件包之后,需要修改驱动源码,本文将详细描述如何使用SSD1306的软件包结合硬件IIC来驱动OLED。
硬件IIC的代码实现参考前一篇帖子:【国民技术N32项目移植】2. 硬件IIC驱动OLED。
本文使用RT-Thread studio开发。点击RT-Thread Setting添加软件包。
这里只需要修改从机地址,即可,其他都不需要在修改,对硬件IIC不适用。
SSD1306的代码是与RT-Thread OS的软件IIC结合起来使用的,所以我们需要对底层驱动代码进行修改才能切换为硬件IIC,修改方式如下:
完成了上述步骤之后,SSD1306就修改为了使用硬件IIC驱动了,但是我们还不知道是否修改成功,所以在main函数中写测试代码进行测试,如下:
i2c_config();
// OLED_Init();
// OLED_ShowString(12, 0, (const unsigned char*)"N32G45XVL-STB", 16, 1);
// OLED_ShowString(24, 16, (const unsigned char*)"elecfans", 16, 1);
// OLED_ShowString(64, 48, (const unsigned char*)"- hehung", 16, 1);
// OLED_Refresh_Gram();
ssd1306_Init();
ssd1306_Fill(Black);
ssd1306_SetCursor(4, 0);
ssd1306_WriteString("N32G45XVL-STB", Font_7x10, White);
ssd1306_SetCursor(4, 24);
ssd1306_WriteString("elecfans", Font_11x18, White);
ssd1306_SetCursor(50, 42);
ssd1306_WriteString("-hehung", Font_11x18, White);
ssd1306_UpdateScreen();
如下图,经过实际测试,硬件IIC比软件IIC刷新频率高很多,显示动态图像会比较流畅。
更多回帖