Rola模組學習

2021-10-05 04:52:25 字數 3799 閱讀 4602

概述:sx1276/77/78 系列產品採用了 lora tm 擴頻調製解調技術,使器件傳輸距離遠遠超出現有的基於 fsk 或 ook 調製方式的系統。在最大資料速率下,lora tm 的靈敏度要比 fsk 高

出8db;此外,lora tm 在選擇性和阻塞性能方面也具有顯著優勢,可以進一步提高通訊可靠

度。同時,它還提供了很大的靈活性,使用者可自行決定擴頻調製頻寬(bw)、擴頻因子(sf)

和糾錯率(cr)。擴頻調製的另一優點就是,每個擴頻因子均呈正交分布,因而多個傳輸信

號可以占用同一通道而不互相干擾,並且能夠與現有基於 fsk 的系統簡單共存。此外,

sx1276/77/78 還支援標準的 gfsk、fsk、ook 及 gmsk 調製模式,因而能夠與現有的

m-bus 和 ieee 802.15.4g 等系統或標準相容。(這些屬於傳送接收器性質的無線通訊基礎知識,需加強認識,方便學習)還有對著資料手冊了解sx1278器件的關鍵引數對後面**的學習與設定有很大的幫助。

.對於sx1278晶元中的無線通訊調製方式rola和fsk技術的對比如下**:

rola

fsk1.通訊距離遠

1.容易實現

2.lora晶元相容fsk模式

1.抗雜訊與抗衰減較好

3.低功耗

3.傳輸速率較高

無線通訊的應用要涉及到各種各樣的引數,功耗、傳輸距離、傳輸資料量等等。而在遠距離傳輸時,綜合各項指標,loratm調製方式為最佳選擇,

關於能看懂原**以及自己寫簡化版的**,了解其流程非常重要,以及各種設定,設定主要還是對於晶元的暫存器的位進行操作。所以了解暫存器的位的功能以及讀寫暫存器十分重要。比如:下面展示一些定義暫存器位址對映

#define reg_lr_modemconfig2

0x1e

/* bit7-4 擴頻因子設定(具體見資料手冊)

bit3 :0 :正常模式 , 傳送單個資料報

1 : 持續模式,通過fifo傳送多個資料報

bit2 : 傳送端crc資訊

0 : crc關閉

1 : crc開啟

bit1-0 : rx超時最高有效值

*/

暫存器又包括:

1.lora tm 配置暫存器:配置暫存器可以通過spi介面訪問。暫存器在任何裝置模式(包括睡眠模式)下均可讀,但僅在睡眠和待機模式下可寫。請注意:在lora tm 模式下,自動頂級定序(tls模式)不可用, 配置暫存器對映關係變化可以參見資料手冊。。

2.狀態暫存器:狀態暫存器在接收機執行過程中提供狀態資訊。

3.lora tm 模式 fifo 資料快取(具體操作原理可以參見資料手冊,清晰易懂)

注意:以上對看懂原始碼以及形成自己風格簡化非常重要!

lora tm 數據機狀態機序列流程圖:

在傳送模式下,僅在需要傳送資料報資料的時候才會啟動射頻模組、pll模組及pa模組,

這樣可以優化功率消耗率。下圖介紹下典型的傳送程式流程圖

靜態配置暫存器只有在睡眠模式、待機模式或fstx模式下才可以訪問。

lora tm fifo資料快取只有在待機模式下才允許寫入。

通過傳送tx模式請求,開始資料傳送。

一旦完成資料傳送,則發出txdone中斷請求,晶元回到待機模式。

傳送操作完成後,可以手動將無線裝置設定為睡眠模式或重新向fifo資料快取寫入數

據,以便稍後再次進行tx操作。

再以學習者的角度解釋一下此流程圖,首先按要求設定待機模式(通過暫存器regopmode(0x01)),然後向資料緩衝區fifo寫資料,再把模式設定成傳送模式,等待regirqflags(0x12)狀態暫存器中的狀態位第三位txdone置為1,接下來軟體自動調整模式暫存器為待機模式,最後就是判斷是否有新的要傳送的資料。

其他的一般的流程均按照此方法可以分析! 之前全是基礎知識,需掌握,接下來將講述**實現流程;

1.**中首先要設定引數如發射功率434mhz,擴頻因子:12,糾錯編碼:4/6,頻寬等,實現其最好使用函式封裝方便呼叫,寫函式時都是寫相應暫存器的值進行設定。(引數根據實際情況設定)

2.筆者使用的是stm32驅動sx1278,通過spi匯流排與sx1278連線,在程式中做好spi讀寫的函式(sx1278暫存器為8位),然後在sx1278.c中寫乙個讀寫暫存器的函式,可以參照原始碼,這個函式至關重要,對於以下的設定都會呼叫。

3.lora初始化中流程如**:

初始化**,可以參照資料手冊中的規定設定
**

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

*******

* 函 數 名: sx1276lora_init

* 功能說明:

sx1278初始化

* 形 參

* 返 回 值:

錯誤**

(無需處理)

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

******

/void

sx1276lora_init

(void

)

如上圖**所示,可以將設定函式分別封裝成函式進行呼叫,函式的**也十分簡單,就是參照資料手冊規定對sx1278中的暫存器進行設定,這裡不再贅述。

4.傳送與接收資料報的操作**:

傳送處理在上面已有介紹,接下來介紹下單一與連續接收處理如圖:

簡單以初學者的角度介紹下連續接收流程:首先設定為待機模式(手冊中規定在進行接收初始化時必須為待機模式),接收初始化,然後初始化完成後模式設定為連續接收模式,接下來就判斷regirqflags(0x12)狀態暫存器中的狀態位第六位rxdone是否置為1和第七位的超時中斷rxtimeout置為1,如果接收狀態的rxdone為1,則接下來判斷狀態暫存器也是**regirqflags(0x12)**中的第五位的負載crc效驗的標誌位,如果沒有出錯最後就是讀取接收到的資料了。由於設定為連續接收模式,則接收完成後繼續去等待判斷狀態暫存器的的相關位,

這裡注意了,是不是大致看了這裡的介紹對原始碼的理解上了乙個層次,一定注意參照資料手冊看原始碼,並注意暫存器的位的功能,以及讀/寫。這裡只是巨集觀的介紹了下,有幫與讀者理解以及入門,具體細節還望在實踐操作中學習。

Python模組學習 psutil模組

psutil模組 psutil模組能夠提供介面,用來獲取以下資源資訊 psutil模組實現了很多功能,包括以下工具所具有的 ps top dfkill free lsof netstat ifconfig nice iotop uptime ttywho taskset 由此可見,可以利用psuti...

Python模組學習 glob模組

功能描述 glob模組可以使用unix shell風格的萬用字元匹配符合特定格式的檔案和資料夾,跟windows的檔案搜尋功能差不多。glob模組並非呼叫乙個子shell實現搜尋功能,而是在內部呼叫了os.listdir 和fnmatch.fnmatch glob模組共包含以下3個函式 glob p...

Python 模組學習 os模組

一 os模組概述 python os模組包含普遍的作業系統功能。如果你希望你的程式能夠與平台無關的話,這個模組是尤為重要的。一語中的 二 常用方法 1 os.name 輸出字串指示正在使用的平台。如果是window 則用 nt 表示,對於linux unix使用者,它是 posix 2 os.get...