IIC相关问题的疑问
问题是:此时SDA线上会是一种什么样的状态?
学习学习。
两个都低当然是低了。
等主机发现通讯错误做错误检测直到对了重新通讯
有没有那种情况会使此时的SDA线上的电平为高。例如主机发送一个高电平的时候,从机返还低电平,此时的SDA线上是一种什么样的状态
IIC总线是开漏的,低电平是驱动到低,高电平是靠上拉的,没有直接驱动到高电平的。
#5 五樓是正解
IIC 是open drain 不會有drive high 的動作
没办法同时发送低电平吧,sda信号线有一个方向信号控制的sda = sda_link ? sda_r:1'bz;当sda_link为1 的时候主机控制sda,sda_link为0的时候,从机控制sda,他两没办法同时控制SDA信号线。不知道理解的对不对
应该是不会,但是如果说你编的主机代码和从机代码有问题,都发送低电平,我就想这是一个什么状态
都发低就位低,一个发低另一个发高应该为不定态吧,不过实际IIC总线好像都是上拉到1的,没有驱动到1这个说法,所以还是为低,个人意见
看从机芯片的电器特性和逻辑设计,2个数字低电平打架,在示波器上很容易看出来,仅此而已,就i2c协议而言,从机此时应该不会有任何动作,因为ack是驱动输出状态,也不会去理会主机是否有发出冲突的电平。
主机在发送完8bit的数据后会释放总线,此时SDA总线为高阻态,此状态下从机可以拉低SDA总线,从而使主机判断有ACK信号,进而通信完成。
IIC 总线协议在设计的时候所有总线采用开楼形式,目的就是为了避免多重驱动冲突
采用的上拉的方式,故不对总线操作就是高,否则则是主动拉低;在应答时主机不对总线操作,从机下拉即可产生应答,如果主机此时也下拉,那么即使从机非应答也会被判断成应答
