|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
大家好,最近正在做关于I2C的工作。有问题请高人指点
首先我将一段读SMB传感器的C代码嵌入Nios,通过I2C_Master,可以从传感器SMB得到数据。(即用软件代码通过I2C_Master,从硬件SMB传感器中读取数据)证明I2C_Master能正常工作。
由于速度的要求,现在的任务是将这段C代码转换为Verilog(即用硬件实现,不用再嵌入Nios中)
此硬件电路(CIS)发送寄存器地址和数据给 i2c_Master, 之后Master将数据通过scl 和sda,传给传感器SMB(Slave),之后从传感器SMB获得所需要的数据, 如下图所示
CIS的clk是1MHz, I2C_Master的clk是50MHz, 产生的SCL是1MHz,即CIS和SMB的Clk相等。
问题是这样的,通过Signal TapII 可以看到,I2C_Master正确传输了8 数据Bits,但是在第9个SCL时并没有从Signal TapII得到正确的相应。
按理说Slave得到8个bits之后,应该将SDA线拉低(0)表示已经接受。但是从Signal TapII看到的是1.
请高人指点, 为什么Slave不能正确响应???
谢谢 |
|