一 代码获取
Semtech提供了LoraWan节点端的源代码,目前只有ClassA和ClassC两种协议。github地址:https://github.com/Lora-net/LoRaMac-node。示例中的MCU为STM32,节点开发板可以从ST网站购买。
二 需要移植的文件
如果平台是STM32,直接在工程上修改添加自己的应用,或者把相应的文件复制到已有的工程,根据芯片的不同简单修改即可。如果需要在其他平台上实现,需要修改一些底层文件进行适配。
本人是在nrf51系列上移植了LoRaWAN的协议栈,对调试中遇到的问题和关键点进行介绍,
1. LoRaMac-node/src/mac/ 目录下的文件是LoRaWAN的MAC协议栈,还有加密算法,一般不需要改动。
2.LoRaMac-node/src/radio/ 目录下的文件是对SX1272和SX1276的寄存器操作,SX1278的驱动可以直接使用SX1276的。
sx1276.c的需要修改几个函数以适应不同的平台:
- void SX1276WriteBuffer( uint8_t addr, uint8_t *buffer, uint8_t size ) ;void SX1276ReadBuffer( uint8_t addr, uint8_t *buffer, uint8_t size )
- void SX1276Reset( void )
根据GPIO pin脚不同和对应的平台操作函数进行修改
3. LoRaMac-node/src/boards/LoRaMote/ 里面的文件是和硬件平台或主板相关的。根据自己主板或平台的配置进行修改,有些不用的功能可以不加。
主要的修改文件是sx1272-board.c;spi-board.c;rtc-board.c
- sx1272-board.c
void SX1272SetAntSw( uint8_t opMode );设置天线发送接收,根据实际硬件进行设置
- rtc-board.c