新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 数控同步现场总线与CAN总线网关的设计

数控同步现场总线与CAN总线网关的设计

作者: 时间:2016-12-20 来源:网络 收藏

点击放大图片

NCSF数据帧头部长18字节,图4为NCSF数据帧的头部结构。EthAREA六个字节填充0xFF,使NCSF帧能够通过以太网交换设备;帧的总长度G_Length;两个全局控制字G_CTRLI和G_CTRL2;①数据帧标识G_mtype;②帧类型标识G_stype;③从站计数器G_sno。

点击放大图片

图4 NCSF帧头部结构

在DM9000的设备驱动和NCSF协议中,为了方便管理每个NCSF数据包及其控制信息,特设计数据结构ncsf buff。

点击放大图片

在ncsf buff中next和prey使所有需发送的数据包构成一个双向链表;cb为数据包状态控制字,保存此数据包当前的状态和控制信息,ncsf buff中最重要的几个成员变量为head、data、tail和end,这四个成员变量指向同一连续内存区域的不同位置,其结构和关系如图5所示。

点击放大图片

图5 ncsf_buff数据结构

在创建nesf_buff的同时会申请一段足够容纳最大的NCSF数据帧2倍的连续内存,head指向这一块内存的首地址,end指向其尾部,data指向head+LEN的位置,在tail和data之间是NCSF有效数据,即在data前预留LEN长空闲空间,以便在此有效数据前扩展数据包头部和其它数据,tail预留的空闲空间用于在尾部扩展有效数据。有效数据区前后预留的空闲空间可以避免在数据包扩展时重新分配内存和拷贝相关数据,由此提高了发送接收数据包的速度。

3.2 CAN总线接口模块

MPC2515是一款独立的CAN控制器,完全支持CAN2.0B技术规范。该器件能够收发标准和扩展的数据帧以及远程帧。MPC2515自带两个验收屏蔽寄存器、六个验收滤波寄存器,这些寄存器用于过滤不必要接收的报文,它们可以有效降低微控制器的负担。MPC2515和S3C2440之间的连接通过SPI实现。

图6中特别画出CAN模块的电源电路,为了增强CAN总线的抗干扰能力,MCP2515与总线收发器TJAl050之间采用高速光电耦合器6N137相连以实现电气隔离,而为了实现完全的电器隔离,6N137两端的电源也应该进行完全隔离,B0505S为它们提供了完全隔离的电源。

点击放大图片

图6 CAN模块电路简图

S3C2440通过特定的SPI命令与MPC2515进行交互,命令包含复位、读、写、读RX缓冲器、装载TX缓冲器、请求发送报文、读状态和位修改命令等。通过这些命令S3C2440可以读写CAN控制器的状态、发送CAN数据帧,以及重置CAN控制器。S3C2440通过SPI向MPC2515发出每个命令字节前,CS都需要被置为低电平。在任何操作期间CS都要保持低电平,操作完成后需要把CS置为高电平。

CAN模块的初始化依次为:软件复位、设置CAN总线的波特率、关闭中断、设置验收屏蔽寄存器和验收滤波寄存器、切换MPC2515到正常模式、清空接收和发送寄存器,最后开启相应的中断。

点击放大图片

点击放大图片

can_frame是CAN数据帧发送队列的数据结构。为了能够兼容CAN扩展报文接收,在can_frame中ext_f标志为0表示为正常报文,为1表示为扩展报文;rtr_f对应数据帧仲裁场中的RTR位;pri为报文的优先级。为0按照先入先出顺序出队,少数紧急指令为1,此报文优先出队被发送。



评论


技术专区

关闭