我的理解是,读数据的时候,是从机控制总线,因此必须提前把sda释放(也就是拉高)。否则从机将不能改变总线。sda为1后,主机控制scl=1,然后,从机根据自己要发送的数据选择将sda置为1或0(即在scl=1时,从机改变sda)。
而在发送数据时,主机控制总线,在scl=0时,sda被主机改变;scl=1时,sda不变,并被从机读取。(scl=0时,主机改变sda)
应答时,相当于读取一位数据,同样是在scl=1时,由从机改变sda。
而起始、结束时,是由 主机 控制sda。在scl为1时,sda的任何改变都将被视为起始、终止信号。
个人理解,如有错误请赐教!
ps 当然也可以理解为 在读取时仍然是在scl=0时,从机改变sda,不过也不影响逻辑,怎样容易怎样理解呗
不是的,他无法判断你从哪读取,
读数据,首先为起始信号-》从地址(最后一位为W写)-》重复起始信号
-》从地址(最后一位为R读)-》存放的寄存器地址或读的数据地址->
读到的数据。
这么个过程。不懂的可以接着问。
建议好好看下IIC时序图就明白了
以上就是关于关于iic总线。看过很多资料,很多都相互矛盾。在主机读取数据之前,是否需要拉高sda=1问题很长,看补充全部的内容,包括:关于iic总线。看过很多资料,很多都相互矛盾。在主机读取数据之前,是否需要拉高sda=1问题很长,看补充、IIC数据读取问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)