嵌入式养成计划-53----ARM--串口通信

news2025/1/24 14:38:53

一百三十四、串口通信

134.1 串口的概念

  • 串口(UART):Universal asynchronous receiver transmitter (USART/UART),通用异步接收发送器
  • 通过串口可以实现两个不同机器之间的信息交互
  • 串口通信属于总线通信的一种

134.2 总线的概念

  • 总线就是不同机器之间或者机器内部进行信息交互的媒介

  • 总线可以分为内部总线和外部总线

    • 内部总线:在芯片内部链接核心和不同外设的总线被称为内部总线。根据内部总线上传输的数据的不同可以将内部总线分为三类:地址总线,数据总线,控制总线
    • 外部总线:连接芯片和芯片外部其他设备的总线
  • 外部总线根据各自特性的不同,有三种不同的划分标准:

    1. 同步、异步
    2. 单工、半双工、全双工
    3. 串行、并行
  • 常用的外部总线有uart、IIC\SPI\can\RS485

    • 串口:异步全双工串行通信
    • IIC:同步半双工串行
    • SPI:同步全双工串行
    • RS485:异步半双工串行通信

134.3 总线的划分标准

134.3.1 串行、并行划分

  • 串行总线通信 :不同机器之间进行信息交互是同时只能一位一位的进行数据传输
  • 并行总线通信 :不同机器之间进行信息交互是同时可以多位数据进行传输
    在这里插入图片描述

134.3.2 同步、异步通信

  • 同步通信 :通信的双方在同一个时钟信号作用下进行数据收发,约定好数据收发的时机
  • 异步同步 :通信双方在各自的时钟信号下进行通信

134.3.3 全双工、半双工、单工通信

  • 单工通信 :只能一方发送一方接收
  • 半双工通信:通信双方可以互相发送接收消息,但是同一时间段只能由一方发送给另一方
  • 全双工通信:通信双方可以同时互相发送接收消息
    在这里插入图片描述
    在这里插入图片描述

134.4 串口通信常见的硬件连接方式

134.4.1 TTL格式硬件连接

  • 一般TTL格式的电平只适用于同一块开发板不同的芯片之间使用,抗干扰能力差
    在这里插入图片描述

134.4.2 USB转RS232串口

在这里插入图片描述

134.4.3 USB转USBmini

在这里插入图片描述

134.4.4 STM32MP1A开发板使用的接线方式

在这里插入图片描述

134.5 串口通信的通信协议

134.5.1 串口通信的数据帧格式

  • 一帧数据的组成:

    • 起始位 :1bit,数据开始传输的标识,低电平
    • 数据位 :5-8bit,双方传输的数据
    • 校验位 :1bit(可有可无),用于校验数据是否正常传输
      一般校验位设置为奇偶校验
      	奇校验:设置了奇校验之后一帧数据传输完成,数据位中的1的个数+校验位1的个数应该为奇数
      		0XFE->1111 1110   此时这个数据传输完毕校验位应该为0
      		0XFF->1111 1111   此时这个数据传输完毕校验位应该为1
      	偶校验:设置了偶校验之后一帧数据传输完成,数据位中的1的个数+校验位1的个数应该为偶数
      		0XFE->1111 1110   此时这个数据传输完毕校验位应该为1
      		0XFF->1111 1111   此时这个数据传输完毕校验位应该为0
      
    • 停止位 :0.5/1/1.5/2bit,高电平,一帧数据传输结束的标志,停止位后会重新校准双方时钟,误差重新累计
  • 8N1概念 :8位数据位,没有校验位,1位停止位

在这里插入图片描述

134.5.2 波特率

波特率代表进行数据传输时双方的数据传输速率
波特率 单位 是		bps(bit/s)
常用的波特率 有	4800、9600、115200

在这里插入图片描述

134.6 查看串口的电路原理图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 通过查询串口电路原理图,当前开发板串口发送线连接在SOC的PG11管脚
  • 接收线连接在SOC的PB2管脚
  • 由SOC内部的UART4外设负责控制这两个管脚进行串口的数据接收和发送

134.7 软件编程实现串口工作框图分析

在这里插入图片描述

134.8 设置GPIOB\GPIOG\UART4时钟使能

134.8.1 GPIO时钟使能

在这里插入图片描述
在这里插入图片描述

  • 将RCC_MP_AHB4ENSETR寄存器的第[1]位和第[6]位设置为1即可使能GPIOB和GPIOG

