uart开发调试

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.mzph.cn/pingmian/50559.shtml

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

相关文章

MyBatis操作数据库 -- 动态SQL

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|Spring &#x1faf5; 与天斗其乐无穷 文章目录 1. 动态SQL<if>标签<trim>标签<where> 标签<set> 标签<foreach> 标签<include>标签注解方式 1. 动态SQL 动态sql能够实现不同条件下的sql拼接 …

jquery+bootstrap实现DOM转图片并下载

&#x1f34a;jquery实现DOM结构转图片并下载 版本介绍&#xff1a; Bootstrap v3.3.7jQuery v3.5.1domToImage.js 根据Bootstrap实现dialog上一步下一步多个弹窗交互进行大肆修改&#xff0c;完善了第二步生成图片的功能与更强的交互 1.、功能说明 重新设置bootstrap主题色 …

DNS应用以及扩展知识

&#xff08;一&#xff09;DNS正向代理 1.首先在DNS服务器上安装bind包&#xff0c;安装环境 此部分参考上一个笔记 2.修改配置文件 vim /etc/named.conf 在配置文件中加上"any;" 3.然后配置/etc/named.rfc1912.zonesw文件 添加选中部分 选中部分有一个file文…

24年第三届钉钉杯大学生大数据挑战赛浅析

需要完整资料&#xff0c;请关注WX&#xff1a;“小何数模”&#xff01; 本次钉钉杯大数据挑战赛的赛题已正式出炉&#xff0c;无论是赛题难度还是认可度&#xff0c;该比赛都是仅次于数模国赛的独一档&#xff0c;可以用于国赛前的练手训练。考虑到大家解题实属不易&#xf…

气膜足球馆:经济高效的室内足球场馆解决方案—轻空间

如果你有一片足球场&#xff0c;想要建一个室内的足球馆&#xff0c;为什么不考虑一下气膜建筑呢&#xff1f;气膜建筑以其独特的优势和高性价比&#xff0c;成为现代体育场馆建设中的一匹黑马。它不仅具有传统建筑无法比拟的经济效益和快速施工优势&#xff0c;还在智能控制、…

vue实现电子签名、图片合成、及预览功能

业务功能&#xff1a;电子签名、图片合成、及预览功能 业务背景&#xff1a;需求说想要实现一个电子签名&#xff0c;然后需要提供一个预览的功能&#xff0c;可以查看签完名之后的完整效果。 需求探讨&#xff1a;后端大佬跟我说&#xff0c;文档我返回给你一个PDF的oss链接…

7.27扣...

知识点补充&#xff1a; 1.StringBuilder StringBuilder 类在 Java 中是一个可变字符序列。与 String 类不同&#xff0c;StringBuilder 可以在创建之后被修改。这意味着你可以向 StringBuilder 对象追加、插入或删除字符&#xff0c;而不需要创建新的对象&#xff08;辅助数…

企业公户验证API如何使用JAVA、Python、PHP语言进行应用

在纷繁复杂的金融与商业领域&#xff0c;确保每笔交易的安全与合规是至关重要的。而企业公户验证API&#xff0c;正是这样一位默默守护的数字卫士&#xff0c;它通过智能化的手段&#xff0c;简化了企业对公账户验证流程&#xff0c;让繁琐的审核变得快捷且可靠。 什么是企业公…

chrome浏览器驱动(所有版本)

chrome浏览器驱动 114之前版本 https://chromedriver.storage.googleapis.com/index.html 125以后 125以后版本下载链接在此&#xff0c;只有后面status是绿色对勾的才可以下载&#xff0c;驱动大版本一致就可以使用&#xff0c;不需版本号一模一样&#xff1b;下载所需版本只…

语言转文字

因为工作原因需要将语音转化为文字&#xff0c;经常搜索终于找到一个免费的好用工具&#xff0c;记录下使用方法 安装Whisper 搜索Colaboratory 右上方链接服务 执行 !pip install githttps://github.com/openai/whisper.git !sudo apt update && sudo apt install f…

高性能 Java 本地缓存 Caffeine 框架介绍及在 SpringBoot 中的使用

在现代应用程序中&#xff0c;缓存是一种重要的性能优化技术&#xff0c;它可以显著减少数据访问延迟&#xff0c;降低服务器负载&#xff0c;提高系统的响应速度。特别是在高并发的场景下&#xff0c;合理地使用缓存能够有效提升系统的稳定性和效率。 Caffeine 是一个高性能的…

《程序猿入职必会(4) · Vue 完成 CURD 案例 》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

【C++刷题】优选算法——队列+宽搜

N 叉树的层序遍历 vector<vector<int>> levelOrder(Node* root) {vector<vector<int>> ret;if (root nullptr) return ret;queue<Node*> q;q.push(root);ret.push_back({root->val});int size 1;while (!q.empty()) {vector<int> v…

【机器学习】Jupyter Notebook如何使用之基本步骤和进阶操作

引言 Jupyter Notebook 是一个交互式计算环境&#xff0c;它允许创建包含代码、文本和可视化内容的文档 文章目录 引言一、基本步骤1.1 启动 Jupyter Notebook1.2 使用 Jupyter Notebook 仪表板1.3 在笔记本中工作1.4 常用快捷键1.5 导出和分享笔记本 二、进阶用法2.1 组织笔…

从零开始学习网络安全渗透测试之基础入门篇——(二)Web架构前后端分离站Docker容器站OSS存储负载均衡CDN加速反向代理WAF防护

Web架构 Web架构是指构建和管理Web应用程序的方法和模式。随着技术的发展&#xff0c;Web架构也在不断演进。当前&#xff0c;最常用的Web架构包括以下几种&#xff1a; 单页面应用&#xff08;SPA&#xff09;&#xff1a; 特点&#xff1a;所有用户界面逻辑和数据处理都包含…

劝你不要上自动化立体库,非要上,砸锅了吧

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在当今这个科技日新月异的时代&#xff0c;自动化立体库作为仓储物流领域的佼佼者&#xff0c;以其高效、精准、节省人力的优势&#xff0c;吸引…

Windows下帆软BI(finebi)单机部署移植(Tomcat)攻略

一、基础环境 操作系统&#xff1a;Windows 10 64bit 帆软BI 版本&#xff1a;V9.0/V10.0 HTTP工具&#xff1a;Tomcat 外置数据库&#xff1a;Oracle 11g 实验内容&#xff1a;将已经部署好的帆软BI从一台电脑移植到另一台电脑 二、前期准备 1、做好外置数据库移植&…

【Three.js基础学习】17.imported-models

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 课程回顾&#xff1a; 如何在three.js 中引入不同的模型&#xff1f; 1. 格式 &#xff08;不同的格式&#xff09; https://en.wikipedia.org/wiki/List_of_file_form…

杭州东网约车管理再出行方面取得的显著成效

随着科技的飞速发展&#xff0c;网约车已成为人们日常出行的重要选择。在杭州这座美丽的城市&#xff0c;网约车服务更是如雨后春笋般蓬勃发展。特别是杭州东站&#xff0c;作为杭州的重要交通枢纽&#xff0c;网约车管理显得尤为重要。近日&#xff0c;沧穹科技郑重宣告已助力…

达梦数据库系列—33.日志总结

目录 1、SQL日志 SQL 日志开启 SQL日志分析 2、Redo日志 3、归档日志 联机配置归档 手动配置归档 归档信息的查看 清理归档日志 4、闪回 查看闪回功能状态 开启闪回 闪回查询 5、其他事件日志 数据库实例日志 DMAP进程日志 数据库备份日志 dmwatcher日志 dm…