我是靠谱客的博主 壮观大雁,最近开发中收集的这篇文章主要介绍LoRa终端节点开发之旅④ - - LoRa驱动_PingPong代码分析4.1 前言4.2 PingPong Project Structure4.3 几个函数分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 几个函数分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部