当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于WinCE环境的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]:数据帧,携带数据信息,由发送器发送到接收器;远程帧,主要用于请求发送具有相同标识符的数据帧,是通过总线发送的;出错帧标识总线错误,由检测出总线错误的任何总线单元产生;超载帧主要为当前的和后续的数据帧提供附加延迟。[!--empirenews.page--]

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函数的流程图[!--empirenews.page--]

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

美国纽约州阿蒙克2022年10月20日 /美通社/ -- IBM(NYSE: IBM)发布 2022 年第三季度业绩报告。 IBM 董事长兼首席执行官 Arvind Kri...

关键字: IBM 软件 BSP 云平台

Canalys统计数据显示,2022年第三季度全球智能手机市场遭遇连续三季度下跌,同比下降9%。三星通过大力开展促销活动来减少渠道库存,市场份额达到22%,领先市场。在市场低迷期间,由于市场对iPhone手机的需求相对具...

关键字: 智能手机 CAN iPhone OPPO

成都2022年10月19日 /美通社/ -- 近期,平安养老险积极筹备个人养老金的产品设计和系统开发工作,发展多样化的养老金融产品,推动商业养老保险、个人养老金、专属商业养老保险等产品供给。 搭养老政策东风 ...

关键字: 温度 BSP 东风 大众

广东佛山2022年10月19日 /美通社/ -- 空间是人居生活的基础单元,承载着生存与活动的最基本功能。而对于理想空间的解构意义却在物理性容器之外,体现出人们对于空间和生活深层关系的思考,同时也塑造着人与空间的新型连接...

关键字: 温度 BSP 智能化 进程

上海2022年10月19日 /美通社/ -- 10月17日晚间,安集科技披露业绩预告。今年前三季度,公司预计实现营业收入7.54亿元至8.33亿元,同比增长60.24%至77.03%;归母净利润预计为1.73亿...

关键字: 电子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...

关键字: BSP ARMA COM 代码

北京2022年10月18日 /美通社/ -- 10月14日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》,报告显示:2022年上半年浪潮超融合销售额同比增长59.4%,近5倍于...

关键字: IDC BSP 数字化 数据中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都银行集团成立60周年的纪念日。趁着首都银行集团成立60周年与首都银行(中国)在华深耕经营12年的“大日子”,围绕作为外资金融机构对在华战略的构想和业...

关键字: 数字化 BSP 供应链 控制

东京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式会社(NIPPON EXPRESS HOLDINGS, INC.)旗下集团公司上海通运国际物流有限公司(Nipp...

关键字: 温控 精密仪器 半导体制造 BSP

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