概述
项目代码链接。
SX1276/77/78所用驱动均相同。SX1278具有LoRa和FSK的调制解调能力1,本过程移植的是LoRa功能。
底层代码移植
在移植过程中对代码进行了精简,将关于FSK通信部分的代码全部删除。只要是关于FSK的代码和宏定义全部去掉。
名称 | 用途 | 适配 |
---|---|---|
platform.h | 平台配置文件 | 需要 |
radio.c | 无线通信接口源文件,提供无线通信主要实现方法 | |
radio.h | 无线通信接口头文件,提供声明 | |
sx1276.c | sx1276/77/78芯片初始化,寄存器配置源文件 | |
sx1276.h | sx1276/77/78芯片初始化,寄存器配置头文件 | |
sx1276-Hal.c | sx1276/77/78芯片硬件驱动源文件,提供spi初始化、读写等方法的具体实现。采用不同MCU时,需要具体实现这里的方法 | 需要 |
sx1276-Hal.h | sx1276/77/78芯片硬件驱动头文件 | |
sx1276-LoRa.c | Lora寄存器配置源文件 | 需要 |
sx1276-LoRa.h | Lora寄存器配置头文件 | |
sx1276-LoRaMisc.c | 基于Lora寄存器配置的功能配置源文件 | |
sx1276-LoRaMisc.h | 基于Lora寄存器配置的功能配置头文件 |
platform.h
本文件中仅包含两个标准头文件即可,<stdint.h>
,<stdbool.h>
。
sx1276-Hal.c
需要适配NRST、NSS、DIO0、DIO1、DIO2、DIO3、DIO4、DIO5硬件引脚,其中DIO1、DIO2、DIO3、DIO4、DIO5根据实际需求进行适配。
- SX1276SetReset
复位方法,打开时,置0,关闭时置1或者引脚配置为输入。
- SX1276WriteBuffer
缓存写。按照数据手册,写需要先发地址,再发数据2。
- SX1276ReadBuffer
缓存读。按照数据手册,读需要先发地址,再读数据2。
sx1276-LoRa.c
主要修改LoRaSettings
该变量,该变量包含SX1278的属性3。注意:sx1278的工作频率范围,和功率。
- RFFrequency——射频频率
- Power——功率
- SignalBw——信号带宽
- SpreadingFactor——扩频因子
- ErrorCoding——编码率
- CrcOn——CRC校验开关
- ImplicitHeaderOn——隐式包头开关
- RxSingleOn——单一接受开关
- FreqHopOn——跳频开关
- HopPeriod——跳频周期
- TxPacketTimeout——发送超时
- RxPacketTimeout——接收超时
- PayloadLength——有效负载长度
上层API调用
主要是对tRadioDriver该结构体的调用。其中StartRx
接收和SetTxPacket
发送函数仅仅将标志位进行了变化,并没有对实际的芯片寄存器进行操作,需要通过Process
方法实现。
备注
中文参考资料时间为2013年版本,其中有些寄存器没有披露。在英文参考资料2015年版本中,进行了披露。