关于 BK3633 上电时受串口 UART2 影响而无法启动的问题说明

news2025/2/23 21:52:00

1. 问题描述

BK3633 SDK 版本:BK3633_DesignKit_V06_2310
使用 BK3633 UART2 与指纹模块进行通讯,为了降低功耗,通过 GPIO 控制了指纹模块的供电电源。但每次给整个系统板子上电时,BK3633 很大概率会实际而无法正常运行程序,但在拔掉与之相连的指纹模块串口接口(包含了 UART2 串口线)再上电则一切正常。原厂技术支持,说是有漏电流引起模块启动不正常,但继续追问为什么就没有下文了,仅提供在串口线上串电阻进行验证处理(未验证)

2. 问题分析

跟随原厂提供的 UART2 的 TX 和 RX 的漏电流的解决思路,博主测量了指纹模块接口每个引脚的电平,发现在没有初始化 UART2 的情况下,TX 和 RX (GPIO16 和 GPIO17)处于高电平状态,而这两个引脚应该都是 GPIO 默认状态(即作为输出模式默认输出 0),GPIO 默认状态从《BK3633_ADDR Mapping.xlsm》文件中如下图中获取:
在这里插入图片描述
在这里插入图片描述
一切反常必有妖,博主把应用程序全局检查了一遍,确认没有任何代码关联设置了这两个 GPIO ,

但通过查看官方开发手册,如下图所示:
在这里插入图片描述
以及全局搜索 uart2_init(UART2 串口初始化函数),发现如下图所示结果:
在这里插入图片描述
在 boot 和 driver 中都存在 uart2_init 函数的实现,并且 boot 中还调用了 uart2_init,作为 boot 引导程序中的调试打印输出串口,如下图所示:
在这里插入图片描述
为了验证 boot 引导程序是否真通过 UART2 作为调试输出串口,把 UART2 的 TX 和 RX 接入电脑串口工具,设置波特率为 1000000,重新给模块上电,串口工具打印如下:
在这里插入图片描述
由此说明 boot 引导程序运行时初始化了 UART2 并进行了日志打印输出,这也就能对应开头为什么应用程序没有设置,但对应的 TX 和 RX (GPIO16 和 GPIO17) 引脚是高电平状态了,因为 boot 初始化串口时把这两个引脚设置为了第二功能并上拉了。

此时灵光一闪,会不会是 boot 程序里面 UART2 的 RX 接收了啥导致程序起不来了(或者说接收处理异常引起死机了)?因为 boot 上电时有打印输出,那必然会被指纹模块接收到,而指纹模块那边在没有正常供电的情况下,其串口的 TX 会有什么动作不得而知。

3. 问题验证

按照如下串口工具的设置,进行定时(50ms 即以内)发送大量数据给 UART2,如下图所示:
在这里插入图片描述
再次给板子上电,发现也很大概率起不来,50ms间隔还是有机会起来,1ms间隔一点机会都没有,并且 50ms 间隔在 boot 程序在打印输出 boot_start1 之后就死掉了。当停止发送数据时,板子每次上电都正常跑起来了。

由此可以说明是 boot 引导程序里面 UART2 的 Rx 接收到了数据引起了 boot 死机了。

3. 问题解决

确认了是 boot 程序调试输出串口 UART2 的接收引起的 boot 死掉的问题,那就好解决了。

一开始发现 boot 程序里面缺失了 uart2_isr 的定义,只声明了该函数,而 intc.c 中又调用了 uart2_isr,所以重新定义了该函数,发现还是有问题

继而发现 boot 中没有使用串口的 Rx,而 UART2 初始化的时候,却初始化了接收中断,于是为了简单验证性的处理,则在 uart2_init 初始化函数中屏蔽了如下处理:

SYS_REG0X10_INT_EN |= (0x01 << POS_SYS_REG0X10_INT_EN_UART1);

即不启用该串口中断,再次验证,问题解决了。

而查看最新版 SDK:BK3633_DesignKit_V06_2614
中的 boot 对应源码,也是如博主一样屏蔽了串口中断的。

4. 结语

真是有苦难言,有悲有喜,
悲的是浪费了那么多时间来排查这个问题,
喜的是自己一步一步探寻到了真像。

一切没有解决的问题都是大问题,一切解决了的问题都是小问题。

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

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

相关文章

Redis7——基础篇(六)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 基础篇&#xff1a; Redis&#xff08;一&#xff09;Redis&#xff08;二&#xff09;Redis&#xff08;三&#xff09;Redis&#x…

使用AI创建流程图和图表的 3 种简单方法

你可能已经尝试过使用 LLMs 生成图像&#xff0c;但你有没有想过用它们来创建 流程图和图表&#xff1f;这些可视化工具对于展示流程、工作流和系统架构至关重要。 通常&#xff0c;在在线工具上手动绘制图表可能会耗费大量时间。但你知道吗&#xff1f;你可以使用 LLMs 通过简…

机器学习实战(7):聚类算法——发现数据中的隐藏模式

第7集&#xff1a;聚类算法——发现数据中的隐藏模式 在机器学习中&#xff0c;聚类&#xff08;Clustering&#xff09; 是一种无监督学习方法&#xff0c;用于发现数据中的隐藏模式或分组。与分类任务不同&#xff0c;聚类不需要标签&#xff0c;而是根据数据的相似性将其划…

企业级RAG开源项目分享:Quivr、MaxKB、Dify、FastGPT、RagFlow

企业级 RAG GitHub 开源项目深度分享&#xff1a;Quivr、MaxKB、Dify、FastGPT、RagFlow 及私有化 LLM 部署建议 随着生成式 AI 技术的成熟&#xff0c;检索增强生成&#xff08;RAG&#xff09;已成为企业构建智能应用的关键技术。RAG 技术能够有效地将大型语言模型&#xff…

open webui 部署 以及解决,首屏加载缓慢,nginx反向代理访问404,WebSocket后端服务器链接失败等问题

项目地址&#xff1a;GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, ...) 选择了docker部署 如果 Ollama 在您的计算机上&#xff0c;请使用以下命令 docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gatewa…

内容中台架构下智能推荐系统的算法优化与分发策略

内容概要 在数字化内容生态中&#xff0c;智能推荐系统作为内容中台的核心引擎&#xff0c;承担着用户需求与内容资源精准匹配的关键任务。其算法架构的优化路径围绕动态特征建模与多模态数据融合展开&#xff0c;通过深度强化学习技术实现用户行为特征的实时捕捉与动态更新&a…

最新版IDEA下载安装教程

一、下载IDEA 点击前往官网下载 或者去网盘下载 点击前往百度网盘下载 点击前往夸克网盘下载 进去后点击IDEA 然后点击Download 选择自己电脑对应的系统 点击下载 等待下载即可 二、安装IDEA 下载好后双击应用程序 点击下一步 选择好安装目录后点击下一步 勾选这两项后点击…

DeepSeek最新开源动态:核心技术公布

2月21日午间&#xff0c;DeepSeek在社交平台X发文称&#xff0c;从下周开始&#xff0c;他们将开源5个代码库&#xff0c;以完全透明的方式与全球开发者社区分享他们的研究进展。并将这一计划定义为“Open Source Week”。 DeepSeek表示&#xff0c;即将开源的代码库是他们在线…

【R语言】绘图

一、散点图 散点图也叫X-Y图&#xff0c;它将所有的数据以点的形式展现在坐标系上&#xff0c;用来显示变量之间的相互影响程度。 ggplot2包中用来绘制散点图的函数是geom_point()&#xff0c;但在绘制前需要先用ggplot()函数指定数据集和变量。 下面用mtcars数据集做演示&a…

Linux基本指令(三)+ 权限

文章目录 基本指令grep打包和压缩zip/unzipLinux和windows压缩包互传tar&#xff08;重要&#xff09;Linux和Linux压缩包互传 bcuname -r常用的热键关机外壳程序 知识点打包和压缩 Linux中的权限用户权限 基本指令 grep 1. grep可以过滤文本行 done用于标记循环的结束&#x…

容器化部署tomcat

容器化部署tomcat 需求在docker容器中部署tomcat,并通过外部机器访问tomcat部署的项目 容器化部署要先装好docker容器(docker安装配置) 实现步骤&#xff1a; 拉取tomcat docker pull tomcat用于列出本地Docker主机上存储的所有镜像 docker images在root目录里面创建tomc…

vscode软件中引入vant组件

一、vant简介 Vant 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 官网&#xff1a;介绍 - Vant Weapp 里面的快速上手的教程&a…

DeepSeek vs ChatGPT:AI 领域的华山论剑,谁主沉浮?

一、引言 在当今科技飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已然成为推动各领域变革的核心力量。而在人工智能的众多分支中&#xff0c;自然语言处理&#xff08;NLP&#xff09;因其与人类日常交流和信息处理的紧密联系&#xff0c;成为了最受瞩目的领…

Ubuntu 22.04 Install deepseek

前言 deepseekAI助手。它具有聊天机器人功能&#xff0c;可以与用户进行自然语言交互&#xff0c;回答问题、提供建议和帮助解决问题。DeepSeek 的特点包括&#xff1a; 强大的语言理解能力&#xff1a;能够理解和生成自然语言&#xff0c;与用户进行流畅的对话。多领域知识&…

如何将公钥正确添加到服务器的 authorized_keys 文件中以实现免密码 SSH 登录

1. 下载密钥文件 2. RSA 解析 将 id_ed25519 类型的私钥转换为 RSA 类型&#xff0c;要将 ED25519 私钥转换为 RSA 私钥&#xff0c;需要重新生成一个新的 RSA 密钥对。 步骤&#xff1a; 生成新的 RSA 密钥对 使用 ssh-keygen 来生成一个新的 RSA 密钥对。比如&#xff0c;执…

光明谷推出AT指令版本的蓝牙音箱SOC 开启便捷智能音频开发新体验

前言 在蓝牙音箱市场竞争日益激烈的当下&#xff0c;开发一款性能卓越且易于上手的蓝牙音箱&#xff0c;成为众多厂商追求的目标。而光明谷科技有限公司推出的 AT 指令版本的蓝牙音箱 SOC&#xff0c;无疑为行业带来了全新的解决方案&#xff0c;以其诸多独特卖点&#xff0c;迅…

TIP: Flex-DLD

Article: Flex-DLD: Deep Low-Rank Decomposition Model With Flexible Priors for Hyperspectral Image Denoising and Restoration, 2024 TIP. 文章的主要思想是用network来学low-rank decomposition的两个matrix&#xff08;input是random input&#xff09;. 文章的framew…

MFC开发:如何创建第一个MFC应用程序

文章目录 一、概述二、MFC 的主要组件三、创建一个MFC窗口四、控件绑定消息函数 一、概述 MFC 是微软提供的一个 C 类库&#xff0c;用于简化 Windows 应用程序的开发。它封装了 Windows API&#xff0c;提供面向对象的接口&#xff0c;帮助开发者更高效地创建图形用户界面&am…

Java与C语言中取模运算符%的区别对比

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Java 文章目录 &#x1f4af;前言&#x1f4af;C语言中的取模运算符 %基本行为示例 注意事项示例&#xff1a;负数取模 &#x1f4af;Java中的取模运算符 %基本行为示例 对浮点数的支持示例&#xff1a;浮点数取模 符…

Zabbix 7.2实操指南:基于OpenEuler系统安装Zabbix 7.2

原文出处&#xff1a;乐维社区 部署环境 openEuler 22.03 LTS PHP 8.0 Apache Mysql 8.0 MySQL数据库 6.0 以上版本需要安装mysql8.0以上版本的数据库&#xff08;以mysql为例子&#xff09;。 欧拉系统自带 mysql8.0 的源&#xff0c;无需要安装额外的源。 安装mysql …