[MCU] 【沁恒RISC-V内核 CH582】I2C 点亮OLED屏

lugl4313820   2022-2-26 08:09 楼主

SSD1306是一款OLED驱动芯片,拥有最大128*64像素支持,广泛应用在小尺寸OLED显示屏的驱动中。特别是他的显示低功耗,与CH582M结合在一起做穿戴设备是很好的组合。

这次采用的是摸拟I2C来驱动的。SDA跟SCL配置如下。

  GPIOB_SetBits( GPIO_Pin_12 );
  GPIOB_SetBits( GPIO_Pin_13 );
  GPIOB_ModeCfg( GPIO_Pin_12, GPIO_ModeOut_PP_20mA ); //SDA
  GPIOB_ModeCfg( GPIO_Pin_13, GPIO_ModeOut_PP_20mA ); //SLC

然后驱动是修改我以前的驱动,其实SSD1306网上大把资料:

#define OLED_SCL_Clr() GPIOB_ResetBits(GPIO_Pin_13)//SCL
#define OLED_SCL_Set() GPIOB_SetBits(GPIO_Pin_13)

#define OLED_SDA_Clr() GPIOB_ResetBits(GPIO_Pin_12)//SDA
#define OLED_SDA_Set() GPIOB_SetBits(GPIO_Pin_12)

修改以上这些参数后就成功驱动SSD1306了:

OLED_Init();      //初始化OLED
  OLED_ColorTurn(0);//0正常显示,1 反色显示
  OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
  OLED_Clear();
  mDelaymS(800);
  OLED_ShowString(8, 6, "Hello EEWORLD!", 16, 1);
  OLED_ShowString(22, 26, "CH582M", 24, 1);
  OLED_ShowNum(12, 52, 2022, 4, 12, 1);
  OLED_ShowChinese(40,52,9,12,1);//12*12 年
  OLED_ShowNum(54, 52, 2, 1, 12, 1);
  OLED_ShowChinese(64,52,10,12,1);//12*12 月
  OLED_ShowNum(80, 52, 26, 2, 12, 1);
  OLED_ShowChinese(94,52,2,12,1);//12*12 日
  OLED_Refresh();

工程文件上传如下:

I2C-OLED.7z (168.22 KB)
(下载次数: 114, 2022-2-26 08:08 上传)

微信图片_20220226075321.jpg

回复评论 (5)

工程文件好像有问题,mrs编译失败
点赞  2023-1-8 16:56
引用: 珏珲1 发表于 2023-1-8 16:56 工程文件好像有问题,mrs编译失败

你要看看工程、头文件的引用路径等。看看报错具体是怎么样,调整一下。

点赞  2023-1-8 18:12
引用: lugl4313820 发表于 2023-1-8 18:12 你要看看工程、头文件的引用路径等。看看报错具体是怎么样,调整一下。

解决了,缺了几个头文件,把主文件替换到其他工程了;

还有就是 说没有找到`TMR0_TimerInit'这里函数的定义,CH58x_timer0.c没有参与编译

参考大佬的帖子右键加了一下

点赞 (1) 2023-1-8 20:21

现在想把ADC采集的值显示上去,还没成功

 
点赞  2023-1-8 20:23
引用: 珏珲1 发表于 2023-1-8 20:23 现在想把ADC采集的值显示上去,还没成功  

加油,沁恒的东西非常好用,价格也亲民,功耗也可以。

点赞  2023-1-9 08:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复