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文件,把里面的內容注釋了。

已上,完!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM