基于Linux的PC104总线与CAN总线通信设计
1 引 言
PC104嵌入式工业计算机由于其小尺寸结构、堆栈式连接、轻松总线驱动的特点得到了广泛的应用。现场总线领域中,CAN总线得到了计算机芯片商的广泛支持,他们纷纷推出直接带有CAN接口的微处理器(MCU)芯片。
带有CAN的MCU芯片总量已经达到1亿3 000万片,因此在接口芯片技术方面,CAN已经遥遥领先于FF,PRO-FIBUS,LONWORKS等其他所有现场总线。但是PC104总线不能与CAN总线直接通信,因此在CAN总线控制系统中难以运用。
针对以上问题,以AVR单片机为协处理器设计了PC104总线与CAN总线的转换卡并且考虑到PC104嵌入式工业计算机上通常运行Linux操作系统的特点,编写了转换卡Linux下PC104总线访问双口RAM的驱动程序。该转换卡运用在工业控制系统中,实际表明可以稳定可靠地运行。
2 硬件部分
PC104到CAN总线转换卡的硬件系统框图如图1所示。在PC104总线与CAN总线的通信中,要考虑的主要问题是PC104总线与CAN总线数据同步问题。PC104总线与CAN总线的总线速度存在很大差异,针对这样的问题通常采用的方法是使用双端口RAM或FIFO作为缓冲器,这里使用双端口RAM作为数据缓冲,同时在双端口RAM中预留几个字节作为ATmega64处理器与PC104嵌入式计算机的软握手信号,通过以上方法完成PC104总线与CAN总线的数据同步。EPM7128为Altera的CPLD,这里使用CPLD主要用于PC104到CAN总线转换卡的地址译码。CAN总线通信选用SJA1000 CAN总线控制器实现,为了适应工业现场恶劣的电磁环境,在SJA1000与PC82C250中经过了光隔处理。
2.1 PC104总线与IDT7134接口电路
PC104总线与IDT7134接口电路图如图2所示。
PC104嵌入式计算机为了读取双端口RAM IDT7134的数据。首先将IDT7134映射到PC104嵌入式计算机的存储器空间,使用SMEMR*、SMEMW*作为IDT7134的OER,R/W控制信号。另外利用CPLD EPM7128将PC104总线的高3位地址SA19、SA18、SA17译码作为IDT7134的片选信号。
2.2 ATmega64与IDT7134接口电路
处理器ATmega64采用的是地址线、数据线分时复用技术,因此需要进行地址锁存。EPM7128内使用VHDL硬件描述语言设计了该地址锁存器。ATmega64与IDT7134接口电路如图3所示。
2.3 CPLD EPM7128内部逻辑
CPLD EPM7128在整个设计中主要完成译码,与地址锁存的功能。在QuartusⅡ6.0环境下,通过VHDL硬件描述语言,完成上述功能。其程序源码如下:
在上面的VHDL代码中CSSJA1000为SJA1000片选信号,CS7134L为IDT7134左端口片选,CS7134R为IDT7134右端口片选。
相关文章
- 2022-10-10基于EVOC-EPI总线的工控机相关特性研析
- 2024-08-05弯管流量计取压孔实验研究
- 2024-08-17基于VC++·NET2003平台的脉动生物反应器的研制
- 2022-07-28基于嵌入式Linux的BACnet控制器软件设计
- 2022-12-30迷宫密封转子动力学特性的数值模拟
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。