当前位置: 首页 > news >正文

UART、IIC、SPI、CAN通信协议简介

一、常见术语

1、通信协议的类型

(1)根据数据传输方式分为两大类:串行通信并行通信。由于并行通信(如早期的PCI总线)需要大量I/O口线,所以在单片机中已较少使用。

串行通信协议又可根据数据是否同步于时钟信号分为:

  • 同步通信:收发双方共享时钟信号(如SPI, I2C)。

  • 异步通信:收发双方使用各自的时钟,依靠事先约定的波特率进行同步(如UART)。

(1)什么是波特率
波特率等于每秒钟传输的数据位数,假如我们的全局时钟频率为100MHz,波特率设置为9600,那么意味着每秒该UART传输协议可以传输9600bits的数据,换句话说传输1比特需时间约为:10^9(ns)/9600=104166(ns)。

(2)如何换算波特率
书接上文,时钟频率假如为100MHz,这意味着我们的时钟周期为10ns,因此10416个时钟周期我们就可以传输1bit数据,换言之我们需要一个大小为10416的分频电路来对100MHz时钟进行处理,因此在设计UART的过程中,我们需要使用分频电路依据波特率处理全局时钟,依据分频后的时钟节奏来发送数据和接收数据。

二、单片机常见的通信协议

1. UART (Universal Asynchronous Receiver/Transmitter)

原理:

  • 异步串行通信。不需要时钟线,仅需两根数据线(TX:发送,RX:接收)即可实现全双工通信。

  • 通信双方必须事先约定相同的通信参数波特率、数据位、停止位、校验位。

  • 数据以“帧”为单位传输。每帧数据从一个起始位(低电平) 开始,后面是5-9位数据位(通常是8位),然后是可选的校验位,最后是1-2位停止位(高电平)

  • 在空闲状态下,总线保持高电平。起始位的下降沿通知接收方开始接收数据。

特点:

  • 优点:硬件简单,仅需两根线,全双工。

  • 缺点:没有时钟同步,对波特率一致性要求高;通常用于点对点通信,难以组建多设备网络。

举例:

  • 单片机与PC通信:单片机通过UART连接到USB转串口芯片(如CH340、CP2102),再与电脑的串口调试助手进行数据交换。

  • GPS模块、蓝牙模块与单片机通信:大多数GPS和蓝牙模块都提供UART接口,单片机通过发送AT指令或直接读取数据流与之交互。

  • 两个单片机之间通信将单片机A的TX连接到单片机B的RX,单片机A的RX连接到单片机B的TX。

2. I2C (Inter-Integrated Circuit)

原理:

  • 同步、半双工的串行通信协议。由Philips公司开发。

  • 仅需两根线:

    • SDA:双向串行数据线。

    • SCL:串行时钟线,由主机产生。

  • 多主多从架构,通过设备地址寻址。总线上每个从设备都有一个唯一的7位或10位地址。

  • 通信由主机发起,遵循严格的时序:

    1. 起始条件:SCL为高时,SDA由高变低。

    2. 发送地址帧:主机发送7位从机地址和1位读写位。

    3. 应答信号:从机确认地址后,拉低SDA一个时钟周期作为应答(ACK)。

    4. 数据传输:主机与从机之间传输8位数据,每传输一个字节后,接收方都会发送一个ACK。

    5. 停止条件:SCL为高时,SDA由低变高。

特点:

  • 优点:引脚资源占用少(只有两根线),支持多设备。

  • 缺点:速度较SPI慢(标准模式100kbps,快速模式400kbps),协议相对复杂,通信距离短。

举例:

  • 读取传感器数据:读取温湿度传感器(如SHT30)、加速度计(如MPU6050)的数据。这些传感器通常作为I2C从设备。

  • 访问EEPROM存储器:读写存储芯片(如AT24C02、AT24C256)来存储系统参数。

  • 控制IO扩展芯片:使用PCF8574等芯片,通过I2C协议用少量IO口控制多达8个或16个GPIO。

3. SPI (Serial Peripheral Interface)

原理:

  • 同步、全双工的串行通信协议。由Motorola公司开发。

  • 通常需要4根线:

    • SCLK:串行时钟,由主机产生。

    • MOSI:主机输出,从机输入。

    • MISO:主机输入,从机输出。

    • SS/CS:从机选择片选信号(低电平有效),每个从机都需要一根独立的片选线。

  • 通信由主机控制。主机通过拉低某个从机的SS线来选中该从机,然后产生SCLK时钟。数据在时钟的上升沿或下降沿被采样,实现全双工同时收发。

  • 协议本身非常简单,没有固定的数据帧格式,数据传输的位数和含义由设备自身定义。

特点:

  • 优点:速度非常快(可达数十Mbps),是全双工,协议简单。

  • 缺点:占用I/O口线多(每增加一个从机,需多一根片选线),没有硬件应答机制。

