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

嵌入式-常见简单通信协议介绍

串口

串口(UART)是嵌入式系统中最基础最常用的通信方式之一,简单,通用并且无需时钟同步。串口通信是一种异步串行通信方式,数据按位(bit)依次传输,每次传输一个字节(通常为8位)。由于是异步通信,通信双方不共享时钟信号,而是通过约定好的参数来保证数据正确接收。

1. UART

硬件连接:

最基础的串口通信只需要两根信号线:TX(Transmit):发送数据;RX(Receive):接收数据。UART 数据传输是全双工的,通信双方可以同时发送和接收数据。此外发送和接收双方需要共地以保证参考电平一致。连线方式示意图如下。

串口通信以帧为单位传输数据,一个完整的数据帧通常包括:起始位(1位),数据位(8位最常用),校验位(奇偶校验,可选),停止位(常用1位)。最常用的搭配是8N1,即8位数据位,无校验,1位停止位。由于没有时钟同步,所以通信双方必须约定一个一致的通信速率,也就是波特率。常用的波特率为9600,115200等。串口通信的简单时序如下图所示。

基础串口通信的优点在于硬件连接简单,无需额外的时钟信号即可实现数据传输,但这也带来了一些局限性。首先,串口通信的传输速率相对较低,其设计以简单可靠为主,在较高波特率或复杂电磁环境下,误码率可能会有所上升。其次,串口通信不适合长距离传输,信号在传输过程中容易受到电磁干扰以及线路延迟等因素的影响,从而降低通信可靠性。此外,串口通信通常采用点对点方式,仅适用于两个设备之间的数据交换,难以支持多设备组网通信。综上所述,串口通信常用于对实时性和速率要求不高的场景,例如调试信息输出、板级模块之间的通信以及短距离程序下载等。

2. RS232

为了解决基本串口通信在传输距离和抗干扰能力以及通信规模等方面的限制,逐渐发展出了 RS232 和 RS485 等更完善的串行通信标准。需要注意的是,这些标准并不是对 UART 协议的替代,而是在物理层对其电气特性进行改善,从而提升通信性能和适用范围。

RS232 是较早提出的一种串行通信标准,广泛应用于计算机与外设之间的连接(笔者常用的设备与上位机通信很多基于 DP9 接口)。RS232 同样是全双工通信,它通过提高信号电压幅度(通常为 ±3V~±15V)来增强抗干扰能力,并定义了完整的接口规范(如 DB9 接口)。需要注意的是,RS232 除了提高了信号电平幅度之外,其逻辑极性是与 TTL 电平相反的,可见下面时序图。RS232 仍然采用单端信号传输方式,通常用于点对点通信,传输距离一般在 15 米以内,速率相对有限。因此,它常见于早期计算机串口、工业设备调试接口以及一些简单的外设通信场景。下图是 RS232 典型的设备通信连线示意图。

RS232 的时序如下图所示:

3. RS485

随着工业控制等场景对通信距离和可靠性的要求不断提高,RS485 应运而生。RS485 采用了差分信号传输,能够有效抑制共模干扰,从而显著提升抗干扰能力和传输距离(可达上千米)。同时,RS485 支持多节点通信,一条总线上可以挂接多个设备(典型为 32 个或更多),非常适合构建分布式系统。需要注意的是,RS-485 本身只定义了物理层规范,具体的数据通信规则通常由上层协议实现,例如 Modbus 等工业通信协议。

由于 RS485 采用了差分信号传输,一位信号的表示需要两根线的电位差来判断,因此其仅支持半双工通信。差分信号采用两根线来进行信号传输,接收设备通过两根线的电压差判断逻辑值(≥+200mV 为 1,≤−200mV 为 0),因此天然抗共模干扰。

RS485 的时序逻辑如下图所示,其核心改良就是使用差分信号进行数据传输以提高长距离通信的抗干扰能力,本质上还是电气特性的改良,而时序规范还是依据串口标准。RS485 的另一特性是可以支持多设备通信,如上图所示,一般是有一个主机和若干个从机。由于 RS485 本身只是物理层标准,它只定义了电气特性(差分信号、电压范围、阻抗),不包含任何地址或寻址机制,因此要实现多设备通信需要依赖 RS485 之上的通信协议,最常见的协议是Modbus。这里只做简单介绍,知道逻辑即可。首先主机发送广播帧,广播帧中含有目标通信从机的地址,广播帧所有从机都可以收到,不匹配的从机就静默处理,匹配的从机就接收数据并发送应答帧。

二、I2C

I2C(Inter-Integrated Circuit) 是嵌入式系统中非常常用的一种同步串行通信协议,该协议最初由飞利浦(现恩智浦)提出,广泛应用于芯片之间的短距离通信,比如传感器、EEPROM、ADC/DAC 等外设。

I2C 仅通过一条串行数据线(SDA)和一条串行时钟线(SCL)即可在多个设备间进行同步、半双工的数据传输。I2C 适用于多设备通信,每个设备都有自己的地址(一般是7位),主设备负责产生时钟并发起通信,从设备则响应主设备的请求。I2C 的典型速率包括标准模式(100 kbps)、快速模式(400 kbps)以及更高速模式(如1 Mbps快速模式+和3.4 Mbps高速模式),因引脚少、连接简单且能灵活扩展,I2C被广泛应用于同一电路板内芯片之间的短距离低速通信。

I2C 的 SDA 和 SCL 都采用一种开漏结构的输出方式,其特点是只能主动输出低电平,而不能主动输出高电平。 如果所有设备都只能拉低,那“高电平”从哪来?此时就需要上拉电阻来提供高电平。上拉电阻把总线“默认拉到高电平”,任意设备需要发送“0”时把线拉低,没人拉低时线路被电阻拉回高电平。典型的硬件结构如下图所示。

http://www.jsqmd.com/news/1075456/

相关文章:

  • AI 辅助生成数据修复脚本前,先做回滚清单:一次 UPDATE 漏写范围条件的防线设计
  • 告别龟速下载:开源网盘直链助手让你的文件下载飞起来
  • 信息管理化技术中的信息收集信息分发信息存储
  • Element Plus终极指南:5个步骤快速构建专业级Vue 3企业应用
  • 【C++】003、static关键字
  • SharpIDE: 基于 .NET 与 Godot 引擎的跨平台开源 IDE
  • 终极指南:如何用League Akari自动化英雄联盟客户端,提升游戏效率3倍
  • Tech Interview Handbook:技术面试准备,有人替你整理好了
  • 终极突破!5分钟让网盘下载速度飙升10倍的免费解决方案
  • 自编码器作为特征提取器的分类实践:Fashion-MNIST表征学习教程
  • 5层API转换架构:dxwrapper如何让Windows 10/11完美运行DirectX经典游戏
  • animate.css:给网页加动画,一行代码搞定
  • ArkClaw一键部署:云原生AI Agent如何重构人机协作范式
  • cocos2dx-js cocos creator 实现热更新
  • GStreamer:开源流媒体处理框架
  • 嵌入式系统电源管理实战:从CMOS原理到QorIQ平台深度睡眠实现
  • 影刀RPA项目实战:财务报表自动采集与生成
  • 如何高效对比视频质量差异?video-compare分屏对比工具实战指南
  • 深度解析Dism++:Windows系统维护与优化架构设计与实现原理
  • 如何在3分钟内快速搭建B站视频解析API?完整配置指南
  • 当Win11企业版系统没法使用右键菜单找到“以管理员身份运行”选项来安装软件的解决方法(以安装Python为例)
  • 基于Python+Django+MySQL的健身房管理系统设计与实现(附核心代码)
  • 3个秘诀:Element Plus如何让Vue 3企业应用开发效率提升200%
  • 通达信缠论插件:3分钟搞定专业级技术分析
  • 如何3分钟完成Honey Select 2终极汉化去码:完整配置指南
  • 【2026年华为暑期实习(AI)-6月24日-第三题- 最优分段常数量化】(题目+思路+JavaC++Python解析+在线测试)
  • allegro查看器件高度
  • 提升Java奋斗学习,每日打卡
  • video-compare:开源视频对比工具的终极使用指南
  • 3步搞定黑苹果配置:OpCore Simplify让复杂变简单