文章目录
UART相关描述及概念
计算机中常见的几种硬件通信方式
UART串口的定义
UART串口的三种工作方式
UART协议相关概念
ARM裸板操作UART串口进行数据输出
查看芯片手册UART相关内容
支持6路UART
UART控制器内部集成了发送器
UART控制器内部还集成了接收器
波特率配置P969
UART控制器性格的寄存器
代码示例:
UART相关描述及概念
计算机中常见的几种硬件通信方式
计算机中CPU和外设进行硬件通信的方式有以下几种:
- GPIO通信方式,如:LED等、蜂鸣器等。
- UART串口通信方式,如:GPS、GPRS等等。
- I2C总线通信方式,如:重力传感器、加速度传感器、触摸屏等。
- SPI总线通信方式,如:norflash闪存、触摸屏等、
- 1-wire(一线式)总线通信方式,例如:温度传感器、EEPROM存储器等。
UART串口的定义
UART串口定义:通用串行异步收发器
通用: UART串口应用非常广泛
串行: CPU和外设进行数据通信时,只需一根信号线即可,此信号线又称数据线,也就是说CPU和外设进行数据通信时,是一个bit位一个bit位的传输:
- 切记:UART数据传输从低位开始!例如:CPU向BT发送一个0x95这个数据
- 数据线的操作如下:
高->低->高->低->高->低->低->高 1 0 1 0 1 0 0 1
并行: CPU和外设数据传输时,需要多根信号线(数据线),8/16/32根,那么也就是一次数据传输可以同时传输8bit/16bit/32bit。
异步: CPU的数据处理速度要远远快于外设,所以CPU和外设进行数据传输时,务必要考虑数据同步。双方在数据正式传输时,只要保证数据同步即可,传输前和传输以后,无需考虑数据同步。
- 数据同步: CPU向设备发送数据以后,要确保外设能够 正常的将数据接收到,接收完整! 计算机中数据同步的方法有两种:异步和同步。
- 异步定义: 双方在数据正式传输时,只要保证数据同步即可,传输前和传输以后,无需考虑数据同步。
- 同步定义: CPU和外设进行数据传输时,如果采用同步方式保证数据同步,那么CPU和外设之间不仅仅有数据线,还需要一根时钟控制信号线,此信号线就是用来实现双方的数据同步。
收发器: 接收和发送数据的硬件单元 。
UART串口的三种工作方式
单工: 数据传输永远只能一个方向。
半双工: 数据传输可以两个方向(可以收也可以发,但不能同时进行)
全双工: 数据传输可以同时双向进行,CPU和外设数据传输需要两根数据线,一根用于发送(TX),一根用于接收(RX),一定要记得连接GND。
UART协议相关概念
如何利用异步实现UART串口的数据同步?
- 在UART数据传输协议中。
空闲位: CPU和外设不再进行数据传输时,数据线上一直发送空闲位,高电平(1)有效。
起始位: CPU和外设进行数据传输时,首先在数据线上要发送一个起始位信号,有效位数:1个bit位,低电平有效。
数据位: 指定有效的数据位数,选择如下:5 / 6 / 7 / 8一般选择为8位。
奇偶校验位: 指示数据传输时是否发生错误,有效的校验位数:1个bit位。对数据的校验方式有三种:奇校验、偶校验、不校验:无需发送校验位。这里以CPU向BT发送0X95数据为例,采用奇校验方式检查数据传世是否发生错误。
注意:CPU和BT必须都是奇校验方式。
停止位: 指示数据传输结束,有效位数 :1 bit或者2bit,有效电平为高电平。
波特率: 指示双方数据传输的速率。本质就是CPU和外设数据传输指定一个步调,波特率由外设来指定。例如:波特率为115200bps表示一秒钟CPU和外设传输115200个bit位。
发送端
- CPU首先将0x95通过TX数据线发送给BT。
- CPU计算数据0x95中1的个数(4个,4为偶数)
- 由于4是一个偶数,而数据校验采用奇校验,所以CPU最后在发送一个校验位(高电平1)这样加起来高电平个数为5个(奇数),满足了奇校验。
- 结论:校验位为高电平。
发送端 BT接收数据并且判断数据是否正确
- BT从TX上接收数据0x95
- BT再从TX上接收CPU发送来的校验位(高电平1)
- BT先算接收的数据0x95中的1的个数为4,并且采用奇校验来验证,1的个数4和校验位高电平相加符合奇校验。
- BT发现CPU发送的校验位满足,BT确认CPU发送的数据没问题。
ARM裸板操作UART串口进行数据输出
首先查看原理图,在其中找到UART0对应的连接线。UART0其实就是我们在板子上使用的调试串口,所以UART0从CPU发送数据给PC上位机,上位机通过CRT串口调试能够正常接收到发送的数据。连接图如下:
此时,说明通过CPU核访问操作UARTTXD0和UARTRXD0来实现UART操作。具体如下图:
- CPU核通过地址指针的形式访问UART控制器内部的一大堆寄存器,也就是CPU核通过软件给UART控制器发送命令。
- UART控制器根据命令,硬件上自动操作UARTTXD0和UARTRXD0两个引脚。
- 最终影响外设。
- 具体如何配置UART控制器和内部寄存器需要查看芯片手册了。