举例:

  • 读写SD/TF卡:SD卡在SPI模式下通信。

  • 驱动显示屏:许多OLED屏、TFT屏(如ILI9341驱动芯片)使用SPI接口以获得高速刷新率。

  • 连接无线模块:如nRF24L01 2.4G无线模块、ESP8266 WiFi模块(某些模式下)。

  • 与高速ADC/DAC通信:需要高速数据流的模数/数模转换芯片。

4. 1-Wire (单总线)

原理:

  • 异步、半双工的串行通信协议。由Dallas公司开发。

  • 只需要一根数据线(加上一根公共地线)即可完成通信和供电(寄生供电)。

  • 所有1-Wire设备都通过一个唯一的64位ROM ID地址进行识别,支持“一主多从”。

  • 通信时序要求非常严格,主机通过控制线上高低电平的持续时间来发出命令和读写数据。

特点:

  • 优点:硬件结构极其简单,布线成本极低。

  • 缺点:通信速度慢,时序复杂,对代码编写要求高。

举例:

  • 读取温度传感器:最经典的DS18B20数字温度传感器。

  • 访问iButton设备:如门禁系统的密钥扣。

  • 识别器件:利用其唯一的ID,用于产品溯源或硬件加密。

5. CAN (Controller Area Network)

原理:

  • 异步、半双工的串行通信协议。专为汽车电子工业控制等恶劣环境设计。

  • 采用差分信号(CAN_H和CAN_L)传输,具有极强的抗干扰能力。

  • 多主对等网络,任何节点都可以在总线空闲时发起通信。通过报文ID(标识符)来标识消息的优先级,ID值越小,优先级越高。基于CSMA/CR机制解决总线冲突。

  • 具有完善的错误检测和处理机制,通信可靠性极高。

特点:

  • 优点:高可靠性,多主结构,优秀的错误处理,通信距离远(可达数千米)。

  • 缺点:协议复杂,硬件和软件成本较高。

举例:

  • 汽车网络:发动机控制单元(ECU)、车门模块、仪表盘等之间的通信。

  • 工业自动化:PLC、传感器、电机驱动器之间的连接。

  • 医疗设备、电梯控制等对可靠性要求高的领域。

总结对比表

协议通信类型线数速度拓扑结构主要特点典型应用
UART异步,全双工2 (TX, RX)低-中点对点简单,通用,需约定波特率PC通信,GPS,蓝牙
I2C同步,半双工2 (SDA, SCL)低-中多主多从引脚少,有地址和应答传感器,EEPROM
SPI同步,全双工3+n (SCLK, MOSI, MISO, CSxN)一主多从速度快,协议简单,引脚多存储器,显示屏,ADC
1-Wire异步,半双工1 (DQ)一主多从布线极简,靠ID寻址DS18B20温度传感器
CAN异步,半双工2 (CAN_H, CAN_L)中-高多主对等高可靠,抗干扰,距离远汽车,工业控制

选择建议:

  • 简单设备调试:用UART

  • 连接多个低速传感器:用I2C

  • 需要高速数据传输(如显示屏、存储器):用SPI

  • 布线极其苛刻(如远距离温度监测网络):考虑1-Wire

  • 高可靠性、多节点工业环境:用CAN

http://www.dtcms.com/a/611050.html

相关文章:

  • 鸿蒙系统编译语言 | 深入探讨鸿蒙编译技术及其应用前景
  • 网站建设一对一培训网站建设ssc源码最新
  • C语言编译速度 | 提升编译效率的方法与技巧
  • 【Python爬虫基础-3】数据解析
  • 做网站能用思源黑体吗wordpress文章页面模板
  • 精品源码分享的网站首尔面积
  • 科普:LLM中的网页工具:Fetch与GeneralSearch
  • 第2章 Hello World
  • js语法js语法js语法
  • 如何在三维空间中生成任意方向的矩形内部点位坐标
  • 微信如何做网站西安网站制作托
  • 石家庄网站服务万维网的网站
  • leetcode 387. 字符串中的第一个唯一字符 python
  • 基于深度学习的磁共振图像膝关节损伤多标签识别系统研究
  • 网站制作工作室24小时接单微信小游戏源码
  • 做网站会出现什么问题wordpress如何更改上传文件大小
  • vue3 组合式 API 详解
  • C++从入门到实战----类和对象(上)
  • 多维度表征(下)|用扫描电镜,CT 与仿真“看透“再生碳纤维复合材料
  • 电商网站 收费与免费wordpress阿里云图片不显示不出来
  • 易语言模块反编译为源码 | 深入分析与实战教程
  • 在高速公路或交通工程领域中,OD 是 Origin-Destination 的缩写,中文通常称为“起讫点”或“出行起止点”。
  • 诏安建设局网站常德网站seo
  • 牛商网做的网站怎么样仓库进销存软件
  • Windows 7 运行 .NET 应用时报错“hostfxr.dll 加载失败 (HRESULT: 0x80070057)”的彻底解决指南
  • 免费手机网站系统WordPress使用中文链接好吗
  • 深入理解 C++ vector 源码与迭代器失效问题
  • 服务器主板选用网络变压器及参数配置HX82409S
  • 厦门网站建设企业网站的邀请怎么做的
  • 单独Docker部署和Docker Compose部署