- 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/TCP嵌入式网关设计
导语:?为了解决CAN与以太网两种不同网络之间的数据交换,本文介绍了CAN现场总线和以太网数据通讯嵌入式网关的设计方法,实现了数据交换,并给出相应的硬件和软件原理 摘 要:为了解决CAN与以太网两种不同网络之间的数据交换,本文介绍了CAN现场总线和以太网数据通讯嵌入式网关的设计方法,实现了数据交换,并给出相应的硬件和软件原理。关键词:CAN总线; 以太网;TCP/IP协议0 应用背景: 在企业网络集成系统中,车间内部一般采用现场总线,而上层生产管理层采用以太网,两者采用工控机连接。现场总线通过PCI板卡连接到工控机,然后由工控机通过网卡连接到企业的管理层。这种连接方式成本高,开发周期长。针对这些情况,本文提出了一种基于微处理器的嵌入式CAN-以太网网关互连系统的设计方案,成功地实现以太网和CAN现场总线网络的直接数据传输。1 硬件设计: 硬件的实现方案有多种,对于TCP/IP协议,可以用软件来实现TCP/IP协议栈,也可以直接利用集成TCP/IP协议栈芯片,如W3100A。对于CAN协议,可以使用集成有CAN协议的微处理器如PIC18f258,也可以使用单独的协议芯片如SJA1000。本文采用的是微处理器P89C51RD2,外加CAN控制器SJA1000、CAN收发器P82c250以及网络芯片RTL8019AS,组成协议网关。 CAN网络采用SJA1000独立控制器,它是PHLIPS公司的PCA82C200控制器的替代产品。 以太网协议芯片采用台湾的Realtek公司生产的RTL8019AS,它是以太网控制器芯片,集成了介质访问控制子层(MAC)和物理层的性能,可以方便地设计基于ISA总线的系统,简单的与通用单片机进行接口。另外,它还具有与NE2000兼容、软件移植性好,以及低价格廉等优点 。它提供给微控制器控制以太网的简单接口,使微控制器只需要对其进行相应读写即可完成对以太网的操作。电路中扩展一片62256,用于存储中转的数据,扩展x5045,用于芯片复位及存储网络地址,CAN节点地址等信息。这里仅给出RTL8019AS的硬件连线图。图1 RTL8019连线图2 软件设计: 软件设计分为CAN网络的软件设计和TCP/IP的软件设计,以及CAN到以太网通讯的程序设计。 2.1 CAN协议: CAN协议编程相对简单,只需要对SJA1000相应的寄存器进行读写操作即可。在该模式下,报文识别码为11位,在经过验收滤波器的筛选后,符合条件的报文才能被接收,并存入SJA1000接收缓冲区。识别码值越小,优先级越高。如果总线上出现报文冲突,优先级高的报文选占据总线。CAN节点间每次最多传送的数据为10个字节,以下是SJA1000的接收数据流程图:图2 CAN总线接收数据流程图 2.2 以太网的驱动编写: RTL8019的操作是比较简单的,驱动程序只需要将要发送的数据按一定的格式写入芯片并启动发送命令,RTL8019会自动把数据包转换成物理帧格式在物理信道上传输。反之,8019收到物理信号后将其还原成数据,按指定格式存放在芯片RAM中以便主机程序取用。简言之就是8019完成数据包和电信号之间的相互转换。以太网协议由芯片硬件自动完成,对程序员透明。驱动程序有3种功能:芯片初始化、收包、发包。 RTL8019AS负责网络上数据的接收和发送,为了能够使其启动并处于准备接收或准备发送数据的状态,必须对相应的寄存器进行初始化,这些寄存器包括CR、DCR、 RBCR、 PSTART、 PSTOP 、ISR、IMR 、PAR0-PAR5、 MAR0-MAR7、 CURR、TCR、RCR等。 Void Intnet() { Reg00=0x21; //使芯片处于停止模式,这时进行寄存器设置 Delay_MS(10); //延时10毫秒,确保芯片进入停止模式 page(0); Reg0a=0x00; //清rbcr0 Reg0b=0x00; //清rbcr1 Reg0c= 0xe0; //RCR,监视模式,不接收数据包 Reg0d= 0xe2; //TCR,loop back模式 Reg01=0x4c; Reg02=0x80; Reg03=0x4c; Reg04=0x40; //TPSR,发送起始页寄存器 Reg07=0xff; //清除所有中断标志位,中断状态寄存器 Reg0f=0x00; //中断屏蔽寄存器清0,禁止中断 Reg0e=0xc8; // 数据配置寄存器,8位dma方式 page(1); Reg07=0x4d; Reg08=0x00; Reg09=0x00;
文档评论(0)