目录
一、简单了解
- 异步时序的好处就是省一根时钟线、节省资源缺点是对硬件电路的依赖性比较严重
- 同步时序的好处是对时间要求不严格,对硬件电路依赖性低,在一些低端单片机,没有硬件资源的情况下,也很容易使用软件来模拟时序,缺点是多一根时钟线
- SCL数据线满足要使用同步的时序,降低对硬件的依赖,同时同步的时序稳定性也比异步时序更高
- 只有一根SDA数据线,变全双工为半双工,一根线兼具发送和接收,最大化利用资源
- 支持总线挂载多设备
- 一主多从(绝大数):单片机作为主机,主导I2C的运行,挂载在I2C总线上的所有外部模块都是丛机,丛机只有被主机点名之后才能控制I2C总线,不能在未经允许的情况下去碰I2C总线,防止冲突
- 多主多从:在总线上任何一个模型都成为主机,但是,同一时间只有一个主机,在此模式下,还要进行时钟同步
二、如何实现功能
2.1、硬件电路(一主多从)
- 左边CPU就是我们的单片机,作为总线的主机,主机的权利很大,包括对SCL线的完全控制,任何时候都是主机完全掌握SCL线,另外在空闲状态下,主机可以主动发起对SDA的控制,只有在丛机发送数据和丛机应答的时候主机才会转交SDA的控制权给丛机
- 下面的模块是从机,对于SCL时钟线,在任何时候都只能被动的读取,丛机不被允许控制SCL线,对于SDA数据线,丛机不被允许主动发起对SDA的控制,只有在主机发读取丛机的命令或者丛机应答的时候丛机才能短暂取得SDA的控制权
- 因为主机拥有SCL的绝对控制权,所以主机的SCL可以配置成推挽输出,所有丛机的SCL都配置成浮空输入或者上拉输入,数据流向是,主机发送,所有所有丛机接收。
- 在SDA这条线上,因为主机和丛机都会有输入输出的情况,为了避免短路的情况发生,I2C的设计是禁止所有设备输出强上拉的高电平,采用外置弱上拉电阻加开漏输出的电路结构,这样的电路结构好处:1、避免出现短路的情况。2、避免引脚模式的频繁切换,开漏加弱上拉的模式同时兼具了输入和输出的功能,如果想要输出,就让引脚处于浮空或下拉状态对应高低电平要是输入直接观察总线电平的高低。3、这个模式会有线于,只要有任意一个或多个设备输出了低电平总线就处于低电平,只有所有设备都输出高电平总线才处于高电平