嵌入式学习 51单片机(3)

UART 概述

通用异步收发器(UART)是一种全双工、串行、异步通信协议,常用于设备间数据传输。包含两根信号线:

  • RXD(接收信号线)
  • TXD(发送信号线)

通信方式

单工

  • 通信方向固定,仅支持单向传输(如广播)。
  • 单根信号线实现数据传输。

半双工(如I2C)

  • 通信双方可切换发送/接收角色。
  • 单根信号线双向传输,但同一时刻只能单向传输。

全双工(UART)

  • 通信双方同时收发数据。
  • 双信号线(RXD/TXD)实现双向实时传输。

数据传输规则

LSB优先

  • 数据位传输从最低位(LSB)开始。

串行 vs 并行

特性 串行 并行
速率 较慢(逐位传输) 较快(多线同时传输)
硬件成本
抗干扰性 强(适合远距离,如RS485) 弱(30米内有效)

串口通信时序

  1. 空闲状态:高电平。
  2. 起始位:高→低电平跳变,标志通信开始。
  3. 数据位:8位(LSB优先),可配置为5-9位。
  4. 校验位(可选):奇偶校验(见下文)。
  5. 停止位:高电平,标志帧结束(通常1-2位)。

奇偶校验

问题:无法检测偶数个位错误。

  • 奇校验:数据位+校验位中"1"的总数为奇数。
  • 偶校验:数据位+校验位中"1"的总数为偶数。

串口参数配置

常见参数组合

  • 9600,8,N,1(波特率9600,8位数据,无校验,1位停止)
  • 2400,8,E,1(偶校验)
  • 115200,8,O,1(奇校验)

参数说明

  • 波特率:bps(如9600=9600bit/s)。
  • 校验位N(无)、E(偶)、O(奇)。

同步与异步通信

  • 同步(如I2C/SPI):依赖共享时钟线(SCL/SCLK)同步数据。
  • 异步(UART):无时钟线,通过预定义波特率同步。

寄存器配置(以8051为例)

SCON/PCON寄存器

  • 工作模式:SM0=0SM1=1(8位UART)。
  • 允许接收:REN=1
  • 中断标志:TI(发送完成)、RI(接收完成),需软件清零。

定时器配置

  • 模式:TMOD=0x20(定时器1,8位自动重载)。
  • 波特率:写入TH1/TL1初值,TCON.TR1=1启动。

中断配置

  • 全局中断:IE.EA=1
  • 串口中断:IE.ES=1

主从应答机制

  • 主机 :发起通信请求(如发送指令01控制LED)。
  • 从机:解析指令并执行操作,返回应答信号。

补充要点

  1. 差分信号(如RS485):增强抗干扰能力,适合长距离通信。
  2. 硬件流控 :通过RTS/CTS信号线控制数据流,避免缓冲区溢出。
  3. 现代应用:USB转UART芯片(如CH340)简化嵌入式调试。

常见问题

  • 波特率误差:需保证收发双方误差<2%(如晶振精度影响)。
  • 电平标准:UART通常为TTL电平(0-3.3V/5V),与RS232(±12V)需电平转换。

通过合理配置参数和寄存器,UART可实现稳定可靠的设备间通信。

相关推荐
楼田莉子5 小时前
C++算法专题学习——分治
数据结构·c++·学习·算法·leetcode·排序算法
CC呢5 小时前
基于单片机智能热水壶/养生壶设计
单片机·嵌入式硬件·单片机设计
励志不掉头发的内向程序员6 小时前
C++进阶——继承 (1)
开发语言·c++·学习
悠哉悠哉愿意6 小时前
【数学建模学习笔记】机器学习分类:随机森林分类
学习·机器学习·数学建模
贾亚超7 小时前
【STM32外设】DAC
stm32·单片机·嵌入式硬件
悠哉悠哉愿意7 小时前
【数学建模学习笔记】机器学习分类:KNN分类
学习·机器学习·数学建模
四谎真好看7 小时前
Java 学习笔记(进阶篇2)
java·笔记·学习
程序猿炎义7 小时前
【NVIDIA AIQ】自定义函数实践
人工智能·python·学习
小陈phd8 小时前
高级RAG策略学习(四)——上下文窗口增强检索RAG
人工智能·学习·langchain