首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于ENC28J60的嵌入式以太网/CAN网关设计
来源:本站整理  作者:佚名  2009-05-19 11:26:52




2.1.2 数据的接收与发送
    LPC2294的每个CAN控制器中有3个发送缓冲区,发送数据时先查询CANSR寄存器是否空闲,若空闲才能写入数据,然后判断报文的类型,根据报文类型调用相应的发送函数,即对数据进行封装并写入发送缓冲区,最后调用发送命令。为了提高效率,接收数据采用中断方式,首先在CANopen的初始化程序中要使能接收中断,当有中断发生,读取CANICR寄存器,判断接收中断标志是否置位,如果有则判断报文的类型,根据报文类型调用相应的接收函数,处理接收缓冲区的数据。
2.1.3 异常处理
    在总线发生严重故障的情况下,CAN节点脱离总线,此时下述寄存器位被置位为CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CAN-MOD的RM位。RM将许多CAN控制器功能复位和禁止。软件下一步必须置零RM位。发送错误计数器将递减计数总线释放条件(11个连续的隐性位)的第128个错误。软件通过读取Tx错误计数器对计数器递减计数的情况进行监测。
2.2 以太网通信软件设计
2.2.1 ENC28J60的初始化
    LPC2294。对ENC28J60的各种操作均通过SPI接口进行,包括寄存器的设置、数据的发送和接收。LPC2294的SPI工作在主动方式,即ENC28J60的SPI时钟信号由LPC2294提供。ENC28J60初始化内容主要有定义ENC28J60发送缓冲区的大小,设置MAC地址与IP地址、子网掩码、初始化LEDA、LEDB显示状态,设置ENC28J60工作模式。
2.2.2 TCP/IP协议
    该设计采用嵌入式系统中广泛应用的LwIP协议栈。LwIP TCP/IP实现的特点是在保持协议主要功能的基础上减少对RAM的占用,这使协议栈LwIP适合在低端嵌入式系统中使用。LwIP协议栈应用到的协议有ARP,IP,IcMP,TCP,UDP,其具有滑动窗口、拥塞控制和接收分片的分组功能。在LwIP中可以有多个网络接口,每个网络接口都对应一个strut netif()。netif包含了相应网络接口的属性、收发函数。采取调用netif的方法netif→inpln()及netif→output()进行以太网packet的收、发等操作。在驱动中主要进行的就是实现网络口的收、发、初始化以及中断处理。LwIP协议中没有提供HTTP协议,所以需要用原始API函数编写HTTP应用程序。
2.3 以太网/CAN双向协议转换
    整个设计中最为关键的就是CAN协议与TCP/IP协议的相互转换。协议转换流程图如图6所示。

    其具体过程如下:当网关接收到数据,首先判断数据类型,如果是从CAN接口接收CAN协议报文,便分离出数据部分,再将报文数据部分按系统规定的应用层格式进行封装,然后将应用层数据存入以太网接口发送缓冲区,由该接口在数据前面依次添加TCP或UDP头、IP头、以太帧头,最后封装成以太帧后,通过以太网接口发往以太网。若接收到的以太网数据,数据转换过程相反,依次去掉IP头、TCP或UDP头和应用层头,再将应用层数据按CAN报文格式封装好后存入CAN接口发送缓冲区,由CAN接口发往CAN网络中相应设备。若应用层数据长度大于8 B,则还需将数据以8 B为一组进行拆分。


3 结 语
    符合IEEE802.3协议的ENC28J60不仅能提供以太网通信的相应功能,而且体积小,能够简化设计,可以设计出较小的嵌入式网关。用上述方法构建的通信网关可实现以太网与CAN总线之间的协议转换,为以太网与CAN总线网络的互联提供了一种传输速度快,成本低,稳定性和安全性高的解决方案。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:37,917.97000 毫秒