概述: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...