UART硬件介绍

往期内容

interrupt子系统专栏:

  1. 专栏地址:interrupt子系统
  2. Linux 链式与层级中断控制器讲解:原理与驱动开发
    -- 末片,有专栏内容观看顺序

pinctrl和gpio子系统专栏:

  1. 专栏地址:pinctrl和gpio子系统

  2. 编写虚拟的GPIO控制器的驱动程序:和pinctrl的交互使用

    -- 末片,有专栏内容观看顺序

input子系统专栏:

  1. 专栏地址:input子系统
  2. input角度:I2C触摸屏驱动分析和编写一个简单的I2C驱动程序
    -- 末片,有专栏内容观看顺序

I2C子系统专栏:

  1. 专栏地址:IIC子系统
  2. 具体芯片的IIC控制器驱动程序分析:i2c-imx.c-CSDN博客
    -- 末篇,有专栏内容观看顺序

总线和设备树专栏:

  1. 专栏地址:总线和设备树
  2. 设备树与 Linux 内核设备驱动模型的整合-CSDN博客
    -- 末篇,有专栏内容观看顺序

目录

前言

串口(UART)作为嵌入式系统中广泛应用的通信接口,以其结构简单、稳定可靠的特点,成为调试与模块连接的首选。串口硬件由发送与接收部分组成,通过三根线(TXD、RXD、GND)实现数据交互。本文介绍了串口的基本参数,如波特率、数据位、校验位等,分析了不同逻辑电平(TTL/CMOS与RS-232)的差异及其在实际应用中的适配性。现代ARM芯片通常采用TTL电平,通过转换芯片支持RS-232或USB接口,实现与外设或电脑间的数据通信。还讲解了串口的内部结构与数据传输流程。

1.串口的硬件介绍

UART的全称是Universal Asynchronous Receiver and Transmitter,即异步发送和接收。

串口在嵌入式中用途非常的广泛,主要的用途有:

  • 打印调试信息;
  • 外接各种模块:GPS、蓝牙;

串口因为结构简单、稳定可靠,广受欢迎。通过三根线即可,发送、接收、地线。

TxD线把PC机要发送的信息发送给ARM开发板。最下面的地线统一参考地。

2.串口的参数

  • 波特率:一般选波特率都会有9600,19200,115200等选项。每秒传递的码元个数,二进制调制下意思就是每秒传输这么多个比特位数(bit)。(二进制调制下波特率其实就是等同于比特率,如果是多进制下则不是。)
  • 起始位:先发出一个逻辑"0"的信号,表示传输数据的开始。
  • 数据位:可以是5~8位逻辑"0"或"1"。如ASCII码(7位),扩展BCD码(8位)。小端传输。
  • 校验位:数据位加上这一位后,使得"1"的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。
  • 停止位:它是一个字符数据的结束标志。

怎么发送一字节数据,比如'A'?

双方约定好波特率:每一位占据的时间,假设为1s(夸张的情况下)

原来TxD和RxD(发送引脚和接收引脚)之间是高电平,ARM拉低电平,保持1bit时间

PC在低电平处开始计时

ARM根据数据(bit)驱动TxD电平(驱动发送引脚处的电平),好让PC处的RxD引脚去接收

TxD = Data[0]

TxD = Data[1]

...

TxD = Data[7]

以上结合起来为数据位

PC则每个数据位中间读取RxD引脚的状态(收到的TxD数据发然PC读取存进PC)

Data[0] = RxD(t0)

Data[1] = RxD(t1)

...

Data[7] = RxD(t7)

如果是以前的电子,那TxD可能还会在发送完数据后再发送一个校验位

分为奇数位和偶数位:数据位+校验位中为1的位的个数为奇还是偶数

传输完数据后,还要引入停止位,把电平恢复到原来的电平状态(高电平)

前面图中提及到了逻辑电平,也就是说代表信号1的引脚电平是人为规定的。

如图是TTL/CMOS逻辑电平下,传输'A'时的波形:

在xV至5V之间,就认为是逻辑1,在0V至yV之间就为逻辑0。

如图是RS-232逻辑电平下,传输'A'时的波形:

在-12V至-3V之间,就认为是逻辑1,在+3V至+12V之间就为逻辑0。

RS-232的电平比TTL/CMOS高,能传输更远的距离,在工业上用得比较多。

