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

嵌入式学习日记(41)串口

1. 什么是串行通信,什么是并行通信?

  • 串行通信:数据位一位接一位地在单条信道(如一根数据线)上顺序传输。就像单车道的公路,车辆必须依次通过。

    • 优点:成本低(线少)、抗干扰能力强、适合远距离通信。

    • 缺点:速度相对较慢(在相同时钟频率下)。

  • 并行通信:数据的多位(如8位、16位)同时通过多条并行的信道(如8根数据线)传输。像多车道的公路,多辆车可以并排同时行驶。

    • 优点:速度理论上是串行的N倍(N为线数)。

    • 缺点:成本高(线多)、线间干扰严重(信号同步困难),不适合远距离通信。

2. 什么是单工,半双工,全双工通信?

这是描述通信方向性的三种模式:

  • 单工:数据只能单向传输。一端固定为发送端,另一端固定为接收端。例如:广播、电视。

  • 半双工:数据可以双向传输,但不能同时进行。同一时刻只能有一方发送,另一方接收。就像对讲机,说话时要按住按键,说完松开才能听对方说。

  • 全双工:数据可以同时双向传输。双方都可以在发送数据的同时接收数据。就像打电话,双方可以同时说话和听对方说话。

3. 什么是串口通信?简述串口通信的通信时序?

  • 串口通信:一种典型的串行、异步通信方式。它通过特定的接口(如DB9)和协议,将数据按位顺序传输。

  • 通信时序(以UART为例)

    1. 空闲状态:通信线(TX/RX)保持在高电平(逻辑1)。

    2. 起始位:发送方先将线路拉低到低电平(逻辑0),持续1位时间,表示一帧数据的开始,用来同步时钟。

    3. 数据位:紧接着起始位之后,传输5-9位有效数据(通常是8位),从最低位(LSB)开始发送。

    4. 校验位(可选):跟在数据位之后,1位,用于简单的错误检测(奇校验或偶校验)。

    5. 停止位:最后是停止位,将线路拉回高电平(逻辑1),持续1、1.5或2位时间,表示一帧数据的结束,并确保起始位的下降沿能被正确识别。

一帧数据的时序图可简化为:[空闲高电平] -> [起始位(低)] -> [数据位0] -> [数据位1] -> ... -> [数据位7] -> [校验位] -> [停止位(高)] -> [空闲高电平]

4. 串口通信的速率是由什么决定的?常见的波特率有哪些?

  • 速率决定因素:串口通信的速率由波特率 决定。波特率表示每秒传输的码元符号个数,对于串口通信而言,可以近似理解为每秒传输的二进制位数(bps, bits per second)。通信双方必须设置为相同的波特率才能成功解码数据。

  • 常见波特率:1200, 2400, 4800, 9600(最常用), 19200, 38400, 57600, 115200等。

5. 什么是同步通信?什么是异步通信?串口通信属于哪种?

  • 同步通信:收发双方使用同一个时钟信号进行同步。数据通常以一大块(帧)的形式连续传输,中间没有间隙。时钟信号可以单独一根线传输,也可以嵌入在数据中。例如:SPI, I2C总线。

  • 异步通信:收发双方有各自的时钟,不需要统一的时钟线。通过起始位停止位来界定每一帧数据,实现同步。数据可以间歇性地、不规则地传输。例如:UART(串口通信)。

  • 串口通信属于异步通信

6. 什么是TTL,RS232,RS485?

这三者都是串行通信的电气标准,规定了电压水平、连接器等物理层特性。

  • TTL:晶体管-晶体管逻辑电平。是芯片直接使用的电平标准。

    • 逻辑00V (或 < 0.8V)

    • 逻辑1+3.3V 或 +5V (通常 > 2.4V)

    • 传输距离很短(通常板卡内部),抗干扰能力弱。

  • RS-232:一种古老的、应用广泛的串行通信标准。使用负逻辑较高电压,旨在提高抗干扰能力和传输距离(可达15米)。

    • 逻辑0+3V ~ +15V (称为“Space”)

    • 逻辑1-3V ~ -15V (称为“Mark”)

    • 通常使用DB9接口,采用全双工(点对点)方式。

  • RS-485:一种现代化的串行通信标准。使用差分信号(两根线A、B的电压差来表示数据),抗共模干扰能力极强,传输距离远(可达1200米),支持多点通信(一个主机可带多个从机)。

    • 逻辑1(A-B) > +200mV

    • 逻辑0(A-B) < -200mV

    • 通常采用半双工方式(需要方向控制),是工业现场总线的基础。

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

相关文章:

  • 数据库(基础操作)
  • 载流子寿命
  • 基于FPGA实现CRC校验码算法(以MODBUS中校验码要求为例)verilog代码+仿真验证
  • Python命令行选项(flags)解析
  • 漫画布局面板设计系统
  • 事务管理的选择:为何 @Transactional 并非万能,TransactionTemplate 更值得信赖
  • 从Java全栈到前端框架:一位程序员的实战之路
  • NestJS 整合 Redis 特性详解
  • 2025年统计与数据分析领域专业认证发展指南
  • [TryHackMe]Wordpress: CVE-2021-29447(wp漏洞利用-SSRF+WpGetShell)
  • harmony 中集成 tuanjie/unity
  • Leetcode每日一练--20
  • ESP-IDF串口中断接收
  • 概率论第二讲——一维随机变量及其分布
  • 广告投放全链路解析
  • B.50.10.01-消息队列与电商应用
  • PyInstaller完整指南:将Python程序打包成可执行文件
  • Nacos中yaml文件新增配置项不规范导致项目启动失败
  • 在 CentOS 上完整安装 Docker 指南
  • SQLServer死锁监测方案:如何使用XE.Core解析xel文件里包含死锁扩展事件的死锁xml
  • LightDock.server liunx 双跑比较
  • 消息队列-ubutu22.04环境下安装
  • 激光雷达与IMU时间硬件同步与软件同步区分
  • 深度学习之第八课迁移学习(残差网络ResNet)
  • ChartGPT深度体验:AI图表生成工具如何高效实现数据可视化与图表美化?
  • RequestContextFilter介绍
  • 53.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--集成短信发送功能
  • 《C++变量命名与占位:深入探究》
  • SDRAM详细分析—06 存储单元架构和放大器
  • RPC内核细节(转载)