首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

其中,接口管理逻辑(IML):[3]它接收来自微控制器的命令,控制CAN寄存器的寻址,并向微控制器提供中断和状态信息;发送缓存器:存贮发送到CAN网络上的完整信息;位流处理器(BSP):是一个控制发送缓存器和接收缓存器与CAN总线之间控制数据流的程序装置,同时具有执行错误检测、仲裁、总线填充和错误处理的能力;位定时逻辑(BTL)单元:主要监视串口的CAN总线,并处理与总线有关的位时序,使SJA1000同步于CAN总线上的位流;错误管理逻辑(EML):主要完成接收BSP的出错报告,并按照CAN协议完成错误界定, 从而使BSP和IML进行错误统计。
  CAN适配卡的硬件网络工作环境示意图如图2所示。

图2 CAN适配卡应用系统的总体结构图

  图2 中,通用微机的操作系统是WinCE,上位通用微机通过PC/104总线与CAN接口适配卡相连,CAN接口适配卡与具有CAN接口的串行芯片通过CAN总线进行数据交换,所采用的协议是CAN协议。在CAN协议中,报文的表示、传送和控制主要由4种类型的帧来完成[4]:数据帧,携带数据信息,由发送器发送到接收器;远程帧,主要用于请求发送具有相同标识符的数据帧,是通过总线发送的;出错帧标识总线错误,由检测出总线错误的任何总线单元产生;超载帧主要为当前的和后续的数据帧提供附加延迟。
  3 CAN适配卡驱动程序的设计与实现
  从引言部分可知,流接口可以为各种设备提供统一的访问接口,可以是字符设备、块设备、虚拟设备和网络设备等。CAN适配卡驱动程序的主要流程为[5]:应用程序调用函数CreateFile获取CAN设备句柄,文件系统将会调用CAN驱动例程中的CAN_Open来响应应用程序的请求。当应用程序调用ReadFile函数读取CAN设备上的字符时,文件系统将会调用CAN驱动例程中的CAN_Read函数来读取CAN设备上的字符。
  对于本文流接口的驱动程序而言,是通过实现如下几个模块来实现驱动的:CAN_Open、CAN _Close、CAN _Read、CAN _Write、CAN _IoControl和CAN _Init等模块。其中CAN _Init模块是系统启动时由文件系统自动调用的,主要完成设备的初始化工作。另外,对于流接口驱动程序可选函数CAN _PowerUp和CAN _PowerDown,主要实现电源管理的功能。
  限于篇幅,本文仅对主要的CAN_Write模块、CAN_Read模块和中断服务线程模块的实现作如下详细详细讨论。
  3.1 CAN_Write模
返回列表