a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > EZMacTM媒體接入控制軟件(07-100)

EZMacTM媒體接入控制軟件(07-100)

—— EZRadio IA442x收發器的EZMacTM媒體接入控制軟件
作者:Integration公司 時間:2009-03-03 來源:電子產品世界 收藏

  網絡定址方式中的地址過濾器

本文引用地址:http://www.j9360.com/article/91986.htm


  圖3 網絡定址模式的操作流程

  圖3顯示了網絡定址模式的操作流程。在這個模式中,數據包的定址和過濾都更為簡單。雖然沒有獨立的發送方和接收方的地址,但是使用了一個被稱為“網絡ID”的16比特的單地址來識別通信網絡中的成員。

  網絡中的所有信息都是廣播信息。然而,廣播尋址也需要支持特殊模式,例如學習模式或者網絡之間的通信。

  在“接收”模式中,接收到的16比特的網絡ID將與由NIDFL和NIDFH寄存器共同組成的16位地址進行比較。如果縮小地址范圍,NWID也可以僅具備8位的寬度,而只需與NIDFL寄存器進行比較。

  在“發射”模式中,NWID段的數據包報頭由NIDL和 NIDH寄存器組成;在縮減的地址模式中,只有NIDL寄存器可用作8位網絡地址。

  EZMac的檢錯方法

  EZMac能檢測出幾種錯誤,這可以使上層的軟件層選擇最好的數據發送策略。EZMac檢錯功能為每一個頻率信道都準備了一個獨立的8bit錯誤計數器,并安排了一個公共的控制寄存器。

  控制寄存器用來啟用/關閉不同種類的檢錯功能,各個計數器分別各自對應的頻率信道上出現的允許錯誤。計數器不會溢出,能被更上層的軟件層清空。

  通道忙(沖突)

  如果載波偵聽(Listen Before Talk)被啟用,EZMac在數據包開始發送之前檢查該信道,這一檢查的實現方式是:在被選中進行傳送的頻率上讓接收器開啟至少8 bit周期的時間,并檢測DQD信號。

  邏輯電平高表示信道正在傳送有效的FSK信號。EZMac不會干擾正在進行的發送,也不會再傳送新的數據包,EZMac將進入發送錯誤狀態。

  這只是檢測發送錯誤,其它錯誤在接收過程中檢測,并且只有在讀取不同信道的錯誤計數器時才能檢查出來。

  收發同步檢錯

  開始執行接收指令時,要掃描可用的頻率,尋找FSK的發射。這個功能的實現方法是像2.4節中描述的那樣,通過在信道之間跳轉并檢測DQD信號來實現的。如果DQD電路在第一輪掃描中報告有FSK的發射,但是直到“等到IRQ超時”指令時,接收機還處于未檢測到數據包開始傳送,則EZMac就會檢測到收發同步錯誤。然后系統將繼續掃描下一個可用頻率,并使對應的差錯計數器加1。

  包起點丟失

  如果前面小節部分所描述的錯誤情形,收發同步錯誤,在第二輪掃描或后面的掃描中出現,則EZMac就將檢測出數據包錯誤的起點。這就是為什么EZMac能夠檢測出第三方的FSK傳輸。

  錯誤CID

  在報頭中使用客戶ID,EZMac在數據包接收剛一開始的階段就能檢測數據包是系統內數據包還是由使用EZRadio芯片組的第三方發射的數據包。當接收機在數據包中識別到同步碼的開始字節(2DD4 ,十六進制)時,與收發同步錯誤情形中相同的錯誤就會發生。由于CID是報頭的第一個字節,EZMac將很快中斷接收,繼續掃描可用的頻率,尋找有效數據。

  錯誤地址

  緊隨CID字節發射的是地址字節。如果地址過濾器邏輯單元中發現這些字節出現錯誤,EZMac就可以檢測到一個地址錯誤的告警,然后中斷接收,繼續掃描可用的頻率,搜尋有效的數據包。

  錯誤CRC

  如果接收到的包沒有通過循環冗余碼(CRC)校驗,EZMac會創建一個CRC錯誤的報告,并丟棄該數據包。掃描可用的頻率、搜尋有效數據包的工作將繼續下去。這種錯誤告警能給出關于射頻鏈路通信質量的有用信息。

  CRC錯誤出現過多表示線路的質量較差。檢測到其它種類錯誤信息,但CRC錯誤為數很少,這意味著線路是好的,但是以下情況:

  a.)重要的第三方傳輸,或者

  b.)明顯的系統內沖突,

  將意味著通信策略有問題。

  錯誤的包長度

  如果接收到的數據包報頭的PL字節是0或者超出MPL寄存器所設定的極限,EZMac會發現包長度的錯誤。一旦出現了包長度的錯誤,EZMac會中斷接收,繼續為有效的數據包掃描可用的頻率。

  狀態機的工作原理

  圖4是EZMac狀態機的狀態詳圖。該圖包括了EZMac的九種基本狀態。當然,EZMac狀態機可具備的狀態(子狀態)要多得多,但是這九種基本狀態是上層的軟件層可以看到的。

 

  圖4 狀態機工作原理

  初始化

  上層的必須調用EZMac_SysInit ()函數來初始化必要的I/O接口、外設(外部中斷和定時1單元)和處理器的寄存器。上層還必須調用 EZMac_Config ()函數來初始化EZMac和EZRadio收發器的芯片。這兩個函數都包括在加電重啟程序中?

  喚醒

  EZMac的狀態機在初始化之后進入“休眠”狀態。在這個狀態中,收發機處于節電模式,功率消耗少于0.3uA。而且在該模式中,收發機會保存所有的設置,能接收SPI指令,但是所有的模擬部分被關閉(包括晶體振蕩器)。

  EZMac_Wake_Up()函數能打開收發機的振蕩器。在振蕩器穩定之前,MAC一直處于激活狀態。當振蕩器穩定后,MAC將進入“空閑”狀態。上層可以使用“休眠”和“激活”狀態(幾個毫秒)來對MAC寄存器和MAC緩存進行讀寫操作,但是直到MAC進入空閑狀態,上層才能使用EZMac_Receive()和EZMac_Transmit()兩個函數

  接收流程

  如果EZMac處于空閑狀態,上層可以調用EZMac_Receive()函數,之后EZMac開始掃描有用頻率,搜索FSK的發送(“檢測DQD”狀態)。EZMac周期性的改變頻率,該周期大概是10bit的時間長度。如果MAC檢測到FSK發送的出現,狀態機器會試圖接收實際的數據包(“接收數據包”狀態)。

  如果MAC在溢出時間內沒有檢測到同步碼(參見2.4節),它會報告錯誤,自動回到檢測DQD的狀態,繼續搜索有效的發送。如果MAC檢測到同步碼,它將開始數據包接收。EZMac在接收中的確要進行地址過濾和CRC檢測。

  如果數據包是有效的(所有地址和CRC都正確),狀態機進入“數據包有效”狀態,并在此狀態等候,直到上層讀取緩存器或者調用EZMac_Idle()函數。上層讀過緩存器或者調用EZMac_Idle()函數之后,狀態機器進入空閑或休眠狀態(具體由接收控制寄存器的AXOR位的數值來決定)。

  如果接受包不能通過過濾器,EZMac將回到Checking DQD狀態,搜索下一個數據包。

  發射流程

  上層在休眠、空閑和喚醒狀態下都會填充緩沖器。如果狀態機處于空閑狀態,數據包傳輸可以由上層通過調用EZMac_Transmit(void)函數來啟動。如果“Listen before talk”函數可用,設備會檢查信道 (載波偵聽狀態),只有在信道空閑時才開始發送數據包。在發送過程中,MAC始終處于“發射數據包”狀態。

  如果出現數據包的發送(發射狀態),狀態機自動回到空閑狀態(AXOR位是0)或者休眠狀態( AXOR位是1)。如果信道被占用,那末下一個狀態就是“發送錯誤”狀態。

  此時,狀態機處于等待狀態,直到調用EZMac_Idle()和EZMac_Transmit()函數:

  ·狀態機收到EZMac_Idle()進入空閑或者休眠狀態(具體取決于AXOT位的值)

  ·狀態機收到EZMac_Transmit()指令后又開始發送數據包。

  上層能在“發送錯誤狀態”下改變信道。如果“Listen before talk”函數沒有激活,數據包將不經過信道檢查就開始發送。

  獲取EZMac的狀態信息

  象前面所描述的,上面的層能看到九種主要狀態。Mac狀態寄存器(MSR)的前四字節攜帶了實際狀態的代碼。這個編碼可以在任何時刻由EZMacReg_Read ()函數讀出。MSR寄存器能隨著MAC狀態的改變實時刷新。更多細節參見MSR部分。

  處理器負荷

  正如前面提到的,EZMac的狀態機以兩個中斷程序的形式運行。盡管它運行在不同狀態會使處理器的產生不同的負荷,但是仍然有一些狀態完全不會構成處理器的負荷。


上一頁 1 2 3 下一頁

關鍵詞: Integration EZMacTM

評論


技術專區

關閉