- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CAN与LAN转换接口设计
CAN与LAN转换接口设计
摘要:本文在分析工业控制现场现状的基础上给出了基于STM32的CAN与LAN转换接口的设计过程。该设计实现了CAN多机通信和LAN网络通信,并在此基础上实现了小型Web服务器,具有非常重要的现实意义。
关键词:CAN;LAN;STM32
中图分类号:S611文献标识码:A文章编号:
1 引言
CAN现场总线是一种开放式、数字化、多点通信的控制系统局域网络。目前,底层现场网络大多是基于现场总线构建的,而上层管理信息网络为了便于与Internet连接,大多采用局域网架构。如果能将现场总线与局域网互联的话,可使过程控制更加紧凑,达到提高效率和降低成本的目的[1]。
2 系统整体框架结构
2.1 系统各部分选择
系统处理器选择的是意法半导体公司的STM32F103系列,CAN收发器选择的是Philips公司的TJA1050,最高速率1M波特,与CAN总线速率相适应[3]。隔离器选择的是ADI公司的ADuM1201,能够适应强干扰环境。网卡是DAVICOM公司的DM9000AEP,比常用的RTL8019AS更方便实用。TCP/IP协议栈选择的是由瑞典计算机科学学院的Adam Dunkels开发的uIP协议栈。
2.2协议转换
CAN总线没有主从之分,但人们习惯的将数据汇总到一处,所以人为规定转换接口为主机。主机在软件编写时把从CAN总线获取的数据转存到uIP协议栈的缓存中,由uIP的定时器定时发送至PC机。这个过程从CAN通信软件的角度上来说属于传输层之间的通信,而从TCP/IP协议栈的角度上来说,转存的数据到达了TCP/IP协议的应用层,然后逐层调用,传输至链路层,后经网线传输至PC机的底层,之后由PC机的应用层作出相应的处理。
3 系统的具体实现
系统主要是MCU与CAN节点的通信,MCU完成数据的转存和MCU与LAN网络的通信。其中设计的重点在MCU与CAN节点和LAN网络的通信。
3.1 MCU与CAN节点的通信
程序的编写采用ST公司的库函数实现,测试时使从机发送数据,主机接收到后将数据返回至从机,从机将发送和接收到的数据显示出来[4]。
软件编写时使从机每次发送的数据自增1,在接收时通过CAN过滤器过滤,通过ID号来识别。为了主程序的简洁和程序的健壮,数据的发送和接收都放在中断中进行。在CAN接收???断之后,首先将数据存至FIFO中,然后判断帧ID、帧格式和数据长度是否是所要进行通信的节点。如果不是,则对此帧数据不做处理;如果是,则将数据存放至全局变量中,并设置标志位以便被其他文件调用。
3.2 MCU与LAN网络的通信
3.2.1 uIP协议栈的应用
uIP实现了简单的TCP/IP协议栈。简单说来,当它在与PC机进行通信时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。同时uIP可以看作是一个代码库为系统提供确定的函数。图2展示了uIP、系统底层和应用程序之间的关系[5]。uIP主要提供了三个函数到系统底层:uip_init(), uip_input(),和uip_periodic()。其与应用程序的主要接口是UIP_APPCALL()。应用程序必须提供一个回应函数给uIP。当网络或定时事件发生时,调用回应函数。用户需要将应用层入口程序作为接口提供给uIP协议栈,并将这个函数宏定义为UIP_APPCALL()。这样,uIP在接收到底层传来的数据包后,在需要送到上层应用程序处理的地方,调用UIP_APPCALL()。在不用修改协议栈的情况下可以适用于不同的应用程序。最上边是用户编写的应用程序,宏定义为UIP_APPCALL()。uIP协议栈在运行的时候,往上会自动调用用户编写的应用程序,往下会调用网络设备驱动程序。网络设备驱动具体是指DM9000AEP的驱动程序。
uIP的应用层Protosocket库对uIP协议栈提供类似传统BSD套接字的接口。其简单的使用模板如下:
PSOCK_BEGIN(s-p);
PSOCK_SEND(s-p,telephone,11);
if(PSOCK_NEWDATA(s-p))
{ PSOCK_READBUF(s-p);
//PSOCK_READTO(s-p, n);
if(s-inputbuffer[0] == 1){PSOCK_CLOSE(s-p);}}
PSOCK_END(s-p);
3.2.2 嵌入式Web服务器的实现
嵌入式Web服务器是将网页数据存储在转换MCU内,通过PC机保留的80端口
文档评论(0)