STM32中的IIC

IIC简介

I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL 。

IIC总线上可以挂很多设备:多个主设备,多个从设备(外围 设备)。

多主机会产生总线裁决问题。当多个主机同时想占用总线时,企图启动总线传输数据,就叫做总线竞争。I2C通过总线仲裁,以决定哪台主机控制总线

IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。对于并联在一条总线上的每个IC都有唯一的地址。

一般情况下,数据线SDA和时钟线SCL都是处于上拉电阻状态。因为:在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。

I²C 总线的概念

1)、假设微控制器A 要发送信息到微控制器B:

• 微控制器A(主机)寻址微控制器B(从机)

• 微控制器A(主机---发送器)发送数据到微控制器B(从机---接收器)

• 微控制器A 终止传输

2)、如果微控制器A 想从微控制器B 接收信息:

• 微控制器A(主机)寻址微控制器B(从机)

• 微控制器A 主机接收器从微控制器B 从机发送器接收数据

• 微控制器A 终止传输

甚至在这种情况下,主机(微控制器A)也产生定时而且终止传输。

IIC总线的通信过程

1>主机发送起始信号启用总线

2.>发送一个字节数据指明从机地址和数据方向

3>被寻址的从机发送应答信号回应主机

4>发送器发送一个字节数据

5>接收机器发送应答信号,回应发送器

(发送多个字节数据..... 4 . 5 循环)

6>通信完成主机发送停止信号释放总线

起始信号和停止信号

起始信号:SCL 为高电平时,SDA由高变低

停止信号:SCL 为高电平时,SDA由低变高

应答和非应答信号

ACK:在第九个时钟周期,SCL处于高电平期间,接收机将SDA拉低

NACK:在第九个时钟周期,SCL处于高电平期间,接收机未将SDA拉低(拉高)

发送器每发送一个字节(8个bit),就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。

  • 应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节;
  • 应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

数据传输(SCL低送高取)

在SCL为低电平期间,把数据送到SDA数据线上

在SCL为高电平期间,SDA数据线保持稳定(保持不变)

主机写数据给从机

1>主机发送起始信号

2>主机发送从机设备地址+写的标记(0)

3>主机等待应答信号

4>主机发送一个字节数据

5>主机等待应答信号

....4 5 循环

6>主机发送到最后一个字节数据

7>主机可以等待应答或者不应答信号

8>主机发送停止信号

主机从从设备读取数据

1>主机发送起始信号

2>主机发送从机设备地址+读的标记(1)

3>主机等待应答信号

4>主机接收一个字节数据

5>主机产生应答信号

....4 5 循环

6>主机接收到最后一个字节数据

7>主机不产生应答信号

8>主机发送停止信号

相关推荐
代码游侠11 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
xuxg200514 小时前
4G 模组 AT 命令解析框架课程正式发布
stm32·嵌入式·at命令解析框架
CODECOLLECT15 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen16 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠18 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_18 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技21 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计21 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
風清掦1 天前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报1 天前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机