新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于WINCE的CAN总线设备驱动研究

基于WINCE的CAN总线设备驱动研究

作者: 时间:2016-12-20 来源:网络 收藏

SJA1000工作流程

图4 SJA1000工作流程

4.2 WINCE下流接口驱动的接口函数实现

WINCE下每个流接口驱动都必须实现一组标准的接口函数,以下仅重点介绍部分接口函数及其实现.

a.DWORD CAN—Init(DWORD dwContext):设备管理器初始化CAN设备时调用这个函数.CAN—Init的实现原理是:初始化CAN控制器SJA1000,创建一个WINCE的系统中断用来响应SJAl000的硬件中断,创建中断服务线程,此线程等待WINCE对应的系统中断发生,然后响应中断.图5是CAN—Init函数的实现流程.

CAN-Init函数的实现流程

图5 CAN-Init函数的实现流程

b.WORD CAN—Open(DWORD hDeviceContext.DWORD AccessCode,DWORD ShareMode):打开一个CAN设备驱动程序时应用程序通过createFile()来调用此函数.

c. BOOL CAN—IOControl (DWORD hopenContext,DWORD dwCode,PBYTE pBufIn, DWoRDDwLenIn, PBYTE pBufOut,DWoRD dwLenout,PDWoRD pdwActualOut):应用程序通过DeviceIocontrol()函数来调用此函数.

d.DWORD CAN—Write(DWORD hOpenContext, LPCVOID DSourceBvtes, DWORD NumberOfBytes):当cAN设备驱动程序处于打开状态时由应用程序通过writeFile()来调用这个函数.

e.中断服务线程(Can Thread)的实现原理:硬件中断后,触发ISR(中断服务例程),ISR只做部分处理工作(发送事件消息),IST(中断服务线程)收到触发消息后才开始工作.中断服务线程Can-Thread的实现流程如图6所示.

中断服务线程工作流程

图6中断服务线程工作流程

一个具体的流接口驱动程序跟注册表部分是分不开的,因此代码编制完成后,要建立一个can.reg文件保存到流接口驱动程序的目录里.

4.3应用程序对硬件设备的操作

应用程序直接通过文件操作来访问硬件设备,文件操作会自动调用系统的流接口驱动程序的函数.比如:文件操作的ReadFile函数会自动调用底层的Can-Read等函数.本研究完成了基于WINCE嵌入式车载网络的CAN总线管理单元的设计,实现了CAN网络的连接,并成功地运用到嵌入式车载网络上,实践证明这种实现方式具有良好的特性和一定的使用价值.


上一页 1 2 下一页

关键词: CAN总线WINCE操作系统流接口驱

评论


相关推荐

技术专区

关闭