【XBEE手冊】XBEE操作
@(ZigBee)[ZigBee, XBEE手冊]
[轉載
請註明出處,謝謝!]
串口接口
XBee /的XBee-PRO Zigbee射頻模塊通過串行端口接口連接到主機設備。該設備可以與任何邏輯和電壓兼容的UART通過電平轉換器與任何串行設備(例如,通過RS-232或USB接口板)或通過SPI進行通信,如SPI通信中所述。
注意
也可以使用雙線串行接口(TWI),但Digi不支持。有關TWI的信息,請參閱EM357引腳映射。
UART數據流
具有UART接口的設備直接連接到XBee / XBee-PRO Zigbee RF模塊的引腳,如下圖所示。該圖顯示了UART接口環境中的系統數據流。在信號名稱上劃線代表低置有效。
串行數據
設備通過TH引腳4 / SMT引腳4 DIN將數據作爲異步串行信號發送到XBee / XBee-PRO Zigbee RF模塊的UART 。當設備不傳輸數據時,信號應該空閒。
要進行串行通信,必須爲兩個設備(微控制器和XBee / XBee-PRO Zigbee RF模塊)的UART配置波特率,奇偶校驗,起始位,停止位和數據位的兼容設置。
每個數據字節由起始位(低),8個數據位(最低有效位優先)和停止位(高)組成。下圖說明了通過設備的數據的串行位模式。該圖顯示了通過設備發送的UART數據包0x1F(十進制數31)。
用戶可以分別使用BD,NB和SB命令在設備上配置UART波特率,奇偶校驗和停止位設置。有關更多信息,請參閱串行接口命令。
SPI通信
XBee /XBee-PRO Zigbee射頻模塊支持在從模式SPI通信。從機從主機接收時鐘信號和數據,並將數據返回到主機。下表顯示了SPI端口在設備上使用的信號。
信號 | 功能 |
---|---|
SPI_MOSI(主輸出,從輸入) | 輸入主機來的串行數據 |
SPI_MISO(主輸入,從輸出) | 將串行數據輸出到主機 |
SPI_SCLK(串行時鐘) | MOSI和MISO上的時鐘數據傳輸 |
SPI_ (從機選擇) | 啓用與從機的串行通信 |
前四個引腳是SPI的標準引腳。該設備還支持一個額外的引腳,該引腳可配置爲在有數據發送時向SPI主機發出警報。該引腳稱爲SPI_ ATTN。如果主機監控此引腳(通過輪詢或中斷),它可以知道何時需要從設備接收數據。SPI_ ATTN每當有數據要發送就會置有效,直到所有可用數據已經移出到SPI主機。
在這種模式下:
* 數據/時鐘速率最高可達5 Mb / s。
* 數據是最重要的位(most significant bit, MSB)。
* 使用幀格式模式0。這意味着CPOL = 0(空閒時鐘爲低電平)和CPHA = 0(數據在時鐘前沿採樣)。
* SPI端口僅支持API模式(AP = 1)。
下圖顯示了SPI通信的幀格式模式0。
SPI操作
當主機置有效SPI_ 時,設備驅動SPI發送數據到輸出引腳(SPI_MISO),並從輸入引腳SPI_MOSI接收SPI數據。必須置有效SPI_ 引腳,以使發送串行器能夠將數據驅動到輸出信號SPI_MISO。SPI_ 的上升沿復位SPI從移位寄存器。
如果存在SPI_SCLK,則無論是否驅動SPI_ 線,SPI_MISO線始終被驅動。
如果輸入緩衝區爲空,SPI串行器將發送忙標誌(0xFF)。否則,SPI端口上的所有數據交換都使用API操作。有關更多信息,請參閱API操作。
SPI從控制器必須保證有時間將新的發送數據從發送緩衝區移動到硬件串行器中。爲了提供足夠的時間,SPI從控制器在每個新的發送數據串的開頭插入一個填充字節。只要發送緩衝區爲空並且設備將數據放入發送緩衝區,SPI硬件就會在發送的前面插入一個填充字節,就好像這個字節是由軟件放在那裏一樣。
串口選擇
在默認配置中,UART和SPI端口均配置爲串行端口操作。在這種情況下,串行數據從UART輸出,直到主機設備置有效SPI_ 信號。此後,所有串行通信僅在SPI接口上運行,直到發生復位。
如果僅啓用UART,則XBee / XBee-PRO Zigbee RF模塊僅使用UART,並忽略SPI_ 。
如果僅啓用SPI,則XBee / XBee-PRO Zigbee RF模塊僅使用SPI,並忽略UART通信。如果在引導期間保持DOUT爲低電平,則XBee / XBee-PRO Zigbee RF模塊僅使用SPI。
使用SPI後,請勿嘗試應用更改(AC)來更改UART或SPI設置,而應使用以下方式更改:
- 0x09幀以重新配置UART / SPI /其他設置。
- WR保存設置。
- FR用於重置XBee / XBee-PRO Zigbee RF模塊並使用新的配置設置。
如果兩個串行端口均未使能,則UART保持使能狀態,設備僅使用UART,並忽略SPI_ 。
串口緩衝區
XBee /的XBee-PRO Zigbee射頻模塊維持內部緩衝區來收集串行和RF數據其接收。串行接收緩衝區收集傳入的串行字符並保留它們,直到設備可以處理它們。串行發送緩衝區通過RF鏈路收集它接收的數據,直到它將數據發送出串口。下圖顯示了設備緩衝區收集接收的串行數據的過程。
串口接受緩衝區
當串行數據通過串行端口進入XBee / XBee-PRO Zigbee RF模塊時,設備將數據存儲在串行接收緩衝區中,直到可以處理爲止。在某些條件下,當串行接收緩衝區已滿時,設備可能會接收數據,在這種情況下,設備會丟棄數據。
當數據流入串行端口比通過空中(over the air,OTA)處理和發送要快時,串行接收緩衝區將會變滿。雖然在串行端口上接收數據的速度可以比在短時間內傳輸數據的速度快得多,但是在該模式下的持續操作會導致設備由於耗盡數據存儲空間而丟棄數據。地址發現、路由發現和重傳可能延遲空中傳輸。處理接收的RF數據還可以帶走用於處理輸入串行數據的時間和資源。
如果UART是串行端口並且啓用了 流控制,則當接收緩衝區幾乎已滿時,設備會向外部數據源發出警報。主機延遲向設備發送數據,直到模塊再次置有效 ,允許更多數據進入。
如果SPI是串行端口,則沒有可用的硬件流控制。用戶有責任確保接收緩衝區不會溢出。一種可靠的策略是在每個幀發送後等待TX_STATUS響應,以確保設備有時間處理它。
串口發送緩衝區
當設備接收RF數據時,它將數據移入串行發送緩衝區並將其發送出UART 或SPI端口。如果串行發送緩衝區已滿並且系統緩衝區也已滿,則它會丟棄整個RF數據包。每當設備接收數據的速度超過處理數據並將數據傳輸出串口的速度時,就有可能丟失數據。
以下爲在串行發送緩衝區可能變滿導致RF數據包丟失的情況:
- 如果將RF數據的速率設置爲高於設備的接口數據速率,則設備接收數據比將數據發送到主機要快。即使來自大量設備的偶然傳輸也會快速累積並溢出傳輸緩衝區。
- 如果主機由於被硬件流控制保持關閉而不允許設備從串行發送緩衝區發送數據。
UART流控制
用戶可以使用 和 引腳提供 和 流控制。 流控制向主機提供停止向設備發送串行數據的指示。 流控制允許主機發信號通知設備不將串行發送緩衝區中的數據發送出UART。要啓用 / 流控制,請使用D6和D7命令。
注意
使用SPI端口時無法進行串行端口流控制。
流控制
如果啓用 流控制(D7命令),當串行接收緩衝區距離已滿17個字節時,設備會置無效 (將其設置爲高電平)以向主機發出信號以停止發送串行數據。 串行接收緩衝區有34個字節的空間後,設備重新置有效 。
在任何一種情況下,在串行接收緩衝區使用FT -17或更少字節之前,不會重新置有效 。
流控制
如果發送D6命令以啓用 流控制,只要 被置無效(設置爲高電平),設備就不會將串行發送緩衝區中的數據從DOUT引腳發送出去。不要長時間置無效 ,否則串行發送緩衝區將填滿。如果設備接收到RF數據包並且串行發送緩衝區沒有足夠的空間容納所有數據字節,則它會丟棄整個RF數據包。
如果在設備將數據輸出到UART時 被置無效(設置爲高),設備在 被置無效後,可以發送最多五個字符到UART端口。
中斷控制
如果串行中斷(DIN保持低電平)信號發送超過五秒鐘,設備將復位,並使用默認波特率設置(9600波特)啓動進入命令模式。如果未啓用P3或P4,則禁用此中斷功能
串行接口協議
XBee /XBee-PRO Zigbee射頻模塊支持透傳(Transparent)和應用程序編程接口(Application Programming Interface,API)的串行接口。
透傳操作(Transparent operation)
在透傳模式下操作時,設備可用作串行線路替換。設備將所有通過DIN 或MOSI用於RF傳輸的引腳收到的UART或SPI數據排序。收到RF數據後,設備通過串口發送數據。使用命令模式界面配置設備配置參數。
注意
使用SPI時,透傳操作不可用。
設備在串行接收緩衝區中緩衝數據,並在收到以下內容時對數據進行打包和傳輸:
- RO(Packetization Timeout)參數確定的時間量沒有串行字符。如果RO = 0,則在設備收到字符時開始打包。
- 命令模式序列(GT + CC + GT)。在設備發送序列之前,緩衝在串行接收緩衝區中的任何字符。
- 適合RF數據包的最大字符數。
API操作
API操作模式是透傳操作模式的替代方案。基於幀的API擴展了主機應用程序與設備的網絡功能交互的級別。在API模式下,設備包含在幀中進入和離開的所有數據,這些幀定義設備中的操作或事件。
API提供了在主機應用程序層配置設備和路由數據的替代方法。主機應用程序可以向設備發送包含地址和有效負載信息的數據幀,而不是使用命令模式來修改地址。設備將數據幀發送到應用程序,這些幀包含狀態數據包以及來自接收數據包的源和有效負載信息。
API操作選項有助於許多操作,例如:
- 無需進入命令模式即可將數據傳輸到多個目的地
- 接收每個發送的RF包的成功/失敗狀態
- 確定每個收到的數據包的源地址
透傳和API操作比較
下表比較了Transparent和API操作模式的優點:
透傳操作 | |
---|---|
簡單的界面 | 除非處於命令模式,否則設備會發送所有收到的串行數據。 |
易於支持 | 應用程序更容易支持透傳操作和命令模式。 |
API操作 | |
---|---|
易於管理,數據傳輸到多個目的地 | 將RF數據傳輸到多個遠程設備只需要更改API幀中的地址。此過程比透傳操作快得多(透傳操作:應用程序必須進入命令模式,更改地址,退出命令模式,然後傳輸數據)。每個API傳輸可以返回指示失敗成功或原因的傳輸狀態幀。 |
收到的數據幀包含發件人的地址 | 所有收到的RF數據API幀都指示源地址。 |
高級Zigbee尋址支持 | API發送和接收幀可以公開Zigbee尋址字段,包括源和目標端點,羣集ID和配置文件ID。這樣可以輕鬆支持ZDO命令和公共配置文件的通行。 |
高級網絡診斷 | API幀可以提供來自遠程設備的I / O樣本和節點標識消息的指示。 |
遠程配置 | 可以使用API將設置和讀取配置命令發送到遠程設備以根據需要進行配置。 |
通常,設備以下情況建議使用API模式:
- 將RF數據發送到多個目的地。
- 發送遠程配置命令以管理網絡中的設備。
- 從多個設備接收RF數據包,應用程序需要知道哪個設備發送了哪個數據包。
- 必須支持多個Zigbee端點,羣集ID和/或配置文件ID。
- 使用Zigbee設備配置文件服務。
在以下情況下需要API模式:
- 使用Smart Energy固件。
- 使用SPI作爲串行端口。
- 從遠程設備接收I / O樣本。
- 使用源路由。
如果上述條件不適用(例如傳感器節點,路由器或簡單應用程序),則透傳操作模式可能是合適的。在網絡中使用運行API模式和透傳模式的設備混合是可以接受的。
模式
XBee /XBee-PRO Zigbee射頻模塊處於接收模式時,它不發送數據。在以下條件下,設備轉換爲其他操作模式:
- 發送模式(串行接收緩衝區中的串行數據已準備好打包)
- 睡眠模式
- 命令模式(發出命令模式序列)
空閒模式(Idle mode)
未接收或傳輸數據時,設備處於空閒模式。 在空閒模式期間,設備會在RF端口和串行端口上偵聽有效數據。
在以下條件下,設備轉換爲其他操作模式:
- 發送模式(串行接收緩衝區中的串行數據已準備好打包)。
- 接收模式(通過天線接收的有效RF數據)。
- 命令模式(發出命令模式序列,不適用於Smart Energy軟件或使用SPI端口).
傳輸模式(Transmit mode)
在傳輸數據之前,模塊確保已建立目標16位網絡地址和到目標節點的路由。
如果用戶不知道已知的目標16位網絡地址,則會啓動網絡地址發現。如果用戶不知道路由未知,則會啓動路由發現,以便建立到目標節點的路由。如果未發現具有匹配網絡地址的設備,則會丟棄該數據包。一旦建立路由,設備就發送數據。如果路由發現無法建立路由,則設備會丟棄該數據包。下圖顯示了發送模式序列。
當Zigbee數據從一個節點傳輸到另一個節點時,目標節點通過建立的路由將網絡級確認發送回源節點。該確認分組向源節點指示目的節點接收到數據包。如果源節點未收到網絡確認,則重新傳輸數據。
在極少數情況下,目標可能會接收數據包,但源可能無法接收網絡確認。在這種情況下,源重新傳輸數據,這可能導致目標多次接收相同的數據包。XBee模塊不會過濾掉重複的數據包。我們建議該應用程序包含解決此問題的規定。
有關更多信息,請參閱傳輸,尋址和路由。
接收模式
這是XBee / XBee-PRO Zigbee RF模塊的默認模式。當設備不傳輸數據時,設備處於接收模式。如果目標節點收到有效的RF數據包,則目標節點將數據傳輸到其串行傳輸緩衝區。
命令模式
命令模式是固件將傳入字符解釋爲命令的狀態。它允許用戶使用可以使用AT命令設置的參數來修改設備的配置。當用戶想要使用此模式讀取或設置XBee / XBee-PRO Zigbee RF模塊的任何參數時,用戶必須發送AT命令。每個AT命令都以字母AT開頭, 後跟標識命令的兩個字符,然後是一些可選的配置值。
XBee / XBee-PRO Zigbee RF模塊的操作模式由API Enable設置控制,但命令模式始終可用作在設備配置爲任何操作模式時可以進入的模式。
UART接口上的命令模式適用於所有操作模式。用戶無法使用SPI接口進入命令模式。
進入命令模式
要使設備切換到命令模式,必須 在一秒內發出以下序列: +++。+++ 序列之前和之後必須至少有一秒 。命令字符(CC)和序列(GT, guard time)之前和之後的靜音都是可配置的。當滿足入口標準時,設備在UART上以OK \ r響應,表示它已成功進入命令模式並準備開始處理AT命令。
如果配置爲在透傳操作模式下運行,則進入命令模式時,XBee / XBee-PRO Zigbee RF模塊停止發送數據並開始在本地接受命令。
注意
鍵入+++後不要按Return或Enter鍵, 因爲它會中斷保護時間靜音並阻止用戶進入命令模式。
當設備處於命令模式時,它會偵聽用戶輸入並能夠在UART上接收AT命令。如果 經過 CT 時長(默認爲10秒)沒有任何用戶輸入,則設備退出命令模式並返回到先前的操作模式。用戶可以通過發送CN命令強制設備離開命令模式。
用戶可以在設備的配置設置中自定義命令字符,保護時間和超時。有關更多信息,請參閱 CC(命令字符), CT命令 和 GT命令。
故障排除
無法進入命令模式通常是由於波特率不匹配。確保連接的波特率與設備的波特率匹配。默認情況下,BD(接口數據速率,又稱波特率) = 3(9600 b / s)。
進入命令模式有兩種替代方法:
- 串行中斷6秒進入命令模式。用戶可以從串行控制檯發出“break”命令,它通常是一個按鈕或菜單項。
- 上電或復位時置有效DIN(串行中斷)進入命令模式。XCTU引導用戶完成重置並在需要時自動發出中斷。
這兩種方法都暫時將設備的波特率設置爲9600,並 在UART上返回 OK以指示命令模式處於活動狀態。當命令模式退出時,設備將以BD 設置的波特率恢復正常操作。
發送AT命令
設備進入命令模式後,使用下圖中的語法發送AT命令。每個AT命令都以字母AT開頭 ,代表“attention”。AT後跟兩個字符,指示正在發出哪個命令,然後是一些可選配置值。
要讀取存儲在設備寄存器中的參數值,請省略參數字段。
示例將NI參數更改爲My XBee。
多個AT命令
在命令模式下用逗號分隔時,可以一次發送多個AT命令; 例如, ATNIMy XBee,AC <cr>
。
示例將NI(節點標識符)更改 爲My XBee, 並通過AC(Apply Changes)使設置生效。
參數格式
有關各個AT命令參數的格式,請參閱AT命令列表。十六進制值的有效格式包括帶或不帶前綴 0x ,例如 FFFF 或 0xFFFF。
響應AT命令
當使用AT命令設置參數時,如果成功則XBee / XBee-PRO Zigbee RF模塊響應OK ,否則響應ERROR 。
對於具有文件系統的設備:
ATAP1 <CR>
OK <CR>
讀取參數時,設備返回當前參數值而不是 OK 消息。
ATAP <CR>
1 <CR>
應用命令更改
在應用更改之前,使用AT命令對配置命令寄存器所做的任何更改都不會生效。例如,如果發送 BD 命令以更改波特率,則在應用更改之前,實際波特率不會更改。應用更改方式如下:
- 發送AC(Application Changes)。
- 發送WR命令。
- 退出命令模式。
使命令更改永久化
發送WR命令命令以保存更改。WR將參數值寫入非易失性存儲器,以便通過後續復位保持參數修改。
發送RE命令將使WR保存的設置擦除回其出廠默認值。
注意
用戶仍然必須使用WR 來保存使用RE制定的更改。
退出命令模式
- 發送CN命令後跟回車符。
或: - 如果設備在CT命令指定的時間內沒有收到任何有效的AT命令 ,則返回透傳或API模式。默認的命令模式超時爲10秒。
有關使用AT命令對設備進行編程的示例以及每個可配置參數的說明,請參閱AT命令。
睡眠模式
休眠模式允許設備在不使用時進入低功耗狀態。該設備在睡眠期間幾乎完全關閉,並且在喚醒之前無法發送或接收數據。XBee設備支持引腳休眠(設備在引腳轉換時進入的休眠模式),循環休眠(設備休眠一段固定時間)。
有關更多信息,請參閱管理終端設備。