市面上大多数ARM芯片都不止一个串口,一般使用串口0来调试,其它串口来外接模块。

3.串口电平

ARM芯片上得串口都是TTL电平的,通过板子上或者外接的电平转换芯片,转成RS232接口,连接到电脑的RS232串口上,实现两者的数据传输。

现在的电脑越来越少有RS232串口的接口,当USB是几乎都有的。因此使用USB串口芯片将ARM芯片上的TTL电平转换成USB串口协议,即可通过USB与电脑数据传输。

上面的两种方式,对ARM芯片的编程操作都是一样的。

电脑是USB接口

差不多,把电平转换芯片换成USB串口芯片,如果采用的逻辑电平方式不同的话,额外加上电平转换芯片即可 -- JZ2440开发板

注意:

串口0一般都是用来与电脑相连打印调试信息,其它串口用来连接模块,如果连接的模块和串口1、2...是相同的逻辑电平那可以直接连接,如果不是那也是需要用到电平转换芯片

4.串口内部结构

ARM芯片是如何发送/接收数据?

如图所示串口结构图:

上图为开发板内串口的UART协议

Transmit Shifter: 发送移位器,将开发板的数据逐位发送到TxD引脚发送给PC端的UART硬件

Transmmit Buffer:发送缓冲寄存器,接收开发板内存发送过来的数据然后发送给移位器

Receive Shifter: 接收移位器,逐行接收PC发送给开发板上的UART硬件中的引脚的数据,然后发送给Receive Buffer

Receive Buffer: 接收缓冲寄存器,开发板内存中会将Receive Buffer中的数据读走

要发送数据时,CPU控制内存要发送的数据通过FIFO传给UART单位,UART里面的移位器,依次将数据发送出去,在发送完成后产生中断提醒CPU传输完成。

接收数据时,获取接收引脚的电平,逐位放进接收移位器,再放入FIFO,写入内存。在接收完成后产生中断提醒CPU传输完成。

5.串口和引脚

串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

引脚,任何一个芯片都要在有电的时候去工作,那么它必然就有一个VCC,一个GND,这个VCC和GND就是两个引脚,除了这些,还有一些其他的引脚,比如RST,普通的IO都是引脚。

引脚与串口的区别,他们都是物理接口,若干个特定的IO(引脚)组成一个串口,比如我们的单片机的串口(包涵了引脚GND VCC RXD TXD)。

串口(Serial Port):串口是一种用于在计算机和外部设备之间进行数据传输的接口。它通常用于通过串行通信协议(如RS-232、RS-485、UART等)来传输数据。串口通常具有多个引脚,包括数据线(如TX、RX)、控制线(如RTS、CTS)和地线(GND)。串口可以用于与各种外部设备进行通信,如调制解调器、打印机、传感器等。

引脚(Pin):引脚是电子设备上的接点,用于连接和传输电信号。引脚通常用于连接电子元件(如集成电路、传感器、电机等)或连接外部设备(如显示器、键盘、LED等)。引脚可以用于输入和输出电信号,以实现数据的传输和控制。引脚的功能和用途取决于所连接的设备或电路的设计。

相关推荐
哔哥哔特商务网3 分钟前
高集成的MCU方案已成电机应用趋势?
单片机·嵌入式硬件
跟着杰哥学嵌入式3 分钟前
单片机进阶硬件部分_day2_项目实践
单片机·嵌入式硬件
电子科技圈39 分钟前
IAR与鸿轩科技共同推进汽车未来
科技·嵌入式硬件·mcu·汽车
东芝、铠侠总代136100683932 小时前
浅谈TLP184小型平面光耦
单片机·嵌入式硬件·物联网·平面
lantiandianzi2 小时前
基于单片机中医药柜管理系统的设计
单片机·嵌入式硬件
小A1593 小时前
STM32完全学习——使用SysTick精确延时(阻塞式)
stm32·嵌入式硬件·学习
楚灵魈3 小时前
[STM32]从零开始的STM32 HAL库环境搭建
stm32·单片机·嵌入式硬件
小A1593 小时前
STM32完全学习——使用标准库点亮LED
stm32·嵌入式硬件·学习
code_snow5 小时前
STM32--JLINK使用、下载问题记录
stm32·单片机·嵌入式硬件
韦德斯5 小时前
嵌入式Linux的RTC读写操作应用
linux·运维·c语言·arm开发·实时音视频