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总线的物理连接如下图:

wKgaomRHMiuAJiZ1AAFCzFaaXMk575.jpg

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

②IIC总线协议与读写操作

wKgZomRHMiuABQVPAAB673MwkaE255.jpg

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

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

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

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

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

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

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

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

wKgaomRHMiyATB1FAAAcPJmFsxU058.jpg

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

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

wKgZomRHMiyAKXDoAAAkzK4W93g109.jpg

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

③STM32 IIC控制器介绍

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

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

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

wKgaomRHMi2AG_D2AAJkjKYFaiw398.jpg

引脚对应表:

wKgaomRHMi2AEdi2AACXiu1X8uc847.jpg


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。