LoRa---官方例程移植

SX1278芯片上移植Semtech官方PING-PONG例程

移植环境:keil5.20

硬件平台:stm32f051+sx1278

1、下载源码:Semtech官网下载最新例程链接:http://www.semtech.com/apps/filedown/down.php?file=sx12xxDrivers-V2.1.0.zip

2、准备文件: SX12xxDrivers-V2.1.0文件夹下只有src为我们需要使用的文件夹,src文件夹下有platform文件夹、radio文件夹和一个文件main.c,platform文件夹存放的是不同硬件平台的驱动,我们只需要sx12xxEiger文件夹和platform.h;另外,由于我用的是STM32F0,所以sx12xxEiger文件夹里面有关其他STM32硬件平台的文件也都不要,LoRa芯片使用的是SX1278,关于sx1272、sx1276、sx1232、sx1509的文件也都不要,还有一个radio文件夹,里面关于sx1272、sx1276、sx1232、sx1509的文件也都不要。

3、在KEIL里建工程,直接拿官方的固件库来建就行了,不再赘述。把步骤2整理后的文件加到工程中,基本框架就搭好了。

4、啥都不说,先编译一下,数不清的错误。从main.c文件开始捋一捋,程序过程很简单,先初始化stm32f0的时钟,初始化SPI,初始化LED等,初始化systick,接着再初始化6个GPIO口作为sx1278中断的检测口,STM32F0的初始化完成了;

5、再复位LoRa芯片sx1278,复位完成,然后是初始化LoRa模块;设置LoRa工作方式为睡眠模式,设置射频通信方式为LoRa模式,设置工作方式为待机模式,读取LoRa所有寄存器(111个寄存器,一共112个寄存器,0x00寄存器是读接收缓存区的,没收到数据,不用读)的值,这些值是LoRa寄存器的上电缺省值,有些在后面会用到,这里一次性读了;然后继续初始化,设置LoRa的参数,如:LNA放大增益、通信主频率、扩频因子、带宽、编码率、超时阈值、天线发射功率等等等等,了解全部参考datasheet即可。

6、初始化完成后,设置LoRa为接收模式,然后进入while循环,循环里面运行函数SX1276LoRaProcess(),这个函数最为重要,是整个程序的核心,函数里面类似于一个状态机,LoRa的个个状态下都有相应的实现代码,完成动作(比如完成一次接受)后,返回相应的值,通过调用这个函数,判断它的返回值,来确定下一步动作。

7、整个例程的工作流程到这里就结束了。例程有地方不太明白,就多看几遍,基本就理解了。

8、分析完了程序的工作流程,开始调试;先试一试SPI通信是否正常,SX1276ReadBuffer( REG_LR_OPMODE, &buff, 1 );,读取当前工作模式,通过查看返回值判断通信是否正常;然后就切换到接收模式,发送一个字符串;发送完成,切换到接收模式,接收到数据,再切换到发送模式,发送一个字符串,如此循环;

9、为了方便调试,用串口把接收到的数据打印出来,同时,接收到数据后,让LED1灯状态翻转一下,发送完成后,让LED2状态翻转一下。移植到此就完成了。

10、debug小技巧,官方给的源文件里面,有很多代码你都没有用到,建议把他们都屏蔽掉,还有宏也是,这样报错会少很多。

 

贴一下我的工程目录:

也有没用到的.c文件,把里面的内容注释了。

已上,完!