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

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 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的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
6月前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
119 0
|
3月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
105 3
|
6月前
|
Linux 开发工具 芯片
玩转 PI 系列 - 如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?
玩转 PI 系列 - 如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?
|
6月前
|
存储 Ubuntu Linux
ARM-Linux开发与MCU开发的不同之处分析
ARM-Linux开发与MCU开发的不同之处分析
67 0
|
Linux C++
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
126 0
|
芯片
基于友善之臂ARM-ContexA9-ADC驱动开发
基于友善之臂ARM-ContexA9-ADC驱动开发
92 0
|
缓存 C++
基于ARM-contexA9-蜂鸣器pwm驱动开发
基于ARM-contexA9-蜂鸣器pwm驱动开发
104 0
|
23天前
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
26天前
|
存储 Docker 容器
ARM架构鲲鹏主机BClinux离线安装docker步骤
下载并安装适用于ARM架构的Docker CE二进制文件,解压后移动至/usr/bin目录。创建docker组,配置systemd服务脚本(docker.service、docker.socket、containerd.service),重载systemd配置,启动并启用docker服务。编辑daemon.json配置存储驱动、镜像加速地址等,最后拉取所需镜像。
37 0
|
1月前
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。