LoRa终端节点开发之旅④ - - LoRa驱动_PingPong代码分析

4.1 前言

你好! 欢迎来到【LoRa终端节点开发之旅④ - - LoRa驱动_PingPong代码分析】!回顾上一集,相信你已经有了一套可编译的LoRa工程PingPong代码!接下来,为了让工程看的更加方便,把工程里面带减号的文件删掉,这样显得更方便些

4.2 PingPong Project Structure

关于PingPong代码,分为以下几个部分


在这里插入图片描述

4.2.1 Doc

readme文件,里面包含了该工程的功能,使用方法,部分文件说明等等

4.2.2 Drivers/BSP/Components

SX127x/SX126x的驱动程序;如<SX1276.c>:里面主要是包含了LoRa芯片参数设置的一些内容,包括初始化,工作模式,频率,扩频因子等等…(LoRa参数具体含义说明,将于下一篇博客介绍)

4.2.3 Drivers/BSP/stm32l0xx_nucleo

关于stm32l0xx_nucleo非LoRa相关的一些功能,如ADC、LED等等 ;就算把这个文件及文件夹删掉,工程仍可用,编译没问题

4.2.4 Drivers/BSP/sx1276mb1mas

SX127x/SX126x的驱动程序;如<sx1276mb1mas.c>:里面主要是关于LoRa IO功能及射频相关的函数定义;

4.2.5 Drivers/CMSIS…Drivers/MDK-ARM

system_stm32l0xx.c、startup_stm32l053xx.s:有经验的STM32大佬一看就知道这是STM32官方系统文件及汇编底层驱动文件;

4.2.6 Drivers/STM32L0xx_HAL_Driver

STM32 HAL库文件,STM32用起来方便,美滋滋!!!

4.2.7 Project/PingPong

包含了main函数之外,还包含了STM32一些功能的用法,如串口,SPI的初始化等等,都是用到4.2.6里面的HAL库…

4.3 几个函数分析

4.3.1 Radio.Init( &RadioEvents );

Radio.Init( &RadioEvents );

LoRa 芯片时间初始化,作用体现在while(1)循环里面,LoRa工作状态包含:发送完成、接收完成、发送超时、接收超时、接收错误。

4.3.2 Radio.SetChannel( RF_FREQUENCY );

Radio.SetChannel( RF_FREQUENCY );

设置LoRa芯片工作频率,EU869:欧洲国家868Mhz

4.3.3Radio.SetTxConfig(…)/Radio.SetRxConfig(…);

Radio.SetTxConfig( MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
                               LORA_SPREADING_FACTOR, LORA_CODINGRATE,
                               LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
                               true, 0, 0, LORA_IQ_INVERSION_ON, 3000 );
Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
                               LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
                               LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
                               0, true, 0, 0, LORA_IQ_INVERSION_ON, true );

发送/接收配置,走到底层你可以看到对应的函数原型及描述

void    ( *SetTxConfig )( RadioModems_t modem, int8_t power, uint32_t fdev,
                          uint32_t bandwidth, uint32_t datarate,
                          uint8_t coderate, uint16_t preambleLen,
                          bool fixLen, bool crcOn, bool freqHopOn,
                          uint8_t hopPeriod, bool iqInverted, uint32_t timeout );

mode:工作模式,LoRa芯片可工作在FSK模式/LoRa模式;
power:LoRa工作功率
fdev:FSK模式下设置,不考虑使用
bandwidth:带宽-125K、250K、500K
datarate:扩频因子
coderate: 编码率
preambleLen:前导码长度
fixLen:数据包长度是否固定
crcOn:是否启动CRC校验
freqHopOn:调频使能开关
hopPeriod:若启动调频,调频周期确定
iqInverted:反转IQ信号(笔者也没搞过呀)
timeout:设置超时时间(一般是接收超时时间)

4.3.4Radio.Rx( RX_TIMEOUT_VALUE );

Radio.Rx( RX_TIMEOUT_VALUE );

Rx接收超时时间,一旦经过了这个时间接收不到数据,就产生接收超时中断,无法接收;
将RX_TIMEOUT_VALUE 设置成0,就不会产生接收超时,一直等待接收!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_翩翩少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值