📄 can-rs232ͨ
字号:
<DIV align=left>当前位置:<A href="http://www.ic37.com/">首页</A>
-->> <A href="http://www.ic37.com/document">技术资料</A>
-->> CAN-RS232通信转换模块的设计与实现</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通信转换模块的设计与实现</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> 来源:国外电子元器件 作者:何宝福
张文红<BR>
<BR> 1.引言
<BR>
<BR> RS232作为标准的计算机串行接口已被广泛使用,与此同时,随着现场总线技术的飞速发展,具有实时性好、可靠性高、结构简单等优点的CAN总线在测控系统中也越来越多地被采用,但由于两者的总线结构、通信协议及传输特点各不相同,因而给不同设备之间的连接带来诸多不便。因此,如何以最简单的方式实现CAN节点与RS232串行口的通信就成为工程实践中一个不可回避的问题。<BR>
<BR> 本文采用典型的不具备CAN通信能力的<A
title=AT89C51货源和PDF资料
href="http://www.ic37.com/xinghao/AT89C51.htm"
target=_blank>AT89C51</A>单片机作为微处理器,设计了一个简单、实用的通信转换模块。该通信转换模块具有体积小、结构简单、通用性好、使用方便等特点。<BR>
<BR> 2
工作原理<BR>
<BR> CAN-RS232通信转换模块通过硬件电路的电平标准转换和软件编程的通信协议转换实现相关功能。<BR>
<BR> 2.1
电平标准转换<BR>
<BR> RS232采用的不是TTL电平的接口标准,而是负逻辑,即逻辑"1"为-3
V~-15 V;逻辑"0"为+3 V~+15
V;而CAN总线是采用"显性"和"隐性"两个互补的逻辑值表示"0"和"1",其信号是以两线之间的"差分"电压形式出现的。这样导致两总线之间的信号电压不匹配。无法直接进行正常的通信,因此,需要相应的硬件接口电路实现电平标准转换。<BR>
<BR> 2.2
通信协议转换<BR>
<BR> RS232通信属于异步串行通信。一般为两点传输,其每帧的数据格式通常为:起始位+数据位+奇偶校验位(可省略)+停止位;每个数据包的格式通常为:数据包头+数据字节+校验和(溢出不计)。而CAN通信属于总线通信,可以同时存在多个节点,因此通信协议相对也比较复杂,这里以标准帧传输为例,其数据格式通常如表1所列。因此,需要软件处理实现通信协议的转换。<BR> <IMG
src="CAN-RS232通信转换模块的设计与实现.files/4600_1_0801114105.jpg"><BR>
<BR> 3
硬件设计<BR>
<BR> 模块采用Atmel公司生产的<A
title=AT89C51货源和PDF资料
href="http://www.ic37.com/xinghao/AT89C51.htm"
target=_blank>AT89C51</A>型单片机作为微处理器,采用<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控制器和驱动器,采用<A
title=MAX202E货源和PDF资料
href="http://www.ic37.com/partno/MAX202E.htm"
target=_blank>MAX202E</A>作为RS232串行接口驱动器,其硬件连接电路图如图1所示。<BR> <IMG
src="CAN-RS232通信转换模块的设计与实现.files/4600_2_0801114113.jpg"><BR>
<BR> AF89C51采用外接晶体振荡器提供时钟输入,通过并行地址/数据复用的方式访问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控制器,也采用单独的外部时钟输入,由于集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的帧处理,其地址为0x00~0xFF;<A
title=TJA1050货源和PDF资料
href="http://www.ic37.com/stockic/T/TJA1050.htm"
target=_blank>TJA1050</A>作为CAN控制器和物理总线之间的接口,采用高速工作模式,用于提供总线的差动发送能力和CAN控制器差动接收能力;<A
title=MAX202E货源和PDF资料
href="http://www.ic37.com/partno/MAX202E.htm"
target=_blank>MAX202E</A>用于实现RS232电平到微控制器接口电路的TTL电平转换。<BR>
<BR> 4
软件设计<BR>
<BR> 模块的软件设计主要包括RS232通信程序和CAN通信程序两部分,采用中断方式。其中,RS232通信数据传输的波特率为115
200 bit/s,数据格式为1位起始位、8位数据位、1位停止位;CAN总线的传输波特率为500
kbit/s,采用PeliCAN模式的标准数据帧格式,每条报文的标识符ID为11位,有效数据为0~8个字节。其软件流程如图2所示。<BR>
<IMG
src="CAN-RS232通信转换模块的设计与实现.files/4600_3_0801114115.jpg"><BR>
<BR> 在RS232中断程序中,微处理器对接收的串口数据进行处理后提取出数据字节,通过增加帧结构信息、帧类型、字节长度和标识符等生成CAN报文格式,然后由CAN控制器的发送缓冲区发送出去;在CAN中断程序中,微处理器对接收的有效CAN报文进行解析,提取出字节长度和字节内容,通过增加数据头、数据尾和校验和转换为RS232通信格式,完成数据传输。<BR>
<BR> 5
结束语<BR>
<BR> 该设计已应用于笔者开发的项目一某型低空红外预警系统。用CAN-RS232通信转换模块将CAN总线收到的角度传感器测出的空中目标方位角和高低角(10
ms一组测角、波特率为500 kbit/s)实时转换为RS232(波特率为115 200
bit/s)串行口数据,使主控计算机(PC104工控机)接收、处理和显示;同时将RS232输出的主控计算机命令转换为CAN总线数据。经实践证明,该模块工作稳定、可靠,且成本低,完全能够满足系统的指标要求,取得了良好的应用效果。<BR>
<BR>
</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD bgColor=#f7f7f7 height=30>
<DIV align=right><FONT color=#ff6600>更新时间: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>相关链接</FONT></STRONG></TD></TR>
<TR>
<TD align=right width="5%" height=23>
<LI></LI></TD>
<TD colSpan=2><A title=基于AT89C51的湿度检测系统设计与研究
href="http://www.ic37.com/document/18816.htm">基于AT89C51的湿度检测系统设计与研究</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的电脑钥匙外围电路设计
href="http://www.ic37.com/document/20085.htm">基于AT89C51RC的电脑钥匙外围电路设计</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单片机在无线数据传输中的应用
href="http://www.ic37.com/document/1075.htm">AT89C51单片机在无线数据传输中的应用</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单片机高速串行输出口设计
href="http://www.ic37.com/document/1598.htm">AT89C51单片机高速串行输出口设计</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在时隙变换和控制中的应用
href="http://www.ic37.com/document/459.htm">单片机微处理器AT89C51在时隙变换和控制中的应用</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的电源切换控制器的设计与实现
href="http://www.ic37.com/document/2742.htm">基于AT89C51的电源切换控制器的设计与实现</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的电流源设计
href="http://www.ic37.com/document/2017.htm">基于AT89C51的电流源设计</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设计的音频信号均幅控制放大器
href="http://www.ic37.com/document/17866.htm">用SG270/LM4884和AT89C51设计的音频信号均幅控制放大器</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型单片机的号音自动播放器设计
href="http://www.ic37.com/document/1260.htm">基于AT89C51型单片机的号音自动播放器设计</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通信转换模块的设计与实现.files/js_copyright.js"></SCRIPT>
</TD></TR></TBODY></TABLE><!-- InstanceEnd --></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -