找回密码
 立即注册
查看: 888|回复: 41

STC8G的I2C还需要外部上拉电阻吗?

[复制链接]
  • TA的每日心情
    开心
    2024-2-29 15:49
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    8

    主题

    18

    回帖

    94

    积分

    注册会员

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

    那么STC8G的I2C还需要外部上拉电阻吗?

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 121 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2040

    积分

    荣誉版主

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

    使用道具 举报

    该用户从未签到

    552

    主题

    9492

    回帖

    1万

    积分

    管理员

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


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

    截图202401281053272984.jpg

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9492

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    67

    主题

    861

    回帖

    2886

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 135 天

    [LV.7]常住居民III

    4

    主题

    234

    回帖

    898

    积分

    高级会员

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-29 15:49
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    8

    主题

    18

    回帖

    94

    积分

    注册会员

    积分
    94
     楼主| 发表于 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
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 121 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2040

    积分

    荣誉版主

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:55
  • 签到天数: 116 天

    [LV.6]常住居民II

    25

    主题

    304

    回帖

    1053

    积分

    荣誉版主

    Cyber Hamster

    积分
    1053
    发表于 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,具体看波形。
    (=・ω・=)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 110 天

    [LV.6]常住居民II

    10

    主题

    583

    回帖

    926

    积分

    高级会员

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

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

    点评

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-17 20:16 , Processed in 0.099138 second(s), 70 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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