芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 5368|回复: 1

【个人笔记】I2C调试心得

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 423

    主题

    782

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    15854
    QQ
    发表于 2019-6-1 21:11:56 | 显示全部楼层 |阅读模式
    对于I2C总线,总线上所有的高电平应该是由上拉电阻上拉达到效果的,而非由主机主动输出高电平实现,所以对于I2C总线上的所有器件的SCLK和SDA,都应该避免之计输出高电平和低电平。

    下述这种写法是错误的,i2c_sdat不应该有输出高电平的时刻。
            assign i2c_sdat = i2c_sdat_oe?i2c_sdat_o:1'bz;

    应该改为:
            assign i2c_sdat = (i2c_sdat_oe && !i2c_sdat_o):1'b0:1'bz;


    同理,i2c_sclk也不应该直接输出高电平,应该由上拉电阻实现,也需要将其设置为inout模式。

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-1-26 21:41
  • 16

    主题

    41

    帖子

    273

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    273
    发表于 2019-6-1 21:41:27 | 显示全部楼层
    功能:
    1、支持多字节地址器件
    2、支持读写多字节数据
    基于书本代码改进后的I2C代码
    1、代码上进行了优化,去掉了halfbit_cnt等
    2、对sda信号修改,只输出0,不直接输出1,靠上拉为1
    3、仿真支持挂在多设备,不同地址长度的设备可挂在一个总线上
    4、原模型24LC04B有问题,缺少器件地址的校对,对比24LC64发现的,已更改

    I2C.v

    13.41 KB, 下载次数: 396

    24LC04B.v

    22.75 KB, 下载次数: 334

    24LC64.v

    26.31 KB, 下载次数: 358

    I2C_tb.v

    4.98 KB, 下载次数: 342

    回复 支持 1 反对 0

    使用道具 举报

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

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-4-25 08:29 , Processed in 0.325889 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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