ARM架构与编程(基于I.MX6ULL): 串口UART编程(七)(上)

简介: ARM架构与编程(基于I.MX6ULL): 串口UART编程(七)

1.硬件知识 URAT硬件介绍


1.1.串口的硬件介绍


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

串口在嵌入式中用途非常的广泛,主要的用途有: 打印调试信息; 外接各种模块:GPS、蓝牙; 串口因为结构简单、稳定可靠,广受欢迎。

通过三根线即可,发送、接收、地线。

1670931929926.jpg

通过TxD->RxD把ARM开发板要发送的信息发送给PC机。

通过RxD->TxD线把PC机要发送的信息发送给ARM开发板。

最下面的地线统一参考地。


1.2.串口的参数


波特率:一般选波特率都会有9600,19200,115200等选项。其实意思就是每秒传输这么多个比特位数(bit)。

起始位:先发出一个逻辑”0”的信号,表示传输数据的开始。

数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD码(8位)。小端传输。

校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。

停止位:它是一个字符数据的结束标志。


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

‘A’的ASCII值是0x41,二进制就是01000001,怎样把这8位数据发送给PC机呢?


双方约定好波特率(每一位占据的时间);

规定传输协议:

原来是高电平,ARM拉低电平,保持1bit时间;

PC在低电平开始处计时;

ARM根据数据依次驱动TxD的电平,同时PC依次读取RxD引脚电平,获得数据;

1670931942434.jpg

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

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

1670931957715.jpg

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

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

1670931967268.jpg

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

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

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


1.3.串口电平


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

1670931983578.jpg

1670931991720.jpg

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

1670932002251.jpg

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


1.4 串口内部结构


ARM芯片是如何发送/接收数据? 如图所示串口结构图:

1670932015047.jpg

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

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


波特率115200: 就是1s传输115200,1bit花费1/115200s

,传输一次(假设10bit),就是1/11520。就是说明1s传输11520byte。


2. IMX6ULL UART操作


2.1. 串口编程步骤


2.1.1. 看原理图确定引脚


有很多串口,使用哪一个?看原理图确定


2.1.2. 配置引脚为UART功能


至少用到发送、接收引脚:txd、rxd

需要把这些引脚配置为UART功能,并使能UART模块


2.1.3. 设置串口参数


有哪些参数?

波特率

数据位

校验位

停止位

示例: 比如15200,8n1表示波特率为115200,8个数据为,没有校验位,1个停止位


2.1.4. 根据状态寄存器读写数据


肯定有一个数据寄存器,程序把数据写入,即刻通过串口向外发送数据

肯定有一个数据寄存器,程序读取这个寄存器,就可以获得先前接收到的数据

很多有状态寄存器 * 判断数据是否发送出去?是否发送成功? * 判断是否接收到了数据?


2.2. IMX6ULL串口框架


参考手册IMX6ULLRM.pdf中《CChapter 55: Universal Asynchronous Receiver/Transmitter (UART)》

各类芯片的UART框图都是类似的,当设置好UART后,程序读写数据寄存器就可以接收、发送数据了。

1670932058420.jpg

2.3. 具体操作


2.3.1 看原理图确定引脚


100ASM IMX6ULL的UART1接到一个USB串口芯片,然后就可以通过USB线连接电脑了


原理图如下

1670932088752.jpg

上图中的USART1_RX、USART1_TX,接到了PA9、PA10

1670932096885.jpg


2.3.2 使能UART


2.3.2.1 设置UART的总时钟


参考IMX6ULL芯片手册《Chapter 18: Clock Controller Module (CCM)》,

根据IMX6ULL的时钟树,设置CSCDR1寄存器就可以给UART提供总时钟,如下图:

1670932109333.jpg

下图是CSCDR1(CCM Serial Clock Divider Register 1)的位说明,对于UART,我们选择时钟源位80M:

1670932118530.jpg

2.3.2.2 给UART模块提供时钟

1670932131164.jpg


2.3.2.3 使能UART模块


虽然给UART提供了时钟,但是UART本身并未使能,需要设置以下寄存器:

1670932164421.jpg


2.3.2.4 配置引脚功能


配置UART1_TX引脚 在芯片手册中搜索UART1_TX,可以找到下图所示寄存器:

1670932177947.jpg


配置UART1_RX引脚 在芯片手册中搜索UART1_RX,可以找到下图所示寄存器:

1670932188948.jpg

相关文章
|
23天前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
|
2月前
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
1569 2
|
2月前
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
2月前
|
存储 Docker 容器
ARM架构鲲鹏主机BClinux离线安装docker步骤
下载并安装适用于ARM架构的Docker CE二进制文件,解压后移动至/usr/bin目录。创建docker组,配置systemd服务脚本(docker.service、docker.socket、containerd.service),重载systemd配置,启动并启用docker服务。编辑daemon.json配置存储驱动、镜像加速地址等,最后拉取所需镜像。
67 0
|
2月前
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。
|
17天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
26天前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
40 3
|
1月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
16天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
130 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
18天前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
47 8
下一篇
DataWorks