📄 21ic can与以太网数据交换的研究与分析.htm
字号:
<TBODY>
<TR class=main>
<TD align=middle width="16%">名 称</TD>
<TD align=middle width="10%">位7</TD>
<TD align=middle width="11%">位6</TD>
<TD align=middle width="10%">位5</TD>
<TD align=middle width="11%">位4</TD>
<TD align=middle width="10%">位3</TD>
<TD align=middle width="11%">位2</TD>
<TD align=middle width="10%">位1</TD>
<TD align=middle width="11%">位0</TD></TR>
<TR class=main>
<TD align=middle width="16%">识别码字节1</TD>
<TD align=middle width="10%">ID.10</TD>
<TD align=middle width="11%">ID.9</TD>
<TD align=middle width="10%">ID.8</TD>
<TD align=middle width="11%">ID.7</TD>
<TD align=middle width="10%">ID.6</TD>
<TD align=middle width="11%">ID.5</TD>
<TD align=middle width="10%">ID.4</TD>
<TD align=middle width="11%">ID.3</TD></TR>
<TR class=main>
<TD align=middle width="16%">识别码字节2</TD>
<TD align=middle width="10%">ID.2</TD>
<TD align=middle width="11%">ID.1</TD>
<TD align=middle width="10%">ID.0</TD>
<TD align=middle width="11%">RTR</TD>
<TD align=middle width="10%">DLC.3</TD>
<TD align=middle width="11%">DLC.2</TD>
<TD align=middle width="10%">DLC.1</TD>
<TD align=middle width="11%">DLC.0</TD></TR>
<TR class=main>
<TD align=middle width="16%">TX数据1~8</TD>
<TD align=middle width="84%"
colSpan=8>发送数据字节1~8</TD></TR></TBODY></TABLE>
<P
style="TEXT-INDENT: 30px">本实验中用到P89C668的外部中断1。该中断由SJA1000引发,设置为当SJA1000收到来自另一节点的数据时,向P89C668发出中断信号。在中断处理程序中,P89C668读取并保存SJA1000中断寄存器的值,作为在相应程序中进行处理的依据。</P>
<P style="TEXT-INDENT: 30px">4.2 TCP/IP协议</P>
<P style="TEXT-INDENT: 30px">由于TCP/IP协议很复杂,涉及的内容很多。下面仅就几点作简要介绍。</P>
<P style="TEXT-INDENT: 30px">(1)封装和分层的概念</P>
<P
style="TEXT-INDENT: 30px">发送数据时要对数据进行逐层封装,既加上相应的首部,作为所经过每层的标识。具体原理如图3所示。接收到的数据是按一定结构封装好的,<IMG
height=456 hspace=1 src="21IC CAN与以太网数据交换的研究与分析.files/4e.gif"
width=280 align=right vspace=1
border=0>我们要根据前面的首部信息,判断数据应交付给下面哪一层,并将相应首部信息去除,这样依次向下传,到最后可以得到所传送的真正数据。具体原理如图4所示。</P>
<P style="TEXT-INDENT: 30px">(2)以太网驱动程序</P>
<P
style="TEXT-INDENT: 30px">以太网驱动程序是提供链路层物理接口与网络层交互的软件接口。网络层数据必须先交付给以太网驱动程序,由它将网络层数据打包交付给物理接口,完成数据发送。反之,以太网驱动程序在接收到数据时,要按照应用层可以接收的形式进行处理并交付给网络层。</P>
<P style="TEXT-INDENT: 30px">(3)ARP协议</P>
<P
style="TEXT-INDENT: 30px">即地址解析协议,提供逻辑地址到物理地址的动态映射。发送站必须知道接收站的物理地址才能对数据进行封装,才能在以太网中进行传输,因此只知道接收站的逻辑地址是不够的,必须事先通过ARP协议得到接收站的物理地址。</P>
<P style="TEXT-INDENT: 30px">(4)IP协议</P>
<P
style="TEXT-INDENT: 30px">即网络协议,提供一种不可靠的、无连接的服务,完成的功能有将运输层待发送数据封装成IP数据报,调用以太网驱动程序发送数据,从数据链路层接收数据,以及数据校验等。</P>
<P style="TEXT-INDENT: 30px">(5)TCP协议</P>
<P
style="TEXT-INDENT: 30px">即传输控制协议,是一种面向连接的、可靠的运输协议。UDP协议实现相同功能,但它只把数据报分组从一台主机发送到另一台主机,不保证可靠性。本文主要使用TCP协议进行数据交换,而没有采用UDP协议。实验中用到P89C668的定时器0中断,10ms中断一次,主要为了进行ARP老化处理,设置TCP超时标志。</P>
<P style="TEXT-INDENT: 30px">4.3 CAN与以太网的数据交换</P>
<P
style="TEXT-INDENT: 30px">数据交换原理简单说就是对从以太网中收到的数据进行分层。如果是TCP数据报,取出真正的数据,并将其存入一个开辟的数据区,对数据进行相应分析后<IMG
height=318 hspace=1 src="21IC CAN与以太网数据交换的研究与分析.files/4f.gif"
width=268 align=right vspace=1
border=0>,按照BasicCAN模式进行发送。反过来,将接收到的CAN数据存入另一数据区,除去地址和个数信息,将其余数据按照TCP/IP协议进行封装发送。具体流程图如图5所示。</P>
<P
style="TEXT-INDENT: 30px">由CAN接收引起外部中断后,保存SJA1000中断寄存器和状态寄存器的值,在CAN处理子程序中根据其值进行处理。当上到来自另一节点的数据,则将该数据存入相应缓冲区,并置位一标志位,在主程序中的TCP超时处理子程序中判断该标志位,如果为高则将该缓冲区中的数据拷贝到以太网发送缓部眍中,并将数据封装发送。当P89C668接收到来自以太网的TCP数据报,同样将一标志位置1,在CAN处理子程序(见图6)中,根据该标志位判断是否有数据要发送给另一节点。</P>
<P
style="TEXT-INDENT: 30px">在具体调试时,使一个CAN节点每隔一段时间向转换模块发送一些数据。该节点接收后,通过以太网转发给上位机,上位机通过超级终端显示接收的数据。同样,可以通过超级终端发送一些键入的数据,经过转换模块传给另一个CAN节点,从而改变它的一些内部数据。</P>
<P style="TEXT-INDENT: 0px"><B>5 小结</B></P>
<P
style="TEXT-INDENT: 30px">该实验只是实现了以太网与BasicCAN模式下CAN的简单数据交换,没有涉及CAN的高层协议和复杂错误处理。不过有了该实验的成功尝试,使实现PeliCAN模式下的转换以及加载完善的协议成为可能,可以说该实验为CAN和以太网的融合打下了坚实的基础。
</SPAN></P>
<P></P></DIV></TD></TR>
<TR>
<TD align=middle height=15>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD>
<DIV></DIV></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right height=2>
<TABLE cellSpacing=0 cellPadding=0 width="80%" border=0>
<TBODY>
<TR>
<TD width=75>【<A href="javascript:doPrint();">打印本稿</A>】</TD>
<TD width=8></TD>
<TD width=75>
<P>【<A
href="http://www.21ic.com/new_info/news/review.asp?title=CAN与以太网数据交换的研究与分析target="
_blank?>发表评论</A>】</P></TD>
<TD width=10></TD>
<TD width=79>【<A
href="http://www.21ic.com/new_info/news/sendmail.asp?num=CAN与以太网数据交换的研究与分析">推荐</A>】</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right height=2></TD></TR>
<TR>
<TD align=right height=2><A href="javascript:window.close();"><IMG
height=20 src="21IC CAN与以太网数据交换的研究与分析.files/close_c.gif" width=77
border=0 name=Image161></A><FONT
color=#ffffff>----</FONT></TD></TR></TBODY></TABLE><BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width=520 align=center border=0>
<TBODY>
<TR>
<TD vAlign=bottom align=middle width=114 bgColor=#999a76
height=1><IMG height=1 src="21IC CAN与以太网数据交换的研究与分析.files/blank.gif"
width=1></TD>
<TD width=466 height=1></TD></TR>
<TR>
<TD align=middle width=114 bgColor=#ece8db height=19>相关新闻</TD>
<TD width=466 height=19></TD></TR>
<TR bgColor=#999a76>
<TD colSpan=2 height=1><IMG height=1
src="21IC CAN与以太网数据交换的研究与分析.files/blank.gif" width=1></TD></TR>
<TR>
<TD colSpan=2 height=1></TD></TR></TBODY></TABLE>
<TABLE borderColor=#000000 cellSpacing=0 cellPadding=0 width=520
align=center border=0>
<TBODY>
<TR>
<TD vAlign=top>
<TABLE class=RelatedTable width="100%" border=0>
<TBODY>
<TR class=RelatedTr>
<TD class=RelatedTd>
<SCRIPT language=javascript
src="21IC CAN与以太网数据交换的研究与分析.files/about.htm"></SCRIPT>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR></TD>
<TD vAlign=top align=middle width=150 bgColor=#ece8db height=2>
<TABLE cellSpacing=0 cellPadding=1 width="100%" border=0>
<TBODY>
<TR>
<TD bgColor=#000000>
<TABLE cellSpacing=0 cellPadding=2 width=150 bgColor=#ece8db
border=0>
<TBODY>
<TR>
<TD>
<META content="Microsoft FrontPage 5.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<P><A href="http://www.21ic.com/custom/tek/tek.htm"><IMG
src="" border=0></A></P></TD></TR>
<TR>
<TD
height=5></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top colSpan=6></TD></TR>
<TR>
<TD vAlign=top colSpan=6 height=10></TD></TR>
<TR>
<TD vAlign=top bgColor=#999999 colSpan=6 height=2></TD></TR>
<TR>
<TD class=stxt vAlign=center align=middle colSpan=6
height=6></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
<TBODY>
<TR>
<TD class=s width=973 height=12></TD></TR>
<TR>
<TD class=s width=973 height=20>
<DIV align=center><FONT face="Arial, Helvetica, sans-serif"><!--start copyright-->
<DIV align=center><FONT color=black>
<TABLE cellSpacing=0 cellPadding=0 width=600 align=center border=0>
<TBODY>
<TR>
<TD align=middle width="100%" colSpan=2><BR>Better View:800*600 Best
View:1024x768 为了本系统能够更好的为您服务,请使用IE4.0或以上版本浏览器
<BR><BR>版权所有(C)21IC中国电子网 电话:010-82357510, 82357511 传真: 010-82357512
</TD></TR></TBODY></TABLE><!--start copyright--></FONT></DIV></FONT></DIV></TD></TR></TBODY></TABLE><BR></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -