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

一百三十四、串口通信

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   此时这个数据传输完毕校验位应该为00XFF->1111 1111   此时这个数据传输完毕校验位应该为1偶校验:设置了偶校验之后一帧数据传输完成,数据位中的1的个数+校验位1的个数应该为偶数0XFE->1111 1110   此时这个数据传输完毕校验位应该为10XFF->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=0X22B8倍采样
    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.rhkb.cn/news/193288.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023.11.16-hive sql高阶函数lateral view,与行转列,列转行

目录 0.lateral view简介 1.行转列 需求1: 需求2: 2.列转行 解题思路: 0.lateral view简介 hive函数 lateral view 主要功能是将原本汇总在一条(行)的数据拆分成多条(行)成虚拟表,再与原表进行笛卡尔积&#xff0c…

基于 Redis 实现的分布式锁

获取锁 互斥:确保只有一个线程获得锁 # 添加锁 利用setnx的互斥性 127.0.0.1:6379> setnx lock thread1释放锁 手动释放锁 超时释放:获取锁时设置一个超时时间 #释放锁 删除即可 127.0.0.1:6379> del lock两步合成一步 help setSET key value …

人工智能基础_机器学习037_多项式回归升维实战4_使用随机梯度下降模型_对天猫双十一销量数据进行预测_拟合---人工智能工作笔记0077

上一节我们使用线性回归模型最终拟合了双十一天猫销量数据,升维后的数据. 我们使用SGDRegressor的时候,随机梯度下降的时候,发现有问题, 对吧,怎么都不能拟合我们看看怎么回事现在 可以看到上面是之前的代码 上面是对数据的准备 这里我们还是修改,使用 poly=PolynomialFeatur…

Python数据容器之(元组)

我们前面所了解的列表是可以修改的,但如果想要传递的信息,不被篡改,列表就不合适了。 元组同列表一样,都是可以封装多个、不同类型的元素在内。 但最大的不同点在于: 元组一旦定义完成,就不可修改 所以…

通过Python设置及读取PDF属性,轻松管理PDF文档

PDF文档属性是嵌入在PDF文档中的一些与文档有关的信息,如作者、制作软件、标题、主题等。PDF属性分为默认属性和自定义属性两种,其中默认属性是一些固定的文档信息,部分信息自动生成(如文件大小、页数、页面大小等信息&#xff09…

【ASP.NET】Hello World

文章目录 1. 几个概念2. 搭建开发环境2.1 .NET SDK2.2 IDE & Editor 3 First Project3.1 步骤3.2 模板3.3 项目结构3.4 请求的处理流程 Reference Link 1. 几个概念 .NET 是一个平台,包括 .NET Framework、.NET Core、ASP.NET、C#等,可以构建桌面、W…

requests库验证错误解决方法

用户在使用requests库进行http请求时,遇到了一个AuthenticationRequired(身份验证必须)的错误。但是,当使用urllib.request.urlopen进行相同的操作时,却能够成功。同时,用户提供了自己的系统信息&#xff0…

javaweb---maventomcat使用教程

文章目录 今日内容0 复习昨日1 Maven1.0 引言1.1 介绍1.2 下载1.3 安装1.3.1 解压1.3.2 配置环境变量1.3.3 测试 1.4 仓库1.5 Maven配置1.5.1 修改仓库位置1.5.2 设置镜像 2 IDEA - MAVEN2.1 idea关联maven2.2 创建java项目2.3 java项目结构2.4 pom2.5 导入依赖2.5.1 查找依赖2…

nodejs+vue黄河风景线旅游网站的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计

本文首先对该系统进行了详细地描述,然后对该系统进行了详细的描述。管理人员增加了系统首页、个人中心、用户管理、景点分类管理、景点简介管理、旅游路线管理、文章分类管理、公告文章管理、系统管理理等功能。这套黄河风景线旅游网站是根据当前的现实需要&#xf…

微机原理_9

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。 1.当运算结果的最高位为1时,标志位() A. CF1 B. OF1 C. SF1 D. ZF1 2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可…

图论15-有向图-环检测+度数+欧拉回路

文章目录 1. 有向图设计1.1 私有变量标记是否有向1.2 添加边的处理,双向变单向1.3 删除边的处理,双向变单向1.4 有向图的出度和入度 2 有向图的环检测2.1 普通的算法实现换检测2.2 拓扑排序中的环检测 3 欧拉回路 1. 有向图设计 1.1 私有变量标记是否有…

Synchronized面试题

一:轻量锁和偏向锁的区别: (1)争夺轻量锁失败时,自旋尝试抢占锁 (2)轻量级锁每次退出同步块都需要释放锁,而偏向锁是在竞争发生时才释放锁,线程不会主动释放偏向锁 二&…

编程的简单实例,编程零基础入门教程,中文编程开发语言工具下载

编程的简单实例,编程零基础入门教程,中文编程开发语言工具下载 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件&…

LeetCode(18)整数转罗马数字【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 12. 整数转罗马数字 1.题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X …

【word密码】word设置只读方式的四个方法

想要将word文档设置为只读模式,方法有很多,今天小奥超人介绍几个方法给大家。 方法一:文件属性 常见的、简单的设置方法,不用打开word文件,只需要右键选择文件,打开文件属性,勾选上【只读】选…

保姆级教程之SABO-VMD-CNN-SVM的分类诊断,特征可视化

今天出一期基于SABO-VMD-CNN-SVM的分类诊断。 依旧是采用经典的西储大学轴承数据。基本流程如下: 首先是以最小包络熵为适应度函数,采用SABO优化VMD的两个参数。其次对每种状态的数据进行特征向量的求取,并为每组数据打上标签。然后将数据送入…

竞赛选题 深度学习的智能中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

过滤器模式 rust和java的实现

文章目录 过滤器模式实现 过滤器模式实现javarustjavarust rust代码仓库 过滤器模式 过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象&…

OpenAI与微软合作,构建 ChatGPT 5 模型;10天准确天气预报

🦉 AI新闻 🚀 OpenAI与微软合作,构建 ChatGPT 5 模型,下一代人工智能或拥有超级智能 摘要:OpenAI首席执行官 Sam Altman 在接受采访时表示,OpenAI正在与微软合作构建下一代人工智能模型 ChatGPT 5&#x…

基于模拟退火算法的TSP问题建模求解(Python)

基于模拟退火算法的TSP问题建模求解(Python) 一、模拟退火算法(Simulated Annealing Algorithm,SAA)工程背景模拟退火算法用于优化问题求解原理 二、旅行商问题(Travelling salesman problem,TS…