基于WinCE环境的CAN适配卡驱动程序的设计与实现

时间:2009-10-22来源:网络

3.2 CAN_Read模块的实现

如果CAN接收到一个报文,该报文通过验收滤波器验收并放入接收FIFO,则产生一个接收中断。中断服务程序接收到这个中断后,将这个接收到的报文传送到由驱动程序维护的报文存储区中,并置位命令寄存器的释放缓存区标志RRB。CAN_Read函数并不等待来自CAN控制器的接收报文成功中断,而是读取保存在由驱动程序维护的报文存储区中的报文。CAN_Read函数的流程图如图4所示。

4 CAN_Read函数的流程图

3.3中断服务线程模块的实现

在CAN适配卡的SJA1000控制器中,报文的发送与接受是采用中断方式来完成的。以报文的中断发送为例,在向CAN数据寄存器中写入报文并且向命令寄存器写入发送命令后,系统通过调用WaitForSingleObject函数将当前的发送线程挂起在某个事件的任务队列中,触发该事件将会使系统调度挂起在该事件的任务队列中的任务继续执行,而该事件只有在CAN控制器产生发送成功中断后在中断服务线程中触发。中断服务线程程序流程图如图5所示。

5 中断服务线程程序流程图

驱动程序中的另外两个模块主要由CAN_Close 、CAN_IoControl函数来完成,前者主要负责在关闭CAN句柄时资源的回收任务,后者主要用于设置CAN的工作参数,如波特率,报文格式等,在此不作过多介绍。

4 结束语

本文的CAN适配卡驱动程序的开发环境:上位机是普通的PC机,下位机的操作系统是WinCE,硬件是深圳蓝天工控有限公司的嵌入式PC/104总线主板PCM3568。驱动程序已经过测试、验收。CAN适配卡驱动程序运行可靠、通信稳定。产品已经被多个产家应用于实际的工业控制领域。

参考文献

[1] 李蒙 Windows CE驱动程序开发[J] 计算机工程与设计,2004

[2] 徐平 WindowsCE.Net下CAN卡的驱动程序设计[J] 单片机及嵌入式系统应用 2004-12

[3] 邬宽明.CAN总线原理和应用系统设计[M]. 北京航空航天大学出版社,1996

[4] 绕运涛 现场总线CAN原理与应用技术[M] 北京航空航天大学出版社,2002

[5] 孙光武 现场总线适配器的软硬件设计[J] 电子技术应用 1999.8

1 2 3

关键词: 驱动程序 设计 实现 适配 CAN WinCE 环境 基于 CAN

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

Copyright ©2000-2017 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.