常用通信协议介绍(CAN、RS232、RS485、IIC、SPI、TCP/IP)

前言:在汽车电子和嵌入式系统中,我们会涉及到众多的总线通信协议,主要包括:CAN(CAN FD)、RS-232、RS-485、IIC、SPI、TCP/IP等。这里我们会进行逐个介绍。

目录

一、CAN

核心特点

帧结构

[CAN的发展-CAN FD](#CAN的发展-CAN FD)

二、RS-232

核心特点

帧结构

三、RS-485

核心特点

帧结构

四、IIC

核心特点

帧结构

五、SPI

核心特点

SPI工作流程

六、TCP/IP

TCP/IP四层模型

传输层核心-TCP/UDP

网络层核心-IP

数据链路层-MAC地址


一、CAN

CAN全称Controller Area Network,是常用的车载总线协议。

核心特点

1)多主模式,网络中所有节点地位平等,没有主从之分,任意节点都可以主动发起数据传输。当多个节点同时发送数据时,通过仲裁机制解决冲突,优先级高的节点优先发送,不会造成数据丢失。

2)差分信号传输,采用CAN_H和CAN_L两根差分信号线,抗干扰能力强。

  • 逻辑0(显性电平):CAN_H - CAN_L ≈ 2V
  • 逻辑1(隐性电平):CAN_H - CAN_L ≈ 0V

3)错误检测与自动回传,CAN具备5层错误检测机制(位错误、填充错误、CRC错误、应答错误、格式错误),节点检测到错误后会立即发送错误标志,且错误节点会自动重传数据,保证通信可靠性。

帧结构

CAN(标准帧)总线有5种帧类型,核心是数据帧

字段 长度(位) 功能说明
帧起始(SOF) 1 标志帧的开始,一个显性位(0)
仲裁段 12 包含 11 位标准 ID + 1 位 RTR 位(远程请求位,0 表示数据帧,1 表示远程帧)
控制段 6 包含 IDE 位(标准帧为 0)、保留位 + DLC 位(数据长度码,0~8,标识数据段字节数)
数据段 0~64 实际传输的数据,0~8 字节
CRC 段 16 循环冗余校验码,用于检测数据传输错误
应答段 2 包含应答间隙和应答界定符,接收节点正确接收后发送显性位应答
帧结束(EOF) 7 标志帧的结束,7 个隐性位(1)

另外:扩展帧的ID是29位(标准帧11位)

CAN的发展-CAN FD

为了解决传统CAN 8字节数据段的限制,发展了CAN FD:

数据段长度扩展至64位 ,采用双波特率,仲裁段用低速,数据段用高速。

二、RS-232

RS-232全称Recommended Standard 232 ,是一种串行异步通信协议,主要用于短距离、低速率的点对点的设备通信。

核心特点

1)异步通信,无需专用时钟线同步,通过起始位、数据位、校验位、停止位的帧格式实现收发双方的时序匹配。

2)点对点通信,仅能实现两个设备间的一对一通信。传输距离短,最大约为15米。

3)采用单端电平,电平定义:

  • 逻辑0(SPACE):+3V ~ +15V
  • 逻辑1(MARK):-3V ~ -15V

4)易受电磁干扰

帧结构

字段 长度(位) 功能说明
起始位 1 低电平(逻辑 0),标识一帧数据的开始
数据位 7/8 传输的有效数据,低位在前,高位在后
校验位 0/1 可选,用于验证数据传输正确性
停止位 1/1.5/2 高电平(逻辑 1),标识一帧数据的结束

三、RS-485

RS-485是一种差分串行通信标准,半双工通信,广泛用于工业控制。

核心特点

1)差分信号传输,采用A(D+)、B(D-)两根差分线,电平差定义逻辑:

逻辑0(SPACE):B- A > +200mV(一般 +2V ~ +6V)

逻辑1(MARK):B - A < -200mV(一般 -2V ~ -6V)

2)多节点通信,总线支持32个标准节点,解决了RS-232点对点的限制。半双工通信,同一时刻只能收或者发。

3)传输距离较大,最远可达1200米。

帧结构

字段 长度(位) 说明
起始位 1 低电平(逻辑 0),标识帧开始
数据位 7/8 有效数据,低位在前
校验位 0/1 可选(奇 / 偶 / 无),用于错误检测
停止位 1/1.5/2 高电平(逻辑 1),标识帧结束

四、IIC

IIC全称Inter-Integrated Circuit,是由飞利浦开发的一种串行、半双工的同步通信协议。

核心特点

双线通信,仅需采用两根信号线即可实现多设备组网,无需额外地址线或片选线:

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

SCL(Serial Clock):串行时钟线,由主设备产生

注:需外接上拉电阻(4.7kΩ~10kΩ),保证总线空闲时为高电平。

多主多从架构,支持多主设备共存,通过总线仲裁机制避免冲突。

帧结构

信号类型 时序条件 功能说明
起始信号(S) SCL 为高电平时,SDA 由高电平拉低 标志通信开始,主设备发起
停止信号(P) SCL 为高电平时,SDA 由低电平拉高 标志通信结束,主设备发起
应答信号(ACK) 接收方在第 9 个 SCL 时钟周期,将 SDA 拉低 表示数据接收成功;若 SDA 为高,则为非应答(NACK),表示接收失败或结束传输
数据有效性 SCL 为高电平时,SDA 电平必须稳定 仅在 SCL 为低电平时,SDA 才能改变电平

五、SPI

SPI全称Serial Peripheral interface,是一种同步、全双工、主从架构的串行通信协议。

核心特点

1)四线制架构,SPi采用4根信号线实现全双工通信:

  • SCLK(Serial Clock):串行时钟线,由主设备唯一产生
  • MOSI(Master Out,Slave In):主发从收数据线,主设备向从设备发送数据
  • MISO(Master In, Slave out):主收从发数据线,从设备向主设备发送数据
  • SS/CS(Slave Select/Chip Select):片选信号线,主设备拉低该引脚选中从设备,未选中的从设备处于高阻态

2)高速传输,常见速率可达几Mbps到几十Mbps,适合高带宽场景。

SPI工作流程

  1. 片选选中 :主设备拉低目标从设备的SS/CS 引脚,通知从设备准备通信;
  2. 时钟驱动 :主设备产生固定频率和模式的 SCLK 时钟信号;
  3. 同步移位 :每一个时钟周期,主设备通过 MOSI 发送 1 位数据,从设备通过 MISO 发送 1 位数据,双方同时采样接收数据;
  4. 传输结束 :数据传输完成后,主设备拉高 SS/CS 引脚,释放总线,从设备回到高阻态。

六、TCP/IP

TCP/IP全称Transmission Control Protocol/Internet Protocol,是一套分层网络通信协议族,它定义了设备在网络中通信的标准规则,是互联网的核心基础。

TCP/IP四层模型

层级 名称 核心功能 典型协议
第 4 层 应用层 直接面向用户,负责实现各种网络应用 HTTP、HTTPS、FTP、MQTT、Socket(编程接口)
第 3 层 传输层 提供端到端的通信服务 TCP、UDP
第 2 层 网络层 负责数据包的路由与传送 IP(IPv4/IPv6)、ICMP(网络控制消息)、ARP(地址解析)
第 1 层 链路层 负责物理介质上的信号传输(电气特性、接口标准) 双绞线、光纤、车载以太网物理层

传输层核心-TCP/UDP

1)TCP(传输控制协议):

面向连接:通信前通过三次握手建立连接,通信后通过四次挥手释放连接

可靠性:采用ACK、重传机制、流量控制、拥塞控制,确保数据可靠性

有序交付:通过序列号和确认号,保证接收数据的顺序与发送顺序一致

三次握手示例图:

2)UDP(用户数据协议):

无连接:通信前无需建立连接,速度块

不可靠传输:无确认、重传机制,数据可能丢失

广播:支持一对多通信,适合批量分发

网络层核心-IP

负责为设备分配逻辑地址(IP地址),实现跨网段的数据转发,通过IP地址标识网络中的设备,地址寻址。

IPv4:32位地址,格式为x.x.x.x(如:192.168.1.1),地址资源有限

IPv6:128位地址x:x:x:x:x:x:x:x,解决IPv4地址资源枯竭问题

数据链路层-MAC地址

数据链路层负责同一局域网内的传输,核心是MAC地址。MAC地址是设备的物理地址,48位(如10:1A:2B:3C:4D:5E),全球唯一。

相关推荐
暗然而日章2 小时前
C++基础:Stanford CS106L学习笔记 8 继承
c++·笔记·学习
有点。3 小时前
C++ ⼀级 2023 年06 ⽉
开发语言·c++
charlie1145141913 小时前
编写INI Parser 测试完整指南 - 从零开始
开发语言·c++·笔记·学习·算法·单元测试·测试
mmz12073 小时前
前缀和问题2(c++)
c++·算法
Bigan(安)3 小时前
【奶茶Beta专项】【LVGL9.4源码分析】08-theme主题管理
linux·c语言·mcu·arm·unix
小汐睡着了3 小时前
解决虚拟机VMware与宿主机网络不通的问题-error
linux·网络·redhat
了一梨3 小时前
外设与接口:按键输入 (libgpiod)
linux·c语言
Alpha first3 小时前
C++核心知识点梳理:类型兼容、多继承与虚基类
开发语言·c++
.小小陈.3 小时前
C++初阶9:list使用攻略
开发语言·c++·学习·list