[技术问答] 除了I2C,DeepSeek还能辅助学习哪些新唐的通信协议?

[复制链接]
513|6
[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]除了I2C,DeepSeek还能辅助学习哪些新唐的通信协议?
zhuomuniao110 发表于 2025-9-16 21:09 | 显示全部楼层
各种协议都适合。
zhuomuniao110 发表于 2025-9-16 21:09 | 显示全部楼层
I²C(Inter-Integrated Circuit,读作 “I-squared-C”)是一种由飞利浦公司(现恩智浦 NXP)开发的同步、串行、半双工的通信总线协议。它因其简洁性和有效性而在嵌入式系统中被广泛使用,用于连接微控制器和多个低速外围设备。
zhuomuniao110 发表于 2025-9-16 21:09 | 显示全部楼层
两线制:仅需两根信号线,极大地减少了布线复杂度。

SDA(Serial Data Line):串行数据线,用于双向传输数据。

SCL(Serial Clock Line):串行时钟线,由主设备产生,用于同步数据传输。

主从式结构(Master-Slave):

主设备(Master):发起和终止传输、产生时钟信号的设备。一个总线上可以有多个主设备(多主模式),通过仲裁决定控制权。

从设备(Slave):响应主设备寻址的设备。每个从设备都有一个唯一的7位或10位地址,主设备通过该地址来选择与哪个从设备通信。

半双工通信:数据可以在 SDA 线上双向传输,但同一时刻只能在一个方向上进行。

多主多从:理论上,一条 I²C 总线上可以连接多个主设备和多个从设备(受限于总线电容和地址空间)。
zhuomuniao110 发表于 2025-9-16 21:09 | 显示全部楼层
一次完整的 I²C 通信通常包含以下几个步骤:

1. 起始(START)和停止(STOP)条件
起始条件(S):当 SCL 为高电平时,SDA 线发生一个从高到低的电平跳变。这个信号告知总线上所有设备,一次传输开始了。

停止条件(P):当 SCL 为高电平时,SDA 线发生一个从低到高的电平跳变。这个信号表示传输结束,总线恢复空闲状态。

2. 数据格式
数据以字节(8位) 为单位进行传输。

每个字节后必须跟一个应答位(ACK/NACK)。

数据传输是高位(MSB)在前,低位(LSB)在后。

3. 地址帧和数据帧
一次典型的通信序列如下:

[起始条件] + [从机地址 7位 + 读写位 1位] + [应答位] + [数据字节] + [应答位] + ... + [停止条件]

地址帧:主设备在起始条件后发送的第一个字节。它包含:

7位从机地址:用于选择目标从设备。

1位读写控制位(R/W#):

0:表示主设备要写入(Write) 数据到从设备。

1:表示主设备要读取(Read) 从设备的数据。

应答位(ACK/NACK):每传输完一个字节(包括地址字节),接收方必须发送一个应答位。

ACK:接收器将 SDA 线拉低,表示成功接收了字节。

NACK:接收器不拉低 SDA 线(保持高电平),通常表示接收失败或不再需要更多数据。

数据帧:在地址帧得到应答后,传输的就是数据字节,每个数据字节后同样跟着一个应答位。

4. 读写操作示例
主设备向从设备写数据:
S | Slave_Address (W) | ACK | Data_1 | ACK | Data_2 | ACK | ... | P

主设备从从设备读数据:
S | Slave_Address (R) | ACK | Data_1 | ACK | Data_2 | ACK | ... | P
(注意:最后一个数据字节后,主设备应发送 NACK 信号,然后发送停止条件,告知从设备读取结束。)

复合格式(先指定寄存器地址,再读取数据):

主设备发送写操作,写入一个目标寄存器的地址。
S | Slave_Address (W) | ACK | Reg_Address | ACK

主设备发送重复起始条件(Repeated Start, Sr)(不发送停止条件,直接发起新的起始条件)。

主设备发送读操作,开始读取数据。
Sr | Slave_Address (R) | ACK | Data | NACK | P
zhuomuniao110 发表于 2025-9-16 21:10 | 显示全部楼层
优点与缺点

优点
缺点
引脚节省:仅需两根线,连接多个设备。速度较慢:标准模式100kbps,快速模式400kbps,高速模式3.4Mbps,远低于SPI。
硬件结构简单,协议由硬件实现,软件开销小。半双工,不如SPI的全双工高效。
支持多主设备(带仲裁机制)。通信距离短,通常用于板内通信。
有应答机制,提供错误检查。地址冲突:如果两个从设备地址相同,会引发问题。
被非常多的芯片支持,是业界标准。上拉电阻:需要合适的上拉电阻,其值需要根据总线速度和电容计算。


zhuomuniao110 发表于 2025-9-16 21:10 | 显示全部楼层
I²C 常用于连接微控制器周围的各种传感器和低速外设,例如:

温度/湿度传感器(如 SHT3x)

加速度计/陀螺仪(如 MPU-6050)

实时时钟(RTC)模块(如 DS3231)

EEPROM 存储器(如 AT24Cxx)

数字电位器

LCD/OLED 显示器控制器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

138

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部