问题描述

平台介绍

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

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

代码仓库地址git-button

测试板Button-RF24

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

代码分支号dcd7920

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

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

原因分析

MCU配置问题

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

当前配置代码为

static void App_SPIInit(void)
{stc_spi_cfg_t  SpiInitStruct;Sysctrl_SetPeripheralGate(SysctrlPeripheralSpi0,TRUE);//SPI0模块配置:主机SpiInitStruct.enSpiMode = SpiMskMaster;   //配置位主机模式SpiInitStruct.enPclkDiv = SpiClkMskDiv2;  //波特率:fsys/16SpiInitStruct.enCPHA    = SpiMskCphafirst;//第一边沿采样SpiInitStruct.enCPOL    = SpiMskcpollow;  //极性为低Spi_Init(M0P_SPI0, &SpiInitStruct);}

NF-03模块自身问题

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

调试尝试:改为IO模拟SPI

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

改动后的代码分支c470a24

依旧是同样的现象

调试尝试:更换RF模块

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

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

代码分支没变c470a24

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

总结

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

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

  1. 【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341

    [全志T113-S3_100ask]15-2 linux系统gpio模拟spi驱动屏幕--ILI9341 背景 (一)查阅参考文档 (二)使能内核模块 (三)修改设备树 (四)测试 (五)后语 背景 ...

  2. 外设驱动库开发笔记43:GPIO模拟SPI驱动

      SPI总线是我们常用的串行设备接口,一般情况下我们都会适应硬件SPI接口,但有些时候当硬件端口不足时,我们也希望可以使用软件来模拟SPI硬件接口,特别是要求不是很高的时候.在这一篇中我们将来讨论如 ...

  3. 华大HC32F460 SPI 驱动 ST7735S LCD显示器

    华大HC32F460 SPI 驱动 ST7735S LCD显示器 前言: STM32改HC32F460 换芯片后发现SPI硬件驱动不了屏了,这个小问题搞了很久,最后用逻辑分析仪,分析时序,然后解决了, ...

  4. 用GPIO模拟SPI接口读取传感器数据

    本文基于平头哥开发板RVB2601,简要介绍了用GPIO模拟SPI时序逻辑,实现SPI协议,按照特定温度传感器的时序,读取其数据,及示例程序 一.概述 SPI(Serial Peripheral In ...

  5. 合泰HT1632C点阵LED芯片 的emuSPI驱动(即软件GPIO模拟方式)

    目录 变更历史 概述 芯片概述 设计理念 HT1632C的驱动 硬件抽象层HAL 硬件驱动层HDL 功能模块层FML 展望 变更历史 1.2021年12月27日,初版 2.2022年1月15日,增加一 ...

  6. GPIO模拟SPI通讯接口

    一.SPI总述 SPI 是一种允许一个主设备启动一个与从设备的同步通讯的协议,从而完成数据的交换.也就是说,SPI是一种规定好的通讯方式.这种通信方式的优点是占用端口较少,一般4根就够基本通讯了.同时 ...

  7. TQ2440 GPIO模拟SPI读取AD转换器TLC2543芯片

    其实接触CSDN好久了,一直没有想写自己的博客,遇到问题的时候才去上CSDN参考别人的资料,想到以后不能脚踩西瓜皮,滑倒哪里是哪里,要一个萝卜一个坑,用CSDN博客记录下自己的每一个脚印,一来自己以后 ...

  8. S5PV210之GPIO模拟I2c时序之pcf8591与at24xx linux3.0.8驱动

    目录:一. 说明 二. 驱动程序说明及问题 三. 案例一       四. 案例二 一. 说明 mini210开发板上带了at24c08, 看了linux内核自带的at24.c的驱动程序,编译下载到看 ...

  9. 外设驱动库开发笔记8:GPIO模拟I2C驱动

    I2C总线简单方便,是我们经常使用的一种总线.但有时候我们的MCU没有足够多的I2C控制器来实现我们的应用,所幸我可以使用普通的GPIO引脚来模拟低速的I2C总线通信.这一节我们就来实现使用软件通过普 ...

最新文章

  1. Mix3D:大规模三维场景的数据增强(3DV2021)
  2. WORDPRESS自定义文章列表显示
  3. 一起学nRF51xx 5 -  ppi
  4. day8 网络编程 异常处理
  5. mysql按升序创建索引_Mysql中的降序索引底层实现
  6. 【Python】PAT-1026 程序运行时间(AC)
  7. 类加载器源码、双亲委派、自定义类加载器详解
  8. boost::geometry模块自定义坐标系示例
  9. webform 的路由
  10. 【渝粤教育】国家开放大学2019年春季 0408-22T管理学基础 参考试题
  11. python 颜色_如何使用python中matplotlib库分析图像颜色
  12. java 重写session_使用Shiro重写Session 自定义SESSION
  13. 只能获取fixed语句初始值_因用了Insert into select语句,美女同事被开除了!
  14. SpringCloud常见面试题(2020最新版)
  15. 了解计算机网络拓扑结构,认识计算机网络拓扑结构
  16. iOS开发之openURL:(打电话,打开网页等)
  17. python爬取京东书籍_利用Python爬取当当、京东、亚马逊图书信息代码实例源码
  18. beetl模板使用场景_Beetl模板引擎入门教程
  19. java复数类求模_java中实现复数求模
  20. Unity3D点击按钮改变材质球颜色

热门文章

  1. Swing批量重命名并导出excel
  2. Hbuilder插入图片网页中无法显示
  3. 微信手环1年多了,前主管终于出来聊了聊它是怎么诞生的
  4. Microsoft Edge打开主页就是2345界面
  5. tplink怎么进去_如何进入tp-link无线路由器设置界面
  6. 12.0_[Java 多态]-多态/子类父类互转/基本引用类型互转/ instanceof 运算符
  7. Objective-C 【对象-多文件开发简介】
  8. 20个免费的webservice接口(测试人员必须知道)
  9. 【刷题】微软高频题总结
  10. 安卓手机分辨率修改工具的使用方法