I2C BUS是Philips公司推出的一种基于两线的芯片间串行传输总线。I2C总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有最简单而灵活的扩展方法。
I2C总线在标准模式下,数据传输率可达100kbps,高速模式下可达400kbps。目前 I2C 总线被广泛应用于消费了电子产品、通信产品、仪器仪表及工业测控系统中。
在I2C总线上只需要串行数据SDA线和串行时钟线SCL线两条线。
每个器件都有一个唯一的地址以供识别,并工作在主模式或者从模式下,而且各器件都可以作为一个发送器或接收器。
微控制器包含的I2C 发送/接收器都可以选择作为主模式( Master )或从模式( Slave )工 作。但任一时刻 I2C 总线上只允许一个微控制器工作在主模式下,作为主控器;而另一个微控制器必须工作在从模式下,作为被控器。
注:作为主模式,必须内部有时钟,以产生波特率,任何时候只有两个之间进行通信。
I2C总线的特点
1.二线传输
2.无中心主机
3.软件寻址
4.应答式数据传输过程(好处:保证传输过程中数据的稳定和可靠)
5.节点可带电接入或撤出(大概是热插拔的意思)
I2C数据传输
传输的第一个8位数据为寻址字节,包括7位的被控器地址和1位方向位,接着被控器发出A (应答位),紧接着的是主控器与被控器之间数据传输和应答。在数据传输完成后,主控器要发出停止信号。
数据传输格式如图:
分析:在总线上,SCL和SDA是开漏输出,会接上拉电阻,所以空闲的时候是高电平(即开始信号之前),在SCL处于高电平器件,发现SDA的电平由高到低跳变,即产生开始信号;在SCL处于高电平器件,发现SDA的电平由低到高跳变,即产生停止信号;这中间,SCL电平会变化,一般来说,SCL产生上升沿,发送方发送数据,接收方接收数据,SCL产生下降沿时,发送方开始修改SDA上的数据。第9位为应答位,发送方会将SDA总线线释放,由接收方产生应答,SDA总线默认是高电平,若接收方有应答,会强制拉低电平,表示有应答,即应答位低电平有效。
STM32的I2C模块
介绍:
I2C总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。支持标准和快速两种模式,同时与SMBUS2.0兼容。
I2C总线有多种用途,包括CRC码的生成和校验、MBus(System Management Bus)、PMBus(Power Management Bus)。
根据特定设备的需要,可以使用DMA以减轻CPU的负担。
特点:
1、 I2C主设备功能
一产生时钟
一产生起始和停止信号
2、 I2C从设备功能
一可编程的丨2C地址检测
一可响应2个从地址的双地址能力
一停止位检测
3、 状态标志:
一发送器/接收器模式标志
一字节发送结束标志
一 I2C总线忙标志
4、 错误标志
一主模式时的仲裁丢失
一地址/数据传输后的应答(ACK)错误
—检测到起始和停止错位
一禁止拉长时钟功能后的上溢或下溢
I2C接口可以下述4种模式中的一种运行
从发送器模式
从接收器模式
主发送器模式
主接收器模式
默认模式为从模式。接口在生成起始条件后自动从从模式切换到主模式;当仲裁丢失或产生停止信号,则从主模式切换到从模式。
分析:数据往DR寄存器内丢,也可以从DR寄存器读取,当发生一些错误的时候,访问状态寄存器,根据不同的状态在软件中进行不同的操作。
注:DR寄存器实际上有两个,一个用于发送,一个用于接收,物理上是分开的,不会互相干扰。
比较重要的寄存器简介:
I2C_SR1
位7:判断寄存器是否为空,当寄存器为空时,才能继续发送。若不为空,说明DR寄存器内数据还没发完,需要继续等待。
主模式下的发送流程:
分析:
①首先发送一个S位,起始条件。然后会出现一个事件EV5,若发送成功,SB位置1,然后读SR1寄存器的这个位,当这个SB位为1时再将SR1寄存器的地址写入DR寄存器就会清除因该位置1而产生的事件。
②发送一个8位的地址。一个总线上可能有多个器件,首先你得确认你要跟那个器件进行通信,若有应答,就会产生EV6事件,ADDR置1,表示地址发送成功,EV8_1事件,TxE置1,将发送寄存器清空
③发送数据Data。当获得应答A,既然获得应答,肯定发送成功,会产生EV8,TxE置1,清除该事件,以便发送后面新的数据。
④发送停止信号P停止位
注:各种事件的产生改变了 SR 状态寄存器相应的位
主模式下的接收流程:
I2C库函数
上一篇:STM32-(18):SPI与数码管(SPI)
下一篇:STM32-(20):I2C通信(实验:读写EEPROM)
推荐阅读最新更新时间:2024-11-09 18:52
设计资源 培训 开发板 精华推荐
- 使用 LTC2377IMS-18、18 位、500ksps SAR ADC 的典型应用
- EVL6566B-40WSTB、40 W 宽输入范围反激式转换器演示板,用于使用 L6566B 的数字消费设备
- stm32
- TA48S018F 1A 输出电流和 1.8V 低压差稳压器的典型应用,带 ON/OFF 控制开关
- LT1021DCN8-5 精密电压基准的典型应用
- 便携式 3V 差分放大器
- 使用 MaxLinear, Inc 的 SP7606ER-L 的参考设计
- 自带DAPLink的 合宙AIR105-nucleo开发板
- 使用 Analog Devices 的 LTC3526EDC-2 的参考设计
- LEDThermometer:带电源适配器的 LED 室内壁式温度计