ASR6500S(sx1262) + STM8 收发 例程

例程使用官方库,但再应用上做了部分修改调整,官方例程里是针对lorawan进行了大篇幅的操作,各种函数指针骚操作,看得脑壳疼。

在官方例程的基础上,对程序进行了剥离整合,做成了最简的MAC层通信,一收一发。测试时,对应修改宏定义及底层SPI配置即可。

模块使用ASR6500S,其内部lora射频芯片也即sx1262


void LORA_Send(uint8_t* buffer, uint8_t size)
{
    SX126xSetDioIrqParams( IRQ_TX_DONE,IRQ_TX_DONE, IRQ_RADIO_ALL, IRQ_RADIO_ALL );
    SX126xSetStandby( STDBY_RC );
    SX126xSetBufferBaseAddress( 0x00, 0x00 );
    SX126x.PacketParams.Params.LoRa.PayloadLength = size;

    SX126xSetPacketParams( &SX126x.PacketParams );

    SX126xSendPayload( buffer, size, 0 );
}

void LORA_RxMode(void)
{
    SX126xSetDioIrqParams( IRQ_RX_DONE, IRQ_RX_DONE,IRQ_RADIO_NONE,IRQ_RADIO_NONE );
    SX126xSetStandby( STDBY_RC );
    SX126xSetBufferBaseAddress( 0x00, 0x00 );

    SX126xSetLoRaSymbNumTimeout(0);
    SX126xSetRx( 0 ); 

}

uint8_t lora_buf[10] = {0x01,0x02,0x03,0x04,0x05,0x06,0x0a,0x0b,0x0c,0x0d};
uint8_t packet_size = 0, buf_offset = 0;
uint8_t lora_rxbuf[64] = {0};
void main(void)
{

    BSP_Init(); // 硬件初始化
    SYS_Init();// 系统数据初始化

    LORA_Init();// sx1262初始化配置
    LORA_RxMode();// 进入接收模式
    enableInterrupts();// 系统中断使能
    while (1)
    {
        #if TX // 宏定义,开启发送
        if(g_SysData.Send == 1) // 定时器中断,间隔5s发送一次
        {
            g_SysData.Send = 0;
            LORA_Send(lora_buf, 10);// 发数据
        }

        if(g_SysData.Irq == 1)// 发送中断
        {
            g_SysData.Irq = 0;
            SX126xClearIrqStatus(IRQ_TX_DONE); // 清中断信息
        }
        #endif
        
        #if RX 宏定义,开启接收

        if(g_SysData.Irq == 1) // 接收中断
        {
            g_SysData.Irq = 0;
            if(SX126xGetIrqStatus() == IRQ_RX_DONE) // 中断标志为接收中断
            {
                SX126xGetRxBufferStatus(&packet_size, &buf_offset); // 读取接收的数据长度
                SX126xReadBuffer(buf_offset, lora_rxbuf, packet_size);  // 接收数据
                SX126xClearIrqStatus(IRQ_RX_DONE); // 清中断信息
                LORA_RxMode(); // 置为接收模式

            }

        }
        
        #endif

    }

}

问题点1:发送中断无法进入。再进入一次发送中断时,需对其中断标志做清除才可再下一次产生中断

问题点2:无法接收数据。在测试过程中,原板子只做了MCU+lora芯片+外围电路,没有焊接天线,数据一直无法接收。查了几个小时无果后,焊接天线尝试,居然可以了。

完整可用收发工程:

https://download.csdn.net/download/lnwechag/12640305

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值