当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于WinCE 环境的CAN 适配卡驱动程序的设计与实现

摘要:简要介绍了嵌入式实时操作系统WinCE环境下驱动程序的设计原理和CAN总线技术,并详细分析了依托PC/104总线的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 所示。

 

 

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

CAN 适配卡的硬件网络工作环境示意图如图2 所示。

 

 

图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.2 CAN_Read 模块的实现

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

 

 

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

 

[!--empirenews.page--]

 

4 结束语

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

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

伦敦2024年4月16日 /美通社/ -- ATFX宣布任命Siju Daniel为首席商务官。Siju在金融服务行业拥有丰富的经验和专业知识,曾在全球各地的高管职位上工作了19年以上。Siju之前担任FXCM首席商务官...

关键字: NI AN SI BSP

3月20日,技术领先的测试和测量解决方案提供商泰克宣布推出泰克CAN XL(控制器局域网扩展长度)协议解码软件,支持工程师整合最新一代CAN通信技术,并帮助泰克客户在技术日新月异的当今时代保持竞争优势。

关键字: CAN

USB摄像头是一种采用USB接口的视频采集设备,其优点在于即插即用、操作简便,无需额外驱动程序,支持笔记本电脑,并且成本较低,可以支持远程网络观看。

关键字: usb摄像头 驱动程序

与两相双极步进电机的驱动电路相比,两相单极步进电机的驱动电路在输入段配置、内部逻辑及控制电路和驱动电路使用双通道方面基本相同,但是输出段的配置不同。

关键字: 四相步进电机 驱动程序 程序电路

本文介绍了如何实现嵌入式MICREL网卡的驱动程序开发和设计。首先,我们介绍了MICREL网卡的概述和工作原理。然后,详细探讨了驱动程序的开发流程,包括硬件和软件的配置以及驱动程序的编写和测试。最后,总结了几点注意事项和...

关键字: 嵌入式 MICREL网卡 驱动程序

常州2023年9月25日 /美通社/ -- 9月23日,由江苏省商务厅指导,世界中餐业联合会、常州市人民政府主办的"第三届中华节气菜大会暨首届江南美食节"在江苏常州开幕。文化和旅游部国际交流与合作局一...

关键字: BSP 可持续发展 大赛 质量控制

北京2023年9月25日 /美通社/ -- 9月21日,由中国质量报刊社·中国质量新闻网主办的第六届食品高质量发展交流会在北京举行,会议主题为"高质量,新生活",旨在推动食品行...

关键字: 自动化 BSP ISO9001 NAS

北京2023年9月23日 /美通社/ -- 近日,主线科技正式获准在北京市智能网联汽车政策先行区道路开启常态化测试与示范,将与物流客户在真实开放的城区道路场景中,率先开启基于L4级别自动驾驶能力的智能卡车运输示范。 随...

关键字: 智能卡 测试 高速公路 BSP

曼谷2023年9月18日 /美通社/ -- 作为东南亚的旅游胜地,泰国一直在全球范围内吸引着无数游客的目光。泰国旅游和体育部近日公布的报告显示,今年前7个月,泰国旅游业总收入约为1.08万亿泰铢(约合人民币2233亿元)...

关键字: BSP GEN 国美 AN

哥伦比卡尔达斯2023年9月22日 /美通社/ -- 近日,天合跟踪与中国电建签订拉美地区哥伦比亚泰普伊光伏电站跟踪支架供货协议,将为其提供108MW智能跟踪系统,其中包含开拓者1P智能跟踪支架、智能算法、以及智慧云平台...

关键字: 光伏电站 跟踪系统 控制器 BSP
关闭
关闭