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

串口通信的学习

  • 串口通信
    • UART在硬件中通常以一个独立的集成电路(IC)或作为更大芯片(如MCU、SoC)中的一个内部外设模块的形式存在。它的核心功能是进行并转串和串转并的转换,并处理通信协议
  • 串行/并行通信
    • 虽然并行一次能传更多数据,但随着速度提升,多条线之间的信号同步和相互干扰(串扰)变得极其难以处理。而串行通信虽然一次只传一位,但可以通过大幅提高时钟频率来轻松超越并行通信,且布线简单,成本低。现代高速总线(如USB,PCI-E,SATA)都是串行通信
  • 通信模式
    • 单工模式(Simplex Communication):主机间通信时如果一方固定为发送端另外一方固定为接收端,通过一根总线实现数据通信。这种通信方式就像是你只能听别人说话,但无法回答他们一样,只能单向传递信息。
    • 半双工通信(Half-Duplex Communication):是一种通信方式,其中数据传输可以在两个方向之间交替进行,但不能同时进行。换句话说,通信双方可以既发送数据又接收数据,但不能同时进行这两种操作。比方说,就像你可以和别人交替说话和倾听对方说话一样。当你在说话时,对方在听你说:当对方在说话时,你在倾听对方。这种方式允许双方之间在发送和接收数据之间切换,但不能同时进行。半双工通信常用于对话式交流和一些简单的通信场景中。
    • 全双工通信(Full-Duplex Communication):是一种通信方式,其中数据传输可以同时在两个方向进行,允许通信双方同时发送和接收数据,实现双向通信。就像打电话一样,你可以同时说话也可以听对方说话,双方可以同时进行数据传输,实现双向沟通
  • 串口通信
    • 异步串口通信
      • 特点:不需要时钟信号线。发送和接收双方依靠预先约定好的波特率(BaudRate)来同步时序
      • 要求:双方必须严格使用相同的波特率、数据位、停止位、校验位等参数
      • 优点:节省一根时钟线,实现简单
      • 缺点:由于时钟不可能完全一致,长时间传输可能会有微小误差积累,因此不适合极高速和超长数据包传输
      • 代表:UART、RS-232
    • 同步串口通信
      • 特点:有一根专用的时钟信号线(CLK)。发送方在传输数据的同时,会发送一个时钟信号。接收方利用这个时钟边沿来采样数据线,同步精度极高
      • 优点:速度可以非常高,数据包可以很长。
      • 缺点:需要多一根线
      • 代表:SPI,I2C
  • 串口通信的核心参数
    • 配置串口通信时,必须确保通信双方使用相同的参数,否则数据会乱码。这些参数构成了我们常说的"数据帧格式"
    • 作为常用的串行通信方式,以TTL为例,串口通信在不同主机之间的数据格式为:
      • 空闲时数据线为高电平;
      • 发送发发送一个低电平表示起始位;
      • 发送的第一个比特是最低为(最右边);
      • 校验位分为奇校验,偶校验和无校验。奇校验是指确保数据位加上校验位中"1",1的总数为奇数;偶校验是指确保数据位加上校验位中"1",1的总数为偶数;
      • 为保证下一个字节发送前的起始位能够表现出来,校验位之后发送一个停止位1
    • 波特率(Baud Rate):
      • 表示每秒传输的符号个数,可粗略理解为传输速率(比特率,bps)
      • 常见值:9600,19200,38400,115200等。
      • 115200的波特率意味着每位数据宽度大约为1/115200
      • 数据位(Data Bits):
      • 每个帧中实际数据位的长度。可以是5,6,7,8位
      • 最常见的是8位,对应一个字节
    • 奇偶校验位(Parity Bit):
      • 一种简单的错误检查机制
      • 可选值:
        • None:无校验位
        • Even:偶校验,数据位+校验位中"1"的个数为偶数
        • Odd:奇校验,数据位+校验位中"1"的个数为奇数
    • 停止位(Stop Bits):
      • 用于标志一个数据帧的结束。总是逻辑高电平(1)
      • 可以是1位、1.5位或2位。最常见的是1位
    • 常用配置缩写:8N1(8位数据位,无校验,1位停止位),这是最常用的配置
  • 物理接口
    • UART本身是TTL电平(OV表示0,3.3V/5V表示1),传输距离很短(通常不超过一米)。为了进行远距离、抗干扰的串口通信,人们定义了各种物理层标准
    • RS-232:
      • 经典的老式"串口"或"COM口"。使用负逻辑(-3V~-15V表示1,+3V~+15V表示0)使用DB9或DB25接口
      • 传输距离可达15米左右
    • RS-485:
      • 采用差分信号传输(用两条线AB之间的电压差表示0和1),抗共模干扰能力极强
      • 传输距离可达千米以上,并支持多点总线(一个主机可带多个从机)
    • USB转串口(USB to UART TTL):
      • 现代计算机没有原生串口,通常使用USB转串口芯片(如CH340,CP2102,FT232)来模拟一个串口,输出的是TTL电平的UART信号
      • 这是目前单片机、嵌入式设备最常用的连接方式
http://www.xdnf.cn/news/20216.html

相关文章:

  • 日内5%,总回撤10%:EagleTrader风控规则里,隐藏着什么核心考点?
  • 使用API接口获取淘宝商品详情数据需要注意哪些风险?
  • MySQL数据库精研之旅第十六期:深度拆解事务核心(上)
  • python + Flask模块学习 1 基础用法
  • IC ATE集成电路测试学习——Stuck-at fault And Chain(一)
  • 场景切换 × 流畅过渡动画实现方案 | 图扑软件
  • 老师如何高效收集学生学籍信息,完成收集工作?
  • 大模型赋能电子制造全生命周期质量管理的应用及实践
  • 个人健康管理系统设计与实现
  • 代码随想录算法训练营第三天| 链表理论基础 203.移除链表元素 707.设计链表 206.反转链表
  • react antd mobile表单时间选择器
  • 系统架构思考20241204
  • 问卷系统测试报告
  • latex公式符号与字体
  • 【Lin通信】AUTOSAR架构下TC3xx芯片Lin报文收发详解
  • AI提示词增强丨用EARS语法进行产品原子化拆解
  • 【Redis】初识 Redis 与基础数据结构
  • 设置静态IP的方法
  • Docker跨架构部署实操第二弹
  • 代码改变生活:我用Python+LLM给自己写了个健身私教
  • 跨平台超低延迟RTSP播放器技术设计探究
  • EEMD-HHT算法
  • Android 权限机制默认授权分析
  • GPU版Pytorch的安装
  • 有鹿机器人的365天奇幻日记:我在景区当扫地僧
  • 如何通过 Gitee API 上传文件到指定仓库
  • go webrtc - 1 go基本概念
  • 鸿蒙Next的UI国际化与无障碍适老化实践:构建全球包容的数字世界
  • MySQL 综合练习
  • 【数据分享】上市公司数字化转型相关词频统计数据(2000-2024)