80C152單片機上HDLC通信規程中的應用
2.2 80152中的DMA
80C152包含兩個相同的可16位尋址的通用8位DMA通道;DMA0和DMA1。與每個通道相關的有7個SFR。SARLn和SARHn分別保存源地址的低位和高位字節,合在一起構成16位源地址寄存器。DARLn和DARHn分別存儲目的地址的低位和高位字節,合在一起構成16位目的地址寄存器。BCRLn和BCRHn分別保存將被傳送字節數據地址的低位和高位字節,合在一起成字節計數寄存器。DCONn包含控制和標志位。
對DMA通道的初始化需設置控制寄存器、源地址和目的地址寄存器。
控制寄存器DCON的裝入值及意義如圖2所示。
DCONn中的DASn(目的地址空間位)和IDAn(目的地址自動加1位)用于指出數據傳送的物理目的空間。DCONn中的SASn(源地址空間位)和ISAn(源地址自動加1位)用于指出數據傳送的物理源空間。采用DMA控制器來處理GSC數據傳送時,當DMA通道用于接收服務時,首先將接收機傳送來的數據自動送入到接收緩沖器RFIFO中,其源地址寄存器應置成RFIFO地址(SARHN=x x H,SARLN=0F4H);然后,將接收緩沖器中的數據傳送到目的地址指定的物理空間,其可以是外部RAM、內部RAM或SFR;最后,對收到的數據進行CRC校驗,并通知CPU是否正確接收到該幀數據。當DMA通道用于發送服務時,首先將要發送的數據傳送到先入先出發送緩沖器TFIFO中,其目的地址寄存器應置成TFIFO地址(DARHN=xxH,DARLN=85H);然后,將先入先出發送緩沖器TFIFO中的數據傳送給發射機;最后,對發送出去的數據進行CRC校驗,并通知CPU是否正確發送了該幀數據。
DCONn中的DM(請求方式位)和TM(傳送方式位)用于選擇DMA的工作方式。當DMA服務于全局串行通道(GSC)時,應采用串行口請求方式。當DCONn中的GO位置1時,將啟動DMA通道工作于全局串行傳輸方式。當全局串行口接收或發送完一幀數據后,
DCONn中的DONE位被置1,并將該信號傳送給CPU來產生中斷。
3 HDLC操作
高級數據鏈路控制(High Data Link Control)規程,簡稱HDLC規程,是面向位的鏈路控制規程。它與基本型規程不同,鏈路的監控功能是通過一定的位組合所表示的命令和響應來實現的,這些命令和響應可以與信息報文一起傳送。HDLC規程具有透明傳輸、可靠性高、傳輸效率高并具有極大的靈活性等特點。它是由IBM公司開發的通信協議,已廣泛應用于工業領域。它基于主/從結構,要求每個從部都有唯一的地址。從部只有在允許通信時才能且只能和主站通信,這就消除了串行線路上由于幾個從部同時發送引起沖突的可能 性。其幀結構如圖3所示。
BOF是HDLC的幀開始標志,為01111110。這是HDLC中僅有的兩個包含連續6個1的可能組合之一,另一個可能的組合是中止符。這是因為HDLC采用了一種叫做位插入的過程,每發現有連續5個1時在下一位自動插入一個0,接收器在收到連續5個1之后自動刪去插入的0。所有位插入和位刪除操作均由GSC完成。BOF除了標志幀的開始,還用作時鐘同步和決定地址與控制字位置的參考點。
ADDRESS的地址字段,用于表示報文發往何站。每個從站必須有唯一的地址,主站必須知道每個從站的指定地址。然而有些報文需要發往一個以上的站,這些報文成為廣播地址或群地址報文。全1構成的地址總是自動地被GSC接收,在HDLC中定義為廣播地址。群地址是指適用于一個以上站的地址,GSC提供了幾個地址屏蔽位,以使GSC接收群地址。如果需要的話,用戶軟件可以接收所有的地址位,這種屏蔽方式使GSC不加區分地接收所有地址。
CONTROL是控制段,它用于系統初始化、標志幀的序號,并在報文發送完成后通知從站響應,對以前發送幀進行應答。由于GSC硬件沒有提供控制段的管理功能,用戶軟件擔負著控制段的插入、解釋和格式化。尾隨控制段的信息通常用于報文傳輸、出錯報告和其他各種功能。這些功能由控制段的格式完成,有三種格式可供使用:報文格式、監控格式和無序號格式。
INFO是報文段,它包含線路中一個器件希望發給另一個器件的報文(數據),其長度可為用戶所定,但必須是8位的倍數。報文段由前面的控制段和后面的CRC為接收站所標識。GSC把接收的位通過CRC發生器來決定報文段的末尾。當最后一位或EOF收到后,剩下的位組成CRC。
CRC是循環冗余檢測,是一種普通用于串行通信的錯誤檢測方法。
4 系統誤碼率的分析
80C152提供兩種CRC算法:16位和32位算法。在大多數HDLC應用中,16位CRC被使用,支持16位CRC的硬件結構如圖4所示。
評論