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

硬件(三) 通信方式、串口通信

一、通信类型

(一)并行通信

多个比特通过并行线同时传输,传输速率快,但会大量占用芯片资源,在对资源敏感的场景下不太适用。

(二)串行通信

把数据拆成单个比特,按顺序在一根总线上发送。它系统资源占用少、结构简单,是主机间通信常用方式。像 RS232、RS485、RS422 都属于串行通信,串口通信(Serial Port)也是串行通信的一种,且属于异步通信。

(三)单工模式

通信时一方固定发,另一方固定收,用一根总线传数据,只能单向传信息,就像只能听别人说,没法回应。

(四)半双工通信

数据能在两个方向交替传,但不能同时进行。通信双方能发也能收,不过不能同时干这两件事,好比和人交替说话、倾听,你说时对方听,对方说时你听,常用于对话类场景。

(五)全双工通信

数据可同时在两个方向传输,双方能同时发和收数据,实现双向通信,类似打电话,能同时说和听。

(六)串行的异步与同步通信

1. 异步通信

两个字符(8 位)之间时间间隔不固定,但一个字符内各位时间间隔固定。收发双方波特率得事先约定好。串口通信时,波特率若没约定好,数据传输会乱。发送和接收方各自 “计时”,只要误差不超 6% 左右就行,这就像打字,敲每个字母的时间自己控制,只要接收端能正确识别。

2. 同步通信

要求收发双方同频同相。设备间除数据线(SDA),还有时钟线(SCL),发送方控制时钟线变化,每发一个比特,时钟线都按规则改变,就像合唱团靠指挥员控制节奏,大家按节奏唱歌,IIC、SPI 都用这种方式。同步和异步串行通信的区别是有无时钟线,有就是同步,没有就是异步。

注:同步串行通信方式与异步串行通信方式的区别:存在时钟线的为同步串行

通信方式通信,没有时钟线的为异步串行通信方式。

二、串行口通信(全双工、异步)

(一)UART 协议

UART(通用异步收发器)是常用串行通信协议,用于设备间数据传输,通过 TXD(发送线)和 RXD(接收线)实现异步传输,TXD 发数据到另一设备,RXD 从另一设备收数据到本设备。

(二)串口通信时序

以 TTL 为例,不同主机间数据格式如下:

  • 空闲时:数据线为高电平。
  • 起始位:发送方发一个低电平作为起始位。
  • 数据位:按低位先行(第一个比特是最右边的最低位)发送。
  • 校验位:有奇校验、偶校验和无校验三种,可选择发或不发。奇校验要让数据位加校验位中 “1” 的总数为奇数;偶校验则让总数为偶数。
  • 停止位:校验位后发一个停止位(高电平),把两个数据分隔开,停止位也可以是 1.5 个或 2 个。
    简单说通信逻辑就是:空闲时数据线高电平,发数据先送低电平起始位,然后按低位先行发 8 个数据位,接着可选校验位,最后发高电平停止位。

(三)波特率

用波特率(bps)描述串口数据传输速率,指每秒传输的比特数。常见波特率有 1200、2400、4800、9600、115200 等。比如 9600bps,就是每秒传 9600 个比特,每个比特传输时间约 1.041×10⁻⁴秒。

三、三种串行通信的物理表现

主机间通信,导线内阻会导致电压衰减,TTL 电平还会因主机距离出现高电平衰减和串扰。

(一)TTL

芯片引脚产生的电压,和芯片有关,51 单片机下是 5V,2440 下是 3.3V 等。5V TTL 通信距离一般在 10 - 20 米,传输距离受限。逻辑 0 是 0V 低电压,逻辑 1 由芯片供电电压决定。

(二)RS232

为解决 TTL 传输距离短的问题,IEEE 颁布 RS232 标准。逻辑高电平(逻辑 1)在 - 3V 到 - 15V 之间,逻辑低电平(逻辑 0)在 + 3V 到 + 15V 之间。收发主机有收、发、地三根线,是全双工的,理论能传 20 - 30 米。

(三)RS485

用 A、B 两根信号线,通过比较两者电压差识别信息,+7V 到 + 12V 是逻辑 1,-7V 到 - 12V 是逻辑 0。差分传输抗干扰强,传输距离可达 1200 米,适用于大范围传输。因为传输时两根线都得用,所以是半双工的。

四、串行口寄存器

包括 SBUF(串行口数据缓冲寄存器)、SCON(串行口控制寄存器)、PCON(电源控制寄存器)等,这些寄存器用于配置和控制串行通信的相关参数与状态。

五、USB 下载电路模块相关

(一)xdata 的作用

不把内容存在芯片内部 RAM,而是存在扩展的 RAM 里,能扩展存储容量。

(二)定时器初值计算

公式为2^8−2^smod×focs/32/bps/12。其中 smod 是 PCON 的 B7 位(0 或 1,SMOD=1 时波特率翻倍),focs 是晶振频率(如 11.0592M),bps 是目标波特率(如 2400),2^8因用 8 位自动重装定时器工作方式。若 2400bps 且 smod=1,计算得初值 232。

六、MODBUS 通信协议

协议通过定义数组元素内容来规定通信帧结构。如图中主机与从机通信,帧包含起始字节、地址码、功能码、数据、校验码、结束码等。功能码区分功能(如点灯、数码管、蜂鸣器、测温等),从机到主机时功能码最高位会进行或 1 操作。

http://www.xdnf.cn/news/1467577.html

相关文章:

  • K8S-Pod(上)
  • 2025国赛C题创新论文+代码可视化 NIPT 的时点选择与胎儿的异常判定
  • 与优秀者同行,“复制经验”是成功的最快捷径
  • CAD【xplode】和【explode】功能的区别
  • 电磁波成像(X射线、CT成像)原理简介
  • 【AI产品思路】AI能力展示中心:产品设计与体验优化方案
  • shell简单使用(-)判断
  • 在Windows中已经启动的容器(比如xinference),如何设置让其在每次Docker启动时能自动启动
  • Java对象在内存中的布局详解
  • 【mysql】SQL查询全解析:从基础分组到高级自连接技巧
  • 如何将联系人从 iPhone 转移到 Redmi 手机
  • 亲戚关系计算器,秒懂全家称呼!
  • 基于YOLO目标检测模型的视频推理GUI工具
  • 超越自动化:为什么说供应链的终局是“AI + 人类专家”的混合智能?
  • Web服务与Nginx详解
  • 【服务器】英伟达M40显卡风冷方案心得
  • Git 工具的「安装」及「基础命令使用」
  • 从零到上线:Docker、Docker Compose 与 Runtime 安装部署全指南(含实战示例与应用场景)
  • 小团队如何高效完成 uni-app iOS 上架,从分工到工具组合的实战经验
  • DL3382P6平替RClamp3382P.TCT
  • JavaWeb —— 异常处理
  • iPhone17全系优缺点分析,加持远程控制让你的手机更好用!
  • Ubuntu 18.04 上升级 gcc 到 9.4
  • 敏捷开发-Scrum(下)
  • 服务器为啥离不开传感器?一文看懂数据中心“隐形守护者”的关键角色
  • 【前端】使用Vercel部署前端项目,api转发到后端服务器
  • 数据结构初阶:树的相关性质总结
  • 如何使用自签 CA 签发服务器证书与客户端证书
  • 假设一个算术表达式中包含圆括号、方括号和花括号3种类型的括号,编写一个算法来判别,表达式中的括号是否配对,以字符“\0“作为算术表达式的结束符
  • 【Linux系统】POSIX信号量