I2C总线协议总结

前言

I2C总线在硬件形式由有两根线组成SDA,SCL,是一种流行且强大的总线,适用于一主多从的场景,比如一个单片机挂载传感器,eeprom, adc等,如下图(图片源自网络)所示

电气特性

I2C总线使用的开漏的电气结构,这种结构可以有两种动作,释放总线,或者接地,也就是控制器可以将总线电压到地,也可以释放总线以允许上拉电阻拉高总线,因为高电平是由外部拉高的,没有设备能主动输出高电平,因此不会出现两个引脚一个高一个低造成短路,最多就是外部的高通过上拉电阻限流通过mos接地,单片机可以利用这个机制,比如先释放,再读取电平,如果释放总线的时候外部有器件拉低了电平,这时候读到的是总线被外部设备占用的状态也就是总线繁忙。

传输协议

I2C总线总是由主机发起,主机在传输的数据里包含从机的地址,每个处于I2C总线上的从设备均有独有的设备地址。

主机发送写到从机时

首先发送start标志+地址位7bit+读写位1bit, 然后从机给返回ACK, 接下来类似的流程发送寄存器地址,和要写的数据。

主机发送读到从机时

与主机发送写到从机有些类似,但是多了一个额外的步骤,那就是要写一遍,要读的寄存器发送start标志+地址位7bit+读写位1bit置0代表写,随后再发一个要读的字节要读的寄存器发送start标志+地址位7bit+读写位1bit置1代表读,然后才能接收。

驱动

一般来说单片机都内置I2C总线,使用内部的I2C个人感觉稳定性,功耗方面比单纯的模拟I2C,效率要高,个人的一点间接,具体应用的例子,等再发几篇读写传感器或者eeprom的文章吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flintlovesam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值