找回密码
 立即注册
查看: 3851|回复: 46

8H/8G 的I2C还需要外部上拉电阻吗?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-02-29 15:49:17

15

主题

27

回帖

143

积分

注册会员

积分
143
发表于 2024-1-28 09:26:20 | 显示全部楼层 |阅读模式
手册里说每个IO口都可以使能4K的上拉电阻,讲到I2C的地方也没有强调外部上拉。

那么8G/8H的I2C还需要外部上拉电阻吗?

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5454

积分

版主

积分
5454
发表于 2024-1-28 09:44:12 | 显示全部楼层
实际测试。直接使用IO口的准双向模式也能用,因为内部带了一个比较大的上拉电阻了。
不过对于屏幕类不需要读的应用,可以直接设置强推挽模式,抗干扰更强。如果是准双向发现通讯不稳定,可以使能内部独立的上拉电阻。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-1-28 10:53:29 | 显示全部楼层


I2C, 外部如没加 10K/5K/4K/3K 上拉电阻,
就打开内部上拉电阻
截图202401281052111950.jpg

截图202401281053272984.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2024-1-28 10:54:32 | 显示全部楼层
截图202401281054266190.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:521
  • 最近打卡:2025-05-02 09:38:13

109

主题

1900

回帖

5214

积分

论坛元老

积分
5214
发表于 2024-1-28 14:02:42 | 显示全部楼层
一些旧的型号部分IO口(例如STC89C52的P0)没有上拉,后来的型号都有了,但必须进行配置。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:414
  • 最近打卡:2025-05-02 09:17:58

5

主题

296

回帖

2034

积分

金牌会员

积分
2034
发表于 2024-1-28 19:15:01 | 显示全部楼层
实际测试开启内部上拉电阻就能很稳定
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-02-29 15:49:17

15

主题

27

回帖

143

积分

注册会员

积分
143
发表于 2024-2-13 11:44:13 | 显示全部楼层
  1. #define  HARDIIC_IICX         0x30        //将IIC设置为P3_3,P3_2
  2. #define  HARDIIC_SCL_OUT {P3M0 &= ~0x04; P3M1 &= ~0x04;}  //P3_2准双向IO
  3. #define  HARDIIC_SDA_OUT {P3M0 &= ~0x08; P3M1 &= ~0x08;}  //P3_3准双向IO
  4. void hardiic_init()
  5. {
  6.     HARDIIC_SCL_OUT;                      //开漏输出
  7.     HARDIIC_SDA_OUT;                      //开漏输出
  8.     P3PU |= 0x0c;                         //使能P3_2和P3_3的上拉电阻
  9.     P_SW2 |= HARDIIC_IICX;                  //外设端口切换控制寄存器
  10.     I2CCFG = 0xe0;                  //使能IIC主机模式
  11.     I2CMSST = 0x00;                 //IIC主机状态寄存器清零
  12. }
复制代码


请各位帮忙看看上面的代码。实际测试SCL和SDA的电压是0.5V左右。通信也不成功。

点评

仿真看一下有没有进i2c中断 i2c中断里有没有清除i2cmsst状态寄存器  详情 回复 发表于 2024-2-13 12:17
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5454

积分

版主

积分
5454
发表于 2024-2-13 12:17:00 | 显示全部楼层
Alls*** 发表于 2024-2-13 11:44
请各位帮忙看看上面的代码。实际测试SCL和SDA的电压是0.5V左右。通信也不成功。
...

仿真看一下有没有进i2c中断
i2c中断里有没有清除i2cmsst状态寄存器
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-2-13 13:12:15 | 显示全部楼层
如果用准双向,注意准双向的0变1有两个机器周期的推挽,会不会有不良影响?或者可以加速翻转?
主机从机电压相同开漏+内部4K上拉。
主机5V从机3.3V
开漏+外部3.3V上拉。
主机3.3V从机5V主机改5V供电,STC单片机电源电压范围宽。(谁知道从机能否兼容3.3V,不确定的)

如果从机数量多或通信速度快,示波器看上升沿慢的话,内部4K上拉不够用请加外部上拉,3.3K~1K,具体看波形。
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:453
  • 最近打卡:2025-05-02 08:15:40
已绑定手机

13

主题

1257

回帖

2975

积分

金牌会员

积分
2975
发表于 2024-2-13 14:01:22 | 显示全部楼层
lzl1*** 发表于 2024-1-28 19:15
实际测试开启内部上拉电阻就能很稳定

我的测试结果也是这样的,能提升最大传输速率。

点评

I2C 肯定是 开漏 + 打开上拉电阻/这样拉高的速度可以快些  详情 回复 发表于 2024-2-13 15:16
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:16 , Processed in 0.134967 second(s), 117 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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