打印
[CPLD]

CPLD实现I2C透传

[复制链接]
4198|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiangtao123|  楼主 | 2017-5-28 14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CPLD/FPGA实现I2C的透传,使用三态门,那么SDA的方向应向该如何确定?
assign SCL_OUT = SCL_IN;

wire mid;
assign mid = dir?1'bz:SDA_IN;  //dir为0的时候,SDA_IN
wire mid1;
assign mid1 = dir?SDA_OUT:1'bz;  //为1的时候,SDA_OUT

assign SDA_IN = mid1;
assign SDA_OUT = mid;


那个dir如何确定呢?

相关帖子

沙发
ar_dong| | 2017-5-30 10:24 | 只看该作者
方法1,监听i2c通讯,这样你就知道什么时候是输入,什么时候是输出

使用特权

评论回复
板凳
ar_dong| | 2017-5-30 10:31 | 只看该作者
方法2,i2c只输出0,不输出1,1由外部上拉电阻实现
两面都作为输入,
当哪面先接到0时,对面做输出0
收到0的那一端收到了1时,两面都恢复为输入
延时一段时间再进行判断

使用特权

评论回复
地板
linqing171| | 2017-6-2 12:58 | 只看该作者
第一种方法的成帧,解析frame的前提是master完全按照协议来,而且不考虑复杂的情况。这个不建议用。
然后第二种方法,收发转换的时候,源端输出0,目的端也输出0,源端撤销了,目的端的0仍然在,然后才开始转发目的端到源端。因为中间必须流出300ns左右的时间,所以这个转发的时间会变长。

使用特权

评论回复
5
OverMountain| | 2017-6-11 13:06 | 只看该作者

使用特权

评论回复
6
宝挖小子| | 2019-11-6 23:00 | 只看该作者
同问,楼主详细的FPGA代码能贴一下吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