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