基于Linux的PC104总线与CAN总线通讯设计.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于Linux的PC104总线与CAN总线通讯设计.docx》由会员分享,可在线阅读,更多相关《基于Linux的PC104总线与CAN总线通讯设计.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于Linux的PC104总线与CAN总线通讯设计ronggang导语:PC104嵌入式工业计算机由于其小尺寸构造、堆栈式连接、轻松总线驱动的特点得到了广泛的应用。现场总线领域中,CAN总线得到了计算机芯片商的广泛支持,他们纷纷推出直接带有CAN接口的微处理器MCU芯片1引言PC104嵌入式工业计算机由于其小尺寸构造、堆栈式连接、轻松总线驱动的特点得到了广泛的应用。现场总线领域中,CAN总线得到了计算机芯片商的广泛支持,他们纷纷推出直接带有CAN接口的微处理器MCU芯片。带有CAN的MCU芯片总量已经到达1亿3000万片,因此在接口芯片技术方面,CAN已经遥遥领先于FF,PRO-FIBUS,L
2、ONWORKS等其他所有现场总线。但是PC104总线不能与CAN总线直接通讯,因此在CAN总线控制系统中难以运用。针对以上问题,以AVR单片机为协处理器设计了PC104总线与CAN总线的转换卡并且考虑到PC104嵌入式工业计算机上通常运行Linux操纵系统的特点,编写了转换卡Linux下PC104总线访问双口RAM的驱动程序。该转换卡运用在工业控制系统中,实际说明可以稳定可靠地运行。2硬件局部PC104到CAN总线转换卡的硬件系统框图如图1所示。在PC104总线与CAN总线的通讯中,要考虑的主要问题是PC104总线与CAN总线数据同步问题。PC104总线与CAN总线的总线速度存在很大差异,针对
3、这样的问题通常采用的方法是使用双端口RAM或者FIFO作为缓冲器,这里使用双端口RAM作为数据缓冲,同时在双端口RAM中预留几个字节作为ATmega64处理器与PC104嵌入式计算机的软握手信号,通过以上方法完成PC104总线与CAN总线的数据同步。EPM7128为Altera的CPLD,这里使用CPLD主要用于PC104到CAN总线转换卡的地址译码。CAN总线通讯选用SJA1000CAN总线控制器实现,为了适应工业现场恶劣的电磁环境,在SJA1000与PC82C250中经过了光隔处理。2.1PC104总线与IDT7134接口电路PC104总线与IDT7134接口电路图如图2所示。PC104嵌
4、入式计算机为了读取双端口RAMIDT7134的数据。首先将IDT7134映射到PC104嵌入式计算机的存储器空间,使用SMEMR、SMEMW作为IDT7134的OER,RW控制信号。另外利用CPLDEPM7128将PC104总线的高3位地址SA19、SA18、SA17译码作为IDT7134的片选信号。2.2ATmega64与IDT7134接口电路处理器ATmega64采用的是地址线、数据线分时复用技术,因此需要进展地址锁存。EPM7128内使用VHDL硬件描绘语言设计了该地址锁存器。ATmega64与IDT7134接口电路如图3所示。2.3CPLDEPM7128内部逻辑CPLDEPM7128在
5、整个设计中主要完成译码,与地址锁存的功能。在Quartus6.0环境下,通过VHDL硬件描绘语言,完成上述功能。其程序源码如下:在上面的VHDL代码中CSSJA1000为SJA1000片选信号,CS7134L为IDT7134左端口片选,CS7134R为IDT7134右端口片选。3软件局部要实现PC104总线与CAN总线的数据通讯,在上面的硬件设计中已经提到采用的是双端口RAM作为数据缓冲的方法,其中涉及在双端口RAM中开拓数据区作为PC104嵌入式PC机与ATmega64的软握手标志。握手经过要在PC104嵌入式PC机与ATmega64的软件程序中实现,其经过如下:首先在双端口RAM中开拓两个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linux PC104 总线 CAN 通讯 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内