基于Linux的PC104总线与CAN总线通信设计方案

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入

 CPLD EPM7128在整个设计中主要完成译码,与地址锁存的功能。在QuartusⅡ6.0环境下,通过VHDL硬件描述语言,完成上述功能。其程序源码如下:

  在上面的VHDL代码中CSSJA1000为SJA1000片选信号,CS7134L为IDT7134左端口片选,CS7134R为IDT7134右端口片选。

  3 软件部分

  要实现PC104总线与CAN总线的数据通信,在上面的硬件设计中已经提到采用的是双端口 RAM作为数据缓冲的方法,其中涉及在双端口RAM中开辟数据区作为PC104嵌入式PC机与ATmega64的软握手标志。握手过程要在PC104嵌入式PC机与ATmega64的软件程序中实现,其过程如下:首先在双端口RAM中开辟两个缓冲区,分别用来缓冲CAN总线的收发数据。当PC104总线有数据发到CAN总线上时,先将数据写到双端口RAM的CAN数据发送缓冲区,然后向双端口RAM预留的标志字段写入特定值,通告ATmega64有数据要通过CAN总线发送,ATmega64采用查询的方式检测这个标志字段,当检测到标志字段的特定值时,就读取双端口RAM的CAN数据发送缓冲区,同时将读到的数据发到CAN总线上。上述过程后,ATmega64程序将标志字段复位。至此完成了PC104总线对CAN总线的数据发送。CAN总线对PC104总线的数据发送与此过程相反。

  3.1 ATmaga64处理器程序

  ATmaga64处理器对CAN总线进行底层的读写工作,同时将数据写到双端口RAM IDT7134 中,并将IDT7134中的首存储字节设为标志位,通知PC104嵌入式PC机有数据被更新,要求PC104嵌入式PC机对IDT7134进行读操作。基于以上的过程ATmaga64处理器程序包括对SJA1000初始化程序、SJA1000中断处理程序以及访问IDT7134的程序。

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

  Linux驱动从结构上分为3个部分:

  (1)设备的配置和初始化,包括检查设备的存在、状态,设备的注册及相关设备驱动程序的初始化。一般这部分程序仅在初始化时调用一次,他包含在init_module()例程中。

 

[1][2][3][4]

最好的感觉就是你什么都跟我说。

基于Linux的PC104总线与CAN总线通信设计方案

相关文章:

你感兴趣的文章:

标签云: