芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

STM32+NRF24L01无线通信使用教程单片机解密

单片机解密NRF24L01驱动程序


打开 nrf24l01.c 文件,代码如下:
  1. 单片机解密#include "nrf24l01.h"
  2. 单片机解密#include "spi.h"



  3. const u8 TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; // 发送地址
  4. const u8 RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};

  5. //初始化 24L01 的 IO 口
  6. void NRF24L01_Init(void)
  7. {
  8. GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef              SPI_InitStructure;


  9. //使能 PB,F,D 端口时钟              //PF8-CE              PF9-CSN              PD3-IRQ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPI
  10. OF|RCC_APB2Periph_GPIOD, ENABLE);



  11. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;              //PG13 上拉 防 止 EN25X 的干扰
  12. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;              // 推
  13. 挽输出

  14. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOG, &GPIO_InitStructure); //初始化指定 IO GPIO_SetBits(GPIOG,GPIO_Pin_13);//上拉

  15. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;              //PB12 上拉 防止 以太网 NSS 的干扰
  16. GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化指定 IO GPIO_SetBits(GPIOB,GPIO_Pin_12);//上拉



  17. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_8; //PF8 9 推 挽
  18. GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化指定 IO GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_8);//PF6,7,8 下拉


  19. GPIO_InitStructure.GPIO_Pin              = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PD3 输入
  20. GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_ResetBits(GPIOD,GPIO_Pin_3);//PD3 下拉


  21. SPI2_Init();              //初始化 SPI SPI_Cmd(SPI2, DISABLE); // SPI 外设不使能


  22. SPI_InitStructure.SPI_Direction              = SPI_Direction_2Lines_FullDuplex;              //SPI 设置为双线双向全双工
  23. SPI_InitStructure.SPI_Mode = SPI_Mode_Master;              //SPI 主机 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;              //发送
  24. 接收 8 位帧结构
  25. SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;              //时钟悬空低 SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //数据捕获于第 1
  26. 个时钟沿
  27. SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;              //NSS 信号由 软件
  28. 控制
  29. SPI_InitStructure.SPI_BaudRatePrescaler              =
  30. SPI_BaudRatePrescaler_16;              //定义波特率预分频的值:波特率预分频值 为 16
  31. SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;              // 数 据 传 输从 MSB 位开始
  32. SPI_InitStructure.SPI_CRCPolynomial = 7;              //CRC 值计算的多项式 SPI_Init(SPI2, &SPI_InitStructure);              //根据 SPI_InitStruct 中指
  33. 定的参数初始化外设 SPIx 寄存器
  34. SPI_Cmd(SPI2, ENABLE); //使能 SPI 外设


  35. NRF24L01_CE=0;              //使能 24L01
  36. NRF24L01_CSN=1;              //SPI 片选取消
  37. }


  38. //检测 24L01 是否存在
  39. //返回值:0,成功;1,失败
  40. u8 NRF24L01_Check(void)
  41. {
  42. u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
  43. u8 i;
  44. SPI2_SetSpeed(SPI_BaudRatePrescaler_4); //spi 速度为 9Mhz(24L01 的最大 SPI 时钟为 10Mhz)
  45. NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,buf,5);//写入 5 个字节 的地址.
  46. NRF24L01_Read_Buf(TX_ADDR,buf,5); //读出写入的地址
  47. for(i=0;i<5;i++)if(buf[i]!=0XA5)break;

  48. if(i!=5)return 1;//检测 24L01 错误
  49. return 0;              //检测到 24L01
  50. }



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信