Allspace 发表于 2024-1-28 09:26:20

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

手册里说每个IO口都可以使能4K的上拉电阻,讲到I2C的地方也没有强调外部上拉。

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

王昱顺 发表于 2024-1-28 09:44:12

实际测试。直接使用IO口的准双向模式也能用,因为内部带了一个比较大的上拉电阻了。
不过对于屏幕类不需要读的应用,可以直接设置强推挽模式,抗干扰更强。如果是准双向发现通讯不稳定,可以使能内部独立的上拉电阻。

神农鼎 发表于 2024-1-28 10:53:29



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




神农鼎 发表于 2024-1-28 10:54:32


xxkj2010 发表于 2024-1-28 14:02:42

一些旧的型号部分IO口(例如STC89C52的P0)没有上拉,后来的型号都有了,但必须进行配置。

lzl1okOK 发表于 2024-1-28 19:15:01

实际测试开启内部上拉电阻就能很稳定

Allspace 发表于 2024-2-13 11:44:13

#defineHARDIIC_IICX         0x30      //将IIC设置为P3_3,P3_2
#defineHARDIIC_SCL_OUT {P3M0 &= ~0x04; P3M1 &= ~0x04;}//P3_2准双向IO
#defineHARDIIC_SDA_OUT {P3M0 &= ~0x08; P3M1 &= ~0x08;}//P3_3准双向IO

void hardiic_init()
{
    HARDIIC_SCL_OUT;                      //开漏输出
    HARDIIC_SDA_OUT;                      //开漏输出
    P3PU |= 0x0c;                         //使能P3_2和P3_3的上拉电阻
    P_SW2 |= HARDIIC_IICX;                  //外设端口切换控制寄存器
    I2CCFG = 0xe0;                  //使能IIC主机模式
    I2CMSST = 0x00;               //IIC主机状态寄存器清零

}


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

王昱顺 发表于 2024-2-13 12:17:00

Allspace 发表于 2024-2-13 11:44
请各位帮忙看看上面的代码。实际测试SCL和SDA的电压是0.5V左右。通信也不成功。
...

仿真看一下有没有进i2c中断
i2c中断里有没有清除i2cmsst状态寄存器

DebugLab 发表于 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,具体看波形。

21cnsound 发表于 2024-2-13 14:01:22

lzl1okOK 发表于 2024-1-28 19:15
实际测试开启内部上拉电阻就能很稳定

我的测试结果也是这样的,能提升最大传输速率。
页: [1] 2 3 4 5
查看完整版本: 8H/8G 的I2C还需要外部上拉电阻吗?