树莓派移植SX1278 LoRa通信--使用wiringPi 移植GPIO中断
生活随笔
收集整理的這篇文章主要介紹了
树莓派移植SX1278 LoRa通信--使用wiringPi 移植GPIO中断
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、SX1278 數字接口狀態映射
從官方文檔可知sx1278的數字接口狀態映射明細,移植的代碼中主要用查詢的方式來判斷在連續模式下是否接收和發送完成,因此只需要用到DIO0。如果要用到CAD,則需要DIO1管腳。
發送時:DioMapping1寄存器寫入01,查詢DIO0是否TxDone(管腳拉高,上升沿)。
接受時:DioMapping1寄存器寫入00,查詢DIO0是否RxDone(管腳拉高,上升沿)。
二、移植樹莓派的WiringPi的GPIO中斷
wiringPi 庫支持GPIO中斷操作,而且很簡單。提供的GPIO外部中斷源類型可以是以下幾種:
- INT_EDGE_FALLING:下降沿
- INT_EDGE_RISING:上升沿
- INT_EDGE_BOTH: 可上升沿也可以下降沿
- INT_EDGE_SETUP:保持原有的GPIO初始方式
使用時用wiringPiISR函數進行注冊。
函數原型:
? ? ? ? ? ? ? ?int ?wiringPiISR (int pin, int mode, void (*function)(void)) ;
參數說明:
- ? ? ? ? pin:wiringPi定義的管腳號
- ? ? ? ? mode:外部中斷源類型,上升沿、下降沿等
- ? ? ? ? function:中斷回調函數的指針,即中斷發生時需要執行的函數
具體操作步驟如下:
1、定義SX1278 DIO0的管腳
#define DIO0_PIN 232、管腳的初始化和中斷函數注冊
/*! * \brief Initialize RasperryPi GPIO which connects to Sx1278 DIO0 with WiringPi driver * \para none * \retval none */ void LoRa_GPIO_Init(void) {wiringPiSetup(); pinMode(DIO0_PIN, INPUT);pullUpDnControl (DIO0_PIN, PUD_DOWN);wiringPiISR(DIO0_PIN,INT_EDGE_RISING,&EXTI0_IRQHandler); }主要是設置DIO0_PIN為輸入模式,設置下拉,然后注冊外部中斷函數EXT0_IRQHandler.
3、實現中斷標志查詢操作
/*! * \brief Sx1278 DIO0 interrupt callback to deal with LoRa statemachine * \para none * \retval none */ void EXTI0_IRQHandler(void) {LoRaHandler(); }至此,移植完畢。
總結
以上是生活随笔為你收集整理的树莓派移植SX1278 LoRa通信--使用wiringPi 移植GPIO中断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python高性能写法_py 高性能低级
- 下一篇: 000-Opencv各版本汇总下载