超碰激情 I 成人福利网站 I 淫国产 I 曰批视频免费30分钟成人 I 刘亦菲裸体视频一区二区三区 I 午夜久 I 尤物综合 I 亚洲一区av在线观看 I 欧美亚洲国产精品久久高清 I 欧美老熟妇乱子伦视频 I 无码中出人妻中文字幕av I 久久美女福利视频 I 精品无人区乱码1区2区3区在线 I 性饥渴的农村熟妇 I 色综合综合色 I 少妇人妻88久久中文字幕 I 久久夜色精品国产噜噜av I 老熟妇仑乱视频一区二区 I 男女做爰猛烈叫床视频动态图 I 日本大片一区二区 I 人成午夜免费视频在线观看 I 激情婷婷av I 男女下面一进一出免费视频网站 I 久久影视一区 I 午夜污网站 I 先锋人妻无码av电影 I 久久久久久久岛国免费网站 I 又粗又大又黄又硬又爽免费看 I 人妻无码免费一区二区三区 I www.色成人100 I 欧美高清网站 I 精品国产第一页 I 国产suv一区二区三区88区 I 橹图极品美女无圣光 I 午夜宅男欧美

產品分類

當前位置: 首頁 > 工業電子產品 > 其他電子產品 > IoT物聯網 > IoT傳感器

類型分類:
科普知識
數據分類:
IoT傳感器

LoRa Gateway 源碼工程梳理

發布日期:2022-05-25 點擊率:66

net/iotisan/

1.核心庫:libloragw

這個目錄包含了編譯一個多通道基站庫所需的源碼。編譯之后就會生成固定鏈接的libloragw.a。

lora_gatewaylibloragw st
目錄下還有不同子模塊的測試程序。

1.1 HAL介紹

這部分也就是LoRa集中器的HAL層(LoRa concentrator Hardware Abstraction Layer),它是個C庫,讓大家使用少量的C函數就可以對LoRa集中器芯片進行配置硬件,以及收發數據包。

LoRa集中器是數字化的多信道多數據包標準的射頻芯片,使用LoRa或者FSK模式進行收發數據。

1.2 HAL的組成

這個庫是由6(8)個模塊組成:

  • loragw_hal

主模塊,包含高等級函數來配置和使用集中器

  • loragw_reg

這個模塊用來操作集中器的寄存器

  • loragw_spi

通過SPI接口來操作集中器的寄存器

  • loragw_aux

包含一個主機需要的wait_ms函數,用于指定ms的延時

  • loragw_gps

通過基準時基來同步集中器內部計數,例如例程中的GPS授時。

  • loragw_radio

配置 SX125x 和 SX127x。

  • loragw_fpga (only for SX1301AP2 ref design)

SX1301AP2參考設計才需要,用于操作FPGA的寄存器,以及配置FPGA功能。

  • loragw_lbt (only for SX1301AP2 ref design)

SX1301AP2參考設計才需要,用于配置和使用LBT功能。

1.3 軟件編譯

1.3.1 軟件細節

這個庫按照ANSI C99進行編寫。loragw_aux模塊中的ms精確延時含有POSIX格式函數,嵌入式平臺可以用硬件定時器進行重寫。

1.3.2 編譯選項

library.cfg 中 DEBUG_xxx 如果置為1,則會用 fprintf 輸出對應的調試信息。

1.3.3 編譯流程

對于交叉編譯,需要設置 Makefile 中的 ARCH 和 CROSS_COMPILE 變量,或者在 shell 環境中,使用正確的工具鏈名字和路徑。例如:

export PATH=/home/foo/rpi-toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf-

libloragw目錄下的Makefile會解析 library.cfg 文件,產生一個config.h的C頭文件,包含 #define 選項。那些選項會使能或禁用loragw_xxx.h 文件和 *.c 原文件中的代碼。

library.cfg 也用來直接選擇動態鏈接庫。

1.3.4 導出

如果想在其他系統使用編譯后的庫,你需要導出這些文件:

  • libloragw/library.cfg -> 根配置文件

  • libloragw/libloragw.a -> 靜態庫

  • libloragw/readme.md -> license要求

  • libloragw/inc/config.h -> 從 library.cfg 衍生出的C配置標志

  • libloragw/inc/loragw_*.h -> 你需要用到的頭文件 (例如. _hal and _gps)

在這個庫鏈接到你的應用之后,只有 license 文件要求在程序文件中拷貝和保留。

1.4 硬件條件

1.4.1 硬件版本

loragw_reg 和 loragw_hal 是針對Semtech硬件編寫的特殊版本:

  • Semtech SX1301 芯片

  • Semtech SX1257 or SX1255 收發器

如果硬件版本和庫版本不匹配的話,這個庫將無法使用。你可以用 test_loragw_reg 來測試軟硬件是否匹配。

1.4.2 SPI通信

