?? can-rs232?
字號(hào):
<DIV align=left>當(dāng)前位置:<A href="http://www.ic37.com/">首頁</A>
-->> <A href="http://www.ic37.com/document">技術(shù)資料</A>
-->> CAN-RS232通信轉(zhuǎn)換模塊的設(shè)計(jì)與實(shí)現(xiàn)</DIV></TD></TR>
<TR>
<TD vAlign=top height=240>
<DIV align=left>
<TABLE cellSpacing=0 cellPadding=0 width="96%" align=center
border=0>
<TBODY>
<TR>
<TD vAlign=top height=240>
<DIV align=left>
<TABLE cellSpacing=0 cellPadding=8 width="100%"
bgColor=#f7f7f7 border=0>
<TBODY>
<TR bgColor=#f5f5f5>
<TD bgColor=#efefce height=30>
<DIV
align=center><B>CAN-RS232通信轉(zhuǎn)換模塊的設(shè)計(jì)與實(shí)現(xiàn)</B></DIV></TD></TR>
<TR>
<TD class=HEIGH19 bgColor=#f7f7f7>
<TABLE class=HEIGH19 style="WORD-BREAK: break-all"
cellSpacing=0 cellPadding=0 width="100%"
align=center bgColor=#f5f5f5 border=0>
<TBODY>
<TR>
<TD> <BR>
<BR>
<BR> 來源:國(guó)外電子元器件 作者:何寶福
張文紅<BR>
<BR> 1.引言
<BR>
<BR> RS232作為標(biāo)準(zhǔn)的計(jì)算機(jī)串行接口已被廣泛使用,與此同時(shí),隨著現(xiàn)場(chǎng)總線技術(shù)的飛速發(fā)展,具有實(shí)時(shí)性好、可靠性高、結(jié)構(gòu)簡(jiǎn)單等優(yōu)點(diǎn)的CAN總線在測(cè)控系統(tǒng)中也越來越多地被采用,但由于兩者的總線結(jié)構(gòu)、通信協(xié)議及傳輸特點(diǎn)各不相同,因而給不同設(shè)備之間的連接帶來諸多不便。因此,如何以最簡(jiǎn)單的方式實(shí)現(xiàn)CAN節(jié)點(diǎn)與RS232串行口的通信就成為工程實(shí)踐中一個(gè)不可回避的問題。<BR>
<BR> 本文采用典型的不具備CAN通信能力的<A
title=AT89C51貨源和PDF資料
href="http://www.ic37.com/xinghao/AT89C51.htm"
target=_blank>AT89C51</A>單片機(jī)作為微處理器,設(shè)計(jì)了一個(gè)簡(jiǎn)單、實(shí)用的通信轉(zhuǎn)換模塊。該通信轉(zhuǎn)換模塊具有體積小、結(jié)構(gòu)簡(jiǎn)單、通用性好、使用方便等特點(diǎn)。<BR>
<BR> 2
工作原理<BR>
<BR> CAN-RS232通信轉(zhuǎn)換模塊通過硬件電路的電平標(biāo)準(zhǔn)轉(zhuǎn)換和軟件編程的通信協(xié)議轉(zhuǎn)換實(shí)現(xiàn)相關(guān)功能。<BR>
<BR> 2.1
電平標(biāo)準(zhǔn)轉(zhuǎn)換<BR>
<BR> RS232采用的不是TTL電平的接口標(biāo)準(zhǔn),而是負(fù)邏輯,即邏輯"1"為-3
V~-15 V;邏輯"0"為+3 V~+15
V;而CAN總線是采用"顯性"和"隱性"兩個(gè)互補(bǔ)的邏輯值表示"0"和"1",其信號(hào)是以兩線之間的"差分"電壓形式出現(xiàn)的。這樣導(dǎo)致兩總線之間的信號(hào)電壓不匹配。無法直接進(jìn)行正常的通信,因此,需要相應(yīng)的硬件接口電路實(shí)現(xiàn)電平標(biāo)準(zhǔn)轉(zhuǎn)換。<BR>
<BR> 2.2
通信協(xié)議轉(zhuǎn)換<BR>
<BR> RS232通信屬于異步串行通信。一般為兩點(diǎn)傳輸,其每幀的數(shù)據(jù)格式通常為:起始位+數(shù)據(jù)位+奇偶校驗(yàn)位(可省略)+停止位;每個(gè)數(shù)據(jù)包的格式通常為:數(shù)據(jù)包頭+數(shù)據(jù)字節(jié)+校驗(yàn)和(溢出不計(jì))。而CAN通信屬于總線通信,可以同時(shí)存在多個(gè)節(jié)點(diǎn),因此通信協(xié)議相對(duì)也比較復(fù)雜,這里以標(biāo)準(zhǔn)幀傳輸為例,其數(shù)據(jù)格式通常如表1所列。因此,需要軟件處理實(shí)現(xiàn)通信協(xié)議的轉(zhuǎn)換。<BR> <IMG
src="CAN-RS232通信轉(zhuǎn)換模塊的設(shè)計(jì)與實(shí)現(xiàn).files/4600_1_0801114105.jpg"><BR>
<BR> 3
硬件設(shè)計(jì)<BR>
<BR> 模塊采用Atmel公司生產(chǎn)的<A
title=AT89C51貨源和PDF資料
href="http://www.ic37.com/xinghao/AT89C51.htm"
target=_blank>AT89C51</A>型單片機(jī)作為微處理器,采用<A
title=SJA1000貨源和PDF資料
href="http://www.ic37.com/partno/SJA1000.htm"
target=_blank>SJA1000</A>和<A
title=TJA1050貨源和PDF資料
href="http://www.ic37.com/stockic/T/TJA1050.htm"
target=_blank>TJA1050</A>分別作為CAN控制器和驅(qū)動(dòng)器,采用<A
title=MAX202E貨源和PDF資料
href="http://www.ic37.com/partno/MAX202E.htm"
target=_blank>MAX202E</A>作為RS232串行接口驅(qū)動(dòng)器,其硬件連接電路圖如圖1所示。<BR> <IMG
src="CAN-RS232通信轉(zhuǎn)換模塊的設(shè)計(jì)與實(shí)現(xiàn).files/4600_2_0801114113.jpg"><BR>
<BR> AF89C51采用外接晶體振蕩器提供時(shí)鐘輸入,通過并行地址/數(shù)據(jù)復(fù)用的方式訪問CAN控制器<A
title=SJA1000貨源和PDF資料
href="http://www.ic37.com/partno/SJA1000.htm"
target=_blank>SJA1000</A>,P2.0引腳作為片選端口;<A
title=SJA1000貨源和PDF資料
href="http://www.ic37.com/partno/SJA1000.htm"
target=_blank>SJA1000</A>作為CAN控制器,也采用單獨(dú)的外部時(shí)鐘輸入,由于集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)通信數(shù)據(jù)的幀處理,其地址為0x00~0xFF;<A
title=TJA1050貨源和PDF資料
href="http://www.ic37.com/stockic/T/TJA1050.htm"
target=_blank>TJA1050</A>作為CAN控制器和物理總線之間的接口,采用高速工作模式,用于提供總線的差動(dòng)發(fā)送能力和CAN控制器差動(dòng)接收能力;<A
title=MAX202E貨源和PDF資料
href="http://www.ic37.com/partno/MAX202E.htm"
target=_blank>MAX202E</A>用于實(shí)現(xiàn)RS232電平到微控制器接口電路的TTL電平轉(zhuǎn)換。<BR>
<BR> 4
軟件設(shè)計(jì)<BR>
<BR> 模塊的軟件設(shè)計(jì)主要包括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ù)幀格式,每條報(bào)文的標(biāo)識(shí)符ID為11位,有效數(shù)據(jù)為0~8個(gè)字節(jié)。其軟件流程如圖2所示。<BR>
<IMG
src="CAN-RS232通信轉(zhuǎn)換模塊的設(shè)計(jì)與實(shí)現(xiàn).files/4600_3_0801114115.jpg"><BR>
<BR> 在RS232中斷程序中,微處理器對(duì)接收的串口數(shù)據(jù)進(jìn)行處理后提取出數(shù)據(jù)字節(jié),通過增加幀結(jié)構(gòu)信息、幀類型、字節(jié)長(zhǎng)度和標(biāo)識(shí)符等生成CAN報(bào)文格式,然后由CAN控制器的發(fā)送緩沖區(qū)發(fā)送出去;在CAN中斷程序中,微處理器對(duì)接收的有效CAN報(bào)文進(jìn)行解析,提取出字節(jié)長(zhǎng)度和字節(jié)內(nèi)容,通過增加數(shù)據(jù)頭、數(shù)據(jù)尾和校驗(yàn)和轉(zhuǎn)換為RS232通信格式,完成數(shù)據(jù)傳輸。<BR>
<BR> 5
結(jié)束語<BR>
<BR> 該設(shè)計(jì)已應(yīng)用于筆者開發(fā)的項(xiàng)目一某型低空紅外預(yù)警系統(tǒng)。用CAN-RS232通信轉(zhuǎn)換模塊將CAN總線收到的角度傳感器測(cè)出的空中目標(biāo)方位角和高低角(10
ms一組測(cè)角、波特率為500 kbit/s)實(shí)時(shí)轉(zhuǎn)換為RS232(波特率為115 200
bit/s)串行口數(shù)據(jù),使主控計(jì)算機(jī)(PC104工控機(jī))接收、處理和顯示;同時(shí)將RS232輸出的主控計(jì)算機(jī)命令轉(zhuǎn)換為CAN總線數(shù)據(jù)。經(jīng)實(shí)踐證明,該模塊工作穩(wěn)定、可靠,且成本低,完全能夠滿足系統(tǒng)的指標(biāo)要求,取得了良好的應(yīng)用效果。<BR>
<BR>
</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD bgColor=#f7f7f7 height=30>
<DIV align=right><FONT color=#ff6600>更新時(shí)間:2007-8-9
7:45:13 閱讀:159 </FONT></DIV></TD></TR>
<TR>
<TD bgColor=#f7f7f7 height=30>
<TABLE cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD bgColor=#eaeaea colSpan=3
height=23><STRONG><FONT
color=#ff6600>相關(guān)鏈接</FONT></STRONG></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A title=基于AT89C51的濕度檢測(cè)系統(tǒng)設(shè)計(jì)與研究
href="http://www.ic37.com/document/18816.htm">基于AT89C51的濕度檢測(cè)系統(tǒng)設(shè)計(jì)與研究</A>
<EM>(2007-8-17 10:31:50)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A title=基于AT89C51RC的電腦鑰匙外圍電路設(shè)計(jì)
href="http://www.ic37.com/document/20085.htm">基于AT89C51RC的電腦鑰匙外圍電路設(shè)計(jì)</A>
<EM>(2007-8-9 7:45:29)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A title=AT89C51單片機(jī)在無線數(shù)據(jù)傳輸中的應(yīng)用
href="http://www.ic37.com/document/1075.htm">AT89C51單片機(jī)在無線數(shù)據(jù)傳輸中的應(yīng)用</A>
<EM>(2007-8-9 7:45:29)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A title=AT89C51單片機(jī)高速串行輸出口設(shè)計(jì)
href="http://www.ic37.com/document/1598.htm">AT89C51單片機(jī)高速串行輸出口設(shè)計(jì)</A>
<EM>(2007-8-9 7:45:25)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A
title=單片機(jī)微處理器AT89C51在時(shí)隙變換和控制中的應(yīng)用
href="http://www.ic37.com/document/459.htm">單片機(jī)微處理器AT89C51在時(shí)隙變換和控制中的應(yīng)用</A>
<EM>(2007-8-9 7:45:25)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A title=基于AT89C51的電源切換控制器的設(shè)計(jì)與實(shí)現(xiàn)
href="http://www.ic37.com/document/2742.htm">基于AT89C51的電源切換控制器的設(shè)計(jì)與實(shí)現(xiàn)</A>
<EM>(2007-8-9 7:45:18)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A
title="串行EEPROM X24128及其與AT89C51的接口及編程"
href="http://www.ic37.com/document/3844.htm">串行EEPROM
X24128及其與AT89C51的接口及編程</A> <EM>(2007-8-9
7:45:13)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A title=基于AT89C51的電流源設(shè)計(jì)
href="http://www.ic37.com/document/2017.htm">基于AT89C51的電流源設(shè)計(jì)</A>
<EM>(2007-8-9 7:44:55)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A
title=用SG270/LM4884和AT89C51設(shè)計(jì)的音頻信號(hào)均幅控制放大器
href="http://www.ic37.com/document/17866.htm">用SG270/LM4884和AT89C51設(shè)計(jì)的音頻信號(hào)均幅控制放大器</A>
<EM>(2007-8-7 19:56:03)</EM></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A title=基于AT89C51型單片機(jī)的號(hào)音自動(dòng)播放器設(shè)計(jì)
href="http://www.ic37.com/document/1260.htm">基于AT89C51型單片機(jī)的號(hào)音自動(dòng)播放器設(shè)計(jì)</A>
<EM>(2007-8-7
19:56:03)</EM></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- InstanceEndEditable --></TD></TR>
<TR>
<TD>
<SCRIPT src="CAN-RS232通信轉(zhuǎn)換模塊的設(shè)計(jì)與實(shí)現(xiàn).files/js_copyright.js"></SCRIPT>
</TD></TR></TBODY></TABLE><!-- InstanceEnd --></BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -