STM32L073RZT 调试SPI问题

news/2024/7/7 21:37:45/文章来源:https://www.cnblogs.com/boring-luobo/p/18283677

现象描述:

spi通信一次后,第二次通信spi的SR寄存器异常0xFF31(MODF, CRCERR, RXNE),通信失败。

以下为调用流程及相关代码:

NFC_ID();

NFC_REG_B_TEST();

 

//SPI 读
void SPI_Read_Data(uint8_t* w_data, uint32_t w_size, uint8_t* r_data, uint32_t r_size) {SET_SPI_CSS(GPIO_PIN_RESET);HAL_SPI_Transmit(&hspi1, (uint8_t*)w_data, w_size, 1000);HAL_SPI_Receive(&hspi1, (uint8_t*)r_data, r_size, 1000);SET_SPI_CSS(GPIO_PIN_SET);
}
#include "st25r3920b.h"static void ReadREG(REGIST_x blockx, uint8_t reg_addr, uint8_t* data, uint32_t size) {reg_addr |= 0x40;uint16_t reg_b = 0;if(REGIST_A == blockx) {SPI_Read_Data(&reg_addr, 1, data, size);}else if(REGIST_B == blockx) {reg_b = (((uint16_t)0xFB) << 8) | reg_addr;SPI_Read_Data((uint8_t*)&reg_b, 2, data, size);}
}static void WriteREG(REGIST_x blockx, uint8_t reg_addr, uint8_t* data, uint32_t size) {reg_addr |= 0x00;if(REGIST_A == blockx) {SPI_Write_Data(&reg_addr, 1);SPI_Write_Data(data, size);}else if(REGIST_B == blockx) {uint16_t reg_b = (((uint16_t)0xFB) << 8) | reg_addr;SPI_Write_Data((uint8_t*)&reg_b, 2);SPI_Write_Data(data, size);}
}void NFC_ID(void){ uint8_t chip_id = 0;ReadREG(REGIST_A, CHIP_ID__REG, &chip_id, 1);UART1_printf("ID: 0x%02X\r\n", chip_id);
}void NFC_REG_B_TEST(void){ uint8_t value = 0;ReadREG(REGIST_B, TX_DRIVER_TIMING_REG, &value, 1);UART1_printf("0x29 REG: 0x%02X\r\n", value);
}

 

 

 

问题分析调试:

用  UART1_printf("SPI_SR:%X\r\n", hspi1.Instance->SR) 输出SPI状态寄存器值

1. 单步调试,取人SR寄存器的值为: 第二次通信前0xFF31

怀疑两次SPI通信间的间隔时间太短 ==》添加延时函数后,无效果。

2. 将串口输出当道第一次通信之前,第一次通信前0x2; 发现输出后两次通信均异常

根据经验怀疑可能是 勾选了 “Use MicroLIB” 造成的,去掉勾选后果然正常了。

 

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

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

相关文章

Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享

本书从一个系统化的视角,秉承大道至简的主导思想,介绍Spark中最值得关注的内 容,讲解Spark部署、开发实战,并结合Spark的运行机制及拓展,帮读者开启Spark技术之旅。 Spark大数据处理:技术、应用与性能优化(全)PDF下载 Spark已经在全球范围内广泛使用,无论是Intel、Yahoo…

LaTeX 编辑协作平台 Overleaf 安装和使用教程

在学术界和科技行业,LaTeX 已成为撰写高质量文档的标准工具。然而,传统的 LaTeX 使用体验常常伴随着以下挑战:学习曲线陡峭 环境配置复杂 多人协作困难 实时预览不便当然,市面上不乏很多在线 LaTeX 编辑平台,但它们大多是封闭的商业服务,无法完全满足用户对数据隐私和自主…

半个月6次面试,终于进百度HR面了

和大家分享一下来自粉丝的面经投稿,他在最近半个月内疯狂的面试,光百度就约面了两个岗位,一共进行了6场面试,并且其中一个进到了 HR 面。今天和大家分享一下来自粉丝的面经投稿,他在最近半个月内疯狂的面试,光百度就约面了两个岗位,一共进行了6场面试,并且其中一个进到…

使用钉钉Oauth2授权登录Odoo配置

准备工作 需要用到的模块: Odoo/auth_oauth OCA/server-auth/auth_oidc 因为钉钉的Oauth授权流程比较特殊,需要继承改造res.users上的几个方法 models\res_users.pyclass ResUsers(models.Model):_inherit = "res.users"dingtalk_userid = fields.Char(Dingtalk Us…

推荐一款Win11主题WPF UI框架

最近在微软商店,官方上架了新款Win11风格的WPF版UI框架【WPF Gallery Preview 1.0.0.0】,这款应用引入了前沿的Fluent Design UI设计,为用户带来全新的视觉体验。最近在微软商店,官方上架了新款Win11风格的WPF版UI框架【WPF Gallery Preview 1.0.0.0】,这款应用引入了前沿的…

图论总结

重链剖分 树上修改,查询路径信息之类的 最多经过logn个轻边, 这样可以更好地划分 注意点: 修改边权可以转化到点权上面: 注意lca的位置不要修改, 应该是update(id[y]+1,id[x]) 例题: 轻重边: https://www.luogu.com.cn/problem/P7735 判断是不是重边,信息转化到点上面,…

logstach 8.6.2输出到mongo 6

logstach官网下载:https://www.elastic.co/cn/downloads/past-releases 1、查看logstach有没有自带输出到mongo的插件,到logstach安装目录/bin下cd /data/logstash-8.6.2/bin/ ./logstash-plugin list --verbose2、没有自带输出到mongo的插件就安装./logstash-plugin install…

模拟集成电路设计系列博客——8.4.3 数控振荡器

8.4.3 数控振荡器 在之前的章节中,我们介绍了一种简单得基于LC振荡器得数控振荡器方式,通过开关控制谐振电路中的电容值实现数控频率方式。 另一种更直接的利用模拟PLL中的LC振荡器VCO的方式是直接通过DAC的方式将数字码转换成模拟量,然后对电容施加控制。值得一提的是这种压…

android 性能优化 -systrace

简介: Systrace允许监视和跟踪Android系统的行为(trace)。它会指明系统都在哪些工作上花费时间、CPU周期都用在哪里,甚至可以看到每个线程、进程在指定时间内都在干嘛。它同时还会突出观测到的问题,从垃圾回收到渲染内容都可能是问题对象,甚至提供建议的解决方案。但是不能…

故地重游

近来,种种原因让我总觉得对任何事都失去了兴趣,整个人犹如失去灵魂的躯壳一般。一切都在往前走,但我想更快一些却无能为力,比较稳定的环境也就注定了过程的时长,又没有改变当下的勇气,每每思量心猿四起,无法自拔。本诗在故地重游(初到京第一工作地)所做,一步步走在那…

pip安装问题记录

【问题1】 pip安装某第三方库的时候报错:metadata-generation-failed解决办法: 1、确保你的pip和setuptools是最新版本:pip install --upgrade pip setuptools 2. setuptools版本不适配,不能进行构建: pip install --upgrade setuptools==57.5.0

P2286 [HNOI2004] 宠物收养场 题解

P2286 [HNOI2004] 宠物收养场 题解 set 做法P2286 [HNOI2004] 宠物收养场 set做法 题链\(_{洛谷}\) \(_{题库}\) 思路 一眼查找前驱后继的题。注意到一句话:那么用 set 就没有什么阻碍了,方便又快捷。 题意很简单,若宠物多则查找与人需求最接近的上下两个值,人多则找与宠…

Dijkstra算法理解-无人机路径规划

1、理解 Dijkstra算法是路径规划算法中非常经典的一种算法,在很多地方都会用到,特别是在机器人的路径规划中,基本学习机器人运动相关的都会接触到该算法。 Dijkstra算法本身的原理是基于贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的…

Three.js

右手坐标系 //每秒转一圈 const clock = new THREE.Clock() function tick() {const time = clock.getElapsedTime()mesh.rotation.y = time * Math.PI * 2 //一秒转一圈renderer.render(scene, camera)window.requestAnimationFrame(tick) } tick()const client = {x: 0,y: 0 …

关于古书介绍上“单鱼尾”是什么?

在阅读一些古书时,读的往往时某些版本的综合刊定版,而介绍有关原版时,会出现这个词语“单鱼尾”或者双鱼尾,这是什么意思呢? 搜索发现,原来古书也不是一页页,单页的,而是双页印刷,然后中间折叠,装订成册的。而折叠的具体位置在哪呢?就由鱼尾型标志标明,显然鱼尾最凹…

数据特征采样在 MySQL 同步一致性校验中的实践

本文介绍了当前DTS应用中,MySQL数据同步使用到的数据一致性校验工具,并对它的实现思路进行分享。作者:vivo 互联网存储研发团队 - Shang Yongxing本文介绍了当前DTS应用中,MySQL数据同步使用到的数据一致性校验工具,并对它的实现思路进行分享。 一、背景 在 MySQL 的使用过…

什么是容器镜像?

镜像是容器的模板,容器运行需要借助镜像来装载环境。镜像描述了容器所需的运行时环境,我们以Docker镜像为例来了解镜像到底是什么。Docker镜像实际上是由一层一层的文件系统构成,这种层级的文件系统称为UnionFS。UnionFS文件系统是一种分层、轻量级并且高性能的文件系统,它…

字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析

在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介…

Avalonia应用在基于Linux的国产操作deepin上运行

本文介绍了Avalonia应用如何在基于Linux的国产操作deepin上运行。deepin系统介绍 deepin(原名Linux Deepin)致力于为全球用户提供美观易用,安全可靠的 Linux发行版。deepin项目于2008年发起,并在2009年发布了以 linux deepin为名称的第一个版本。2014年4月更名为 deepin,在中…

java中的测试片段和include控制器使用

1.作用 可复用,提高测试计划的可维护性和效率。 2.具体使用 2.1在jmeter中将写好的一组请求保存为测试片段,保存到一个jmx文件 2.2新建一个线程组,添加include控制器,选择刚刚保存的测试片段文件即可将刚刚的测试片段重用。