本篇主要介绍SX1278转到LLCC68和SX1268/SX1262的软件细节教程,文中涉及到的代码,大家可去原文查看https://aithinker.blog.csdn.net/article/details/134864572?spm=1001.2014.3001.5502
首先和大家介绍一下这几款芯片的区别特点:
SX127x类:包含安信可Ra-01、Ra-01H、Ra-02,分别对应两个版本芯片SX1278和SX1276,代码驱动通用,只是频率参数有区别。
SX126x和LLCC68:包含安信可Ra-01S,Ra-01SC,Ra-01SCH,作为一个类别,分别对应芯片SX1268和LLCC68,他们代码驱动通用,参数值配置有一定区别。
综上所述,只要准备两份驱动代码就能将上述模组完全驱动起来,今天的目的是实现安信可127x和126x之间的通信。其中会涉及一些代码逻辑框架的讲解。
Ra-01驱动代码:链接
Ra-01S、Ra-01SC:链接
127x芯片手册:链接
126x芯片手册:链接
LLCC68芯片手册:链接
(具体下载链接请点击原文查看)
安信可封装到站点的代码使用的驱动MCU是STM32F103,只要使用同类MCU就可以完成直接驱动,代码中附详细接线文档,下面使用127x代码来介绍整个代码的流程框架。
发射机的配置参数说明(SX127x)
1、RadioModems_t modem:无线电模块类型。
2、int8_t power:发射功率。
3、uint32_t fdev:频率偏移。
4、uint32_t bandwidth:带宽。
5、uint32_t datarate:数据速率。
6、uint8_t coderate:编码率。
7、uint16_t preambleLen:前导码长度。
8、bool fixLen:是否固定长度。
9、bool crcOn:是否开启CRC校验。
10、bool FreqHopOn:是否开启频率跳变。
11、uint8_t HopPeriod:频率跳变周期。
12、bool iqInverted:是否反转IQ信号。
13、uint32_t timeout:超时时间。
备注:这部分是发射机的参数配置,源码.h文件内也有详细说明。
接收机配置参数说明(SX127x)
1、RadioModems_t modem:无线电模块类型。
2、uint32_t bandwidth:接收带宽。
3、uint32_t datarate:数据速率。
4、uint8_t coderate:编码率。
5、uint32_t bandwidthAfc:AFC带宽。
6、uint16_t preambleLen:前导码长度。
7、uint16_t symbTimeout:符号超时。
8、bool fixLen:是否固定长度。
9、uint8_t payloadLen:有效载荷长度。
10、bool crcOn:是否启用CRC。
11、bool FreqHopOn:是否启用频率跳变。
12、uint8_t HopPeriod:频率跳变周期。
13、bool iqInverted:是否反转IQ。
14、bool rxContinuous:是否持续接收。
LoRa初始化配置(SX127x)
LoRa的初始化配置也是重要的一部分
SPI初始化配置(SX127x)
LoRa是SPI驱动的,所以在代码移植配置时一定要确保SPI的配置正常,时序和访问正常才能能正常使用,代码中用的是STM32的SPI1。
LoRa参数配置(SX127x)
这里的参数配置对应”接收机“和”发射机“的参数,共用一个参数才能够互相通信。
下面是126x系列的代码驱动包,驱动代码和LLCC68系列是通用的。
发射机的配置参数说明(SX126x&LLCC68)
1、RadioModems_t modem:无线电模块类型。
2、int8_t power:发射功率。
3、uint32_t fdev:频率偏移。
4、uint32_t bandwidth:带宽。
5、uint32_t datarate:数据速率。
6、uint8_t coderate:编码率。
7、uint16_t preambleLen:前导码长度。
8、bool fixLen:是否固定长度。
9、bool crcOn:是否开启CRC校验。
10、bool freqHopOn:是否开启Period`:频率跳变周期。
11、bool iqInverted:是否反转IQ信号。
12、uint32_t timeout:超时时间。
接收机配置参数说明(SX126x&LLCC68)
1、RadioModems_t modem:无线电模块类型。
2、uint32_t bandwidth:接收带宽。
3、uint32_t datarate:数据速率。
4、uint8_t coderate:编码率。
5、uint32_t bandwidthAfc:AFC带宽。
6、uint16_t preambleLen:前导码长度。
7、uint16_t symbTimeout:符号超时。
8、bool fixLen:是否固定长度。
9、uint8_t payloadLen:有效载荷长度。
10、bool crcOn:是否开启CRC校验。
11、bool freqHopOn:是否开启频率跳变。
12、uint8_t hopPeriod:频率跳变周期。
13、bool iqInverted:是否反转IQ。
14、bool rxContinuous:是否持续接收。
LoRa初始化配置(SX126x&LLCC68)
SX126X的代码,分为了两个配置文件:
接收配置文件:sx126x_example_recive.c
发送配置文件:sx126x_example_recive.h
LoRa参数配置(SX126x&LLCC68)
参数配置区域配置接收和发送的频率、带宽功率等,还配置了SPI的引脚定义。
对于前期使用SX127x的用户现在换成SX126x或者LLCC68,需要注意以下几点:
1、代码驱动:目前两个系列的代码驱动是不一样的,不管是原厂的封装接口或者是寄存器都是不一样的,切换意味着必须换代码驱动。
2、两个驱动代码的驱动逻辑和参数设置流程大同小异,特别是接收机发送机和参数区域,只是定义名和寄存器值名称有区别,所以阅读代码切换时就会容易很多。
3、封装脚位:SX127x系列切换SX126x或者LLCC68系列是从芯片上定义,但是安信可的驱动是基于模块来开发的,两个系列模组的脚位也有一定区别,不是SPI接口有差异,都是ST的SPI封装库,直接添加调用即可。
4、BUSY脚:差异在于SX126x或者LLCC68系列上有一个BUSY脚位,用于提示主控当前芯片的工作状态,此脚位配合中断进程,可以简化代码编辑的复杂程度,提高运行效率。
SPI通信接口测试
以下代码用于测试当前主控STM32与LoRa的SPI通信情况,通过读写某个寄存器的返回值来判断当前SPI驱动是否正常工作,同理SX126x和LL68模组也可以用同样方法测试。
1、读写SX1278寄存器:
2、在主函数中调用ReadWriteSX1278Register()函数:
本篇文章已经结束,以上就是关于SX1278转到LLCC68和SX1268/SX1262的软件细节教程,主要使用demo进行分解测试,demo代码中含有大量注释,并且使用的是STM32F103系列单片机,便于上手操作,有兴趣的朋友可以用于参考
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !