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

发布者:独行侠客最新更新时间:2010-04-09 来源: 微计算机信息关键字:WinCE  CAN总线  CAN适配卡  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

  1.引言

  WinCE是一种为多种嵌入式系统和产品设计的紧凑、高效、可升级的操作系统,WinCE 采用标准模式,其最主要的特征:为有限的硬件资源提供了多线程、多任务和完全优先级的计算环境。

  WinCE操作系统支持两种类型的驱动程序:[1]本地驱动程序(Build-In),是把设备驱动程序作为独立任务实现,直接在顶层任务中实现硬件操作,完成特有专用的驱动程序;流接口驱动程序,WinCE的I/O系统将设备程序作为内核过程实现,这种方式便于实现I/O子系统的层次模型,便于文件系统一起把设备作为特殊文件处理,提供统一的管理、统一的界面和统一的使用方法,并把设备、文件及网络通信组织成为一致的更高层次的抽象,为用户提供统一的系统服务和用户接口。驱动程序封装了将这些命令转换为它所控制的设备上的适当操作所需的全部信息。流接口驱动程序有在启动时加载和动态加载两种方式。本文实现的在WinCE环境下流结构的PC/104-CAN驱动程序是在系统启动时加载的。

  2. CAN总线技术简介

  CAN总线是德国Bosch公司开发的一种串行数据通信协议,CAN总线属于总线式串行通讯网络,具有总线为多主方式工作且无需站地址节点信息、CAN网络上的节点信息分成不同的优先级、总线冲突仲裁时间低和总线的通信介质选择灵活等优点[2]。

  CAN适配卡的核心工作单元是它的控制器,控制器SJA1000的组织结构如图1所示。

图1 SJA1000的内部结构方框图

  其中,接口管理逻辑(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模块的实现

  当CAN适配卡控制器在发送报文时,发送缓冲区对写操作是锁定的,这样CPU必须检查状态寄存器的发送缓冲区状态标志TBS,以确定可以将一个新报文写入发送缓冲区中,当发送缓冲区被锁定(即标志TBS=0)时,CPU周期性地查询状态寄存器,等待发送缓冲区被释放;当发送缓冲区被释放(即标志TBS=1)时,CPU将新报文写入发送缓冲区中,并置命令寄存器的发送请求标志TR,该标志导致发送的启动。一旦发送成功中断产生,表明CAN报文已经发送成功。重复上面的工作就可以完成发送多个CAN报文的工作。CAN_Write模块的流程图如图3所示。

图3 CAN_Write函数的流程图

  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适配卡驱动程序运行可靠、通信稳定。产品已经被多个产家应用于实际的工业控制领域。

关键字:WinCE  CAN总线  CAN适配卡  驱动程序 引用地址:基于WinCE环境的CAN适配卡驱动程序的设计与实现

上一篇:风河航空与国防软件平台全面升级
下一篇:基于C8051F310和CS8900A的计算机网络实验平台设计

推荐阅读最新更新时间:2024-05-02 21:02

CAN总线混合动力骄车电控系统的设计与实现
混合动力汽车是一种由内燃机和电动机混合驱动的汽车,其主要特点是节能、环保。这种汽车在起步时用电动机驱动,消除了内燃机起步时由于燃烧不充分而排黑烟的现象。在汽车减速或刹车时,利用发电机把动能转化成电能,贮存到蓄电池中,实现能量回收达到节能的目的。由于这种汽车是内燃机和电动机两种动力并存,仅用传统的针对内燃机的电控系统无法实现两种动力的最佳配合,因此开发混合动力车的全新电控系统是十分必要的.本文以一种电机并联式混合动力汽车成功实现为背景,从系统角度介绍了混合动力汽车电控系统结构、功能及效果。 1 并联式混合动力驱动结构简介 并联式混合动力汽车的驱动系统结构见图1。发动机通过机械传动装置与驱动桥连接,电动机通过动力复合装置也与驱动桥相
[单片机]
<font color='red'>CAN总线</font>混合动力骄车电控系统的设计与实现
基于dsPIC30F6011的CAN总线扩展技术
0 引 言     CAN总线是一种串行多主站局域网总线,被广泛应用于汽车控制系统、自动控制、楼宇自动化、医学设备等各个领域。其传输距离远,最远可达10 km,传输速率高,最高可达1 Mb/s,容错性能好,可靠性能高。但是由于CAN驱动器的驱动能力有限,CAN总线能够驱动的节点数有限,一般在100个左右,同时会随着传输距离的增加,最高传输速率会下降,如果距离过长会引起信号丢失、反射等故障。在实验室条件下测得在5 Kb/s的通信速率下最远通信距离能达到10 km;在18 Kb/s的通信速率下最远通信距离只能达到2 km;而在42 b/s的通信速率下,最远通信距离只能达到1 km。测试条件:线缆采用线径为0.75 mm2的屏蔽双绞
[单片机]
基于CAN总线和DSP的起重机多功能安全监控系统
    摘要: 介绍了一种基于数字信号处理器ADSP2105和现场总线技术的起重机多功能安全监控系统。该系统由最小系统节点、智能节点和主节点等模块组成。各模块之间的通信利用控制器局域风(CAN)完成。该系统具有人机界面友好、保护功能完善、可靠性高等特点,并具有一定的自诊断功能。     关键词: 安全监控 数字信号处理器ADSP2105 控制器局域网(CAN) 起重机是工程建设中的必要设备之一,在施工中应用相当广泛。然而,起重机潜在的危险因素也较多,容易发生恶性事故。国家技术监督局先后专门制定和发布了《起重机设计规范》(GB3811-83)、《起重机械超载保护装置安全技术规范》(GB12602-90)、《起重机
[应用]
基于嵌入式技术和CAN总线的车辆配电系统
0 引 言 由于特种车辆的电子设备种类和数量繁多,传统半自动配电方式的管理能力有限,体积和重量较大、车辆电网故障自检和隔离能力差、排除故障与检修时间长、供电可靠性不高等问题,影响整个车辆和关键部件工作的可靠性。基于嵌入式技术、双冗余CAN总线与LIN总线构成的车辆智能配电系统,能够很好地解决传统车辆配电方式的缺点,并且能够实现整车配电系统的智能化、数字化管理。 1 智能配电系统的硬件设计 该配电系统分为三个部分:配电终端,智能配电管理器和车辆管理终端,如图1所示。配电终端主要是用于28 V设备的状态监控,具有电流检测、电压检测、过流保护、短路保护、过压保护、欠压保护、过热保护及状态监控等功能。同时具有LIN总线的数字通信接口
[单片机]
基于嵌入式技术和<font color='red'>CAN总线</font>的车辆配电系统
说说如何用can总线测试工具对can设备进行一对一测试
上篇文章我们说了用USBCAN分析仪批量测试CAN设备的方案,那么在一对一测试时应如何判断待测设备CAN接口损坏呢? 因为在实际应用中,工程师可能面对的更多是一对一的测试。这样我们需要通过设备自检确定USBCAN分析仪没有损坏,物理层连线、终端电阻、通信波特率是否正确。如果排除这些因素,仍然无法通讯,那么待测设备就有可能损坏了,此时我们可以通过待测设备CAN口的CAN_L对GND、CAN_H对GND这两个电压值做进一步的判断。如电压值不正确,则说明待测设备已经损坏、或该CAN设备进入休眠状态、或待测设备不是高速CAN设备,需要工程师进行进一步的处理。 1、如何排除USBCAN分析仪的问题 当你在怀疑USBCAN分析仪发生故
[测试测量]
说说如何用<font color='red'>can总线</font>测试工具对<font color='red'>can</font>设备进行一对一测试
基于C8051F系列单片机和CAN总线技术实现电动汽车数字控制系统的设计
电动汽车是集计算机技术、通信技术、电子技术、新材料技术等一体化的高科技产品,其结构复杂,有多种相互作用却又相对独立的部件,且车载环境较恶劣,有很强的干扰,用模拟量的控制可靠性不高。先进高效的控制体系结构,可以使电动汽车各系统之间的数据交换满足简单迅速、可靠性高、抗干扰能力强、实时性好、系统错误检测和隔离能力强等要求。本文采用了先进的计算机技术和CAN总线技术,集智能控制、信号采集、数据处理和通信于一体,控制实时性好,可实现整车控制智能化和多传感器信息的有效融合。 1 CAN总线的简介 CAN(ControllerAreaNewtork)即控制器局域网,是一种先进的串行通信协议,属于现场总线范围。CAN总线是最初由德国Bosch
[单片机]
基于C8051F系列单片机和<font color='red'>CAN总线</font>技术实现电动汽车数字控制系统的设计
汽车CAN总线关闭故障的诊断与恢复
  1 研究的背景和意义    从改革开放到现在,汽车产业对我国经济发展产生巨大的推动,对社会进步产生了深远的影响,逐渐成为了我国的支柱行业。近几年来,随着科技发展的日新月异,汽车上电子控制装置越来越多,汽车音响,电子仪表,空调控制器,电喷发动机,BCM,ABS等等ECU在车内形成了巨大的网络系统,按照传统的布线模式,电线的错综复杂对汽车的电气控制及系统实时网络通信带来重重困难,CAN总线网络的出现,大大简化了综合布线,很好的解决了系统间的信息交互与共享,在汽车电子技术的普及应用取得了重大进步。    Can-Bus总线技术是“控制器局域网总线技术(Controller Area Network-BUS)”的简称,它具有极强的抗干扰
[嵌入式]
基于LPC2292的汽车智能组合仪表设计
0 引言 汽车仪表是司机与汽车之间进行信息交流的窗口和界面,对于提高汽车仪表使用寿命,安全和经济行驶有着积极而重要的作用。本设计采用LPC2292 嵌入式 控制器 作为仪表的控制核心,汽车原有 传感器 无需更换,传感器的输出信号通过信号调理电路后送入MCU,经MCU处理后的信号通过LCD 显示器 显示出来。实时显示车速、发动机转速、水温、油位、总里程、子里程等车况参数,并对信息进行复杂处理从而为司机提供平均车速、经济油耗、剩余油量能跑里程数等有用信息,同时,还能对瞬时行车信息进行记录存储,实现“黑匣子”功能;对异常情况实现语音报警提示,且为今后功能扩展预留通讯接口。与传统汽车仪表相比,该仪表具有功能丰富、可靠性高、精度高、可视
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved