首页 > 其他分享 >STM32L073RZT 调试SPI问题

STM32L073RZT 调试SPI问题

时间:2024-07-04 13:30:23浏览次数:26  
标签:STM32L073RZT uint8 通信 SPI data reg 调试 size

现象描述:

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” 造成的,去掉勾选后果然正常了。

 

标签:STM32L073RZT,uint8,通信,SPI,data,reg,调试,size
From: https://www.cnblogs.com/boring-luobo/p/18283677

相关文章

  • selenium03_控制台调试xpath/css语法,代码执行jQuery
    1.控制台调试Xpath语法示例: 按F12,调出控制台Console,调试Xpath语法的格式:$x("xpath语法")。如:$x("//*[@id='kw']")    2.控制台调试css语法调试css语法的格式:$("css语法")。如:$("#kw")   3.代码执行jQueryjQuery是从css语法演变过来的,其实就是css,用到css语言......
  • Advanced .Net Debugging 10:事后调试
    一、介绍这是我的《Advanced.NetDebugging》这个系列的第十篇文章。这篇文章的内容是原书的第三部分的【高级主题】的第八章【事后调试】。前面几篇文章,我们介绍了很多工具,可以帮助大家找出问题的所在。但是,有一类问题我们是没办法使用这些工具来解决的,那就是已经发布的......
  • DEV中SpinEdit使用
    属性:      spinEdit1.BorderStyle=DevExpress.XtraEditors.Controls.BorderStyles.Office2003;//设置边框样式      spinEdit1.EnterMoveNextControl=true;//但用户按Enter键时是否将焦点移动到下一个控件      spinEdit1.ForeColor=......
  • debug调试实现 - printf打印日志
    debug调试实现-printf打印日志printf执行一次很费时间,所以需要在调试结束后,把printf去掉1.设置一个开关/功能裁剪:打开时有printf关闭没有使用宏定义设计#defineDEBUG1#if(DEBUG==1) //在宏定义中if判断------------------------#definedebug_printf() printf......
  • devtunnel 是一个用于管理开发者隧道(developer tunnels)的命令行工具。开发者隧道通常
    创建和托管隧道-Microsoftdevtunnels|MicrosoftLearndevtunnel是一个用于管理开发者隧道(developertunnels)的命令行工具。开发者隧道通常用于将本地计算机上的服务暴露到公共互联网或特定网络中,以便开发人员可以在开发和调试过程中访问这些服务。具体来说,devtunnel提供......
  • GuavaCache、EVCache、Tair、Aerospike 缓存框架比较
    GuavaCache、EVCache、Tair、Aerospike是不同类型的缓存解决方案,它们各有特点和应用场景。下面我会逐一分析这些缓存系统的优势、应用场景,并提供一些基本的代码示例。GuavaCache优势特点:内置在Guava库中,易于集成和使用。提供了丰富的缓存配置选项,如过期策略、缓存加载策略......
  • Linphone 配置参数(噪音调试)
    1,先找到跟语音相关的参数,其实有很多归纳一下无非就是回声消除参数、回声抑制参数、噪声处理参数、均衡器参数4个。2,要了解参数的用途。花费了一周时间还是值得的。agc=0 #这个是自动增益,试过=1会啸叫echocancellation=1#回声消除这个必须=1,否则会听到自己说话的声音ec_tail_len......
  • SPI-MRAM和PPI-MRAM的区别是什么?
    SPI(SerialPeripheralInterface)MRAM和PPI(ParallelPeripheralInterface)MRAM是两种不同接口类型的磁阻式随机存取存储器(MagnetoresistiveRandomAccessMemory,MRAM)。这两种类型的主要区别在于它们的数据传输方式和应用场合。  ###SPIMRAMSPIMRAM使用......
  • SPI-MRAM 和 PPI-MRAM 分别适用于哪些应用场景?
    猜你想问的是SPI和PPI的MRAM的应用场景,SPI-MRAM和PPI-MRAM是两种不同类型的磁随机存取存储器(MRAM),它们的区别在于它们与处理器的连接方式和可访问性,在应用场景上也有所不同: -SPI-MRAM:是一种高速、全双工、同步的通信总线,在芯片管脚只占用四根线,可以为PCB布局节省空间。它通......
  • Netsol SPI STT-MRAM 型号以及参数分享学习
    Serial(串口SPI)STT-MRAMDensityPartNumberVCCPackageTempSpeed1MS3A1004V0M-JI1A3.38WSON-40~85C108MHzS3A1004V0M-AI1A8SOP-40~85C108MHzS3A1004R0M-JI1A1.88WSON-40~85C108MHzS3A1004R0M-AI1A8SOP-40~85C108MHz2MS3A2004V0M-JI1A3.38WSON-40~85C108MHzS3A2004V0M-AI1......