[原创] 【ST NUCLEO-U5A5ZJ-Q开发板测评】深度体验I2C驱动OLED屏

lugl4313820   2024-2-6 13:26 楼主

官方的数据手册介绍,该I2C可以工作在3个通信速度上分别为100K、400K、1M。

image.png  

本次使用三个不同的速度来驱动OLED屏,使用OLED的FPS来测试效果:

【配置】

1、IO选取开发板上的D15(PB8)——SLC,D14(PB9)——SDA,为引脚输出。

image.png   2、创建以开发板为基础的STM32CubeIDE工程,配置好引脚为PB8、PB9:

image.png   4、首先配置为100K、400K、1M的速度:

image.png   5、移植OLED驱动,略过(请自行查看工程附件)

6、测FPS的函数:

void ssd1306_TestFPS() {
    ssd1306_Fill(White);
   
    uint32_t start = HAL_GetTick();
    uint32_t end = start;
    int fps = 0;
    char message[] = "ABCDEFGHIJK";
   
    ssd1306_SetCursor(2,0);
    ssd1306_WriteString("Testing...", Font_11x18, Black);
    ssd1306_SetCursor(2, 18*2);
    ssd1306_WriteString("0123456789A", Font_11x18, Black);
   
    do {
        ssd1306_SetCursor(2, 18);
        ssd1306_WriteString(message, Font_11x18, Black);
        ssd1306_UpdateScreen();
       
        char ch = message[0];
        memmove(message, message+1, sizeof(message)-2);
        message[sizeof(message)-2] = ch;

        fps++;
        end = HAL_GetTick();
    } while((end - start) < 5000);
   
    HAL_Delay(5000);

    char buff[64];
    fps = (float)fps / ((end - start) / 1000.0);
    snprintf(buff, sizeof(buff), "~%d FPS", fps);
   
    ssd1306_Fill(White);
    ssd1306_SetCursor(2, 2);
    ssd1306_WriteString(buff, Font_11x18, Black);
    ssd1306_UpdateScreen();
}

6、测试效果分别如下:

100K——9FPS

400K——29FPS

1M——   49FPS

c51a1bdbb41bc681c876ec00f552a0e.jpg  

4a4f70b321f8365d787b9a6d4849ddf.jpg  

37f60a279cbee8815f11c2d1a9e2e7c.jpg  

【总结】

通过三个不同速度的对比,配置不同的速度,在相同的主频下,可以提升非常高的效果。

回复评论 (2)

大佬可以发下OLED驱动的附件吗,每次都是几个error

微信截图_20240206232624.png

 

点赞  2024-2-6 23:47

我的下载_个人中心- - 电子工程世界EEWORLD

我已经把工源源码上传到了这里。

点赞  2024-2-7 10:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复