loragw_spi 的SPI函數適合平臺相關的,如果你用別的SPI接口可能需要重寫這個函數:

  • SPI master matched to the Linux SPI device driver (provided)

  • SPI over USB using FTDI components (not provided)

  • native SPI using a microcontroller peripheral (not provided)

你可以用 test_loragw_spi 來測試SPI通信。

1.4.3 GPS接收

為了使用庫中的GPS模塊,主機必須要通過串口連接GPS接收器,串口連接必須以“tty”設備出現在 /dev/ 目錄,啟用這個程序的用戶必須用讀寫這個設備的權限。使用 chmod a+rw 來允許所有用戶能操作指定的tty設備,或者使用sudo來運行你的程序(例如. sudo ./test_loragw_gps)。

當前版本,庫只從串口讀取數據,在GPS接收器上電后會收到他們發出NMEA幀 以及 u-blox 模塊私有的 UBX 消息。

GPS接收器必須在發出PPS脈沖后發出UBX消息,讓內部集中器的時間戳可以用GPS時基校準。如果GPS接收器發出了GGA NMEA語句,gateway則可以進行3D定位。

1.5 使用

1.5.1 設置軟件環境

對一個典型應用,你需要這么做:

  • 源碼中包含 loragw_hal.h

  • 編譯時鏈接 libloragw.a 靜態庫文件

  • 由于 loragw_aux 的依賴關系,需要鏈接 librt 庫

如果應用需要直接訪問集中器配置寄存器的話(例如做些高級配置),你還需要這樣做:

  • 源碼中包含 loragw_reg.h

1.5.2 使用軟件API

要在你的應用中使用 HAL,需要遵守如下規則:

  • 在射頻啟動之前需要配置好 radios path 和 IF+modem path

  • 只有在調用了 start 函數之后,配置才會傳送給硬件

  • 只有在 radio 使能,同時IF+modem 使能,以及集中器啟動后,才能接收數據包。

  • 只有在 radio 使能,以及集中器啟動后,才能發送數據包。

  • 改變配置之前,必須停止集中器。

一個對HAL的典型應用流程圖如下:

loop {}

/! 注意,lgw_send 在LoRa集中器仍然發包時,或者即使在準備開始發包時,是非阻塞立即返回。當有數據包在發送時,將無法收到任何數據。

你的應用需要考慮發包的時長,或者在嘗試發包前檢查下狀態(使用 lgw_status)。

當前一包未完成時立即發一包,會導致前一包無法發送,或者發送部分(會導致接收端出現CRC錯誤)。

1.5.3 調試模式

為了調試程序,可以激活調試信息后( 在 library.cfg 中設置 DEBUG_HAL=1 ),編譯 loragw_hal 函數。這樣就會輸出很多細節信息,包括stderr的錯誤細節信息。

2.幫助程序

工程中的這些程序提供了一些示例,應該如何使用HAL庫。幫助系統構建者單獨測試不同部分。

2.1. util_pkt_logger

This software is used to set up a LoRa concentrator using a JSON configuration
file and then record all the packets received in a log file, indefinitely, until
the user stops the application.

這個軟件用來讓LoRa集中器使用JSON配置文件,以及記錄所有的包于一個log文件,除非用戶停止這個應用。

2.2. util_spi_stress

This software is used to check the reliability of the link between the host
platform (on which the program is run) and the LoRa concentrator register file
that is the interface through which all interaction with the LoRa concentrator
happens.

這個軟件用來檢測主CPU與LoRa協調器寄存器文件的連接的穩定性。

2.3. util_tx_test

This software is used to send test packets with a LoRa concentrator. The packets
contain little information, on no protocol (ie. MAC address) information but
can be used to assess the functionality of a gateway downlink using other
gateways as receivers.

這個軟件用來做發包測試。包里沒有協議信息,但可以用來檢測基站下行功能,使用另一臺基站來做接收。

2.4. util_tx_continuous

This software is used to set LoRa concentrator in Tx continuous mode,
for spectral measurement.

這個軟件用來設置LoRa集中器為持續TX模式,用于頻譜測試。

2.5. util_spectral_scan

This software is used to scan the spectral band in background, where the LoRa

這個軟件用來掃描基站工作環境的頻段。

2.6. util_lbt_test

This software is used to test "Listen-Before-Talk" channels timestamps.

這個軟件用來測試“Listen-Before-Talk”的信道時間戳。

3. 幫助腳本

3.1. reset_lgw.sh

This script must be launched on IoT Start Kit platform to reset concentrator
chip through GPIO, before starting any application using the concentrator.

這個腳本僅在 IoT Start Kit 平臺上運行,用于在啟動任何應用前,通過GPIO復位集中器芯片。

End

閱讀更多: LoRa中文學習資料, LoRa實驗室, LoRa物聯網技術實戰

參考分類:

上一篇: NB-IoT、eMTC、LoRa的商用進展

下一篇: 云狐時代:lora、NB-lot技術加速工業4.0物聯智能時代

下一篇: PLC、DCS、FCS三大控

上一篇: 物聯網技術標準學習之

推薦產品

更多