工控嵌入式系统技术Linux驱动的PC104与CAN高速通信奇迹

  • 行业资讯
  • 2024年12月23日
  • 1 引言 在工业控制领域,嵌入式系统的应用日益广泛。PC104总线作为一种常见的嵌入式接口标准,其小巧、高效、稳定得到了广泛认可。而CAN总线则是现场总线技术中的一员,以其高可靠性和实时性赢得了众多应用场合。然而,由于PC104总线与CAN总线通信不兼容,导致它们不能直接进行数据交换。在解决这一难题上,我们设计了一款基于Linux操作系统的PC104到CAN转换卡,并开发了相应的驱动程序。 2

工控嵌入式系统技术Linux驱动的PC104与CAN高速通信奇迹

1 引言

在工业控制领域,嵌入式系统的应用日益广泛。PC104总线作为一种常见的嵌入式接口标准,其小巧、高效、稳定得到了广泛认可。而CAN总线则是现场总线技术中的一员,以其高可靠性和实时性赢得了众多应用场合。然而,由于PC104总线与CAN总线通信不兼容,导致它们不能直接进行数据交换。在解决这一难题上,我们设计了一款基于Linux操作系统的PC104到CAN转换卡,并开发了相应的驱动程序。

2 硬件部分

硬件设计采用双端口RAM作为数据缓冲区,通过ATmega64处理器与IDT7134接口电路实现数据同步。此外,我们还使用CPLD EPM7128来完成地址译码和软握手信号管理。为了适应工业环境中的电磁干扰,我们对SJA1000 CAN 总线实现进行了光隔处理。

2.1 PC104总线与IDT7134接口电路

PC104嵌入式计算机通过SMEMR*、SMEMW*控制IDT7134的OER、R/W信号,而EPM7128则负责将高3位地址SA19、SA18、SA17译码为片选信号。

2.2 ATmega64与IDT7134接口电路

ATmega64采用地址锁存技术,以确保正确地访问IDT7134。EPM7128内含VHDL硬件描述语言设计的地址锁存器,对ATmega64和IDT7134之间的通信至关重要。

2.3 CPLD EPM7128内部逻辑

CPLD EPM7128在QuartusⅡ6.0环境下编写VHDL代码,为整个设计提供关键功能,如片选信号生成和地址锁存器控制等。

3 软件部分

软件实现涉及在双端口RAM中预留软握手标志字段,与ATmega64进行同步通信。当有新的数据需要发送时,会写入缓冲区并设置标志位;而ATmega64则会监控这个标志位,当检测到变化时,就从缓冲区读取并发送到CAN总线上。这一过程保证了双方有效沟通,同时保持了实时性。

3.1 ATmaga64处理器程序

ATmaga64程序负责初始化SJA1000,以及响应来自PC104嵌入式计算机的请求,从而完成实际的数据传输工作。

3.2 PC104总线访问双端口RAM Linux驱动程序

Linux驱动分为三个主要部分:设备配置初始化、中断服务子程序以及I/O请求服务程序。在初始化阶段,将物理内存映射至虚拟空间以便对之操作,然后定义文件系统结构以供用户调用。此外,还需定义卸载函数以释放资源,并编写读取函数以支持用户获取双端口RAM中的信息。