华大HC32L130 SPI和GPIO模拟驱动NF-03和NF-01-s模块(SI24R1方案,兼容NRF24L01)

问题描述

平台介绍

Button-RF24项目:采用华大M0核MCU HC32L130 + 安信可RF模块NF-03(SI24R1国产方案 声称兼容NRF24L01)

使用Keil-MDK IDE开发环境,CMSIS-DAP 调试器

代码仓库地址git-button

测试板Button-RF24

image-20201115161337743

Button-RF24 check函数波形,明显是MISO没有返回数据,IRQ也一直为低

代码分支号dcd7920

image-20201115135315261

动作:Button-RF24 去掉NF-03模块

抓取到的波形没有变化,说明当前的MCU SPI配置或者NF-03模块坏掉

原因分析

MCU配置问题

当前是使用的SPI接口来配置:CPOL=0,CPHA=0,参照的SI24R1的SPI读写要求

image-20201115134554491

当前配置代码为

static void App_SPIInit(void)
{
    stc_spi_cfg_t  SpiInitStruct;

    Sysctrl_SetPeripheralGate(SysctrlPeripheralSpi0,TRUE);

    //SPI0模块配置:主机
    SpiInitStruct.enSpiMode = SpiMskMaster;   //配置位主机模式
    SpiInitStruct.enPclkDiv = SpiClkMskDiv2;  //波特率:fsys/16
    SpiInitStruct.enCPHA    = SpiMskCphafirst;//第一边沿采样
    SpiInitStruct.enCPOL    = SpiMskcpollow;  //极性为低
    Spi_Init(M0P_SPI0, &SpiInitStruct);
    
}
NF-03模块自身问题

在排除物理连接性问题后,可能的是模块自身的问题,但是该可能性较低。

调试尝试:改为IO模拟SPI

原代码使用SPI控制器通信,改为IO模拟测试,排除MCU自身的bug(毕竟国产MCU)

改动后的代码分支c470a24

依旧是同样的现象

image-20201115144751620

调试尝试:更换RF模块

原本设计是使用安信可的贴片式模块NF-03(用的国产RF芯片SI24R1),更换了2个模块同样的现象,然后换了插件式模块NF-01-S,

check函数波形如下,MISO已经有数据了,IRQ也正常,说明模块有问题

代码分支没变c470a24

image-20201115154019584

上图是采用GPIO模拟SPI通信的结果,通过宏开关改回SPI控制器通信,结果也一致ok,再次说明了非MCU bug,而只是运气不好碰到坏的模块了。

总结

同样的安信可的国产SI24R1方案,NF-01-S(插件)和NF-03(贴片,尺寸要小),居然批次性坏的问题(换了3个都一样)。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值