CAN-RS232通信轉(zhuǎn)換模塊的設(shè)計與實現(xiàn)
1 引言
RS232作為標(biāo)準(zhǔn)的計算機串行接口已被廣泛使用,與此同時,隨著現(xiàn)場總線技術(shù)的飛速發(fā)展,具有實時性好、可靠性高、結(jié)構(gòu)簡單等優(yōu)點的CAN總線在測控系統(tǒng)中也越來越多地被采用,但由于兩者的總線結(jié)構(gòu)、通信協(xié)議及傳輸特點各不相同,因而給不同設(shè)備之間的連接帶來諸多不便。因此,如何以最簡單的方式實現(xiàn)CAN節(jié)點與RS232串行口的通信就成為工程實踐中一個不可回避的問題。
本文采用典型的不具備CAN通信能力的AT89C51單片機作為微處理器,設(shè)計了一個簡單、實用的通信轉(zhuǎn)換模塊。該通信轉(zhuǎn)換模塊具有體積小、結(jié)構(gòu)簡單、通用性好、使用方便等特點。
2 工作原理
CAN-RS232通信轉(zhuǎn)換模塊通過硬件電路的電平標(biāo)準(zhǔn)轉(zhuǎn)換和軟件編程的通信協(xié)議轉(zhuǎn)換實現(xiàn)相關(guān)功能。
2.1 電平標(biāo)準(zhǔn)轉(zhuǎn)換
RS232采用的不是TTL電平的接口標(biāo)準(zhǔn),而是負(fù)邏輯,即邏輯"1"為-3 V~-15 V;邏輯"0"為+3 V~+15 V;而CAN總線是采用"顯性"和"隱性"兩個互補的邏輯值表示"0"和"1",其信號是以兩線之間的"差分"電壓形式出現(xiàn)的。這樣導(dǎo)致兩總線之間的信號電壓不匹配。無法直接進(jìn)行正常的通信,因此,需要相應(yīng)的硬件接口電路實現(xiàn)電平標(biāo)準(zhǔn)轉(zhuǎn)換。
2.2 通信協(xié)議轉(zhuǎn)換
RS232通信屬于異步串行通信。一般為兩點傳輸,其每幀的數(shù)據(jù)格式通常為:起始位+數(shù)據(jù)位+奇偶校驗位(可省略)+停止位;每個數(shù)據(jù)包的格式通常為:數(shù)據(jù)包頭+數(shù)據(jù)字節(jié)+校驗和(溢出不計)。而CAN通信屬于總線通信,可以同時存在多個節(jié)點,因此通信協(xié)議相對也比較復(fù)雜,這里以標(biāo)準(zhǔn)幀傳輸為例,其數(shù)據(jù)格式通常如表1所列。因此,需要軟件處理實現(xiàn)通信協(xié)議的轉(zhuǎn)換。
3 硬件設(shè)計
模塊采用Atmel公司生產(chǎn)的AT89C51型單片機作為微處理器,采用SJA1000和TJA1050分別作為CAN控制器和驅(qū)動器,采用MAX202E作為RS232串行接口驅(qū)動器,其硬件連接電路圖如圖1所示。
AF89C51采用外接晶體振蕩器提供時鐘輸入,通過并行地址/數(shù)據(jù)復(fù)用的方式訪問CAN控制器SJA1000,P2.0引腳作為片選端口;SJA1000作為CAN控制器,也采用單獨的外部時鐘輸入,由于集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對通信數(shù)據(jù)的幀處理,其地址為 0x00~0xFF;TJA1050作為CAN控制器和物理總線之間的接口,采用高速工作模式,用于提供總線的差動發(fā)送能力和CAN控制器差動接收能力;MAX202E用于實現(xiàn)RS232電平到微控制器接口電路的TTL電平轉(zhuǎn)換。
4 軟件設(shè)計
模塊的軟件設(shè)計主要包括RS232通信程序和CAN通信程序兩部分,采用中斷方式。其中,RS232通信數(shù)據(jù)傳輸?shù)牟ㄌ芈蕿?15 200 bit/s,數(shù)據(jù)格式為1位起始位、8位數(shù)據(jù)位、1位停止位;CAN總線的傳輸波特率為500 kbit/s,采用PeliCAN模式的標(biāo)準(zhǔn)數(shù)據(jù)幀格式,每條報文的標(biāo)識符ID為11位,有效數(shù)據(jù)為0~8個字節(jié)。其軟件流程如圖2所示。
在RS232中斷程序中,微處理器對接收的串口數(shù)據(jù)進(jìn)行處理后提取出數(shù)據(jù)字節(jié),通過增加幀結(jié)構(gòu)信息、幀類型、字節(jié)長度和標(biāo)識符等生成CAN報文格式,然后由CAN控制器的發(fā)送緩沖區(qū)發(fā)送出去;在CAN中斷程序中,微處理器對接收的有效CAN報文進(jìn)行解析,提取出字節(jié)長度和字節(jié)內(nèi)容,通過增加數(shù)據(jù)頭、數(shù)據(jù)尾和校驗和轉(zhuǎn)換為RS232通信格式,完成數(shù)據(jù)傳輸。
5 結(jié)束語
該設(shè)計已應(yīng)用于筆者開發(fā)的項目一某型低空紅外預(yù)警系統(tǒng)。用CAN-RS232通信轉(zhuǎn)換模塊將CAN總線收到的角度傳感器測出的空中目標(biāo)方位角和高低角(10 ms一組測角、波特率為500 kbit/s)實時轉(zhuǎn)換為RS232(波特率為115 200 bit/s)串行口數(shù)據(jù),使主控計算機(PC104工控機)接收、處理和顯示;同時將RS232輸出的主控計算機命令轉(zhuǎn)換為CAN總線數(shù)據(jù)。經(jīng)實踐證明,該模塊工作穩(wěn)定、可靠,且成本低,完全能夠滿足系統(tǒng)的指標(biāo)要求,取得了良好的應(yīng)用效果。