树莓派移植SX1278 LoRa通信--使用wiringPi 移植GPIO中断
一、SX1278 數(shù)字接口狀態(tài)映射
從官方文檔可知sx1278的數(shù)字接口狀態(tài)映射明細(xì),移植的代碼中主要用查詢的方式來判斷在連續(xù)模式下是否接收和發(fā)送完成,因此只需要用到DIO0。如果要用到CAD,則需要DIO1管腳。
發(fā)送時(shí):DioMapping1寄存器寫入01,查詢DIO0是否TxDone(管腳拉高,上升沿)。
接受時(shí):DioMapping1寄存器寫入00,查詢DIO0是否RxDone(管腳拉高,上升沿)。
二、移植樹莓派的WiringPi的GPIO中斷
wiringPi 庫支持GPIO中斷操作,而且很簡(jiǎn)單。提供的GPIO外部中斷源類型可以是以下幾種:
- INT_EDGE_FALLING:下降沿
- INT_EDGE_RISING:上升沿
- INT_EDGE_BOTH: 可上升沿也可以下降沿
- INT_EDGE_SETUP:保持原有的GPIO初始方式
使用時(shí)用wiringPiISR函數(shù)進(jìn)行注冊(cè)。
函數(shù)原型:
? ? ? ? ? ? ? ?int ?wiringPiISR (int pin, int mode, void (*function)(void)) ;
參數(shù)說明:
- ? ? ? ? pin:wiringPi定義的管腳號(hào)
- ? ? ? ? mode:外部中斷源類型,上升沿、下降沿等
- ? ? ? ? function:中斷回調(diào)函數(shù)的指針,即中斷發(fā)生時(shí)需要執(zhí)行的函數(shù)
具體操作步驟如下:
1、定義SX1278 DIO0的管腳
#define DIO0_PIN 232、管腳的初始化和中斷函數(shù)注冊(cè)
/*! * \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); }主要是設(shè)置DIO0_PIN為輸入模式,設(shè)置下拉,然后注冊(cè)外部中斷函數(shù)EXT0_IRQHandler.
3、實(shí)現(xiàn)中斷標(biāo)志查詢操作
/*! * \brief Sx1278 DIO0 interrupt callback to deal with LoRa statemachine * \para none * \retval none */ void EXTI0_IRQHandler(void) {LoRaHandler(); }至此,移植完畢。
總結(jié)
以上是生活随笔為你收集整理的树莓派移植SX1278 LoRa通信--使用wiringPi 移植GPIO中断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python高性能写法_py 高性能低级
- 下一篇: 000-Opencv各版本汇总下载