基于ARM7的MVB_CAN网关设计
MVBC01端口ICA (MVB Input Data ChannelA)和ICB(MVB Input Data Channel B)分别为MVB输入数据通道A和输入数据通道B,来自物理层收发器的MVB信号可由此端口送入MVBC01中。MVBC01的端口OC (MVB Output Data Channel)是MVB的数据输出端口,数据经此端口可发送至物理层收发器。MVBC端口SF(Send Frame)的输出信号可作为物理层的使能信号,该信号有效时,表示一个报文正在通过MVBC端口OC(MVB Output Data Channel)输出。
本系统CAN侧采用的是三星公司生产的S3C44BOX微控制器,S3C44BOX是韩国三星公司推出的一款基于ARM7TDMI核的16/32位RISC高性价比、低功耗的嵌入式微处理器。该芯片的片上资源非常丰富,因为它本身带有可满足CAN2.0B协议的CAN控制器,故可省去CAN控制器和单片机之间的硬件连接。
CAN收发器采用PHILIPS公司的PCA82C250。主要提供对总线的差动发送能力和对CAN控制器的差动接收能力。当微处理器对CAN控制器进行
相应配置后,收发器即可自动完成相应的CAN总线动作。
MVBC01的引脚除在MVBC01复位时作为复位完成信号外,还可作为MVBC01接收到网络数据时的通知信号。它的状态通过s3c44b0x的传送给S3C44BOX。S3C44BOX轮询检测,若检测到跳变发生且MVBC01判断此信号为网络控制数据接收事件,则通过I2C接口读取MVBC01的数据。MVBC01的复位可通过微控制器的PA0端口触发。当MVBC01复位完成后,再通过/INT通知微控制器。MVBC01的控制口配置成串行方式的I2C接口,S3C44BOX通过该接口对MVBC01的寄存器进行初始化和其它控制操作。其网关硬件连接图如图5所示。
由于MVB-CAN网关两侧连接的是两个现场总线,因此,它们实际的工作就是通过对信息的重新封装以使MVB总线和CAN总线能够读取和传
输。
由于CAN数据帧包含8个字节的数据,而MVB从帧最多包含256个字节的数据,因此,从CAN侧接收到的数据要通过MVB传输,就需要按照一定的格式把CAN帧中的数据组合成MVB帧的数据格式;同样,从MVB侧接收到的数据要通过CAN传输,也需要按照一定的格式对MVB帧中的数据进行分帧处理。另外,为了实现透明传输,还需要把MVB侧的过程数据的数据集与CAN侧11位标志符对应起来。
本文采用的方案是建立一种规范的方式来定义MVB端的MVB各种变量的含义,如所在端的端口地址、长度、以及变量在数据集中的偏移量
等。而后再将这些信息按照一定的规则和CAN总线侧的帧的标识符等信息对应成一个表格,这样,在CAN侧的数据接收就可以借助这个表格来
完成。这样做的优点在于把一些必要的信息(位偏移、长度等)按照约定的形式来实现共享,因而不再需要在数据集中分出空间来传输一些(包
括长度和偏移等)信息。本文把表格定义为应用层转换表(inbus-to-outbus或者out-to-inhus)。这里的端口指的是一种既可以被总线访问,又可以被应用处理器访问的存储器,它在MVB中是用来寻址的,数据的发送是通过应用将数据放入端口,数据的接收则是从端口中取数据放到应用中去。至于端口与端口间的数据拷贝,则是通过主轮询方式来实现的。当主节点轮询到需要发送数据的端口(源端口)时,便会产生从源端口到宿端口(数据接收端口)的数据拷贝。数据集在MVB中其实就是一般的纯数据,之所以称它为集,主要是因为MVB中一帧的数据较长,通常我们把多个变量的信息放在一个集中(一个帧中1来传输,这样做较为经济。
本系统的软件模块主要有CAN模块、MVB控制模块、总任务处理模块、以及数据缓冲模块。其中CAN控制模块主要负责从CAN数据包中解析
出完整的CAN协议报文,并存入数据缓冲区2,同时将数据缓冲区A中的CAN数据封装成完整的CAN协议报文后发送到CAN总线上;MVB控制模块主要负责从MVB数据包中解析出完整的MVB协议报文,并将其存人数据缓冲区1,同时再将数据缓冲NB中的MVB数据封装成完整的MVB协议报文后发送到MVB上;总任务处理模块主要起综合调度和监控作用,同时,它还用于整个传输过程中的中断响应;缓冲区模块主要负责将CAN侧和MVB侧接收的数据存储到缓冲区中。
网关程序的整体设计思路是当CAN侧数据发往MVB侧时,首先使CAN侧检测到有数据传过来,总处理模块通过调用CAN模块处理函数来接收数据,并通过对CAN帧的解码来获取CAN标志符,然后调用应用层转换表(inbus-to-outbus)以查询出相应的MVB端口的相关变量,接着再把相
应的数据发送到数据缓冲区2中,最后由总任务处理模块通知MVB控制模块将缓冲区2中数据取走,并对数据进行MVB帧格式的编码,再发送到
MVB总线上后释放缓冲区。
同样,当MVB侧数据发往CAN侧时,首先将数据发送到MVB上,然后由总任务处理模块检测MVB上是否有数据传输,并通知MVB控制模块接收数据,同时对信息进行解码分析,从中获取端口相关变量,依据端口相关变量查询应用层转换表(out-to-inbus),找出对应CAN标识符,同时将数据发送到数据缓冲区1。此时,总任务处理模块可通过CAN控制模块从缓冲区1中提取数据并进行完整的CAN报文封装,再发送到CAN总线上并释放缓冲区A。其中,MVB侧发往CAN侧的主程序流程如图6所示。
- 直接变频接收机设计可实现多标准/多频带运行(10-11)
- 基于蓝牙芯片的无线通信模块设计与开发(02-03)
- 无线通信网络设计与现场测试(10-10)
- WiMAX数据传输加密方案设计与实现(05-25)
- 高性能TD-SCDMA接收机的设计(03-15)
- 初步设计WiMAX射频系统(03-29)