日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

树莓派移植SX1278 LoRa通信--使用wiringPi 移植GPIO中断

發布時間:2023/12/10 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树莓派移植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 23

2、管腳的初始化和中斷函數注冊

/*! * \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中断的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。