【STM32】STM32学习笔记-I2C通信协议(31)

00. 目录

文章目录

    • [00. 目录](#00. 目录)
    • [01. I2C简介](#01. I2C简介)
    • [02. I2C主要特点](#02. I2C主要特点)
    • [03. I2C硬件电路](#03. I2C硬件电路)
    • [04. I2C时序基本单元](#04. I2C时序基本单元)
    • [05. I2C时序波形图](#05. I2C时序波形图)
    • [06. 附录](#06. 附录)

01. I2C简介

I2C(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。

串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s,快速模式下可达 400kbit/s,高速模式下可达 3.4Mbit/s。

I2C是一个多主机的总线,每个设备既可以当主控器或被控器,又可作为发送器或接收器,一条总线上可以有多个主机,但同一时刻只允许一个主机工作。

可以用来连接存储器(EEPROM、FLASH)、A/D、D/A转换器、LCD驱动器、传感器等等。

I2C一共有只有两个总线: 一条是双向的串行数据线SDA,一条是串行时钟线SCL。

SDA(Serial data)是数据线,D代表Data也就是数据,Send Data 也就是用来传输数据的

SCL(Serial clock line)是时钟线,C代表Clock 也就是时钟 也就是控制数据发送的时序的

所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。I2C总线上的每个设备都自己一个唯一的地址,来确保不同设备之间访问的准确性。

02. I2C主要特点

通常我们为了方便把I2C设备分为主设备和从设备,基本上谁控制时钟线(即控制SCL的电平高低变换)谁就是主设备。

  • I2C主设备功能:主要产生时钟,产生起始信号和停止信号

  • I2C从设备功能:可编程的I2C地址检测,停止位检测

  • I2C的一个优点是它支持多主控(multimastering), 其中任何一个能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

  • 串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速

    模式下可达 3.4Mbit/s

  • SCL和SDA都需要接上拉电阻保证数据的稳定性,减少干扰。

  • I2C是半双工,而不是全双工 ,同一时间只可以单向通信

为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是漏极开路(OD)输出或集电极开路(OC)输出。

03. I2C硬件电路

• 所有I2C设备的SCL连在一起,SDA连在一起

• 设备的SCL和SDA均要配置成开漏输出模式

• SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右

04. I2C时序基本单元

•起始条件:SCL高电平期间,SDA从高电平切换到低电平

•终止条件:SCL高电平期间,SDA从低电平切换到高电平

•发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节

•接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)

•发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答

•接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)

05. I2C时序波形图

•指定地址写

•对于指定设备(Slave Address),在指定地址(Reg Address)下,写入指定数据(Data)

•当前地址读

•对于指定设备(Slave Address),在当前地址指针指示的地址下,读取从机数据(Data)

•指定地址读

•对于指定设备(Slave Address),在指定地址(Reg Address)下,读取从机数据(Data)

06. 附录

参考: 【STM32】江科大STM32学习笔记汇总

相关推荐
天辛大师2 分钟前
天辛大师浅谈AI时代,“学会学习“本身的内涵也需要被重新定义?
人工智能·深度学习·学习·启发式算法·量子计算
摇滚侠8 分钟前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis MyBatis 概述 阅读笔记 37
spring boot·笔记·mybatis
是隼人16 分钟前
buuctf-pwn PWN1题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
HugoStudio_SWAN20 分钟前
洛谷 P1321 单词覆盖还原——从蜡板上的密信到数字水印
c++·学习·程序人生·算法
春风解人意23 分钟前
从零开始学习嵌入式P33----网络基础之HTTP
网络·学习·http
励志不掉头发的内向程序员29 分钟前
【LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之Action与命令系统
linux·开发语言·c++·qt·学习·系统架构
小道士写程序36 分钟前
自然语言处理NLP - 第8章 词向量与神经网络:从手工特征到学习表示
神经网络·学习·自然语言处理
摇滚侠36 分钟前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis 整合 MyBatis 阅读笔记 38
spring boot·笔记·mybatis
糖糖单片机设计44 分钟前
STM32智能行李箱控制系统
stm32·单片机·嵌入式硬件
Brilliantwxx1 小时前
【STM32】GPIO :寄存器原理、点灯实战与输出特性全解
stm32·单片机·嵌入式硬件