MPC8280多通道HDLC控制器的應用
4 MCC的超通道模式設計
工作于超通道模式下的MCC要求SI必須以字節為選路單位。通過“超通道”這個技術將原來分屬于幾個通道的FIFO聚合成1個更大的FIF-O,傳輸大容量的同步數據流。聚合的方法是在SI RAM中指定某幾個MCCchannel的通道號屬于一個超通道,也就是說,為使MCC工作在超通道模式下,必須完成SI RAM和超通道表的初始化。
超通道表用于表示哪幾個通道的FIFO共享指定通道的控制參數。例如:160、161、162等3個標準通道組成1個超通道,且由160號通道的控制寄存器來控制該超通道的行為,那么就在超通道表表項中填入“160”。
超通道表僅用于發送控制,而接收不需要構造超通道表。接收的編程比較簡單,既不需要設超通道,也比較直接,需要由某個通道處理的數據,直接在SI RAM里打開相應的通道接收即可。
5 中斷模型
MCC的中斷響應采用兩級中斷模型:第一級為全局中斷狀態標志寄存器MCCE,第二級為中斷環表。MPC8280中共有5個中斷環表為MCC通道中斷提供中斷標志服務:1個用于發送,4個用于接收。中斷環表是所有通道共用的。每個通道初始化時必須指定它使用哪個接收中斷表來上報接收中斷,利用這個特性可以設計出帶優先級的中斷響應機制。
注意:因為是環表,所以環表內最后一條表項的Wrap位必須置1,環表內的其他表項必須全部置成O。
每當有MCC通道觸發中斷,MPC8280的CPM模塊將會向中斷環表中當前空表項位置寫入一條表項,并將該表項的“V”有效標志位置1,表示已經收到一次中斷,等待用戶響應和處理。并且給表項指針加1以指向下一條空表項(當指針到達環表的最后一條時,則CPM模塊自動將中斷環表的基地址的值重新裝入表項指針寄存器,使CPM下一次寫入的位置重新定位到中斷環表的頂部)。
注意:如果中斷屏蔽寄存器INTMSK中設置了一些屏蔽事件,則當這些事件發生時,CPM不會向中斷環表寫入表項,自然也不會觸發全局中斷狀態標志寄存器MCCE。
用戶ISR代碼響應MCC中斷,訪問中斷環表表項時,應首先清除“V”標志,然后再處理具體中斷請求,并在退出中斷服務程序前清除MCCE寄存器的中斷標志。程序員應該根據系統的實際情況決定是在進入MCC中斷服務程序后將所有中斷環表中的中斷事件處理完才退出,還是僅處理中斷環表一項中斷請求后即退出中斷服務程序,這需要程序員基于中斷響應時間以及不影響其他程序代碼運行作綜合考慮。
6 實際調試
環回測試是測試通信硬件本身是否正常的重要手段。MPC8280各通信處理單元自身都有環回控制位,例如,SCCHDLC的環回控制在GSMR_L寄存器中設置;MCC的單個通道的環回控制在SI RAM里設置。單個TDM口也可以自環,在SIxMR寄存器里設置。因此,可以通過對MCC的單個通道的自環,以及單個TDM口的自環來測試驅動程序寫得是否正確。在這個測試中,MPC8280的TDM口由片外時鐘和幀同步脈沖驅動。注意:測試前必須先用示波器確認TDM口引腳上的時鐘的頻率、波形符合硬件設計要求。另外應當仔細選擇MPC8280和外部交換芯片的時鐘邊緣關系,以免時鐘同步異常導致數據判決出錯。
初始化代碼完成以后,應利用shell工具或其他觀察手段檢查初始化代碼對相關寄存器的寫入符合設計目標。不要因為粗心大意寫錯了寄存器值而無法獲得正確結果。因為MCC的工作必須在SI模塊的配合下完成,可以將SI模塊和MCC分開調試。假如有已經調試完成的SCC(SMC也可以)通信單元的驅動程序,就可以將SCC的數據流從I/O腳定向到SI模塊上,如圖5所示。測試SCC經過SI模塊進行環回是否正常,可以測試SI模塊的驅動程序是否正確。測試好SI模塊的驅動程序后,再將SCC的驅動程序替換成MCC的驅動程序,即可比較容易地采用相同的模型對MCC驅動程序進行測試了。注意MCC工作在標準模式和超通道模式下時對SI RAM的路由表初始化稍有不同。
7 小結
MPC8280是一種功耗低、通信處理能力強的處理器,利用MPC8280內部的多通道控制器的大通信容量通信能力,可以比較容易地設計出信令通道、數據通道、協議轉換器等應用。本文介紹了MPC8280內部的多通道控制器的通信原理及調試方法,希望對有相關應用需求的科研人員有所幫助。
評論