你好! 欢迎来到【LoRa终端节点开发之旅④ - - LoRa驱动_PingPong代码分析】!回顾上一集,相信你已经有了一套可编译的LoRa工程PingPong代码!接下来,为了让工程看的更加方便,把工程里面带减号的文件删掉,这样显得更方便些
关于PingPong代码,分为以下几个部分
readme文件,里面包含了该工程的功能,使用方法,部分文件说明等等
SX127x/SX126x的驱动程序;如
关于stm32l0xx_nucleo非LoRa相关的一些功能,如ADC、LED等等 ;就算把这个文件及文件夹删掉,工程仍可用,编译没问题
SX127x/SX126x的驱动程序;如
system_stm32l0xx.c、startup_stm32l053xx.s:有经验的STM32大佬一看就知道这是STM32官方系统文件及汇编底层驱动文件;
STM32 HAL库文件,STM32用起来方便,美滋滋!!!
包含了main函数之外,还包含了STM32一些功能的用法,如串口,SPI的初始化等等,都是用到4.2.6里面的HAL库…
Radio.Init( &RadioEvents );
LoRa 芯片时间初始化,作用体现在while(1)循环里面,LoRa工作状态包含:发送完成、接收完成、发送超时、接收超时、接收错误。
Radio.SetChannel( RF_FREQUENCY );
设置LoRa芯片工作频率,EU869:欧洲国家868Mhz
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:设置超时时间(一般是接收超时时间)
Radio.Rx( RX_TIMEOUT_VALUE );
Rx接收超时时间,一旦经过了这个时间接收不到数据,就产生接收超时中断,无法接收;
将RX_TIMEOUT_VALUE 设置成0,就不会产生接收超时,一直等待接收!