在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2266|回复: 3

[求助] 求问 关于 inout管脚相连问题

[复制链接]
发表于 2014-5-16 21:56:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
现在要实现  将一个I2C分成两路同样同时的I2C。 输入记为I2C_CLK_IN, 和 I2C_SDA_IN,两路输出记为 I2C_SCL0,I2C_SDA0 和 I2C_SCL1 , I2C_SDA1.  现在先考虑写slave。   
关于I2C_SCL0,1 我是这么实现的 assign I2C_SCLx = I2C_SCL_IN 这个结果没问题。
但是对于SDA有问题,我是这么实现的:
assign I2C_SDAx=(!oe)?I2c_SDA_IN:1'bz;
assign I2C_SDA_IN =(oe)?sda_out:1bz;
其中oe是在I2C发送每个byte之后设置为1.
sda_out 也在同时 sda_out <= i2c_sda0;

但是这样之后,发现I2C_SDA0 并不等於I2C_SDA_IN, 而是高电平,不知道为何

实现主要代码是这样的:

assign i2c_sda_in = (oe)?sda_out:1'bz;

assign i2c0_scl = i2c_scl_in;
assign i2c0_sda = (!oe)?1'bz:i2c_sda_in;
//


assign i2c1_scl = i2c_scl_in;
assign i2c1_sda = (!oe)?1'bz:i2c_sda_in;
//



其中  oe 是:

     
if(sck_rise &(data_cnt < 8))begin

reg_data_in <= {reg_data_in[6:0],sda_in};

data_cnt <= data_cnt + 1'b1;

end  
     else if(sck_fall &(data_cnt ==8)) begin
           if ((reg_data_in == 8'h01)&(sensor_tos_rw == 2'b01))
                  is_config_st <= 1'b1;
          else
               is_config_st <= 1'b0;                     
            oe <= 1'b1;
            sda_out <= 1'b0;
            data_cnt <= data_cnt+1'b1;

     end
发表于 2014-5-17 11:30:57 | 显示全部楼层
建议使用 MOS管或专用来搭建双向桥,用FPGA实现难度太大。
 楼主| 发表于 2014-5-17 12:12:05 | 显示全部楼层
回复 2# everhappy


    板子已经弄好了,现在已经无法改变了,只能用FPGA搭了
 楼主| 发表于 2014-5-17 12:17:56 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-23 04:08 , Processed in 0.027586 second(s), 24 queries , Gzip On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表