134.8.2 使能UART4时钟

在这里插入图片描述
在这里插入图片描述

  • 将RCC_MP_APB1ENSETR寄存器的第[16]位设置为1即可使能UART4

134.9 设置PG11和PB2管脚复用为UART4功能

134.9.1 将PG11和PB2设置为复用功能

在这里插入图片描述

134.9.2 将PG11和PB2设置为UART4复用功能

  • 管脚复用功能寄存器1
    在这里插入图片描述

  • 管脚复用功能寄存器2
    在这里插入图片描述
    在这里插入图片描述

  • 通过查询寄存器发现一个管脚的复用功能需要寄存器的四位来设置,一个寄存器是32位,只能设置8个管脚的复用功能,而一个GPIO控制器管理了16个管脚,所以需要两个管脚复用功能选择寄存器来进行管脚复用设置

  • 每一个管脚的复用功能可以设置为AF0-AF15总共16个复用功能,想要直到PG11和PB2管脚到底哪一个功能是UART4功能,需要查询stm32mp157a.pdf文件的第4章节的table8和table9

在这里插入图片描述
在这里插入图片描述

通过查询两个表,知道:
PB2的UART4复用功能是AF8,所以想要将PB2管脚复用为UART4功能,只需要将GPIOB_AFRL第[11:8]->1000
PG11的UART4复用功能是AF6,所以想要将PG11管脚复用为UART4功能,只需要将GPIOG_AFRH第[15:12]->0110

134.10 UART芯片手册分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 波特率设置:
    16倍采样,时钟频率64M,115200波特率
    USARTDIV=64000000/115200 =0X22B
    BRR=0X22B
    
    8倍采样
    USARTDIV=2*64000000/115200=0X456   0100 0101 0110
    BRR[2:0]=011
    BRR[3]=0
    BRR[15:4]= 0000 0100 0101
    
  • 设置数据长度为8位
    USART_CR1[28]->0
    USART_CR1[12]->0
    
  • 设置16倍采样
    USART_CR1[15]->0
    
  • 设置奇偶检验
    不设置奇偶校验,USART_CR1[10]->0
    
  • 使能发送器
    USART_CR1[3]->1
    
  • 使能接收器
    USART_CR1[2]->1
    
  • 使能串口
    USART_CR1[0]->1
    
  • 设置停止位
    USART_CR2[13:12]->00表示设置1位停止位
    
  • 设置波特率为115200
    16倍采样下
    USART_BRR=0X22B
    

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1209635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GZ038 物联网应用开发赛题第7套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第7套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评…

处理本地DNS劫持,导致域名解析失败

回顾情形 在公司内网,有同事反馈appstoreconnect.apple.com网站需要通过代理才能正常访问。 向我这边询问,否修改过路由策略; 检测域名 通过域名ping检测网址,https://ping.chinaz.com/astrill.com,来ping域名apps…

1688往微信小程序自营商城铺货商品采集API接口

一、背景介绍 随着移动互联网的快速发展,微信小程序作为一种新型的电商形态,正逐渐成为广大商家拓展销售渠道、提升品牌影响力的重要平台。然而,对于许多传统企业而言,如何将商品信息快速、准确地铺货到微信小程序自营商城是一个…

第五章ARM处理器的嵌入式硬件系统设计——课后习题

1ARM处理器的工作状态 ARM处理器有两种工作状态。具体而言,ARM处理器执行32位ARM指令集时,工作在ARM状态,当ARM处理器执行16位thumb指令集时候,工作在thumb状态。 1ARM指令特点 1一个大的,统一的寄存器文件。 2基于…

后端接口性能优化分析-数据库优化

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

​如何解决SSD NAND Path冲突导致的性能问题?

1.引言 最近看到一篇关于SSD的NAND并发瓶颈相关的论文,思路非常好,这里分享给大家。本篇论文的解读,也是小编上周末在高铁上完成的。存储随笔的论文解读,不是直接翻译,是小编先研读一遍后,再结合自己的理解…

SoftwareTest6 - 用 Selenium 怎么点点点

用 Selenium 来点点点 一 . 什么是自动化 ?1.1 自动化测试的分类接口自动化测试UI 自动化测试 (界面测试) 1.2 实现自动化测试的工具 : selenium环境部署驱动 二 . selenium 的使用2.1 一个简单的示例 : 让谷歌浏览器在百度首页搜索蔡徐坤准备工作编写代码 2.2 打开谷歌浏览器…

