stm32中IIC通讯协议

参考资料:大部分均引用b站江协科技课程、GPT及网络资料

什么是IIC(i2C)通讯协议?

关键字:SCL、SDA、半双工、同步、串行。

IIC(Inter-Integrated Circuit),也称为I2C(Inter-Integrated Circuit),是一种由Philips公司(现为NXP)开发的用于在集成电路之间进行短距离通信的串行总线协议 。IIC协议非常适合低速 设备之间的数据传输,具有简单、低成本和易于实现的特点。

其中有几个问题:为什么是短距离?什么是串行总线?这个等学完概念后再进行解答。

概念:

IIC总线基本特性
  1. 双线结构:IIC总线采用两根双向线路进行通信:

    • SCL(串行时钟线):由主设备产生的时钟信号,用于同步数据传输。
    • SDA(串行数据线):用于传输数据,数据在时钟信号的控制下进行传输。
  2. 多主从结构 :支持总线挂载多设备(一主多从、多主多从 )。每个设备都有一个唯一的地址

  3. 地址分配IIC设备使用7位或10位地址来唯一标识每个设备 。在传输数据时,主设备通过地址帧选择目标从设备

  4. 同步,半双工

数据传输
  • 数据帧 :每次传输的数据帧由8位数据组成,从高位(MSB)到低位(LSB)传输
  • 应答位(Acknowledge Bit):在每个数据帧传输之后,由接收方发送一个应答位。若应答位为低电平,表示接收成功;若应答位为高电平,表示接收失败。
数据读写过程
  1. 写操作

    • 主设备发送起始条件。
    • 主设备发送从设备地址以及读写控制位(0表示写,1表示读)。
    • 从设备发送应答位。
    • 主设备发送要写入的数据。
    • 从设备发送应答位。
    • 重复数据传输和应答,直到所有数据传输完毕。
    • 主设备发送停止条件。
  2. 读操作

    • 主设备发送起始条件。
    • 主设备发送从设备地址以及读写控制位。
    • 从设备发送应答位。
    • 主设备切换到接收模式,读取数据。
    • 主设备发送应答位。
    • 重复数据读取和应答,直到所有数据读取完毕。
    • 主设备发送停止条件。

IIC时序:

1.起始和终止

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

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

2.发送和接收

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

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

3.应答

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

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

了解了这些基本知识,再回到开头,IIC其只需要两根线控制,一根时钟线(SCL)控制同步,一根数据线(SDA)传输数据,因为只有一根数据线,数据逐个传输,因此是串行通讯。

其中还提到了半双工,这里来解释下:

半双工:数据可以在两个方向上传输,但不能同时进行,如iic,rs485

全双工:数据可以在两个方向上同时进行传输。发送和接收可以同时进行,不会互相干扰,

如RS-232。

**单工:**数据只能在一个方向上传输。发送方只能发送,接收方只能接收,如电视广播。

iic在长距离的环境中,容易受到干扰造成电平跳变,会严重影响数据的准确性,且IIC协议依赖于时钟线(SCL)和数据线(SDA)的同步工作。长距离可能导致信号延迟不一致,因此其适合短距离通讯。

相关推荐
p666666666825 分钟前
vmware虚拟机的三种网络配置详细介绍,包能解决虚拟机网络问题
网络
赖small强42 分钟前
【Linux 网络基础】Linux 平台 DHCP 运作原理与握手过程详解
linux·网络·dhcp
Mu.3871 小时前
计算机网络模型
网络·网络协议·计算机网络·安全·http·https
xixixi777773 小时前
解析一下传输安全——“它是什么”,更是关于“它为何存在”、“如何实现”以及“面临何种挑战与未来”
网络·安全·通信
小曹要微笑5 小时前
STM32F7 时钟树简讲(快速入门)
c语言·stm32·单片机·嵌入式硬件·算法
jerryinwuhan5 小时前
socket由浅入深
网络
XINVRY-FPGA5 小时前
XCVP1802-2MSILSVC4072 AMD Xilinx Versal Premium Adaptive SoC FPGA
人工智能·嵌入式硬件·fpga开发·数据挖掘·云计算·硬件工程·fpga
xu_yule6 小时前
网络和Linux网络-3(套接字编程)TCP网络通信代码
linux·网络·tcp/ip
喜欢吃豆8 小时前
使用 OpenAI Responses API 构建生产级应用的终极指南—— 状态、流式、异步与文件处理
网络·人工智能·自然语言处理·大模型