CAN总线-PROFIBUS-DP总线网关的实现方法
3.2 PROFIBUS-DP总线接口电路
PROFIBUS-DP总线接口的硬件电路也由四部分所构成,微控制器89C52(2),PROFIBUS-DP通信控制器协议芯片SPC3,光耦 HCPL7101和6N137,RS485总线驱动电路。图2为PROFIBUS-DP通信控制器到RS485总线驱动器的硬件电路图。
89C52(2)主要负责控制SPC3,实现PROFIBUS-DP总线数据的转换与共享。
SPC3已集成了PROFIBUS-DP物理层的数据收发功能,可独立处理PROFIBUS DP协议,另外SPC3内部还集成有1.5k的双口RAM,作为SPC3与用户程序之间的接口,并且AT89C52(2)可对SPC3内部RAM访问。
尽管SPC3已经集成了物理层的数据传输功能,但它不具备RS-485的驱动接口,因此添加了RS-485的驱动电路。
3.3 双口RAM的接口电路
两种总线数据的共享与传递是通过双口RAM实现的,系统里选用了器件IDT7130。它是高速的1K双口静态RAM。该器件提供两个独立的端口,分别有独立的控制、地址和I/O引脚,并允许独立的异步读写访问内存的任何地址,自动的电源管理特性由CE控制,允许芯片上的每一个端口电路进入一个非常低的电源模式。IDT7130的片内总线仲裁电路具有BUSY和INT两种总线仲裁方式。基于所采用的单片机型号,在系统里采用了中断仲裁方案,这种方式的工作原理是一个内存地址(邮箱或者信息中心)被指派给每个端口。左端口的中断标志被宣称当右端口写到内存地址3FEH时,左端口通过访问3FE内存地址清除中断。相似的,当左端口写内存地址3FFH时右端口标志被宣称,为了清除这个中断标志,右端口必须访问内存地址3FFH,系统里3FE和3FF两个单元的内容赋予新的内涵,即定义两个码0FFH和00H。其中0FFH代表发送命令要求对方传送数据,而00H代表发送的是对方所要求的数据。系统里两个CPU与双口RAM的连接如图3。双口RAM的剩余的存储单元被分为四大部分,其中0000H-00FFH这256个单元用来存储CAN总线上传来的数据或地址,并且相邻的两个单元用于存储一个CAN子站的数据信息;0100H-01F9H这250个单元用来存储PROFIBUS总线上传来的数据或地址,相邻的两个单元用于存储一个PROFIBUS子站的信息,另外03FCH单元用于存放CAN总线设备所要读的PROFIBUS站点的ID号,03FDH单元用于存放PROFIBUS总线设备所要读的CAN站点的ID号。
4 系统软件设计
网关的软件可
分为两大部分,一部分用于负责CAN总线的数据通信,另一部分用于负责PROFIBUS总线的数据通信。
每侧的程序根据功能又可以分为三个子模块:协议芯片初始化程序,接受数据接受子程序,数据发送子程序。其中数据接受子程序考外部中断触发执行。下面以网关的CAN总线接口侧程序为例,列出程序流程图,PROFIBUS侧的接口程序与之相似,就不再赘述。
评论