世界互联网大会|美创科技新一代 灾备一体化平台(DRCC v3.0)重磅亮相

11月9日,在2023年世界互联网大会“互联网之光”博览会上,美创科技携2023年重磅新品——新一代 灾备一体化平台(DRCC v3.0)亮相! ◼︎ 云计算、国产化浪潮下,各类信息基础设施的运行安全面临全新挑战&#…

性能测试 —— Jmeter分布式测试的注意事项和常见问题

Jmeter是一款开源的性能测试工具,使用Jmeter进行分布式测试时,也需要注意一些细节和问题,否则可能会影响测试结果的准确性和可靠性。 Jmeter分布式测试时需要特别注意的几个方面 1. 参数化文件的位置和内容 如果使用csv文件进行参数化&…

【Java 进阶篇】JQuery 案例:优雅的隔行换色

在前端的设计中,页面的美观性是至关重要的。而其中一个简单而实用的设计技巧就是隔行换色。通过巧妙地使用 JQuery,我们可以轻松地实现这一效果,为网页增添一份优雅。本篇博客将详细解析 JQuery 隔行换色的实现原理和应用场景,让我…

数据结构入门————栈和队列(C语言/零基础/小白/新手+模拟实现+例题讲解)

目录 1.栈的概念 ​编辑 2.栈的作用 1.函数递归 2.表达式求值 3.栈的模拟实现 Stack.h Stack.c 4.队列的概念 5.队列的模拟实现 Queue.h Queue.c 6.例题 1.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,…

如何把小米路由器刷入OpenWRT系统并通过内网穿透工具实现公网远程访问

小米路由器4A千兆版刷入OpenWRT并远程访问 文章目录 小米路由器4A千兆版刷入OpenWRT并远程访问前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理…

LeetCode | 225. 用队列实现栈

LeetCode | 225. 用队列实现栈 OJ链接 此题可以用两个队列去实现一个栈,每次始终保持一个队列为空, 入栈操作相当于给非空队列进行入队操作 入数据,把不为空的队列入 出数据,把不为空的队列数据导入为空,直到最后一…

如何将微软 Office 宏转换为 ONLYOFFICE 宏

想要将微软 Office VBA 宏转换为可在 ONLYOFFICE 中无缝使用的宏?嗯,虽然这种需求并没有直接的解决方案,不过我们也会在本文中介绍 VBA 宏的转换步骤——正好我们手上也有一个来自用户的实际案例可供参考。 VBA 宏 以下是原始的 VBA 宏代码&…

vscode+python开发之虚拟环境和解释器切换

需求情景: 现在我们要开发多个项目比如:项目A,项目B、项目C,他们每个项目需要依赖不同的库。每个项目依赖的解释器也不一样怎么办? 项目A:需要在python3.7环境运行 依赖aadd3.2库 项目B、需要在python3.11…

〖大前端 - 基础入门三大核心之JS篇㉟〗- JavaScript 的DOM简介

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

No207.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

【Python】爬虫代理IP的使用+建立代理IP池

目录 前言 一、代理IP 1. 代理IP的获取 2. 代理IP的验证 3. 代理IP的使用 二、建立代理IP池 1. 代理IP池的建立 2. 动态维护代理IP池 三、完整代码 总结 前言 在进行网络爬虫开发时,我们很容易遭遇反爬虫机制的阻碍。为了规避反爬虫机制,我们…

R语言爬虫程序自动爬取图片并下载

R语言本身并不适合用来爬取数据,它更适合进行统计分析和数据可视化。而Python的requests,BeautifulSoup,Scrapy等库则更适合用来爬取网页数据。如果你想要在R中获取网页内容,你可以使用rvest包。 以下是一个简单的使用rvest包爬取…

tensorflow 1.15 gpu docker环境搭建;Nvidia Docker容器基于TensorFlow1.15测试GPU;——全流程应用指南

前言: TensorFlow简介 TensorFlow 在新款 NVIDIA Pascal GPU 上的运行速度可提升高达 50%,并且能够顺利跨 GPU 进行扩展。 如今,训练模型的时间可以从几天缩短到几小时 TensorFlow 使用优化的 C 和 NVIDIA CUDA 工具包编写,使模型能够在训练…