嵌入式学习 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可实现稳定可靠的设备间通信。

相关推荐
尘似鹤2 小时前
微信小程序学习(一)
学习·微信小程序
DIY机器人工房6 小时前
关于解决 libwebsockets 库编译时遇到的问题的方法:
服务器·stm32·单片机·嵌入式硬件·tcp
GilgameshJSS7 小时前
STM32H743-ARM例程3-SYSTICK定时闪烁LED
arm开发·stm32·单片机·嵌入式硬件·学习
云山工作室8 小时前
基于单片机的按摩椅系统的设计(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·毕设
聆思科技AI芯片8 小时前
【AI入门课程】2、AI 的载体 —— 智能硬件
人工智能·单片机·智能硬件
文火冰糖的硅基工坊8 小时前
[硬件电路-324]:芯片根据功能、信号类型、应用场景、制造工艺、集成度及设计理念等多个维度进行分类
单片机·嵌入式硬件·系统架构·信号处理
东临碣石829 小时前
【AI论文】潜在区域划分网络:生成建模、表征学习与分类的统一原理
学习
xinfei08039 小时前
第五天——为什么要学习
学习·每天一篇小感悟
尤老师FPGA10 小时前
LVDS系列30:Xilinx 7系 ADC LVDS接口参考设计(一)
单片机·嵌入式硬件·fpga开发
一枝小雨10 小时前
FreeRTOS内存分配与STM32内存布局详解
stm32·单片机·嵌入式·freertos·嵌入式系统·cortex-m3/m4