uart开发调试

news2024/9/20 0:07:47

1. Uart基本框架

1.1概念

通信系统有两种方式,同步通信和异步通信.

同步通信的典型特征:通信双方公用同一个时钟,发送/接受速率完全一致,通信时需要带时钟信号传输.

异步通信的典型特征:通信双方各自具有独立的时钟系统,通信时不需要时钟信号传输,发送/接收速率按照约定值进行通信,缺点是速率越高数据量越大可能会存在误差,因为双方独立的时钟系统在达到一定的高频率下双方的误差会体现出来.

1.2UART

串口(uart)是典型的异步通信.其中又分为串行通信和并行通信。

串行通信每次只能发送/接收1个bit位只用1根信号线传输数据,一般是TX一根线、RX一根线,因此数据按有序传输、占用引脚少、传输速度慢;

并行通信每次能传输多个bit位有多根传输线,RX多根线、TX多根线,因此传输速度快、占用引脚多。

一般情况下为了节省引脚数量都会采用串行通信,而串行通信中又分为单工、半双工、全双工。

单工:只允许数据在一个方向上传输;

半双工:允许数据在两个方向上传输,但发送和接收不能同时进行;

全双工;允许数据在两个方向上同时传输,发送和接收可以同时进行。

Uart中由于开发板和PC等外部不通载体之间通信,所以不会互相接上一根时钟线来做时钟同步,所以uart串口通信一般采用异步通信+串行通信+全双工模式.

1.3串口电路连接

1.4串口通讯协议

2.Uart基本寄存器介绍

3.串口编程基本思路

   3.1查看硬件原理图弄清楚硬件接线

通过原理图可以看到UART0通过J2模块的2和8针接入到PA9和PA10,再查看寄存器手册PA9和PA10对应的GPIO组为GPIOA。

3.2GPIO

     对GPIOA组中PA9和PA10对应bit位初始化。

3.2.1GPIO属性:

               Memory-map地址:即GPIO挂在哪个总线上,所属总线上GPIO的地址范围,GPIO-A对应的地址偏移。这样才能访问到GPIO-A并进行设置.

              该GPIO-A组对应的pin引脚:每个GPIO组为32位,高16位保留,其中低16位有效每个BIT位对应1个pin引脚;

              GPIO的模式:输入模式、输出模式、复用输出模式,其中复选模式是某个GPIO可能对应多个功能,我们需要AF-ALERT1对应功能UART0-RX、AF-ALERT2对应功能SDIO-D2、其他8种复选功能。我们需要再PA9/10对应的GPIO设置成复用输出模式,然后复用输出寄存器设置成AF-ALERT1,这样该GPIO就对应成我们需要的UART0-RX/TX了。

           GPIO的极性:即默认为1还是0.当GPIO模式为输出/复用输出时,需要设置推免/开漏模式,推免模式可以通过上拉电阻输出1或0,开漏模式只能输出0.一般都有上拉电阻,选择推免模式.

          GPIO速率:寄存中不通的输出等级,对应不通速率,譬如50HZ\25HZ\2HZ,速率越高功耗越大.

         GPIO组时钟:打开总线上下挂的GPIO组对应的时钟,enable相关寄存器.

        

3.2.2GPIO寄存器配置

根据上述GPIO属性以及初始化,相关联的GPIO寄存器 如下图:

              

4 中断处理

中断涉及到嵌套向量控制器NVIC、中断/异常向量表、中断优先级.

GD/STM32中负责传递中断到CPU的总中断控制器NVIC,各外设设备(UART\I2C\...)也存在一个自身的中断控制单元。总体框图如下:

当发生中断时,CPU处理过程如下图:

4.1 嵌套向量控制器NVIC

4.1.1中断管理

4.1.2中断和异常向量表

4.1.3中断优先级/嵌套中断

4.2外部中断

中断分为内部中断和外部中断,其中外部中断来自于外设产生的中断.外部中断也有一个外部中断控制器和总中断控制器NVIC相连,用于传递并处理外部中断.外部中断/事件框图如下:

上图中触发事件时采用脉冲信号,事件本质上是一个信号,譬如唤醒睡眠的电源模块等. 事件是中断的触发源,事件可以触发中断也可以不触发,开放了对应的中断屏蔽位,则事件可以触发相应的中断。 事件还是其它一些操作的触发源,比如DMA,还有TIM中影子寄存器的传递与更新等。简单点就是中断一定要有中断服务函数,但是事件却没有对应的函数。事件可以在不需要CPU干预的情况下,执行这些操作,但是中断则必须要CPU介入。

上升沿/下降沿选择寄存器:需要软件选择中断发生的检测方式,是采用电平信号上升沿还是下降沿变化来判断中断/事件的发生;

