• LoRaWAN_stack移植笔记(七)_数据包的接收发送


    以下的代码适用于LoRa sx1276点对点的通讯,纯粹的考虑在非发射模式下即为接收模式

    配置sx1276的射频参数,并且切换到接收模式

    //bandwidth [0:125  1:250 2:500]
    void set_private_LoRa_para(uint32_t freq, uint8_t datarate_index, uint8_t bandwidth,bool rxContinuous)
    {
        uint16_t timeout = 5;//DR_0 DR_1 DR_2
        uint8_t max_payload_index = 0;
        RadioModems_t modem;
    
        uint8_t datarate = Datarates[datarate_index];
        
        SX1276Write(0x4B,0x19);//设置使用外部晶振
        /* 此处使能外部晶振 */
        
    	//此处映射回调函数,RXDONE/TXDONE/....
      
    	if( ( datarate_index == DR_3 ) || ( datarate_index ==  DR_4) )
        { 
            timeout = 8;				
        }
        else if( datarate_index == DR_5 )
        {
            timeout = 10;
        }
        else if(datarate_index == DR_6)
        {
            timeout = 14;
        }
        
        Radio.SetChannel( freq );
    
        modem = MODEM_LORA;
        Radio.SetRxConfig( modem, bandwidth, datarate, 1, 0, 8, timeout, false, 0, true, 0, 0, false, rxContinuous );
    
        Radio.SetTxConfig( MODEM_LORA, 20, 0, bandwidth, datarate, 1, 8, false, true, 0, 0, false, 3e3 ); 
        
        //设置最大长度为255字节
        Radio.SetMaxPayloadLength( modem, 255);
        
    	// 0 表示Continuous mode,其他表示超时时间
        Radio.Rx( 0 ); // Continuous mode
        
        Radio.SetModem( MODEM_LORA );
        SX1276Write(REG_LR_SYNCWORD,0x34);//设置同步字的值
    }
    

    SX1276 发包

    配置好射频参数之后,发包就像发串口数据一样,直接传入数据的指针和长度可以完成了。

    //目前只支持LoRa模式
    void private_tx(uint8_t *src_data,uint16_t src_data_len)
    {
        //发送数据包
        // Send now
        Radio.Send( src_data, src_data_len );
    }
    
  • 相关阅读:
    WindowsManager 程序(一) 控制窗口的程序
    SQLServer导入导出资料的方法
    CSS收集(1)
    SQLReporting Service
    WindowsManager 程序(二)
    Microsoft 预发行软件 Visual Studio Team System 2008 测试版 2 Team Suite
    Ajax Pro 使用
    一个获取文件的ICON类
    MyCodeBar我的代码片段管理工具
    ADSL自动断拨号类
  • 原文地址:https://www.cnblogs.com/answerinthewind/p/6907740.html
Copyright © 2020-2023  润新知