找回密码
 立即注册
查看: 113|回复: 4

AI8H8K64U I2C接口电平问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-20 20:42:48
已绑定手机

3

主题

5

回帖

47

积分

新手上路

积分
47
发表于 2025-6-18 17:11:09 | 显示全部楼层 |阅读模式
准备用 AI8H8K64U 的I2C接口(21:SCL_4;22:SDA_4管脚)
来控制显示模块HS91L02W2C01.
现在有个控制电平问题,请教各位大神:
AI8H8K64U用的5V电源;
而显示模块HS91L02W2C01的数据手册中有如下表述:

截图202506181658296983.jpg
显示模块电源电压最高5V(我在设计中用5V串了一个二极管稍微降压到4.4V左右);
SCL,SDA的最高逻辑电平为3.3V。

请问其I2C管脚是否能直接连接? 还是需要电平转换电路?

可否有推荐的样本电路参考? 谢谢!

另外,我看数据手册里面有


截图202506181709415185.jpg

可否参考这个电路?
但是这样就在板子上增加一个3.3V电源,也有够烦的

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:111
  • 最近打卡:2025-06-28 08:54:08

740

主题

1万

回帖

1万

积分

管理员

积分
17125
发表于 2025-6-18 23:07:20 | 显示全部楼层
STC8H8K64U 是宽电压芯片,可以使用和显示模块一样的电压;
STC8H8K64U的 I2C 接口 设置为开漏工作模式;
显示模块的I2C 应有外部上拉电阻,或其芯片内部有上拉电阻


截图202506182308555860.jpg


截图202506182310516344.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:480
  • 最近打卡:2025-06-28 00:00:59
已绑定手机

80

主题

5214

回帖

9305

积分

超级版主

DebugLab

积分
9305
发表于 2025-6-18 23:58:11 | 显示全部楼层
查找资料发现是OLED 128*32,建议统一用3.3V

128*32建议使用SSD1316的
  1. void SSD1316_Clear(void)  
  2. {  
  3.         unsigned char i,n;                    
  4.         for(i=0;i<4;i++)  
  5.         {  
  6.                 SSD1316_Write_CMD(0xb0+i);        //设置页地址(0~3)
  7.                 SSD1316_Write_CMD(0x00);        //设置显示位置—列低地址
  8.                 SSD1316_Write_CMD(0x10);        //设置显示位置—列高地址  
  9.                 SSD1316_Write_DATA_A();               
  10.                 for(n=0;n<128;n++)
  11.                 {
  12.                         SSD1316_Write_DATA_B(0x00);
  13.                 }
  14.                 SSD1316_Write_DATA_C();
  15.         }
  16. }
  17. void SSD1316_Display_16x32(unsigned char x,unsigned char dat)        //x=0~112,dat=0~17
  18. {
  19.         unsigned char i;
  20.         SSD1316_Write_CMD(0x20);        //Set Memory Addressing Mode(设置内存寻址模式)
  21.         SSD1316_Write_CMD(0x01);        //0x01(垂直寻址模式)
  22.         SSD1316_Write_CMD(0x21);        //Set Column Address(设置列地址)
  23.         SSD1316_Write_CMD(x);                //(列开始地址)
  24.         SSD1316_Write_CMD(x+15);        //(列结束地址)
  25.         SSD1316_Write_CMD(0x22);        //Set Page Address(设置页地址)
  26.         SSD1316_Write_CMD(0x00);        //0
  27.         SSD1316_Write_CMD(0x03);        //3
  28.         SSD1316_Write_DATA_A();
  29.         for(i=0;i<64;i++)
  30.         {
  31.                 SSD1316_Write_DATA_B(ASCII[dat][i]);
  32.         }
  33.         SSD1316_Write_DATA_C();
  34.         SSD1316_Write_CMD(0x20);        //Set Memory Addressing Mode(设置内存寻址模式)
  35.         SSD1316_Write_CMD(0x02);        //0x02(页寻址模式)
  36. }
  37. void OLED_Set_Pos(unsigned char x,unsigned char y)
  38. {
  39.         SSD1316_Write_CMD(0xb0+y);
  40.         SSD1316_Write_CMD(((x&0xf0)>>4)|0x10);
  41.         SSD1316_Write_CMD((x&0x0f));
  42. }
  43. void OLED_DrawBMP(unsigned char x,unsigned char y,unsigned char sizex, unsigned char sizey,unsigned char BMP[])
  44. {         
  45.         unsigned int j=0;
  46.         unsigned char i,m;
  47.         sizey=sizey/8+((sizey%8)?1:0);
  48.         for(i=0;i<sizey;i++)
  49.         {
  50.                 OLED_Set_Pos(x,i+y);
  51.                 SSD1316_Write_DATA_A();
  52.                 for(m=0;m<sizex;m++)
  53.                 {
  54.                         SSD1316_Write_DATA_B(BMP[j++]);
  55.                 }
  56.                 SSD1316_Write_DATA_C();
  57.         }
  58. }
  59. void SSD1316_Init(void)
  60. {
  61.         SSD1316_Write_CMD(0xAE);        //Set Display OFF(设置显示关)
  62.         SSD1316_Write_CMD(0xA1);        //Set Segment Remap(设置列重映射)
  63.         SSD1316_Write_CMD(0xA8);        //Set Multiplex Ratio(设置行通道数)
  64.         SSD1316_Write_CMD(0x1F);        //31
  65. //        SSD1316_Write_CMD(0xC8);        //Set COM Output Scan Direction(设置行重映射)
  66.         SSD1316_Write_CMD(0xD3);        //Set Display Offset(设置垂直偏移量)
  67.         SSD1316_Write_CMD(0x00);        //0
  68.         SSD1316_Write_CMD(0xD5);        //Set Display Clock Divide Ratio/Oscillator Frequency(设置显示时钟分频器、振荡器频率)
  69.         SSD1316_Write_CMD(0xF0);        //0xF0
  70.         SSD1316_Write_CMD(0x8D);        //Charge Pump Setting(设置电荷泵)
  71.         SSD1316_Write_CMD(0x14);        //0x14
  72.         SSD1316_Write_CMD(0xAF);        //Set Display ON(设置显示开)
  73.         SSD1316_Clear();
  74. //        SSD1316_Write_CMD(0x81);        //Set Contrast Control(设置对比度)
  75. //        SSD1316_Write_CMD(0x7F);        //127
  76. //        SSD1316_Write_CMD(0xA7);        //Set Normal/Inverse Display(设置反相显示)
  77. //        OLED_DrawBMP(0,0,128,32,BMP1);
  78. }
复制代码

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:168
  • 最近打卡:2025-06-19 12:57:57

24

主题

234

回帖

1343

积分

金牌会员

积分
1343
发表于 2025-6-19 00:19:56 | 显示全部楼层

单片机和OLED可以统一用3.3V
输入5V可以使用LDO降压到3.3V
SSD1316:
截图202506190018155326.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-06-20 20:42:48
已绑定手机

3

主题

5

回帖

47

积分

新手上路

积分
47
发表于 2025-6-20 20:42:48 | 显示全部楼层
谢谢各位大神的帮助!
我最后决定参照手册12.8的说明,增加一个3.3V的LDO 6206,也没有增加多少PCB空间。希望能一切顺利!
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-28 18:03 , Processed in 0.193376 second(s), 78 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表