CH03-06-STM32F40x的I2C通信模块原理.pptx
《CH03-06-STM32F40x的I2C通信模块原理.pptx》由会员分享,可在线阅读,更多相关《CH03-06-STM32F40x的I2C通信模块原理.pptx(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统设计原理STM32F40 x的I2C通信模块原理主讲人:赖树明东莞理工学院05I2C总线控制与应用作业01I2C总线介绍02I2C总线时序03I2C总线时序编程04FT5206触摸屏驱动示例0101I2C总线介绍总线概述总线物理拓扑结构总线通信原理总线特征I2C总线与UART比较I2C总线介绍 总线概述01I2C 又称IIC,即Inter-Integrated Circuit(内部集成电路)。I2C总线是PHLIPS公司推出的一种串行同步通信总线。I2C总线有两根双向信号线,一根数据线SDA,另一根时钟线SCL。简介I2C 总线应用非常广泛,尤其在传感器类芯片中,如温度湿度传感器、光
2、强传感器,触摸屏传感器、加速度传感器。应用I2C总线介绍 总线物理拓扑结构01拓普结构主从结构,一条总线并联多个设备,任何一时刻,只能有一个是主机,其他是从机。总线上每个从机都有一个惟一的设备地址,用于供主机寻址。通信只能由主机发起,主机对总线具备有绝对的控制权。IIC设备的接口内部是开漏输出,无法输出高电平,在硬件设计中,SDA,SCL线必须有上拉电阻,通过上拉电阻实现高电平输出,上拉电阻一般在4.7K100K之间。I2C总线介绍 总线通信原理01数据传输主机发送起始信号发送从机地址,并指明操作类型(读或写)方向位:1表示读数据,0表示写数据。等待从机发送应答信号。传输数据:如果是写操作则主
3、机发送数据,如果读操作,则主机接收数据。应答周期:如果是写操作,则从机发送应答,如果是读操作,则主机发送应答。数据传送完毕后,主机发送停止总线信号。数值传递时先发送数据高位,再发送数据低位。传输说明I2C总线介绍 总线特征01通信只能由主机主动发起,主机对通信过程具备绝对的控制权。I2C总线数据传输速率:标准模式可达 100kbit/s(所有器件都支持);快速模式可达 400kbit/s(大部分器件支持)高速模式可达 3.4Mbit/s(少量新型器件支持)数据传输只能以字节(8位)为单位进行数据传输,先发送高位,再发送低位。同一时刻只能有一个设备是主设备,其他都是从设备,从设备地址是唯一的。通
4、常MCU设备作为主设备,其他作为从设备(有多个MCU时总线会自动仲裁)。I2C设备地址有两种:7位地址和10位地址,其中7位地址的器件较常见。同一条总线上可以同时有7位地址设备和10位地址设备共存。重要特征I2C总线介绍 总线特征01设备地址组成:由固化地址和可编程地址构成:固化地址:芯片出厂就固定了;可编程地址:由使用都硬件设计或软件配置决定的。示例:At24C02芯片设备地址:地址7位:高4位是固定为1010,这部分地址称为固化地址 低3位是:A2A0,可编程地址,由硬件设计决定一条总线上可挂载的设备数量:理论上,只要能保证每个从设备地址惟一,7位地址模式可以挂载127个设备,10位地址挂
5、载1023个设备(0不能用于设备地址),但是I2C总线上可挂接的设备数量受总线最大电容 400pF 限制。思考:一条总线可以接多少个AT24C02?8个!重要特征I2C总线介绍 I2C总线与UART比较01特征对比名称IIC总线UART通信方式同步、半双工异步、全双工数据位长度8位58位通信速度标准三种模式(实际上也要可以是极限速度下任何一个速度)很多种(但是一般都有固定的速度)结构主从设备通信不分主设备与从设备0202I2C总线通信时序起始和停止条件应答和非应答信号三种通信过程时序波形I2C总线通信时序 起始和停止条件时序02空闲状态:不进行数据传输时SDA和SCL状态,都维持高电平。起始条
6、件:SCL为高电平期间,SDA线由高到低电平,SCL线为低电平。停止条件:SCL为高电平期间,SDA线由低电平到高电平。时序描述时序波形I2C总线通信时序 应答和非应答信号02起始条件+8位数据(高位在前)+应答/非应答信号+停止条件。数据位:SCL线为低电平准备数据,SCL线为高电平采集数据。应答/非应答信号:在每传输1字节后,跟随一个应答位:SCL高电平期间,低电平表示应答信号,高电平表示非应答信号。应答信号/非应答信号是由接收方发出,发送方检测。时序描述主机写操作I2C总线通信时序 三种通信过程02主机:1)发送起始条件 2)发送7位地址数据(高位在前)+写方向;3)检测从机发的 应答/
7、非应答信号;4)有应答时开始发送1字节数据;5)检测从机发的应答/非应答信号;6)循环执行4,5两步 发送数据;7)发送停止条件,终止本次通信时序描述主机读操作I2C总线通信时序 三种通信过程02主机:1)发送起始条件 2)发送7位地址数据(高位在前)+读方向;3)检测从机发的 应答/非应答信号;4)有应答时开始接收1字节数据;5)发应答信号给从机(不需要更多数据时发送非答应信号);6)循环执行4,5两步 接收数据;7)发送停止条件,终止本次通信时序描述主机读写切换I2C总线通信时序 三种通信过程02IIC总线允许读/写过程中不停止总线而直接重新发送起始条件,来切换读/写操作,或重启总线重复原
8、来的读写操作。时序描述0303模拟I2C总线时序编程初始化函数起始条件实现停止条件实现发送应答信号实现接收应答信号实现发送一个字节数据接收一个字节数据void IIC_GpioInit(void)RCC-AHB1ENR|=(1 MODER&=(3 MODER|=(1 OTYPER|=(1 MODER&=(3 MODER|=(1 OTYPER|=(1 PUPDR&=(3 PUPDR|=(1 BSRRL =1BSRRH=1BSRRL =1BSRRH=1IDR&19)代码实现宏定义GPIO配置时序波形void IIC_Start(void)SCL_H();/刚开始,IIC总线为高电平 SDA_H()
9、;/刚开始,IIC总线为高电平 iic_delay();/起始信号的建立时间 SDA_L();/产生下降沿 iic_delay();/起始信号的保持时间 SCL_L();/为后面数据传输做准备相关操作模拟I2C总线时序编程 起始条件实现03SCL_H():拉高SCL线的宏调用SCL_L():是拉低SCL线的宏调用SDA_H():是拉高SDA线的宏调用SDA_L():是拉低DA线的宏调用iic_delay:是满足I2C时延要求的函数代码实现时序波形void IIC_Stop(void)SDA_L();/拉低SDA线 SCL_H();/时钟线准备为 高电平 iic_delay();/停止信号的建立
10、时间。SDA_H();/拉高数据线,产生上升沿。iic_delay();/延时相关操作模拟I2C总线时序编程 停止条件实现03SCL_H():拉高SCL线的宏调用SCL_L():是拉低SCL线的宏调用SDA_H():是拉高SDA线的宏调用SDA_L():是拉低DA线的宏调用iic_delay:是满足I2C时延要求的函数代码实现时序波形/ack 0:表示应答;1:表示非应答void IIC_send_ack(u8 ack)ack?SDA_H():SDA_L();iic_delay();/延时 SCL_H();/稳定数据线数据 iic_delay();/延时 SCL_L();/拉低模拟I2C总线时
11、序编程 发送应答信号实现03相关操作SCL_H():拉高SCL线的宏调用SCL_L():是拉低SCL线的宏调用SDA_H():是拉高SDA线的宏调用SDA_L():是拉低DA线的宏调用iic_delay:是满足I2C时延要求的函数时序波形/*备注:返回:0表示应答,1表示非应答*/u8 IIC_check_ack(void)u8 is_ack=0;SCL_L();/让从设备准备数据 SDA_H();/释放SDA线的控制权 iic_delay();/延时 SCL_H();/稳定SDA线数据 is_ack=RD_SDA();/读数据 iic_delay();SCL_L();/完整周期 return
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CH03 06 STM32F40x I2C 通信 模块 原理
限制150内