硬件开发—IMX6ULL裸机—UART通信
1.串口通信相关基础概念
1.单工通信(Simplex Communication)
核心定义:通信双方的角色完全固定,一方仅作为 “发送端”(只能向外发送数据),另一方仅作为 “接收端”(只能接收数据),数据只能沿单一方向传输,无法反向交互。
硬件特点:仅需 1 根数据线(负责单向数据传输)+ 1 根接地线(提供电平参考),硬件结构最简。
工作过程:发送端持续或按需输出数据,接收端始终处于 “监听” 状态,无需反馈任何信息(也无法反馈)
典型例子:
传统广播(电台向听众发送音频信号,听众无法向电台回传信息)
红外遥控器(遥控器向电视发送控制指令,电视不向遥控器反馈)
2.半双工通信(Half-Duplex Communication)
核心定义:通信双方均可作为发送端和接收端(角色可切换),但同一时间只能有一个方向传输数据(即 “发送时不能接收,接收时不能发送”),需通过协议或硬件机制控制角色切换。
硬件特点:通常仅需 1 根数据线(分时复用,既传发送数据也传接收数据)+ 1 根接地线
工作过程:
初始状态下,双方默认处于 “接收模式”,监听数据线;
当 A 端需要发送数据时,通过控制信号切换为 “发送模式”,向 B 端传输数据,此时 B 端保持 “接收模式”;
A 端发送完成后,切换回 “接收模式”;若 B 端需要回传数据,再切换为 “发送模式”,A 端转为 “接收模式”。
典型例子:
对讲机(按下 “说话键” 时为发送端,松开后为接收端,双方不能同时说话)
3.全双工通信(Full-Duplex Communication)
核心定义:通信双方可同时进行双向数据传输(即 A 端发送数据的同时,B 端也能向 A 端回传数据),无需切换角色,实现 “双向同步交互”
硬件特点:至少需要 2 根数据线(1 根专门用于 A→B 发送,1 根专门用于 B→A 接收)+ 1 根接地线;数据线独立工作,互不干扰
工作过程:双方的发送端和接收端始终处于激活状态,发送数据和接收数据在不同的数据线中并行进行,无需等待对方完成发送
典型例子:
打电话(双方可同时说话和倾听,声音信号在两条独立的线路中传输)
4.串行通信与并行通信(按数据传输方式分类)
两种模式的核心差异在于一次传输的比特数和硬件资源占用,具体如下:
1.串行通信(Serial Communication)
核心定义:将待传输的数据(通常为字节,8 位)拆分为单个比特,按 “先低后高” 或 “先高后低” 的固定次序,在一根或两根数据线上逐位传输(全双工用两根,半双工 / 单工用一根)
硬件特点:
数据线数量少(1~2 根),占用芯片引脚和 PCB 布线资源少,硬件成本低
工作过程(以先传低位为例):
发送端将字节 拆分为 8 个比特
按次序在数据线上逐位发送
接收端按相同次序逐位接收
优势与局限:
优势:资源占用少、结构简单、抗干扰能力较强、适合长距离传输
局限:传输速率相对较低(一次仅传 1 位),不适合超高速场景(如 GB 级数据传输)
典型例子:TTL 串口、RS232、RS485、UART、SPI(同步串行)、IIC(同步串行)
2.并行通信(Parallel Communication)
核心定义:将待传输的数据(通常为字节、半字或字)的多个比特同时传输,每个比特对应一根独立的数据线,配合一根 “时钟线”(同步)或 “握手信号线”(异步)确保数据同步。
硬件特点:
数据线数量多(如 8 位并行需 8 根数据线,32 位并行需 32 根数据线),占用大量芯片引脚和 PCB 布线资源,硬件成本高;
要求所有数据线的 “传输延迟一致”(否则会出现 “码间串扰”),对线路设计要求严格(如 PCB 需等长布线)。
工作过程:
发送端将字节 8 个比特(bit0~bit7)分别加载到 8 根数据线上
通知接收端 “数据已准备好”
接收端同时读取 8 根数据线上的比特,直接获得完整字节
优势与局限:
优势:传输速率高(一次传 n 位,速率是同时钟下串行的 n 倍),适合短距离高速传输
局限:资源占用多、成本高、抗干扰能力弱、传输距离短
5.异步通信与同步通信(按数据同步方式分类)
两种模式的核心差异在于是否依赖专用时钟线以及 “同步机制”,具体如下:
1.异步通信(Asynchronous Communication)
定义:收发双方无专用时钟线,通过 “约定波特率” 和 “数据帧结构” 实现同步,即双方预先约定好 “每比特的传输时间”(由波特率决定),并通过帧中的 “起始位” 和 “停止位” 标记数据的开始和结束。
关键前提:
收发双方的波特率必须一致;
数据帧结构固定(起始位、数据位、校验位、停止位的位数需预先约定)。
数据帧结构(以 “8N1” 为例,即 8 位数据、无校验、1 位停止位):
空闲状态:数据线保持高电平(表示无数据传输);
起始位:发送端输出 1 个低电平(打破空闲状态,通知接收端 “数据即将到来”);
数据位:按 “先低后高” 次序传输 8 个比特;
校验位(可选):无校验时省略,有校验时传输 1 个比特(奇校验确保 “数据位 + 校验位” 中 1 的总数为奇数,偶校验为偶数);
停止位:输出 1 个高电平,标记一次数据结束,同时恢复空闲状态,为下一次做准备。
工作过程:
接收端持续监听数据线,当检测到 “高电平→低电平” 的跳变(起始位)时,启动内部定时器;
定时器按波特率计算的 “每比特时间的中间时刻” 采样数据位;
采样完所有数据位(和校验位)后,检测到停止位(高电平),确认一次数据接收完成,重组数据。
2.同步通信(Synchronous Communication)
核心定义:收发双方通过专用时钟线 实现同步,发送端控制时钟线的电平变化(如上升沿或下降沿),每一个时钟周期传输 1 个比特数据,接收端严格按照时钟信号的节奏采样数据,无需起始位和停止位。
关键前提:
时钟线由 “主设备”(通常是 CPU 或控制器)控制,“从设备”(如传感器、存储芯片)被动跟随时钟;
数据传输特点:
无额外的起始 / 停止位,数据连续传输(一帧可包含多个字节),传输效率高;
串口通信属于异步串行通信
2.UART通信
注:设置比特率相关参数
要设置的波特率位115200,寄存器频率为80MHz,经计算,带入公式的比值为43.402
比值一定,故可以设置UBIR+1为1000,JBIR = 43.402 *1000 -1 =43401
最终得UBIR=999,UBMR=43401