搜索
bottom↓
回复: 8

NRF24L01+PA模块,功率一调大,就不能通信

[复制链接]

出590入992汤圆

发表于 2021-2-18 22:04:06 | 显示全部楼层 |阅读模式
本帖最后由 SUPER_CRJ 于 2021-2-18 22:07 编辑

裂开了。。
功率一共7档,在最低的两个档都能正常通信(大约1000包不丢包)。
具体调试为:主机发送数据显示:达到最大重发中断。从机接收不到数据。
但是:一旦到了3档,几个包都通信不了。因为知道功率大了会堵塞,所以加大了距离。本来不到1m的距离,我加大到十几米都不行。
仔细对照了手册和代码,确定只改变了RF_SETUP里面的RF_PWR寄存器。

现在严重怀疑:是不是射频参数方面的问题。比如PCB没有布线好,没有阻抗匹配什么的。
惟一的表象就是:功率增大一点。就通信丢包严重。软件等配置代码已检查2天,问题不大!
使用的是:国产替代型号SI24R1+AT24C01的模块。



代码如下:
仅仅把:参数:wirelessPowerLev 从1提升到2就造成了以上情况!
  1. void NRF24L01Init( u8 txOrRxMode,u8* txAddr,u8* rxAddr,u8 speedCfg,u8 wirelessPowerLev, u8 nrfFrequeShift )
  2. {
  3.         { // 增加两个引脚配置:IRQ(输入模式) 与 CE(输出模式)
  4.                 RCC->AHBENR.GPIOBClockEnable_RW = 1;
  5.                 GPIOB->MODER.ModeCFG1_RW = GPIO_MODER_INPUT;
  6.                 GPIOB->PUPDR.PullUpDownCFG1_RW = GPIO_PUPDR_PULL_UP;  // 一个问题:自带的电阻电阻太大,会不会影响最后的波形!
  7.                
  8.                 RCC->AHBENR.GPIOFClockEnable_RW = 1;
  9.                 GPIOF->MODER.ModeCFG0_RW = GPIO_MODER_GENERAL_PURPOSE_OUTPUT;
  10.                 GPIOF->OTYPER.OutputType0_RW = GPIO_OTYPER_OUTPUT_PUSH_PULL;
  11.                 GPIOF->OSPEEDR.OutputSpeed0_RW = GPIO_OSPEEDR_HIGH_SPEED;
  12.                 GPIOF->PUPDR.PullUpDownCFG0_RW = GPIO_PUPDR_PULL_UP;
  13.                 NRF24L01_CE = 0;  // CE要设置为0:表示为待机模式。此时可以通过SPI读写寄存器。
  14.         }
  15.         {
  16.                 while(timeDelay( 200,0)){}; timeDelay(0,1); // 延时100MS,稳定设备。
  17.                 SPI_Init();
  18.                 nrfCheck();
  19.                 if( sysComStatus.nrfTestOK == 0 ){ // 表示NRF出问题,则下面不需要操作。
  20.                         return;
  21.                 }
  22.                 else{  // 表示SPI已测试出来。可以进行NRF内部的配置。
  23.                         nrfZreoCommand(FLUSH_TX);
  24.                         nrfZreoCommand(FLUSH_RX);
  25.                         nrfWriteReg(NRF_WRITE_REG|STATUS,RX_OK|TX_OK|MAX_TX); // 清除所有错误模式
  26.                        
  27.                         nrfWriteReg(NRF_WRITE_REG | EN_AA,       0x01); // 使能通道0自动确认
  28.                         nrfWriteReg(NRF_WRITE_REG | EN_RXADDR,   0x01); // 使能通道0地址
  29.                         nrfWriteReg(NRF_WRITE_REG | SETUP_AW,    0x03); // 地址宽度:5字节
  30.                         nrfWriteReg(NRF_WRITE_REG | SETUP_RETR,  0xFF); // 采用最大延时,最大重发次数
  31.                        
  32.                         {
  33.                                 if( nrfFrequeShift <= 125 ){
  34.                                         nrfWriteReg(NRF_WRITE_REG | RF_CH,nrfFrequeShift);
  35.                                 }
  36.                                 else{
  37.                                         nrfWriteReg(NRF_WRITE_REG | RF_CH,100); // 2400+100 = 2500MHZ
  38.                                 }
  39.                         }
  40.                         { // 配置速度与功率,功率采用最大值:111:7dBm (注意:发现无线芯片的功率特别大,用662K已不能满足了。)
  41.                                 // 已确定采用泽耀的国产芯片,注意功率。
  42.                                 if( speedCfg == 1 ){  // 1M速率 - 最大发射功率
  43.                                         nrfWriteReg( NRF_WRITE_REG | RF_SETUP ,0x00 + wirelessPowerLev );
  44.                                 }
  45.                                 else if( speedCfg == 2 ){ // 2M速率 - 最大发射功率
  46.                                         nrfWriteReg( NRF_WRITE_REG | RF_SETUP ,0x08 + wirelessPowerLev );
  47.                                 }
  48.                                 else{ // 250K速率 - 最大发射功率
  49.                                         nrfWriteReg( NRF_WRITE_REG | RF_SETUP ,0x20 + wirelessPowerLev );
  50.                                 }
  51.                         }
  52.                         { //
  53.                                 nrfWriteBuf( NRF_WRITE_REG | RX_ADDR_P0, nrfAddrP0,5); // 设置5字节地址。
  54.                                 nrfWriteBuf( NRF_WRITE_REG | TX_ADDR,nrfAddrP0,5);
  55.                                 nrfWriteReg( NRF_WRITE_REG | RX_PW_P0, 32);  // P0管道定长:32字节。
  56.                         }
  57.                         { // 使能动态数据和带数据反馈ACK
  58.                                 nrfWriteReg( NRF_WRITE_REG | DYNPD,0x01);
  59.                                 nrfWriteReg( NRF_WRITE_REG | FEATURE,0x06);
  60.                         }
  61.                        
  62.                         if( txOrRxMode == 0 ){ // 发送模式
  63.                                 // 注意:中文版本的SRI24R1手册关于发送与接收位写错了。。。
  64.                                 nrfWriteReg(NRF_WRITE_REG | CONFIG,      0x0E); // CRC16,可能会稍微降低运算时间
  65.                         }
  66.                         else{
  67.                                 nrfWriteReg(NRF_WRITE_REG | CONFIG,      0x0F); // CRC16
  68.                         }
  69.                 }
  70.         }
  71.         if( txOrRxMode ==  1){
  72.                 NRF24L01_CE = 1; // 保持在接收模式
  73.         }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入8汤圆

发表于 2021-2-18 23:21:33 来自手机 | 显示全部楼层
强信号阻塞

出0入0汤圆

发表于 2021-2-18 23:36:53 | 显示全部楼层
在PA前后各加一个BPF,射频芯片底噪太差了,造成信噪比恶化所致

出0入0汤圆

发表于 2021-2-19 06:55:16 来自手机 | 显示全部楼层
天线用同轴电缆引离开板1米以上试试。

出100入101汤圆

发表于 2021-2-19 07:21:56 来自手机 | 显示全部楼层
信号强了,会不会是信号削顶

出590入992汤圆

 楼主| 发表于 2021-2-19 09:27:12 来自手机 | 显示全部楼层
fengyunyu 发表于 2021-2-19 07:21
信号强了,会不会是信号削顶

应该不是,总共7级信号,我才用到倒数第三级。
或者代码哪里有时序问题,或者可能是信号问题。
有一个现象:这种模块有板载天线的,之前用起来就比较稳定

出590入992汤圆

 楼主| 发表于 2021-2-19 13:42:19 | 显示全部楼层
castiello 发表于 2021-2-18 23:36
在PA前后各加一个BPF,射频芯片底噪太差了,造成信噪比恶化所致

这个是成品模块,不好加了。
今天把原来焊接上板子的模块竖起来焊接,测试了几次。
但是还是有些问题:
1:比如虽然能达到最大功率配置。但是距离比较短,也就12米左右。而且也不算稳定。
2:似乎,天线的类型也有影响。发现:小的天线在近距离似乎也信号不好。但是大的天线表现不错。不过距离都比较短。

图片中有实拍图片,麻烦大神帮我看下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出590入992汤圆

 楼主| 发表于 2021-2-19 13:44:37 | 显示全部楼层
spacefram 发表于 2021-2-19 06:55
天线用同轴电缆引离开板1米以上试试。

谢谢。射频方面不太懂。
两个请教:
1:为什么要离开1米以上测试?这么远?
2:我准备熟悉下2.4G信号的设计,请教我这射频方面小白应该如何开始?有没有什么书籍方面推荐,或者学习视频比较好的?

出590入992汤圆

 楼主| 发表于 2021-2-19 13:44:58 | 显示全部楼层
castiello 发表于 2021-2-18 23:36
在PA前后各加一个BPF,射频芯片底噪太差了,造成信噪比恶化所致

谢谢。
我准备熟悉下2.4G信号的设计,请教我这射频方面小白应该如何开始?有没有什么书籍方面推荐,或者学习视频比较好的?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 22:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表