【DAY35】ARM开发:UART 异步串行通信原理、通信标准及模块配置详解

1.UART

异步、串行、全双工通信方式

通信:嵌入式系统中通信指两个或两个以上的主机之间的数据交互

(概念详细见【DAY29】https://blog.csdn.net/2503_92576274/article/details/159290899?fromshare=blogdetail&sharetype=blogdetail&sharerId=159290899&sharerefer=PC&sharesource=2503_92576274&sharefrom=from_link以下为补充)

同步、异步

  • 异步(无时钟线):

双方约定数据传输速率

  • 同步(有时钟线):

eg:I2c

时钟线为低电平时,发送方可以改变数据线

时钟线为高电平时,接收方接收数据,发送方不可以改变数据线

串行、并行

  • 串行:通过一根信号线逐个bit发送数据
    • 传输数据慢;
    • 占用的引脚资源少
    • 硬件成本低、实现简单;
    • 传输距离远,抗干扰性好
  • 并行:通过多根信号线多个bit同时发送
    • 传输数据快
    • 占用的引脚资源多
    • 硬件成本高,实现复杂
    • 传输距离近,抗干扰性差

2.TTL

TTL(Transistor-Transistor Logic):芯片引脚电压

用于两个芯片间通信

传输距离短(理论10-20m、但大部分板上通信实际都是几十cm的传输距离)

RS232标准

(全双工、负逻辑)

高电平: -3V - -15V

低电平:3V - 15V

实际传输距离10几米以内

RS485标准

(半双工通信;抗干扰能力特别强;增大传输距离)

一根数据线,一根差分传输线:差分信号 A - B > 2V A - B < -2V

高电平: 7V ~ 12V

低电平:-7V ~ -12V

3.配置

(1)时钟初始化

基准80MHz 预分频: 1分频;

(2)引脚初始化

IOMUXC_SetPinMux(IOMUXC_UART1_TX_DATA_UART1_TX, 0);

IOMUXC_SetPinConfig(IOMUXC_UART1_TX_DATA_UART1_TX,0x10B0);

IOMUXC_SetPinMux(IOMUXC_UART1_RX_DATA_UART1_RX, 0);

IOMUXC_SetPinConfig(IOMUXC_UART1_RX_DATA_UART1_RX,0x10B0);

(3)寄存器配置

1>UART Receiver Register (Uart 接收寄存器)

UARTx_URXD: 只读寄存器

RX_DATA b0-7: 已接收数据。保存接收到的字符。在7位模式下,最高有效位(MSB)被强制为0。在8位模式下,所有位都处于活动状态。

2>UART Receiver Register (Uart 发送寄存器)

UARTx_UTXD:

TX_DATA b0-7:需要发送的数据,当软件向 TX_DATA 字段执行写入操作时,UART 硬件会自动开始一个新字符的发送过程。

(3)UART Control Register 1 (Uart 控制寄存器1)

UARTx_UCR1:

UARTEN b0:UARTEN 位是整个 UART(通用异步收发传输器)模块的总开关。它控制着 UART 模块的核心功能是开启还是关闭。

(4)UART Control Register 2 (Uart 控制寄存器2)

UARTx_UCR2:

UARTENb0:软件复位 软件复位将保持有效 4 个模块时钟周期;

RXEN b1:接收器使能;

TXEN b2:发送器使能;

WS b5:字长(数据位宽度)。控制字符的数据位长度;

STPB b6:停止位数量。控制每个字符后发送的停止位数量;

PREN b8:奇偶校验使能;

IRTS b14:忽略 RTS 引脚流控;

(5)UART Control Register 3 (Uart 控制寄存器3)

UARTx_UCR3:

RXDMUXSEL b2:注意: 在此芯片中,UART 工作于多路复用 (MUXED) 模式,因此此位应始终设置为 1

(6) UART FIFO Control Register (FIFO控制寄存器)

UARTx_UFCR:

RFDIV b7-b9:参考时钟分频器。控制参考时钟的分频比 1分频;

(7) UART Status Register 2 (UARTx_USR2)

UARTx_USR2:

TXDC b3:发送完成;

RDR b0:接收数据就绪;

(8) 波特率配置寄存器

UART BRM Incremental Register (UARTx_UBIR)

INC b0-b15:UBIR;

UART BRM Modulator Register (UARTx_UBMR)

MOD b0-b15:UBMR;

计算公式:

BaudRate = Ref Freq/(16 x ((UBMR + 1) / (UBIR + 1)))

相关推荐
2501_915918412 小时前
免 Xcode 开发 iOS,工具链替代方案与编译、签名、安装
ide·vscode·macos·ios·个人开发·xcode·敏捷流程
阿米亚波2 小时前
【C/C++包管理器】vcpkg(by microsoft)
c语言·c++·git·vscode·microsoft·github·vcpkg
LCMICRO-133108477462 小时前
国产长芯微LD3092完全pin-pin替代LT3092,是一款可编程两端电流源
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·恒流源·lt3092
SNAKEpc121383 小时前
OpenGL(十一)- 变换管线
c语言·c++·算法·矩阵·图形渲染
小小龙学IT3 小时前
Day 26-27 项目实战:从零构建一个高并发聊天室(epoll + 线程池)
linux·服务器·c语言·开发语言·网络
c238564 小时前
MySQL 基础用法(下):查询进阶与核心特性
android·c语言·c++·mysql
十月的皮皮4 小时前
STM32从零到量产开发:四路继电器工业控制模块开发 - 上位机操作说明书
c语言·stm32·单片机·stm32cubemx
小僧景贤6 小时前
嵌入式C语言 第十一篇:成长路线|嵌入式C工程师完整进阶学习路径(从零到工程级落地|含周期+实战项目)
c语言·开发语言·学习
灵晔君6 小时前
【Linux】进程(四)——进程虚拟地址空间
linux·c语言·开发语言
wengqidaifeng6 小时前
2026 年电赛(TI 杯)控制类 H 题:8 路灰度循迹、直线/半圆分段控制与 S1/S2/S3 状态机
c语言·单片机·嵌入式硬件