STM32的IIC通信原理详解

描述

本文将介绍STM32 IIC的通信原理和协议

①IIC总线简介

②IIC总线协议与读写操作

③STM32 IIC控制器介绍

①IIC总线简介

IIC是inter integrated circuit的简称,IIC是由PHILIPS公司开发的两线式串行总线;该总线具有接口线少、易于控制、通讯速率高等有点,在微电子控制领域被广泛使用。

IIC总线具备以下特征:

1、同步通信,半双工,以字节为传输单位;

2、两条线路、SDA和SCL;

3、挂载在IIC总线上的设备均可为主设备、亦可为从设备;

4、具有3种传输速率,最高可达3.4Mbit/s;可通过总线时钟的频率和总线上拉电阻来配置传输速率;

5、多主机功能、7位和10位地址模式、可以软件复位、1字节缓冲带DMA功能;

IIC总线的物理连接如下图:

通信原理

SDA和SCL总线上会有上拉电阻,总线上可以挂在一定数量的设备通过总线进行通讯、当总线空闲时总线上处于高电平。

②IIC总线协议与读写操作

通信原理

IIC总线协议包括:起始信号、终止信号、数据、应答部分;

起始信号:当总线处于空闲状态时SDA SCL两根线上是高电平,若此时SDA由高变低、则定义为起始信号;

终止信号:当SCL处于高电平时,若此时SDA由低变高、则定义为终止信号;

起始信号、终止信号顾名思义是通信的开始和终止,这两个信号都有主设备发起;

数据:可分为地址数据、和真实意义上的地址内存储的数据;

应答:应答可以有应答信号和非应答信号,该信号是跟在数据后面;

若主设备向从设备写1个数据会有以下过程:

起始信号>从机地址+写位ACK>写入地址ACK>写入数据ACK>终止信号

通信原理

若主设备向从设备读1个数据会有以下过程:

起始信号>从机地址+写位ACK>要读的地址ACK>起始信号>从机地址+读位ACK>地址内的数据NACK>终止信号

通信原理

若读多个数据就是“从机地址+读位ACK>地址内的数据NACK”重复几次

③STM32 IIC控制器介绍

STM32这种芯片是具有IIC控制器的,这样可以通过硬件产生IIC时序;但有些简单的单片机就可能没有IIC控制器,那我们如何与IIC设备通讯呢?答案就是软件模拟IIC时序,软件模拟IIC时序相比更加操作繁琐、效率低。

STM32的IIC片上外设是用来专门实现IIC通讯协议的,我们只要配置好该外设,就可以产生通讯信号、收发数据并缓存起来,CPU检测外设的状态和访问数据寄存器就能完成数据的收发,这样减轻了CPU的工作负担、使得软件设计的效率提高。

以下是STM32 IIC控制器的框图:

通信原理

引脚对应表:

通信原理

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分