日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 程序員小哈
[導讀]在DL-LN33模塊使用之前,我們需要對模塊進行通信的波特率、地址、信道和網(wǎng)絡ID進行設置,這樣我們首先要對模塊的通信協(xié)議進行了解,本文重點分析一下模塊指令的格式,然后對模塊地址和組網(wǎng)信息進行修改。

點擊上方“嵌入式從0到1”,選擇“置頂/星標公眾號

干貨福利,第一時間送達!

在DL-LN33模塊使用之前,我們需要對模塊進行通信的波特率、地址、信道和網(wǎng)絡ID進行設置,這樣我們首先要對模塊的通信協(xié)議進行了解,本文重點分析一下模塊指令的格式,然后對模塊地址和組網(wǎng)信息進行修改。

接線

注意: 默認購買的PL2303TA線一般紅線為5V,需打開藍蓋,將紅線更改為3.3V。

圖中所示的USB轉TTL的串口模塊都可以,但是使用的時候,注意: ZigBee模塊的工作電壓應為2.5V~3.6V。

Uart通信協(xié)議

1. 串口參數(shù)

數(shù)據(jù)位:8位
起始位:1位
停止位:1位
校驗位:無校驗
波特率可以選用下面任意值:
2400、 4800、 9600、 14400、 19200、 28800、 38400、 57600、 115200、 230400、 125000、 250000、 500000。

模塊出廠默認波特率為:115200。

2. 數(shù)據(jù)包結構定義

在通信過程中,最常見的應用場景是單片機通過 Uart 告訴模塊這樣的信息:
“將數(shù)據(jù) 00 AE 13 33 發(fā)往地址為 0003 的模塊,目標端口為 90,源端口為 91?!?br>對于單片機,需要將這些信息整理成一個包,通過 Uart 發(fā)給模塊:
FE 08 91 90 03 00 00 AE 13 33 FF

此包的說明如下表所示:

信息名 長度 說明 舉例
包頭 2 Byte 包頭由FE和包的長度組成,長度為包的數(shù)據(jù)長度加4(源端口號1Byte+目的端口號1Byte+遠程地址2Byte)。 FE 08
源端口號 1 Byte 包的源端口號。 0x91
目的端口號 1 Byte 包的目的端口號。 0x90
遠程地址 2Byte 遠程模塊的地址,當發(fā)送數(shù)據(jù)給模塊時,遠程地址為目標模塊的地址, 目標地址為 0x0000 表示此包發(fā)給本模塊,目標地址為 0xFFFF 的包會被發(fā)往本網(wǎng)絡中的所有節(jié)點。 03 00
數(shù)據(jù) 可變 想要傳輸?shù)臄?shù)據(jù)。 00 AE 13 33
包尾 1 Byte 固定為FF表示一個包傳輸完成。 FF

注: 遠程地址即節(jié)點地址,長度為2 Byte,使用小端模式進行傳輸,即先傳輸?shù)?位,再傳輸高8位。

3. 轉義機制

  • 包尾是一個包的結束,值為 FF,如果收發(fā)過程中出現(xiàn)FF則會干擾包的正常接收。所以包中不能出現(xiàn)FF,如果需要發(fā)送FF則用 FE FD代替;
  • FE是包頭,也是轉義標志,如果傳輸過程中出現(xiàn) FE,后面跟著一個小于64(因為該模塊傳輸?shù)臄?shù)據(jù)包最大長度為63)的數(shù)字,則會使接收方誤認為收到了一個包頭。因此,在任何時候需要發(fā)送一個FE時,則發(fā)送 FE FC代替;
  • 處理在包頭、包尾和數(shù)據(jù)長度(數(shù)據(jù)長度不會大于63)數(shù)據(jù)傳輸過程中遇到的任何FE/FF都需要轉義處理。

傳輸過程中如果遇到數(shù)據(jù)部分、地址或者端口號中出現(xiàn) FF,則使用 FE FD 來代替;如果出現(xiàn) FE,則用 FE FC 來代替。

以免傳輸過程中出現(xiàn)的包頭和包尾,使接收方誤判斷。在傳輸中這種替換稱為“轉義”。

包長度不會受到轉義的影響,例如發(fā)送的數(shù)據(jù)為 09 FF 時,替換為 09 FE FD,但包頭中的數(shù)據(jù)長度仍然按照 2+4 來計算,這樣,發(fā)送的包如下:

FE 06 91 90 03 00 09 FE FD FF

雖然一共傳輸了 7 個字節(jié),但包長為 6。如果地址、端口號中出現(xiàn)了 FF、FE 也需要進行轉義。

  • 要發(fā)送的數(shù)據(jù)是:FE 08 90 91 FF?00 20 FE?? FF?20 FF
  • 實際發(fā)送的數(shù)據(jù)是:FE 08 90 91 FE FD 00 20 FE FC FE FD 20 FF

4. 解析包策略上的規(guī)律

  • 凡是FE后面跟著的內(nèi)容必然特殊處理

    • 如果是小于63的數(shù)據(jù),則是收到了包頭。
    • 如果是FD和FC,則將此數(shù)據(jù)+2既是要發(fā)送的數(shù)據(jù),F(xiàn)D對應FF,F(xiàn)C對應FE。
  • 凡是遇到FF,一定是包尾。

第四篇網(wǎng)文,串口編程解析數(shù)據(jù)包時,將會應用此處的結論。

端口

DL-LN3X 模塊設計了端口的概念,接收方收到一個包時,會根據(jù)包的端口號,選擇對應的程序處理包。

端口號的取值范圍是 0x00~0xFF,其中 0x00~0x7F 端口由模塊內(nèi)部程序占用, 0x80~0xFF 端口開放給 Uart 連接的 MCU 或者電腦。

當 MCU 給一個模塊發(fā)送數(shù)據(jù)時,如果源端口號填寫了小于 0x80 的值,則包無法發(fā)出;如果目的端口號填寫了小于 0x80 的值,接收方模塊的內(nèi)部程序將處理這個包并執(zhí)行相關的動作,而不是從 Uart 發(fā)出這個包。

例如發(fā)送這個包:
FE 05 91 20 03 00 0A FF

則會讓地址為 03 00 的模塊自帶的紅燈點亮 1 秒,而他的 Uart 不會輸出數(shù)據(jù)。

FE 05 91 20 00 00 0A FF
讓自己模塊上的紅色LED點亮1秒。

修改通信的波特率、地址、網(wǎng)絡ID和信道,都是跟模塊自身的內(nèi)部端口進行通信,即與自己的小于0x80的端口進行通信,這些端口都是廠家預先內(nèi)置的端口,用于實現(xiàn)不同組網(wǎng)信息的查詢和修改。

紅燈閃爍控制端口

端口 0x20 用于控制模塊的紅色 LED 點亮,發(fā)送此包可以使模塊的紅色 LED 點亮一定時間。

模塊與USB轉TTL連接之后,利用此端口可以測試接線是否正確。

測試命令:FE 05 A3 20 02 00 32 FF
數(shù)據(jù)位的值0x32代表紅燈點亮的時間,該時間為100ms的倍數(shù),換算關系如下:

0x32 = 50 * 100ms = 5 S。

所以上面命令為點亮地址為0x0002的模塊紅燈5秒鐘。

FE 05 A3 20 00 00 32 FF
讓本模塊的LED點亮5 S。

應用: 此功能可以用于測試一個指定地址的模塊是否包含在網(wǎng)絡中,如果想從許多節(jié)點中迅速找到某個特定地址的節(jié)點,也可以使用此功能。

基本信息管理端口

設置/修改模塊信息

端口 0x21 用于配置模塊的基本參數(shù),包括波特率、地址、網(wǎng)絡 ID和信道等。

此端口只接受遠程地址填寫 0x0000 的包,因此,這些信息的讀取和修改只能通過本模塊的 Uart 進行,不能遠程操作。

查詢組網(wǎng)信息

發(fā)送數(shù)據(jù) 長度 意義
命令 1Byte 必須為以下值中的一個:0x01 讀取地址;0x02 讀取網(wǎng)絡ID;0x03 讀取信道編號;0x04 讀取Uart的波特率。

發(fā)送這個數(shù)據(jù)后,模塊會根據(jù)修改的內(nèi)容返回一個地址包、網(wǎng)絡 ID 包、信道包或者波特率包。這些包將會攜帶對應的配置信息。

通信的波特率

1. 設置波特率包

發(fā)送數(shù)據(jù) 長度 意義
命令 1Byte 必須為0x14。
新波特率 1Byte 想要設置的新波特率讀數(shù)。

發(fā)送這個數(shù)據(jù)后,模塊的波特率將被修改為新的的值,除非此值不合法。操作完成后,此端口會返回一個響應包。

測試指令:修改波特率
發(fā)送:FE 06 90 21 00 00 14 08 FF
返回:FE 05 21 90 00 00 00 FF
修改后模塊信息:波特率讀數(shù)為0x08(115200)

2. 查詢波特率

返回數(shù)據(jù) 長度 意義
命令 1Byte 必須為0x24。
波特率 1Byte 當前波特率,如果節(jié)點曾經(jīng)收到過設置信息包,并且沒有進行更新,則此處返回最新設置的波特率讀數(shù)。

測試指令:
發(fā)送:FE 05 90 21 00 00 04 FF
返回:FE 06 21 90 00 00 24 08 FF

模塊信息:波特率為0x08,查看下表即為 115200。

注意: 如果不發(fā)送復位指令,那么重新上電之后,修改的信息將無效。

3. 波特率--讀數(shù)對照表

波特率 讀數(shù)
波特率 讀數(shù)
2400 0x00
57600 0x07
4800 0x01
115200 0x08
9600 0x02
230400 0x09
14400 0x03
125000 0x0A
19200 0x04
250000 0x0B
28800 0x05
500000 0x0C
38400 0x06


設置說明

如果不知道模塊配置的波特率,可以將 BaudReset 引腳連接到 GND,這樣便可以使用 115200 波特率對模塊進行配置。

