两个不同的芯片之间用IIC通信,如何实现?

A做主给B发数据,然后B也可以做主给A发送数据,这个能实现吗?具体怎么分配时钟,地址?
2026年09月27日 16:57
有1个网友回答
网友(1):

IIC分主从,据我所知,从机不能主动发数据给主机(我也没查过这些资料,我就按我所知道和接触过的说)。IIC一般是2根线,主机不断控制CLK的翻转,这就是通讯频率,翻转一次,就通过SDA传一个数据(0或1).
主机写数据到从机:起始+地址+读写命令+地址+数据+数据+数据+...+结束信号。
从机:检测到起始+读地址+判断到写命令+读取地址+读取n个数据(n>0)+结束信号
主机读从机数据:起始+地址+读写命令+地址
从机:检测到起始+读地址+判断到写命令+读取地址+控制SDA发送数据+直到检测到结束信号
起始后7个数据是地址,第8个是读写标志。
如果是写,表示下面SDA由主机控制,从机读SDA的状态。
如果读,表示下面主机只控制CLK的信号翻转,从机在每次翻转时候,将数据写入SDA,主机来读。从机一直到发现新的起始信号活着结束信号方才结束本次通讯。
总的来说:
主机控制时钟频率(SCK翻转频率,可以不均匀)。
主机先写,告诉从机下面要干嘛(写/读)。