cortex-A7 UART总线实验---STM32MP157

news2024/11/14 20:12:31

实验目的:实现字符/字符串收发

一,总线相关

1,总线:各个部件之间传输的一种媒介

芯片内部总线:核与芯片内部控制器进行连接

A7---AHB4总线---GPIO控制器

A7---AHB4总线---RCC控制器

芯片外部总线:SOC与各个外设这件连接

PC---UART总线---Target

SOC---IIC总线---温湿度传感器

SOC---SPI总线---数码管

2,串行总线 / 并行总线:

串行总线 :在同一时刻,根据时钟线的变化,数据线只能收发一位数据,优点:占用引脚资源少,缺点:收发数据比较慢

并行总线:在同一时刻可以收发多位数据,优点:传输速度比较快,缺点:占用引脚资源多

3,单工 / 半双工 / 全双工:

单工:要么发送,要么接收,只能选一个

半双工:可以收,可以发,不能同时收发

全双工:可以同时进行收发

4,同步 / 异步:

1,同步:双方通讯时,共用一个时钟源,一根时钟线

2,异步:双方通讯时,有各自的时钟源,不存在时钟线,需要配置时钟源一致

5,连接方式:

1,直连

2,USB转串口连接方式

串口电平:RS232电平

SOC:TTL电平

3,ST-LINK仿真器连接方式

ST-LINK仿真器作用:完成USB协议和串口协议之间转换

在ST-LINK仿真器,有一个芯片STM32F103,在芯片内部固化一端代码 === 完成协议之间转换

这段代码不开源,通电自动工作

二,串口通信信息(异步串行全双工总线)

1,配置信息

波特率:115200 ====1s可以收发115200bits数据

单位:bps(二进制 / 秒),比特率

8:8位数据位

N:无校验位

1:1位停止位

2,串口通讯协议

1,空闲态:总线不进行数据传输时,处于空闲态,高电平

2,起始位:通讯开始的标志,低电平

3,数据传输:收据收发,先发送低位,再发送高位

4,校验位:奇校验:数据中1个数为奇数,补0,数据中1个数为偶数,补1

偶校验:数据中1个数为奇数,补1,数据中1个数为偶数,补0

5,停止位:收发结束标志,高电平

校验时钟源:异步通讯,双方有各自的时钟源,每发一帧数据,数据都会产生误差,误差会累积,所以需要校准时钟源

三,分析电路

USART / UART:Universal synchronous/asynchronous receiver transmitter 通用同步 / 异步接收 / 发送

网络编号 === 引脚编号

UART4_TX === PG11

UART4_RX === PB2 

1,框图

图片已经损坏 :<

1,分析RCC / GPIO / UART章节

2,RCC:使能 GPIOB / GPIOG / UART4组

3,GPIO:1)设置复用功能模式,2)设置引脚对应功能

4,UART:1)初始化相关操作,2)实现数据收发

四,分析RCC章节

1,确定总线连接

A7---AHB4总线----RCC控制器 / GPIO控制器

A7---APB1总线---UART控制器

2,基地址

GPIOF:0x50008000

GPIOB:0x50003000

RCC:0x50000000

UART4:0x40010000

3,分析寄存器

1,分析RCC_MP_AHB4ENSETR寄存器

作用:使能GPIO组控制器

地址:0x50000000 + 0xA28 = 0x50000A28

伪代码:RCC_MP_AHB4ENSETR [1] = 1 === GPIOB

RCC_MP_AHB4ENSETR [6] = 1 === GPIOG

2,分析RCC_MP_APB1ENSETR寄存器

作用:使能UART组控制器

地址:0x50000000 + 0xA00 = 0x50000A00

伪代码:RCC_MP_APB1ENSETR [16] = 1

五,分析GPIO章节

1,分析GPIOx_MODER寄存器

作用:设置GPIO引脚模式为复用功能模式(输入,输出,复用,模拟)

地址:0x50003000 + 0x00 = 0x50003000 === GPIOB

0x50008000 + 0x00 = 0x50008000 === GPIOG

伪代码:GPIOB_MODER [5:4] = 01  === GPIOB

GPIOG_MODER [23:22] = 01  === GPIOG

2,分析GPIOx_AFRL寄存器

作用:设置GPIO引脚(0~7引脚)复用功能

地址:0x50003000 + 0x20 = 0x50003020

伪代码:GPIOB_AFRL [11:8] = 1000  === GPIOB

2,分析GPIOx_AFRH寄存器

作用:设置GPIO引脚(8~15引脚)复用功能

地址:0x50008000 + 0x24 = 0x50008024

伪代码:GPIOG_AFRL [15:12] = 1000  === GPIOG

六,分析UART章节

1,内部框图

 2,芯片内部协议

 3,发送一个字符流程

 4,接收一个字符流程

图片已经损坏 :<

 5,分析寄存器

