本篇主要介紹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芯片手冊:鏈接
(具體下載鏈接請點擊原文查看)
SX127x系列驅動詳解
安信可封裝到站點的代碼使用的驅動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)
這里的參數配置對應”接收機“和”發射機“的參數,共用一個參數才能夠互相通信。
SX126x和LLCC68驅動詳解
下面是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注意事項
對于前期使用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系列單片機,便于上手操作,有興趣的朋友可以用于參考
審核編輯 黃宇
-
模組
+關注
關注
6文章
1502瀏覽量
30458 -
安信可
+關注
關注
0文章
154瀏覽量
4011 -
sx1278
+關注
關注
1文章
13瀏覽量
11637 -
SX1262
+關注
關注
1文章
4瀏覽量
1840
發布評論請先 登錄
相關推薦
評論