标签:最小 在线 标准模式 数据线 进入 stm32 单片机 接口 通过
对于嵌入式系统来说,其微处理器通常是通用型的,为了满足特殊应用,通常需要扩展一些外设。最常见的扩展方法是采用微控制器的内存映射通过并行总线来扩展这些外设,由于并行总线数量较多,通常还需要译码器电路进行地址分配,这样使得整个系统逻辑结果变得非常复杂。
事实上相当一部分外设并不需要很高的速度。I2C通过数据线(SDA)和时钟线(SCL)两根线来完成数据的传输和外围团见的扩展,器件地址采用软件寻址方式。
I2C的特点总结如下:
数据有效性
I2C总线以串行方式传输数据,时钟线每产生一个时钟脉冲,数据线就传输一位数据;
起始条件和停止条件
I2C总线协议规定:SCL时钟线为高电平且SDA为下降沿表示起始信号,SCL时钟线为高电平且SDA为上升沿表示停止信号。
重复开始信号
在I2C总线上,由主机发送一个起始位开始数据传输,在发送停止位之前,由主机再发送一个起始位,它可以帮助主机在不丧失总线控制权的前提下改变数据传输方向或切换到其他从机通信。
应答信号(ACK)与非应答信号(NACK)
I2C总线协议规定,发送器每发送一个字节的数据,接收器必须产生一个应答信号或非应答信号。实现方法为,发送器发送完8位数据后,第9个时钟信号将数据线置高电平,接收器根据通信状态可以将数据线拉低,产生一个应答信号;或者保持数据线为高电平,产生一个非应答信号。
一般情况下,一个标准的I2C通信由四部分组成:起始信号、从机地址传输、数据传输、停止信号。
I2C通信由主机发送一个起始信号来启动,然后由主机对从机寻址来决定数据传输方向。I2C传输数据的最小单位是一个字节,每发送完一个字节,接受端必须发送一个应答位,如果接受端来不及处理数据,可以通过拉低时钟线来通知发送端暂停数据传输。
I2C总线寻址约定
I2C总线采用了独特的寻址约定,规定了起始信号后的第一个字节为寻址字节,用来寻址被控器件,并规定数据传输方向。目前I2C支持7位寻址模式和10位寻址模式。
在7位寻址模式中,寻址字节由从机的7位地址位和以为读写位(D0)组成,当读写位=0时,表示从下一个字节起主机将数据传送给从机;当读写位=1时,表示主机从下一个字节起从从机读取数据。
主机作为被控器时,其7位地址在I2C总线地址寄存器给出,为纯软件地址;而非单片机类型的外围地址完全由器件类型和引脚电平给定。
数据传输模式
I2C 主模式
通过START位在总线上产生起始条件,设备就进入了主模式。为了使用I2C模块,需要编程 I2C_CR1 寄存器使能外设模块,在I2C_CR2 寄存器中设定该模块的输入时钟以产生正确的时序。标准模式下至少为:2MHz,快速模式下至少为:4MHz
标签:最小 在线 标准模式 数据线 进入 stm32 单片机 接口 通过
原文地址:https://www.cnblogs.com/lunar-ubuntu/p/13924557.html