1,分析USART_CR1寄存器

作用:初始化 / 使能操作

地址:0x40010000 + 0x00 = 0x40010000

伪代码:USART_CR1[28[12] = 00 ==== 设置串口1位起始位,8位数据位

USART_CR1[15] = 0 ==== 设置串口16倍采样率,和波特率设置有关

USART_CR1[10] = 0 ==== 设置串口无校验位

USART_CR1[3] = 1 ==== 设置串口发送位使能

USART_CR1[2] = 1 ==== 设置串口接收位使能

USART_CR1[0] = 1 ==== 设置串口使能

2,分析USART_CR2寄存器

作用:设置串口停止位

地址:0x40010000 + 0x04 = 0x40010004

伪代码:USART_CR2[13:12] = 00 ==== 设置串口1位停止位

3,分析USART_BRR寄存器

作用:设置串口波特率为 115200 

地址:0x40010000 + 0x0C = 0x4001000C

伪代码:USART_BRR = 0x22B 公式:主频64MHz / 115200 = 0x22B

4,分析USART_RDR寄存器

作用:设置串口接收数据寄存器

地址:0x40010000 + 0x24 = 0x40010024

伪代码:ch = USART_RDR 

5,分析USART_TDR寄存器

作用:用来存放串口发送数据

地址:0x40010000 + 0x28 = 0x40010028

伪代码:USART_TDR = ch

6,分析USART_PRESC寄存器

作用:设置串口分频,本实验设置位不分频

地址:0x40010000 + 0x2C = 0x4001002C

伪代码:USART_PRESC [3:0] = 0000 设置位不分频

7,分析USART_ISR寄存器

作用:判断收发寄存器状态

地址:0x40010000 + 0xC0 = 0x400100C0

伪代码:

USART_ISR [7]  ==== 判断发送数据寄存器是否为空:发送寄存器满,需要等待,直到发送数据寄存器为空才可以发送下一位数据

0:发送数据寄存器满,需要等待     1:发送数据寄存器空,可以发送下一位数据

USART_ISR [6] ==== 判断一帧数据是否发送完成

0:没有发送完成,需要等待         1:发送完成,可以发送下一帧数据

USART_ISR [5] ==== 判断接收数据寄存器中是否有数据可以读

0:没有收到数据,需要等待         1:接收到数据,可以读

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

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

相关文章

C# winform加载yolov8模型测试(附例程)

第一步&#xff1a;在NuGet中下载Yolov8.Net 第二步&#xff1a;引用 using Yolov8Net; 第三步&#xff1a;加载模型 private IPredictor yolov8 YoloV8Predictor.Create("D:\\0MyWork\\Learn\\vs2022\\yolov_onnx\\best.onnx", mylabel); 第四步&#xff1a;图…

速卖通产品权重打造,自养号补单技术策略

跨境电商市场的竞争确实很激烈&#xff0c;中小卖家要在速卖通上获得一席之地确实有一定难度。虽然补单可以提升销量和排名&#xff0c;但是目前的测评市场确实存在一些问题&#xff0c;选择一个成熟的服务商进行补单是非常重要的。 在选择服务商时&#xff0c;确保他们的技术…

【android12-linux-5.1】【ST芯片】HAL移植后开机卡死

按照ST的官方readme移植HAL后开机一直卡在android界面&#xff0c;看logcat提示写文件时errorcode&#xff1a;-13。查下资料大致明白13错误码是权限不足&#xff0c;浏览代码在写文件的接口加日志后&#xff0c;发现是需要写iio:device*/buffer/enable这类文件的时候报错的。千…

[数据库]MYSQL之授予/查验binlog权限

1 MYSQL的binlog特性&#xff0c;需要用户具备哪些权限&#xff1f; MySQL Binlog权限需要3个权限 : SELECT 缺乏SELECT权限时&#xff0c;报错为 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user canal% to database binlog缺乏REPLICATI…

Modelica由入门到精通——连续离散混合建模

3.Modelica由入门到精通——连续离散混合建模 本人正在整理Modelica相关知识&#xff0c;特此做博客&#xff0c;希望可以帮助到有需要的朋友 文章目录 3.Modelica由入门到精通——连续离散混合建模一、 总览二、表达混合结构的结构体三、示例 一、 总览 物理系统的动态特性可…

layUI 中 穿梭框无法获取值的细节问题

初始化的时候一定要指定id&#xff0c;不然就会出现无法调用 获得右侧数据和实例重载的方法

【谷粒商城】环境搭建二:开发环境配置

开发环境配置统一 Maven配置 查看maven信息 修改配置文件&#xff1a;apache-maven-3.3.9\conf\settings.xml# 配置阿里云镜像 <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name&…

网络安全01-子域名收集

合天实验室学习子域名收集 1 、 fofa&#xff1a;https://fofa.info/ 2 、 JSFinder&#xff1a;https://github.com/Threezh1/JSFinder 简单爬取 python JSFinder.py -u http://www.mi.com深度爬取 python JSFinder.py -u http://www.mi.com -d3、subDomainsBrute 1.5&…

使用navicat用sql创建表

1.创建数据库 2. 新建查询 3. 执行查询sql 4. sql语句&#xff1a; -- 创建数据库 CREATE DATABASE my_test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;-- 创建用户表 CREATE TABLE sys_user (id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 唯一标识,…

通过WinFsp将linux目录映射到windows下,ubuntu开启SSH服务,并允许ROOT权限远程登录,WinFsp使用教程;

一、在windows下的准备工作&#xff1a; 1.下载并安装 Download WinFsp Installer 和 SSHFS-Win(x64)&#xff0c;直接安装就行一路默认&#xff1b; 下载地址&#xff1a;点击此处下载https://winfsp.dev/rel/ 二、在linux下的准备工作(本人使用的是Ubuntu)&#xff1a; 1.…

计算机竞赛 基于大数据的股票量化分析与股价预测系统

文章目录 0 前言1 课题背景2 实现效果3 设计原理QTChartsarma模型预测K-means聚类算法算法实现关键问题说明 4 部分核心代码5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的股票量化分析与股价预测系统 该项目较为新颖…

加油站抽烟烟火智能识别算法

加油站抽烟烟火智能识别系统通过yoloopencv网络模型图像识别分析技术&#xff0c;加油站抽烟烟火智能识别算法识别出抽烟和燃放烟火的情况&#xff0c;并发出预警信号以提醒相关人员&#xff0c;减少火灾风险。OpenCV基于C实现&#xff0c;同时提供python, Ruby, Matlab等语言的…

大彩串口屏使用记录

写在最前面 屏幕型号 DC10600M070 IDE VisualTFT&#xff08;官方&#xff09; VSCode&#xff08;lua编程&#xff09; 用之前看一下官方那个1小时的视频教程就大概懂控件怎么用了&#xff0c;用官方的软件VisualTFT很简单 本文只是简单记录遇到的一些坑 lua编辑器 VisualTF…

DOCKER容器中安装JDK1. 8 详细步骤

1、首先检查DOCKER环境是否安装成功 docker version在命令输入docker version命令显示如上图所示&#xff0c;则说明docker容器已经安装成功了&#xff0c;下面只需要根据步骤一步步操作即可在docker容器安装JDK。 2、通过DOCKER SEARCH命令查找远程镜像 docker search jdk3…

南京邮电大学操作系统实验报告一(Linux系统及进程创建)

文章目录 一、实验目的二、实验内容三、实验步骤&#xff08;附程序原码&#xff09;四、运行结果及其结果分析 一、实验目的 掌握Linux 操作系统的操作和使用;掌握Linux 下C 语言的编辑、编译、运行的全过程;掌握进程创建系统调用的使用。 二、实验内容 熟悉Linux 运行环境…

uview ui 查看版号

版本查询2种方式 有两种方式可以查询到正在使用的uView的版本&#xff1a; // 通过console.log打印的形式 console.log(uni.$u.config.v);// 可以查阅uView的配置文件得知当前版本号&#xff0c;具体位置为&#xff1a; /uview-ui/libs/config/config.js

实现文件上下文管理(__enter__和__exit__)

目录 一、上下文管理协议 二、模拟open 三、优点 python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm1001.2014.3001.5502 我们知道在操作文件对象的时候可以这么写 with open(a.txt) as f:代码块 上述叫做上下文管理…

Redis初始以及安装

"梦却了无影踪&#xff0c;梦仍不曾改动" 初始Redis (1) Redis是什么&#xff1f; 要认识、学习一个软件&#xff0c;最重要的途径无一是去该软件的官方文档里瞅瞅、转悠转悠。 从官方文档的介绍中得知&#xff0c;Redis是一种工作于内存&#xff0c;…

神奇小队之我爱画画

《神奇小队之我爱画画》&#xff0c;是南通神笔动漫科技有限公司2022年推出的原创系列动画剧集。 南通神笔动漫创立于2020年4月&#xff0c;公司专注于2-12岁儿童内容策划、运营文创企业。公司主要运营动漫IP《神奇画笔》&#xff0c;项目于2020年创立《神奇画笔》儿童IP&…

GBU812-ASEMI逆变器专用整流桥GBU812

编辑&#xff1a;ll GBU812-ASEMI逆变器专用整流桥GBU812 型号&#xff1a;GBU812 品牌&#xff1a;ASEMI 芯片个数&#xff1a;4 封装&#xff1a;GBU-4 恢复时间&#xff1a;&#xff1e;50ns 工作温度&#xff1a;-55C~150C 浪涌电流&#xff1a;200A 正向电流&…