2. UART
2.1 是什么?
Universal Asynchronous Receiver/Transmitter
通用异步接收器/发送器,是一种广泛应用于嵌入式领域的串行、异步、全双工通信协议。
2.1.1 异步:收发双方无共享时钟,靠起始 / 停止位同步.
同步通信 vs 异步通信
- 同步通信(I2C/SPI):有共享时钟线
设备之间多一根时钟信号线 SCL/SCK
主机输出统一时钟脉冲;
收发双方看着同一个时钟节拍,时钟到了就采 1bit;
双方时钟完全同步,不需要标记一帧数据的开头结尾。 - 异步通信(UART):没有时钟线
只有 TX、RX 两根数据线,双方各有独立本地晶振,两套时钟互不相连。
问题来了:
两边晶振不可能 100% 精准,频率略有偏差,时间久了 bit 读取会错位,不知道哪一位是数据、哪一位是空。
所以 UART 必须靠起始位、停止位标记一帧的边界,重新对齐。
2.1.2 一般成为串口,原因是
内部把并行字节拆成一串 bit,bit 一个接一个串行流出;数据一位接一位,按顺序排队依次在同一根线上传输。对应英文:Serial Port,直译就是串行端口,简称串口。
2.1.3 协议标准定义了什么
--- 数据链路层协议标准
在协议层中,规定了数据包的内容,由起始位、主要数据、校验位和停止位组成。双方的数据包格式必须约定一致,才能正常发送和接收数据。

2.2 tod
2.2.1 是什么
TOD (Time of Day) :属于【应用层】协议;TOD 明确规定了数据包里必须包含时间信息(年、月、日、时、分、秒,甚至毫秒),以及数据包的格式。
NMEA 协议的GPRMC或GPRMC或GPRMC或GPZDA 语句
NMEA 协议 (GPRMC/GPZDA) = TOD (Time of Day) 包。它是以 纯文本 (ASCII 字符) 通过串口吐出来的。
2.2.2 与uart 关系
TOD 协议的数据,通常是通过 UART 协议这条"传送带"发送出去的。 UART 负责把 TOD 的打包数据转换成电信号传走。
2.2.3 tod 数据


2.3 物理层相关
TTL UART、CMOS UART、RS232、RS422、RS485
这些为物理层标准。
RJ45是一个机械接口标准;物理形态是---千兆网线的接口


案例:
2.3.1 测试1pps+tod
在FPGA阶段 测试1pps+tod 功能时,通过SMA接口进行输出、输入的,该接口的电平是TTL电平。TTL 电平是单端信号,一般有RX、TX、GND 三根线。
测试仪Paragon-X 接收pps、tod 的接口是RJ45,电平是RS422电平。RS422电平 是差分信号,所以接收或者发送方向皆有两根线:RX+ 和 RX- ;TX+ 和 TX-.
2.3.2 测试IRIGB
在FPGA阶段 测试irigb时,B码产生器 通过DB9公头 输出信号;接收B码端需要用DB9母头 接收信号。该信号为RS422差分信号,作为接收,TIME+ 、TIME-、GND。
2.3.3 单端、差分信号
可以简单的理解为:单端信号的发送用一根线完成;接收用1根线完成;单端信号:测的是 信号线对 GND 的电压。
差分信号指的是:发送需要有两根线传信号;接收需要有两根线传信号;测的是 两根线之间的电压差 V_AB = A − B。

2.3.4电路图解读

AM26LV31EIPWR、AM26LV32EIPWR 为两个RS-422 电平转换器芯片,实现电平转换。
图中表示有P、N 表示差分信号某个信号的正极、负极,
2.3.4.1 AM26LV31EIPWR
把单片机发出的 3.3V 数据,翻译成 RS-422 的长距离差分信号,发送到 1000 米外的设备去
2.3.4.2 AM26LV32EIPWR
是把 1000 米外传过来的 RS-422 差分信号,翻译回单片机能看懂的 3.3V 数据
2.4 uart 与TTL UART、CMOS UART、RS232、RS422、RS485 区别
UART 描述的是 "数据怎么在时间上排列"(起始位、数据位、校验位、停止位);
而 RS232 / RS422 / RS485 描述的是 "电信号长什么样、用几根线、能传多远"。