关于stm32IIC通信协议的简单总结(小白总结文系列二)

本文详细介绍了IIC(集成电路总线)通信协议,包括其物理特性、功能框图解析、协议层的重点内容,如起始和终止信号、数据信号以及四种通信模式。此外,还探讨了IIC结构体和常用函数,以及IIC通信历程中的硬件配置代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IIC 通信协议详解

IIC(Inter-Integrated Circuit BUS) 集成电路总线。

1,物理层:

设备之间连接方式

IIC的物理特性:

1)IIC通信在控制上是一主多从的模式。

2)IIC由sda/scl两条通信线构成。

scl是串行时钟线,用来控制通讯的时钟频率实现数据收发同步;sda是双向串行数据线,用来控制协议中数据的传输。

3) 总线上拉电阻接到电源。I2C 设备空闲时,输出高阻态,当所有设备都空闲,总线呈现高电平状态。

 

4)总线上每个设备都有自己的地址,设备的地址可以进行重置。根据地址不同,可以实现选择不同设备进行通信。

6)当多个主机同时使用总线时,利用仲裁方式决定由哪个设备占用。

5)根据IIC传输数据的速度,分为三种传输模式:

标准模式传输速率为 100kbit/s

快速模式为 400kbit/s

高速模式  3.4Mbit/s(但目前大多 I2C 设备尚不支持高速模式)

2,IIC的功能框图解析:

逻辑控制接收dma请求,应答信号以及中断的响应处理。对应相关状态控制寄存器,控制寄存器;

时钟控制寄存器控制scl时钟线的频率;

sda线实现数据 的接收和发送:

接收:数据通过数据移位寄存器转移到数据寄存器,如果接收的数据是地址,需要与设备本身存储的地址进行对比。

发送:数据从数据寄存器转移到数据移位寄存器,发送到sda总线上。

3,协议层(重点):

起始信号:scl高电平时,sda由高电平变低电平产生一个起始信号;

终止信号:scl高电平时,sda由高低平变高电平产生一个终止信号;

数据信号:scl为高电平的时候,sda低电平是数据0,sda为高电平的时候是数据1;

IIC通信的4种模式:

● 从发送器模式

● 从接收器模式

● 主发送器模式

● 主接收器模式

iic四种模式时序图分析(都以七位地址为例)

从发送模式时序图:

主start->主发送写地址->从ack->等待ev1/ev3-1/ev3->从发送数据1->主ack->等待ev3->………->从发送数据n->主nack->等待ev3-2->主stop

主start->主发送读地址->从ack->等待ev1->主发送数据1->从ack->等待ev2->………->主发送数据n->从ack->等待ev2->主stop->等待ev4

主start->等待ev5->主发送写地址->从ack->等待ev6/ev8-1->主发送数据1->从ack->等待ev8->………->主发送数据n->从ack->等待ev8-2->主stop

主start->等待ev5->主发送读地址->从ack->等待ev6->从发送数据1->主ack->等待ev7->…从发送数据n-1->主ack->等待ev7-1->从发送数据n->主nack->等待ev7->主stop

 

注意:始和终止信号都是由主机发出的,连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。

4,IIC结构体和常用函数:

typedef struct

{

  uint32_t I2C_ClockSpeed;          /*!< Specifies the clock frequency.

                                         This parameter must be set to a value lower than 400kHz */

  uint16_t I2C_Mode;                /*!< Specifies the I2C mode.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值