嵌入式技术论坛
直播中

贾永世

7年用户 1728经验值
私信 关注
[问答]

怎么解决使用NRF24l01软件包注册设备失败的问题呢?

1.根据软件包提示第一步先打开了SPI驱动框架
2.然后软件包添加了 nrf24l01最新版本以及demo、debug
2.jpg
3.在board.h #define using_spi1 在board.c最后配置了HAL_SPI_Msp_Init();
2.jpg
4.并成功挂载设备总线”spi1”和”spi10”
2.jpg
5.在lise_device下可以看到设备总线与设备
2.jpg
6.排除了是线接错的问题 最后在运行demo的时候出错 错误如下
2.jpg
7.根据debug找到出错点在 nrf24l01.c 下nrf24_init()函数中的 check_halport();
2.jpg
8.根据可用驱动可以知道这里的寄存器spi读写失败存在问题
—————————补充部分——————————————————————
根据提示使用了逻辑分析仪获得波形如下
2.jpg
而在keil正常使用的代码波形如下 不过使用的单片机STM32F103
2.jpg
因此以为是引脚没有焊接好 于是再单独使用引脚测试发现通信正常 因此初步判定是rtthread spi驱动存在问题

回帖(2)

而无返还

2023-4-20 15:44:39
NRF24L01的假货比较多,建议多换几个模块试一下,之前就被坑过,调了一天死活不行,换了一个模块马上好了。
举报

青sky

2023-4-20 15:44:46
我也是遇到了同样的问题,我是通过CUBEMX配置的SPI2(MCU=STM32F103RBT6),配置时选全双,不要配置硬件NSS,若配了就会出现这个问题,原因???
2.jpg
  • void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
  • {
  •   GPIO_InitTypeDef GPIO_InitStruct = {0};
  •   if(hspi->Instance==SPI2)
  •   {
  •   /* USER CODE BEGIN SPI2_MspInit 0 */
  •   /* USER CODE END SPI2_MspInit 0 */
  •     /* Peripheral clock enable */
  •     __HAL_RCC_SPI2_CLK_ENABLE();
  •     __HAL_RCC_GPIOB_CLK_ENABLE();
  •     /**SPI2 GPIO Configuration
  •     PB13     ------> SPI2_SCK
  •     PB14     ------> SPI2_MISO
  •     PB15     ------> SPI2_MOSI
  •     */
  •     GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_15;
  •     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  •     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  •     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  •     GPIO_InitStruct.Pin = GPIO_PIN_14;
  •     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  •     GPIO_InitStruct.Pull = GPIO_NOPULL;
  •     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  •   /* USER CODE BEGIN SPI2_MspInit 1 */
  •   /* USER CODE END SPI2_MspInit 1 */
  •   }
  • }


举报

更多回帖

发帖
×
20
完善资料,
赚取积分