使用Mrif库时遇见问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2703|回复: 3

[未解决] 使用Mrif库时遇见问题

[复制链接]
发表于 2021-9-1 15:07 | 显示全部楼层 |阅读模式


D:\Program Files (x86)\Arduino\libraries\Mirf\MirfHardwareSpiDriver.cpp: In member function 'virtual void MirfHardwareSpiDriver::begin()':
D:\Program Files (x86)\Arduino\libraries\Mirf\MirfHardwareSpiDriver.cpp:9:22: error: 'SPI_2XCLOCK_MASK' was not declared in this scope
  SPI.setClockDivider(SPI_2XCLOCK_MASK);


如上所示,下面是代码,希望好心大佬帮忙看一下。感激不尽。

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>



byte TXADDR[5] = {0xff, 0xff, 0xff, 0xff, 0xff};

void setup() {
  Serial.begin(115200);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(2, INPUT);

  //根据硬件电路使用的引脚
  Mirf.cePin = 10;    //CE
  Mirf.csnPin = 9;    //CSN
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();

  //设置发送目标  目标地址即接收端的自身地址
  Mirf.setTADDR((byte *)TXADDR);

  Mirf.payload = 32; //32字节payload
  Mirf.channel = 0;   //2.4GHz
  Mirf.config();

  Serial.println("Beginning ... ");
}

uint8_t data_buff[32];

void loop() {
  //读取传感器
  data_buff[0] = 10;
  data_buff[1] = '{';
  data_buff[2] = digitalRead(2)+'0';
  data_buff[3] = '}';
  data_buff[4] = '\r';
  data_buff[5] = '\n';

  //设置发送目标
  Mirf.setTADDR((byte*)TXADDR);
  //无线传输发送
  Mirf.send((byte*)data_buff);
  //等待发送完成
  while (Mirf.isSending()) {
  }

  for (int i = 1; i < 5; i++)
  {
    Serial.print(data_buff);
  }
  Serial.println();
  //延时一会儿
  delay(100);
}

50]ZG2}XJ{EAIQIW8~GG1I4.png
发表于 2021-9-1 20:25 | 显示全部楼层
改库里面SPI的初始化
发表于 2021-9-2 00:40 | 显示全部楼层
本帖最后由 frankhan747 于 2021-9-2 00:50 编辑

建议去翻库文件夹,找到MirfHardwareSpiDriver.cpp、MirfHardwareSpiDriver.h、SPI.h并打开;
在这两个文件里搜索关键字“SPI_2XCLOCK_MASK”,它可能是在.h文件里被注释掉了(我猜)。如果确实如此,把它恢复掉就好
如果确实没有,那就只能手动定义一遍了:
  1. #define SPI_2XCLOCK_MASK 0x08
复制代码

当然这个值不是0x08. 要想弄清这个值是什么,你需要先读setClockDevider这个函数的实现代码,弄清楚这个函数配置了哪个寄存器(或者,SPI_2XCLOCK_MASK这个参数参与了哪个寄存器的配置)
然后你需要在主控芯片的数据手册里找到这个寄存器,找出程序需要的配置方法,然后结合setClockDevider函数的工作原理来确定SPI_2XCLOCK_MASK的值。

如果你不想费这么大劲,建议换RF24库
NRF24L01故障排查-思路方法汇总
https://www.arduino.cn/forum.php ... &fromuid=179950
(出处: Arduino中文社区)


 楼主| 发表于 2021-9-7 21:30 | 显示全部楼层
frankhan747 发表于 2021-9-2 00:40
建议去翻库文件夹,找到MirfHardwareSpiDriver.cpp、MirfHardwareSpiDriver.h、SPI.h并打开;
在这两个文件 ...

感谢大佬回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 23:49 , Processed in 0.192272 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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