在这之前先说一下串口
TX发送数据,RX接收数据,并且要接地,两者都有自己的时钟,因为没有时钟线,属于异步通信,并且是全双工,就是两者可以同时发送数据,同时接收数据
I2c
他有两根线,一个是时钟线(SCL),一个是数据线(SDA),数据线用来传输数据,因为有时钟线,所以他是同步通信,并且是半双工,指的是在同一时间,只能有一个机子发数据,类似于对讲机
可以挂载很多从机,根据从机的地址,主机可以选择和谁发送数据,i2c最多可以挂载127个从设备,I2C协议默认采用的是开漏输出,即只能输出低电平
所以要怎么解决呢?
接上拉电阻
当主机没输出的时候,默认处于高电平,因为可以认为3.3v传递过来.
I2C发送数据
发送的时候是一个字节一个字节发送
假如要发送的数据为10010101
1.默认为高电平
2.SCL保持高电平,SDA下降沿,开始发送标志
3.发送数据1,SCL低电平,SDA变化,高电平发送
4.同理发送其他数据
5.给应答信号,比方说给个低电平,表示确认收到
6.结束发送
SCL为高电平,SDA从给上升沿,结束