软件中断/事件寄存器:

挂起请求寄存器:当中断发生时,如果CPU在执行优先级更高的中断或该中断无法打断的任务,则该中断请求被暂时挂起。待之后CPU再来执行该挂起的中断;当事件发生时过程雷同,差别不是由CPU参与而是由脉冲发生器参与;该寄存器由硬件自动完成,不需要软件配置;

中断屏蔽寄存器:配置是否屏蔽该中断,他和“请求挂起寄存器”做&操作,最后决定是否把中断发送给NVIC总控制器;

事件屏蔽寄存器:配置是否屏蔽该事件,他和“请求挂起寄存器”做&操作,最后决定是否把事件发送给脉冲发生器。

4.2.1外部中断控制器EXTI

每个GPIO引脚存在在一个外部控制器中,需要在外部控制器中配置打开这些GPIO对应的引脚.框图如下:

4.2.2系统配置控制器SYSCFG

打开EXTI控制器中存在的某个GPIO引脚中断功能后(ENABLE),还要保证每个引脚(GPIO)对应的中断能够传递到总中断NVIC控制器,需要配置GPIO引脚所在EXTI控制器到NVIC控制器的连通性,这个配置寄存器就是SYSCFG寄存器,如下图

5.时钟配置

6.uart开发思路

   弄清楚原理图---->初始化GPIO(包括时钟配置和GPIO属性配置)----->初始化UART寄存器------>配置中断相关寄存器------>编写收发包中断函数并将对应中断号写入中断寄存器。

7.其他

7.1 PIN和GPIO的联系

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

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

相关文章

电脑为什么会出现“找不到msvcr120.dll无法执行代码”?如何解决msvcr120.dll丢失错误

在使用电脑的过程中不知带大家有没有遇到过“找不到msvcr120.dll无法执行代码”的错误提示的情况,出现这样的情况大家都有什么解决办法可以解决?有什么办法能够帮助大家修复丢失的msvcr120.dll文件。接下来这篇文章就将教大家修复“找不到msvcr120.dll无…

Vue3-拉开序幕的setup

Vue3 中的 setup 是一个新的配置项&#xff0c;值是一个函数。 export default {name: App,setup: function () {} } </script> 和 Vue2 中的 data 一样&#xff0c;我也可以将 setup 简写成为 export default {name: App,setup() {} } setup函数的使用 与 Vue2 不一样…

刷题计划 day4 【双指针、快慢指针、环形链表】链表下

⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题专题&#xff0c;往期可看专栏&#xff0c;关注不迷路&#xff0c; 您的支持是我的最大动力&#x1f339;~ 目录 ⚡刷题计划day4继续&#xff0c;可以点个免费的赞哦~ 下一期将会开启哈希表刷题…

十一、【Python】基础教程-【Python全掌握】六大基础数据类型:布尔类型的终极指南

目录 一、基础类型“布尔型”处理方法 1. 直接赋值和使用 2. 布尔值的逻辑运算 3. 条件语句中的布尔值 4. 布尔值转换 5. 短路逻辑 6. 在循环和迭代中的使用 一、基础类型“布尔型”处理方法 在Python中&#xff0c;布尔类型是一种基本的数据类型&#xff0c;用于表示逻…

MySQL 索引相关基本概念

文章目录 前言一. B Tree 索引1. 概念2. 聚集索引/聚簇索引3. 辅助索引/二级索引4. 回表5. 联合索引/复合索引6. 覆盖索引 二. 哈希索引三. 全文索引 前言 InnoDB存储引擎支持以下几种常见索引&#xff1a;BTree索引&#xff0c;哈希索引&#xff0c;全文索引 一. B Tree 索引…

1、hadoop环境搭建

1、环境配置 ip(/etc/sysconfig/network-scripts) # 网卡1 DEVICEeht0 TYPEEthernet ONBOOTyes NM_CONTROLLEDyes BOOTPROTOstatic IPADDR192.168.59.11 GATEWAY192.168.59.1 NETMASK 255.255.255.0 # 网卡2 DEVICEeht0 TYPEEthernet ONBOOTyes NM_CONTROLLEDyes BOOTPROTOdh…

均匀圆形阵列原理及MATLAB仿真

均匀圆形阵列原理及MATLAB仿真 目录 前言 一、均匀圆阵原理 二、圆心不存在阵元方向图仿真 三、圆心存在阵元方向图仿真 四、MATLAB仿真代码 总结 前言 本文详细推导了均匀圆形阵列的方向图函数&#xff0c;对圆心不放置阵元和圆心放置阵元的均匀圆形阵列方向图都进行了仿…

前端JS特效第57波:响应式博客网站图文幻灯片

响应式博客网站图文幻灯片&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head> <meta charset"utf-8"> <title>响应式博客幻灯片演示</title><link …

pyuic5将ui文件转换为py文件报错:one input ui-file must be specified;no element found;

ERROR 1 文件命名不规范Solution 1:文件命名不能有空格 ERROR 2未选中ui文件 Solution 2:选中要转换成py 的文件

深入解析:百数平台图表联动功能设置与实战应用

在当今数据驱动的时代&#xff0c;图表的联动功能已成为数据分析的得力助手。通过深度整合各类图表&#xff0c;如柱形图、折线图、饼图、雷达图、条形图、透视图、面积图、双轴图、地图以及漏斗图等&#xff0c;我们实现了图表之间的无缝衔接&#xff0c;使得数据的呈现与探索…

基于FFmpeg和SDL的音视频解码播放的实现过程与相关细节

目录 1、视频播放器原理 2、FFMPEG解码 2.1 FFMPEG库 2.2、数据类型 2.3、解码 2.3.1、接口函数 2.3.2、解码流程 3、SDL播放 3.1、接口函数 3.2、视频播放 3.3、音频播放 4、音视频的同步 4.1、获取音频的播放时间戳 4.2、获取当前视频帧时间戳 4.3、获取视…

RFID标签打印机助力服装厂实现智能化管理

随着服装行业的快速发展&#xff0c;传统的管理模式已无法满足现代化生产的需求。RFID技术作为一种先进的自动识别技术&#xff0c;正在改变服装厂的管理方式。常达智能物联致力于为客户提供高效的RFID解决方案&#xff0c;其中RFID标签打印机在服装厂的应用尤为重要。本文将探…

IDEA-安装插件 驼峰下划线转换

第一步&#xff1a;安装 file-settings-plugins-在marketplace搜索“CamelCase”-点击安装 第二步&#xff1a;设置 file-settings-editor-camel_case 第三步&#xff1a;使用 选中想转换的遍历 使用快捷键 Alt Shift U

【算法专题】双指针算法之LCR 179. 查找总价格为目标值的两个商品(力扣)

欢迎来到 CILMY23的博客 &#x1f3c6;本篇主题为&#xff1a;双指针算法之LCR 179. 查找总价格为目标值的两个商品&#xff08;力扣&#xff09; &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法…

C++学习笔记——模板

学习视频 文章目录 模板的概念函数模板函数模板语法函数模板注意事项函数模板案例普通函数与函数模板的区别普通函数与函数模板的调用规则模板的局限性 类模板类模板与函数模板区别类模板中成员函数创建时机类模板对象做函数参数类模板与继承类模板成员函数类外实现类模板分文件…

2024年钉钉杯大数据竞赛A题超详细解题思路+python代码手把手保姆级运行讲解视频+问题一代码分享

初赛A&#xff1a;烟草营销案例数据分析 AB题综合难度不大&#xff0c;难度可以视作0.4个国赛&#xff0c;题量可以看作0.35个国赛题量。适合于国赛前队伍练手&#xff0c;队伍内磨合。竞赛获奖率50%&#xff0c;八月底出成绩&#xff0c;参赛人数3000队左右。本文将为大家进行…

docker安装部署elasticsearch7.15.2

docker安装部署elasticsearch7.15.2 1.拉取es镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.2如果不想下载或者镜像拉去太慢可以直接下载文章上面的镜像压缩包 使用镜像解压命令 docker load -i elasticsearch-7-15-2.tar如下图所示就表示镜像解压成…

基于GitHub page和Hexo主题搭建个人博客(win)

1.安装git git官网下载地址&#xff1a;Git - Downloads (git-scm.com) (1)下载&#xff1a;进入官网&#xff0c;选择对应版本下载&#xff0c;得到.exe文件 (2)安装&#xff1a;打开.exe文件&#xff0c;进行如下操作 (3)安装好后&#xff0c;右击鼠标&#xff0c;点击显示…

大数据学习之Flink基础

Flink基础 1、系统时间与时间时间 系统时间&#xff08;处理时间&#xff09; 在Sparksreaming的任务计算时&#xff0c;使用的是系统时间。 假设所用窗口为滚动窗口&#xff0c;大小为5分钟。那么每五分钟&#xff0c;都会对接收的数据进行提交任务. 但是&#xff0c;这里有…

深度学习的前沿主题:GANs、自监督学习和Transformer模型

&#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ &#x1f48e;1. 介绍 深度学习在人工智能领域中占据了重要地位&#xff0c;特别是生成对抗网络&#xff08;GANs&#xff09;、自监督学习和Transformer模型的出现&#xff0c;推动了图像生成、自然语言处理等多个领域的创…