EZMacTM媒體接入控制軟件(07-100)
休眠模式
本文引用地址:http://2s4d.com/article/91986.htm初始化之后,MAC層處于“休眠”模式。在這種模式下,射頻硬件是完全關(guān)閉的,僅消耗不到0.3uA的電流。在開始發(fā)射或接收之前,至少需要5ms來喚醒MAC。這5ms是晶體振蕩器達到穩(wěn)定所需的最長時間。
空閑模式
使用喚醒命令喚醒收發(fā)器后,MAC就切換到“空閑”模式。在這種模式下,MAC等待進一步的指令。雖然收發(fā)器中的晶振已經(jīng)在運行,但射頻的各個模塊還是處于禁用狀態(tài),芯片的電流消耗大約是0.6mA。MAC系統(tǒng)始終處于該模式中,直到接收到下一個接收、發(fā)射或休眠指令為止。
因為EZMac僅支持半雙工通信,所以不能同時發(fā)射和接收。
發(fā)射模式
發(fā)送發(fā)射指令之前,數(shù)據(jù)會和它的目標地址一起裝載到MAC對應(yīng)的寄存器中。發(fā)射指令發(fā)送后,MAC開始發(fā)射。芯片的電流消耗激增到26mA(在最大輸出功率的情況下,但實際的消耗電流取決于輸出功率的設(shè)定)。完成發(fā)射任務(wù)后,如果MAC還處在激活狀態(tài),它會自動回到空閑模式或直接進入休眠模式。
接收模式
在“空閑”模式中,如果MAC接收到接收指令,它會改變到“接收”模式。收發(fā)器的消耗功率增加到大約15mA左右。MAC掃描可用的頻率,以有效地實現(xiàn)數(shù)據(jù)的傳輸。
一旦接收到一個有效的數(shù)據(jù)包,而且該數(shù)據(jù)包通過了所有激活的錯誤檢測和地址過濾,MAC就把收發(fā)器工作模式改為節(jié)電模式,等待更高層的軟件讀出接收數(shù)據(jù)。讀出數(shù)據(jù)之后,MAC也會進入“空閑”模式,或者直接進入“休眠”模式。
EZMac的包過濾方法
EZMac具備智能化的包過濾功能。過濾器可由幾種選項來配置,以便能很好地滿足處于更高的軟件層(應(yīng)用層)的需求。
EZMac被配置好后,更高層將只需發(fā)射和接收有效數(shù)據(jù)。EZMac則執(zhí)行所有的打包和拆包的任務(wù)。EZMac自動運行CRC,上層僅得到?jīng)]有錯誤的數(shù)據(jù)包。
圖2是數(shù)據(jù)包過濾的流程圖。
圖2 數(shù)據(jù)包過濾的流程圖
實時操作
數(shù)據(jù)包的過濾在接收過程中實時進行。這就意味著,當(dāng)接收到一段(字節(jié))數(shù)據(jù)包報頭時,過濾器就會對數(shù)據(jù)包進行檢查。如果相應(yīng)的過濾器檢測到數(shù)據(jù)包報頭的任何一部分有錯誤時,都會終止數(shù)據(jù)包的接收。
這種技術(shù)使EZMac在接收進程剛開始的階段不去理會意外出現(xiàn)的無效數(shù)據(jù)包。終止數(shù)據(jù)包的接收后,EZMac會及時報告錯誤并跳到下一個可用的頻率上,繼續(xù)搜尋有效的數(shù)據(jù)包。
實時的數(shù)據(jù)包過濾節(jié)約了各種資源(處理器的消耗功率和電池的使用壽命), 而且,因為無需處理無效的數(shù)據(jù)包,所以減少了資源浪費而達到了顯著提升系統(tǒng)性能的目標,同時也避免了其它頻率上的重要數(shù)據(jù)包的丟失。
客戶ID過濾
CID是使用EZMac協(xié)議的用戶的唯一ID號。雖然是否使用CID是可由用戶自選的,但是強烈推薦用戶使用CID,以避免安裝在同一區(qū)域的、均使用EZMac的不同系統(tǒng)之間出現(xiàn)意外的交互。如果使用了CID,CID會緊跟在前導(dǎo)和同步碼后發(fā)射出去。這就意味著在先入先出的算法中CID是第一個被讀到的字節(jié)。
因此,數(shù)據(jù)包接收一開始,EZMac就能識別出接收包的開始,繼而確定它是否為系統(tǒng)內(nèi)的數(shù)據(jù)包。如果不是,MAC就會取消接收,并跳轉(zhuǎn)到下一個頻率,繼續(xù)搜索有效數(shù)據(jù)包。用戶可以從Integration公司處得到CID。
發(fā)射包過濾
EZMac通過檢測接收包的報頭中的發(fā)送者ID字段來對接收的數(shù)據(jù)包進行過濾。如果發(fā)射包過濾器啟用的話,MAC將僅從特定的某一節(jié)點或者某群節(jié)點處接收數(shù)據(jù)包
群組是通過數(shù)據(jù)包報頭的發(fā)送方ID(SID)中的重要位和SFLT寄存器中的相同數(shù)位的掩碼運算來定義的。如果出現(xiàn)以下情況,數(shù)據(jù)包才算通過過濾:
SFLT & SMSK == SID & SMSK
Where:
&: Bitwise AND operator
SID: 發(fā)送方ID號在接受到的數(shù)據(jù)包的報頭中。)
如果把SMSK設(shè)置成0xFF時,群過濾器的選項就不可用了,這時MAC只能從有SFLT地址的節(jié)點處接收數(shù)據(jù)包。
目的地址過濾
目的地址包濾包括3種地址過濾,這三種方式都要檢測接受數(shù)據(jù)包報頭的DID字節(jié):
自綁定地址過濾
多播地址過濾
廣播地址過濾
自綁定地址過濾器始終是可用的,但是多播地址和廣播地址的啟用和停用是各自獨立的。只要數(shù)據(jù)包能通過上述任何一個過濾器,就能通過目的地址過濾器。
自綁定地址過濾
只用通過自綁定地址(SFID)才能在通信網(wǎng)絡(luò)中識別EZMac。也只有那些報頭中DID字段顯示SFID的數(shù)據(jù)包才能通過自綁定地址過濾。
多播地址過濾
多播地址負責(zé)檢測接受包是否為一組組節(jié)點所專用,以及EZMac是否是該群組的一部分。多播定址有兩個方法:
定義一個稱為多播地址(MCA)的專用地址。只有報頭中的DID字段等于MCA的那些數(shù)據(jù)包才能通過多播過濾器。
在自綁定地址過濾中定義并使用多播屏蔽(MCM):
DID & MCM == SFID & MCM
where & is the bitwise AND operator
其中&是逐位進行的AND運算。
只能在同一時間激活MCA過濾和MCM過濾中的一個。實際的模式可通過PFCR寄存器的A/nM比特位來選擇到底使用哪一種過濾。
廣播地址過濾
廣播地址有專用的地址:0xFF。
只有報頭中的DID字段是0xFF的數(shù)據(jù)包才能通過廣播地址過濾。
注:整個目的地址過濾由數(shù)據(jù)包過濾控制寄存器的DFEN位來確定是否啟用。
如果這個比特被清除,目的地址過濾將不可用,具有任何目地地址的數(shù)據(jù)包都可以被接收。
包長度過濾器
這個過濾器用于檢測動態(tài)變化的數(shù)據(jù)包長度(參見“主控寄存器”一節(jié))。如果該過濾器可用,長度超過最大容許接收長度的數(shù)據(jù)包將無法通過。最大容許長度可在MPL寄存器中設(shè)置。
混雜模式
若通過設(shè)置PCFR寄存器的PREN位來啟用混雜模式,則所有的地址過濾器和包長度過濾器都被忽略。
CRC過濾器
CRC過濾器是唯一不能被忽略的過濾器。它對數(shù)據(jù)包的所有字節(jié)執(zhí)行CRC(包括報頭)。如果接收包沒有通過CRC,EZMac將報告出錯并忽略該數(shù)據(jù)包。
評論