COM, UART, USART, SERIAL,SCI,RS232,RS485到底都是什么?
最近一段时间在开发过程中遇到了一个问题。其中某一个模块需求三个外部串口,在单片机只配置了一个串口的情况下其余两个串口则通过SPI总线与外部芯片进行扩展配置。
问题如下: MCU的数据手册中指出串口接口的名字为SCI;外设扩展型芯片的数据手册中则将这两个端口标记为UART...
那么程序中相应的命名该叫什么?根据功能,这两者是一样的。
通过查阅资料得出了以下结论: 二者在本质上具有相同性;这类似于出租车与计程车的不同。
详细说明:
SCI(Serial Communication Interface)意为"串行通信接口"。它相较于并行通信而言属于一种概括性的定义,在串行通信技术的发展历程中最初由莫尔公司提出。表面上看似乎涵盖了所有类型的串口接口(如SPI、I2C等),但并不包含这些具体的接口类型!在多数常见的MCU芯片中 SPI、I2C和PCI-SPI通常处于同一水平,在功能定位上相互独立且互不干扰。实际上PCI-SPI(PCI Serial Interface)始终使用UART协议来完成其操作功能。
UART: (Universal Asynchronous Receiver & Transmitter)即为通用异步收发器。它是一种用于串行通信的协议,在其规定下明确了串行通信中的频率(波特率)、起始-停止位、数据位以及校验位等多种格式,并定义了多种同步 handshake 信号。----------这个说明已经相当具体地指出了该协议的具体内容与构成要素了呢!我认为"明确"这个词用得非常恰当哦~
USART: (Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行接收/发送器 USART是一个全双工同步/异步串行收发模块,在串口接口设计中具备高度灵活设计特点。**--------这个模块主要增加了同步功能,为此需要额外增加一条CLK线进行时钟同步,但这也带来了传输效率的提升,类似于SPI协议的特点。我们知道UART控制器默认设置为9600波特率,但在实际应用中若发送端使用9650波特率编码,接收端依然能够正常解码,只要接收端时钟频率与发送端频率匹配且没有明显偏差即可,这正是异步通信的优势所在——无需共享统一的时钟源即可实现可靠通信。而同步传输模式则通过使用CLK线实现时钟同步,能够省去startbit、stopbit等不必要的位元,从而提高传输效率。目前个人对USART模块还处于初步了解阶段
就如COM端口,在Windows系统中被定义为basic input/output port(BITPort),其基本含义是communication(通信)。它主要是在个人电脑上的一种特定接口定义。Windows将Windows自带的UART端口映射到系统资源管理器中作为一个特定的资源名称。I can, in my programs, assign UART ports to custom names like 'MY_PORT' without issue.无需过多纠结于这些细节。
而后这些规范包括了 RS232 RS485 以及 RS422 等串行通信的标准 它们都涉及 UART 信号输出之后 需要通过特定的接口设备生成相应的连接口 才能实现对外端的有效发送