地址

1. 設置地址

發(fā)送數(shù)據(jù) 長度 意義
命令 1Byte 必須為0x11。
新地址 2Byte 想要設置的新地址值,新地址必須合法。

發(fā)送這個數(shù)據(jù)后,模塊的地址將被修改為新地址給定的值,除非此值不合法。操作完成后,此端口會返回一個響應包。

測試指令:修改地址為0x0001
發(fā)送:FE 07 90 21 00 00 11 01 00 FF
返回:FE 05 21 90 00 00 00 FF
修改后模塊信息:地址為0x0001

2. 查詢地址

返回數(shù)據(jù) 長度 意義
命令 1Byte 必須為0x21。
地址 2Byte 當前地址,如果節(jié)點曾經(jīng)收到過設置信息包,并且沒有進行更新,則此處返回最新設置的值。

測試指令:查詢地址
發(fā)送:FE 05 90 21 00 00 01 FF
返回:FE 07 21 90 00 00 21 01 00 FF
模塊信息:地址為0x0001。

網(wǎng)絡ID

1. 設置新網(wǎng)絡ID

信息名 長度 說明 舉例
包頭 2 Byte 包頭由FE和包的長度組成,長度為包的數(shù)據(jù)長度加4。 FE 07
源端口號 1 Byte 包的源端口號。 0x91
目的端口號 1 Byte 包的目的端口號。 0x21
遠程地址 2 Byte 目標地址為 0x0000 表示此包發(fā)給本模塊。 00 00
數(shù)據(jù) 3 Byte 第一個字節(jié)固定為0x12,后兩個字節(jié)為新網(wǎng)絡ID 12 34 12
包尾 1 Byte 固定為FF表示一個包傳輸完成。 FF

測試指令:修改網(wǎng)絡ID為0x1234
發(fā)送:FE 07 90 21 00 00 12 34 12 FF

發(fā)送這個數(shù)據(jù)后,模塊的網(wǎng)絡 ID 將被修改為新網(wǎng)絡 ID 給定的值:0x1234,除非此值不合法。操作完成后,此端口會返回一個響應包。

返回:FE 05 21 90 00 00 00 FF
修改后模塊信息:網(wǎng)絡ID為0x1234。

2. 查詢網(wǎng)絡ID包

返回數(shù)據(jù) 長度 意義
命令 1Byte 必須為0x22。
網(wǎng)絡ID 2Byte 當前網(wǎng)絡 ID,如果節(jié)點曾經(jīng)收到過設置信息包,并且沒有進行更新,則此處返回最新設置的值。

測試指令:
發(fā)送:FE 05 90 21 00 00 02 FF
返回:FE 07 21 90 00 00 22 34 12 FF
模塊信息:網(wǎng)絡ID為0x1234。

信道

1. 設置信道

發(fā)送數(shù)據(jù) 長度 意義
命令 1Byte 必須為0x13。
新信道 1Byte 想要設置的新信道值,新網(wǎng)絡信道必須合法。

發(fā)送這個數(shù)據(jù)后,模塊的網(wǎng)絡 ID 將被修改為新網(wǎng)絡 ID 給定的值,除非此值不合法。操作完成后,此端口會返回一個響應包。

測試指令:修改信道為0x0F
發(fā)送:FE 06 90 21 00 00 13 0F FF
返回:FE 05 21 90 00 00 00 FF
修改后模塊信息:信道為0x0F

2. 查詢信道

返回數(shù)據(jù) 長度 意義
命令 1Byte 必須為0x23。
信道 1Byte 當前信道,如果節(jié)點曾經(jīng)收到過設置信息包,并且沒有進行更新,則此處返回最新設 置的值。

測試指令:
發(fā)送:FE 05 90 21 00 00 03 FF
返回:FE 06 21 90 00 00 23 0F FF
模塊信息:信道為0x0F

重啟命令包

設置信息包含設置地址,設置網(wǎng)絡 ID,設置波特率,設置信道四種。

這些設置信息在更新以后,不會立即執(zhí)行,模塊會使用原有的參數(shù)繼續(xù)工作,此時如果希望寫入的參數(shù)生效,則需發(fā)送重啟命令包給模塊。

在設置地址信息且沒有發(fā)送重啟命令的情況下,如果模塊斷電后再次啟動,設置的信息也將丟失。

一旦設置這些信息并發(fā)送重啟命令包,這些信息不會因為斷電和任何形式的復位丟失。

發(fā)送重啟命令

發(fā)送數(shù)據(jù) 長度 意義
命令 1Byte 必須為0x10,更新信息并重啟。

測試指令:重啟包
發(fā)送:FE 05 90 21 00 00 10 FF
返回:無
現(xiàn)象:模塊上的燈閃爍亮2S左右

發(fā)送這個重啟命令之后,模塊的最新參數(shù)將被固化。

參考閱讀

2.4G ZigBee無線自組網(wǎng)mesh網(wǎng)絡模塊簡介


寫文不易,對你有幫助的話,

請四連鼓勵一下,謝謝各位!

免責聲明:本文內(nèi)容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