概述
LoRa终端节点开发之旅④ - - LoRa驱动_PingPong代码
- 4.1 前言
- 4.2 PingPong Project Structure
- 4.2.1 Doc
- 4.2.2 Drivers/BSP/Components
- 4.2.3 Drivers/BSP/stm32l0xx_nucleo
- 4.2.4 Drivers/BSP/sx1276mb1mas
- 4.2.5 Drivers/CMSIS...Drivers/MDK-ARM
- 4.2.6 Drivers/STM32L0xx_HAL_Driver
- 4.2.7 Project/PingPong
- 4.3 几个函数分析
- 4.3.1 Radio.Init( &RadioEvents );
- 4.3.2 Radio.SetChannel( RF_FREQUENCY );
- 4.3.3Radio.SetTxConfig(......)/Radio.SetRxConfig(......);
- 4.3.4Radio.Rx( RX_TIMEOUT_VALUE );
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,就不会产生接收超时,一直等待接收!
最后
以上就是壮观大雁为你收集整理的LoRa终端节点开发之旅④ - - LoRa驱动_PingPong代码分析4.1 前言4.2 PingPong Project Structure4.3 几个函数分析的全部内容,希望文章能够帮你解决LoRa终端节点开发之旅④ - - LoRa驱动_PingPong代码分析4.1 前言4.2 PingPong Project Structure4.3 几个函数分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复