zoukankan      html  css  js  c++  java
  • NRF24L01

    通道说明

    NRF24L01:一个发送通道,6个接收通道

    发送端发送数据时,数据包内地址采用“发送通道TX_ADD”的地址,这个地址为接收端的几个接收通道中的一个,接收端对应的通道接收到数据后,进行应答,应答包内地址采用对应接收通道的地址即为发送端的发送通道地址,而发送端默认使用通道0最为应答接收,故发送端通道0地址要设置为发送通道地址。(上面一大堆通信,其实用的都是一个地址,这个地址分别被用来作为发送端发送通道地址,发送端某一接收通道地址,发送端接收通道0地址)。关于应答,无需设置接收端的发送通道地址,因为应答是硬件实现,不是软件设置。

     最好使用1-5通道来接收,因为发射时0通道会被用来接收应答,而发送数据前,往发送通道写对方某一接收通道的地址。

    关于接收通道的地址规定:

    • 通道0,1的地址随意,5字节即可
    • 通道2-5的地址与1的地址相关:
      • 要求寄存器中前4个字节必须和“1通道地址”的前四个字节相同,最后一个字节随意(不同)
      • 不过寄存器里的顺序和数组里的顺序相反,故发送时需要改变数组里的第一位,而接收端实际上只允许你写一位地址值

    arduino的RF24库

    连接:

    关键函数:

    RF24 radio(9,10);//构造,CE->9 ; CSN->10,构造函数内默认指定数据包大小为32(最大也是32),如果要改请使用radio.setPayloadSize(xxx);
    
    radio.begin();//初始化
    
    radio.setChannel(XXX);//设置频率
    
    radio.setAutoAck(true);//设置自动应答
    
    Serial.begin(9600);//
    
    printf_begin();//该函数来自example里的printf.h文件内,用于初始化调试
    
    radio.printDetails();//输出调试信息,要先调用printf_begin
    radio.openReadingPipe(1,pipes[0]);//pipes[0]是uint64_t类型变量比如0x0202020202LL ;-->设置接收通道1的地址为pipes[0]
    radio.startListening();//开始接收
    
    if ( radio.available() )//available函数里面会去查询STATUS寄存器,其重载函数可获得到底是哪个通道有数据
    {
      radio.read( buf, 32 );//bool RF24::read( void* buf, uint8_t len );
    }

    实用函数:

    RF24::write_register//写寄存器
    RF24::read_register//读寄存器,均有重载

    //该库默认启用16位CRC,如需修改,请到begin函数里修改

    //最好把printf.h文件放到根目录方便调试

    51的

    关键函数:

    nrf_init(void)//初始化了引脚和寄存器(1 Mbps, 0 dBm,自动应答,重发...),成功返回true
    
    bool nrf_send(byte* addr, byte* buffer);//发送数据,数据长度要和接收方一致。内部包含重发,成功返回true
    
    bool nrf_recv(byte* addr, byte* buffer, int timeout);//Binds to a specified address and receives data. Specify -1 for timeout if you want to wait indefinitely. Returns TRUE if data received, otherwise FALSE.

    This library is tested on STC89C52RC2 and should be compatible with AT89S52 and similar mcus. It assumes 11.0952 MHz crystal and 12 clocks per instruction. If you mcu is different from this configuration, you will need to provide your own sleep function in the stc89.h header file. You will also need to change these defines in nrf.h according to your own situation

    #define CE P1_4
    #define CSN P1_3
    #define SCK P1_2
    #define MOSI P1_1
    #define MISO P1_0

    实用函数:

    void _nrf_set_reg(byte reg, byte value);//写寄存器,例如   _nrf_set_reg(RF_CH,6);设置频率为6
    byte _nrf_get_reg(byte reg);//读寄存器
  • 相关阅读:
    vue-打包文件解析
    vue-动态路由
    vue-代码跳转路由
    vue-<routerl-link>属性补充
    vue-默认路由重定向和路由模式的切换
    vue-配置路由规则和显示路由
    路由器实验之Serial接口的静态路由配置
    交换机实验之交换机基本配置、交换机端口的基本配置、管理MAC地址表
    数据库表结构(字段信息等)导出Word,Excel,HTML,CHM等格式
    《数据库系统概论》学习总结——附件四(数据库实验(ADO.NET实现数据库操作))
  • 原文地址:https://www.cnblogs.com/2cats/p/3536777.html
Copyright © 2011-2022 走看看