ASR6500S(sx1262) + STM8 收发 例程

本文分享了一种基于ASR6500S模块的LoRa通信精简方案,通过修改官方例程实现简单的MAC层收发功能。文章详细介绍了发送与接收函数,并解决了中断标志清除及天线对接收效果的影响等问题。
部署运行你感兴趣的模型镜像

例程使用官方库,但再应用上做了部分修改调整,官方例程里是针对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.youkuaiyun.com/download/lnwechag/12640305

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值