基于一種動(dòng)目標識別系統的串行通信設計
動(dòng)目標識別系統(MIS)中的串行通信主要是MIS協(xié)議幀的實(shí)現。圖2所示是其硬件模塊的主要結構。
圖2所示是STC89C58RD+單片機為處理器,以串行通信控制器Z85C30和GMSK調制解調器為外部電路組成的一個(gè)嵌入式系統,可用于完成HDLC數據的打包和拆包,以及將數字信號調制成GMSK信號。
4 MIS系統串行通信的軟件實(shí)現
程序運行的開(kāi)始,都要初始化單片機,并設置中斷和初始化串口。Z85C30的各種狀態(tài)都使用中斷處理程序來(lái)處理才能使程序的執行效率達到最高。
將Z85C30發(fā)射通道設置成雙字節同步模式,同步字節為55H,并且向發(fā)射緩沖寄存器寫(xiě)入55H,便可實(shí)現MIS系統要求的訓練序列。在這種模式下,在使能發(fā)射后,先發(fā)射同步字節,同步字節發(fā)射完成后再發(fā)射數據。當發(fā)射緩沖寄存器為空時(shí),Z85C30會(huì )設置發(fā)射緩沖寄存器空標志位,如果Z85C30允許發(fā)射中斷,這時(shí)就可產(chǎn)生中斷。在中斷處理程序中可以判斷訓練序列是否發(fā)射完畢。
要發(fā)射的數據必須符合HDLC協(xié)議中規定的幀格式,所以,在發(fā)射完訓練序列后,還必須將Z85C30設置成HDLC模式。然后將要發(fā)射的數據寫(xiě)入發(fā)射緩沖寄存器。在使能發(fā)射后,數據就會(huì )緊接著(zhù)訓練序列從發(fā)射引腳送出。由于Z85C30是以字節發(fā)射數據,所以,在中斷處理程序中必須判斷是否還需發(fā)射數據。如果需要發(fā)射數據,就應向發(fā)射緩沖寄存器中繼續寫(xiě)入數據:如果不需要,那么,當Z85C30檢測到發(fā)射移位寄存器為空時(shí),就會(huì )自動(dòng)在數據后面增加CRC值和結束標志。
Z85C30接收通道的初始化和發(fā)射通道不一樣,它不需要考慮接收訓練序列,因為訓練序列用于接收機同步。Z85C30的接收通道可以直接設置成HDLC模式,在其接收到起始標志后,就意味著(zhù)后面緊接著(zhù)接收的就是數據。如果Z85C30設置了接收中斷,那么,當數據接收寄存器中數據寫(xiě)滿(mǎn)時(shí),就會(huì )產(chǎn)生接收中斷,中斷處理程序就應將數據讀出,以消除中斷狀態(tài)。接收完數據后,緊接著(zhù)應該接收CRC值。Z85C30可將16位CRC值以接收數據的方式接收,但Z85C30會(huì )自動(dòng)對比接收的CRC值和計算的CRC值,如果兩值不一致,就會(huì )設置CRC錯誤位。當Z85C30在數據流中接收到結束標志時(shí),它會(huì )產(chǎn)生幀結束中斷。因此,在軟件設計時(shí),程序應該在幀結束中斷中判斷CRC是否正確,以便確定是否應當保留剛接收的一幀數據。
Z85C30有兩個(gè)通道,每個(gè)通道可以發(fā)送,也可以接收數據。由于數據的拆包只是數據打包的逆過(guò)程,并且Z85C30也支持HDLC幀數據的拆包,所以,在此只介紹如何進(jìn)行數據打包。將打包的數據發(fā)給GMSK調制解調器,就可以得到很好的GMSK信號,這樣,GMSK信號就可以由高頻板調制發(fā)射出去,以便和其他臺站實(shí)現通信。本系統的軟件流程如圖3所示。
評論