ARM裸板开发——UART通信方式及使用(一)

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: ARM裸板开发——UART通信方式及使用

文章目录

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


20200105222346366.png

并行: CPU和外设数据传输时,需要多根信号线(数据线),8/16/32根,那么也就是一次数据传输可以同时传输8bit/16bit/32bit。

异步: CPU的数据处理速度要远远快于外设,所以CPU和外设进行数据传输时,务必要考虑数据同步。双方在数据正式传输时,只要保证数据同步即可,传输前和传输以后,无需考虑数据同步。


  • 数据同步: CPU向设备发送数据以后,要确保外设能够 正常的将数据接收到,接收完整! 计算机中数据同步的方法有两种:异步和同步。
  • 异步定义: 双方在数据正式传输时,只要保证数据同步即可,传输前和传输以后,无需考虑数据同步。
  • 同步定义: CPU和外设进行数据传输时,如果采用同步方式保证数据同步,那么CPU和外设之间不仅仅有数据线,还需要一根时钟控制信号线,此信号线就是用来实现双方的数据同步。2020010522241243.png

收发器: 接收和发送数据的硬件单元 。


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位。


20200106205730232.png

20200106205730232.png

发送端


  • 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串口调试能够正常接收到发送的数据。连接图如下:

20200106213456794.png

此时,说明通过CPU核访问操作UARTTXD0和UARTRXD0来实现UART操作。具体如下图:

20200106213410966.png

  • CPU核通过地址指针的形式访问UART控制器内部的一大堆寄存器,也就是CPU核通过软件给UART控制器发送命令。
  • UART控制器根据命令,硬件上自动操作UARTTXD0和UARTRXD0两个引脚。
  • 最终影响外设。
  • 具体如何配置UART控制器和内部寄存器需要查看芯片手册了。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
7月前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
138 0
|
4月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
141 3
|
7月前
|
Linux 开发工具 芯片
玩转 PI 系列 - 如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?
玩转 PI 系列 - 如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?
|
7月前
|
存储 Ubuntu Linux
ARM-Linux开发与MCU开发的不同之处分析
ARM-Linux开发与MCU开发的不同之处分析
75 0
|
Linux C++
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
137 0
|
芯片
基于友善之臂ARM-ContexA9-ADC驱动开发
基于友善之臂ARM-ContexA9-ADC驱动开发
98 0
|
缓存 C++
基于ARM-contexA9-蜂鸣器pwm驱动开发
基于ARM-contexA9-蜂鸣器pwm驱动开发
118 0
|
24天前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
|
2月前
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
2月前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。