关于我们 | 联系我们

qy千亿·体育|登录平台

当前位置:主页 > 新闻资讯 > 行业新闻 >

嵌入式WinCE中CAN总线控制器的驱动设计与实现

本文摘要:0章节 近年来,由于消费电子、计算机、通信(3C)一体化趋势日益显著,嵌入式系统再次沦为研究和应用于的热点。嵌入式操作系统(Real-timeEmbeddedOperatingSystem,RTOS或EOS)作为一种动态的、反对嵌入式系统应用于的操作系统软件,沦为嵌入式系统(还包括软、软件系统)极为重要的组成部分,一般来说还包括与硬件涉及的底层驱动软件、系统内核、设备驱动模块、通信协议、图形界面、标准化浏览器Browser等。

qy千亿体育登录平台

0章节  近年来,由于消费电子、计算机、通信(3C)一体化趋势日益显著,嵌入式系统再次沦为研究和应用于的热点。嵌入式操作系统(Real-timeEmbeddedOperatingSystem,RTOS或EOS)作为一种动态的、反对嵌入式系统应用于的操作系统软件,沦为嵌入式系统(还包括软、软件系统)极为重要的组成部分,一般来说还包括与硬件涉及的底层驱动软件、系统内核、设备驱动模块、通信协议、图形界面、标准化浏览器Browser等。WindowsCE操作系统就是微软公司从整体上为受限资源平台设计的多线程、原始优先权、多任务的操作系统。WinCE反对各种处理器产品家族,还包括x86,Xscale,ARM,MIPS和SH系列。

它的模块化设计容许它对从掌上电脑到专用工业控制器的用户电子设备展开自定义,自由选择系统模块和组件的多少要求了所须要内存的大小。  WindowsCE操作系统之所以需要反对各种各样的硬件设备,是因为对每一款硬件设备,都有其对应的设备驱动程序,否则这款硬件就无法在WindowsCE下长时间工作。WinCE获取了4种设备模型,其中2种是专门用作WinCE的模型,另外2种外部模型来自其他的操作系统。基于WinCE的两种模型是本机的设备驱动程序和流模块的驱动程序;两种外部模型用作标准化串行总线(USB)和网络驱动器接口标准(NDIS)驱动程序。

下面针对WinCE系统下基于三星公司的ARM9内核芯片S3C2410的CAN总线控制器SJA1000,以流模块驱动程序形式展开设计。  1CAN总线及控制器工作原理  控制器局域网CAN是由ISO定义的串行通信总线,主要用作各种过程检测及掌控。

它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率平均1Mb/s。CAN总线通信接口中构建了CAN协议的物理层和数据链路层功能,可已完成对通信数据的成帧处置,还包括位填满、数据块编码、循环校验检验、优先级判断等项工作。它的基本设计规范拒绝有高位速率和高抗电磁干扰性,而且需要检测出有产生的任何错误。

由于CAN串行通信总线具备这些特性,它很大自然的在汽车制造业以及航空工业中受到广泛应用。  SJA1000是一种独立国家控制器用作移动目标和一般工业环境中的区域网络掌控(CAN)。它是Philips半导体公司的PCA82C200CAN控制器(BasicCAN)的替代产品。

而且它减少了一种新的工作模式(PeliCAN),这种模式反对具备很多新的特性的CAN2.0B协议。其内部体系结构如下图1右图。

    CAN核心模块掌控CAN帧的发送到和接管。模块管理逻辑负责管理相连外部主控制器,该控制器可以是卫星掌控器件或任何其他器件。经过SJA1000适配的地址/数据总线采访寄存器和掌控读书/写选通信号都在这处置。

SJA1000的发送到缓冲器需要存储一个原始的报文(拓展或标准的)。当主控制器初始化发送到,模块管理逻辑不会使CAN核心模块从发送到缓冲器读CAN报文。当接到一个报文时,CAN核心模块将串行位光阴替换成用作竣工验收滤波器的分段数据。通过这个可编程的滤波器,SJA1000能确认主控制器要接管哪些报文。

所有接到的报文由竣工验收滤波器竣工验收并存储在接管FIFO。储存报文的多少由工作模式要求,最少能存储32个报文。  2流模块驱动程序工作机制  比起于本机设备驱动程序,流模块驱动程序展现出为一个动态链接库,由设备管理器统一读取、管理和修理。

与具备分开目的的内部设备驱动程序比起,所有的流模块驱动程序都是用同一组模块并调用同一个函数集流接口函数。WinCE的文件系统通过这些人口点函数与流模块驱动展开通信,从而超过应用程序采访驱动程序、操作者硬件的目的。

流模块驱动程序要构建的DLL模块闻表格1。    在实际的研发中,上述模块名称中的XXX三个字母被明确设备的设备文件名所替换。流模块驱动程序通过编译器后,分解DLL文件,即动态链接库文件。  3CAN总线控制器SJA1000驱动程序设计  CAN总线控制器SJA1000驱动使用流模块驱动程序模型,要构建的流接口函数分别为CAN_Init,CAN_Deinit,CAN_Open,CAN_Close,CAN_Read,CAN_Wfite,CAN_IOControl等。

应用程序用于CreatFile()函数以文件的方式关上CAN控制器驱动,以提供驱动文件的句柄,然后用于该句柄调用DeviceloControl(),ReadFile(),WriteFile()函数来CAN控制器的各种功能。  由于篇幅受限,下面仅有针对CAN_Init,CAN_Read和CAN_IntrThread函数的构建展开详尽的设计。  3.1CAN_Init函数的设计构建  当用户开始用于CAN总线控制器时,设备管理器调用这个函数来初始化控制器设备SJA1000。这个函数是通过设备管理器获取的ActiveDeviceEx()函数来调用的。

函数继续执行后,如果顺利就回到设备的句柄。CAN_Init函数的流程如图2右图。    3.2CAN_Read函数的设计构建  根据CAN协议规范,报文的接管由CAN控制器SJA1000独立国家已完成,接到的报文放到接管缓冲器。可以发送给主控制器的报文由状态寄存器的接管缓冲器状态标志RBS和接管中断标志RI标示(如果使能)。

主控制器不会将这条信息发送到本地的报文存储器,然后获释接管缓冲器并对报文操作者。发送到过程能被SJA1000的中断请求或查找SJA1000的掌控段状态标志来掌控。CAN_Read函数操作者顺利则回到实际加载的字节数,否则返回值为-1。

CAN_Read函数程序的流程图如图3右图。


本文关键词:qy千亿体育登录平台,嵌入式,WinCE,中,CAN,总线,控制器,的,驱动,设计

本文来源:qy千亿体育登录平台-www.hunbon.com

Copyright © 2000-2022 www.hunbon.com. qy千亿体育登录平台科技 版权所有 备案号:ICP备55295691号-1