当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]Windows CE.net的AD7854驱动程序开发

引 言
   
AD7854是一款高速、低功耗的12位并行接口模数转换芯片,其工作电压范围是3~5 V,采样频率最高为200 kHz。由于AD7854在正常的工作模式下功耗为5.4mW,在节电模式下功耗为3.6μW,因此在便携式设备中得到广泛的应用。AD7854具有自校准和系统校准功能,可确保其精确地工作。AD7854含有片上采样保持电路和片上参考电压(2.5 V),从而使外围电路设计得以简化。当前,在先进的便携设备中,大量引进嵌入式操作系统对系统资源进行管理,因此开发硬件设备的驱动成为构建便携式系统的一个重要工作。本文以S3C2410为处理器,开发了基于Windows CE.net的AD7854驱动程序,详细阐述Windows CE.net下A137854流接口驱动程序的实现过程及相关内容。

1 AD7854与S3C2410的扩展设计
    为确保AD7854在S3C2410的控制下完成采样和模数转换,必须合理地设计接口电路。AD7854为12位并行模数转换芯片,S3C2410是32位微处理器,因此,一次读操作即可完成AD7854转换结果的读取。但是,对于AD7854校准寄存器的读操作以及对各寄存器的写操作都需要2个读或写操作,因此,统一使用2个读/写操作完成对AD7854的操作,即仅选用AD7854的低8位数据线作为数据传送通道。
    为了提高S3C2410的驱动能力,在S3C2410与外设之间加入了一个双向数据缓冲器74LVCl6245。设计的A/D转换接口电路原理如图1所示。

2 WindOWS CE.Ret设备驱动简介
    Windows CE.net设备驱动模型主要有两种:本机设备驱动与流接口设备驱动。不同的驱动模型只能通过它们的软件接口来区别,而不是它们适用的设备。驱动程序模型决定其输出的软件接口。
    本机设备驱动程序适于集成到基于Windows CE.net平台的设备,如通用LED驱动和电源驱动等。每种本机设备驱动程序都有精确的要求和特殊的目的,微软提供了定制接口的方式来支持内部设备驱动程序。一般来说,只有OEM开发商对本机设备驱动程序感兴趣,而独立硬件销售商只开发附加的硬件驱动程序。Windows CE.net平台生成器(platform builder)提供本机设备驱动程序的样本,可考虑把本机设备驱动程序样本应用到自己的平台上,而无需再从头开发自己的本机驱动程序。
    流接口设备驱动程序是一般类型的设备驱动程序。它表现为用户一级的动态DLL,用来导出一组固定的函数,称为“流接口函数”。应用程序可以通过文件系统接口函数(API)访问这些接口函数,从而调用驱动程序,驱动硬件设备进行工作。在流接口驱动程序中,驱动程序负责把外设抽象成一个文件,而应用程序则使用操作系统提供的API对外设进行访问。流接口驱动程序几乎支持任何类型的、可以连接到基于Windows CE.net平台的外部设备,例如打印机、调制解调器等。本文介绍的AD7854驱动也是采用流接口驱动模型,属于流接口驱动的范畴。流接口设备驱动的体系结构如图2所示。

3 AD7854驱动设计与实现
    由图l所示的硬件电路可知,AD7854被直接映射到系统的内存,它的物理地址是Oxl0000000,因此,该设备的驱动程序可以选用单片式流接口设备驱动模型。同时S3C24lO采用中断的方式对AD7854的转换结果进行读取并启动下一次的转换。因此,开发A/D驱动主要由两个部分组成:内核部分和流接口函数部分。内核部分主要完成中断的处理,包括物理中断到逻辑中断的转换,中断的使能、禁止,唤醒中断服务线程等工作;流接口函数部分主要通过实现Windows CE.net提供的接口函数完成对A137854的读、写操作。
3.1 AD7854中断在WindOWS CE中的处理
   
内核部分主要是修改Windows CE.net中与中断相关的内核文件,完成物理中断到逻辑中断的映射。由图1可知,AD7854占用外部中断0(EINTO)。为了让操作系统能够处理外部中断O,必须对其关于中断处理的内核代码进行修改。主要修改的内核文件如下:
    ①修改%WIN(2ER()0T%\PLATFORM\SMDK2410\INC\oalintr.h文件;
    ②修改%WINCEROOT%\PLATFORM\smdk2410\kernel\hal\arm\armint.c文件中的OEMInterrupt Han—dler()函数;
    ③在中断服务线程(IST)中调用InterruptEnable()、InterruptDisable()、InterruptDone()等函数对中断进行操作时,系统内核调用OEMInterTuptEnable()、()EMInter—ruptDisable()、()EMInterruptDone(),对中断寄存器进行设置,完成中断允许、中断禁止和中断完成操作。对这3个OEM函数的修改,是通过修改%WINCERO0T%\PLATFORM\smdk2410\kernel\hal\cfw.c文件完成的。
    内核文件的修改可以参照内核文件函数的具体实现来完成。经过对Windows CE.net内核文件的修改,完成了物理中断EINTO到逻辑中断号SYSINTR_ADC的映射。至此,就可以利用Windows CE.net提供的API函数,通过对逻辑中断SYSINTR_ADC的处理来完成物理中断零的操作。
3.2 AD7854流接口函数的实现
   
流接口驱动程序实质上就是一个动态链接库,在Windows CE.net中,流接口函数一共有10个。这些流接口函数并不需要每个都要有具体的实现代码,关键是要根据设备的具体工作流程来完成相应的接口函数。本设计中开发的AD7854的驱动程序主要实现的接口函数为:XXX_Deinit、XXX_Init、XXX_Open、XXX_Close、XXX_Read、XXX_Write。XXX为设备文件名的前缀,由于开
发的是模数转换芯片的驱动,故在此将该前缀命名为“ADC”。以下具体介绍在Platform Builder开发环境下AD7854驱动的开发过程。
    首先,在。Platform Builder4.2开发环境下为AD7854的驱动建立一个WCE Dynamic—Link Library工程,随后就可以在该工程下完成各流接口函数。流接口函数的实现需要完成两个主要方面的工作:AD7854数据结构的建立和各接口函数代码的实现。
    (1)AD7854的数据结构
   
在编写流接口函数之前,应该定义设备的数据结构,这是对现实设备的抽象。根据AD7854在操作中所涉及的CPU相关存储器以及AD7854内部操作的需要,现将AD7854抽象成以下结构类型:


    AD7854的数据结构可以看作是与AD7854相关的逻辑体。通过WindowsCE.net提供的内存映射函数VirtualAl—loe()和VirtualCopy(),可以将逻辑体与具体的物理地址关联起来,完成对物理存储器的设置。
    (2)流接口函数的开发
    流接口函数为应用程序操作硬件提供统一的接口,完成对硬件的抽象工作。一个流接口函数实质上就是提供某一特定功能的模块,根据硬件的不同,各接口函数实现的内容千差万别。有的接口函数需要很多的代码,有的就是一个空的函数体。在AD7854驱动的接口函数中,初始化函数以及读写函数是主要的接口函数,本文结合硬件具体介绍其实现过程:
    ①PADC_CONTEXT ADC_Init(LPCTSTR pCon—text,LPCVOID lpvBusContext)。该接口函数在驱动程序加载时,由设备管理器调用。在该函数中主要完成硬件初始化工作,如映射设备的物理内存、配置相关寄存器、创建中断事件、中断服务线程等。
    ADC_Init函数需按照一定的顺序完成驱动的初始化工作,其内部函数的调用顺序如图3所示。ADC_Init调用成功以后,将返回AD7854结构体的首地址——pADC,同时表明该驱动加载成功。
    ②DWORD ADC_Read(PADC_CONTEXT pADC,PUCHAR pBuffer,DWORD Count)。该接口函数主要完成对AD7854.的读操作,代码是对操作的抽象。为了更好地体现开发过程,首先介绍一下AD7854的读操作过程。AD7854一次输出16位数据,分成2次输出(高8位、低8位)。在读写时序中,除了通过对CPU的存储寄存器的相关配置以满足时间上的要求外,另一个重要的地方就是注意满足高字节使能输出引脚(HBEN)的需要。具体是在输出高字节时,该引脚应输入高电平。AD7854输出一次16位数据时有两种输出方式:其一就是高8位先输出,然后是低8位输出(与此相对应,HBEN引脚在AD7854读时序中第1个字节为高电平,第2个字节为低电平);其二刚好相反。
    由图3可知,HBEN的电平由S3C2410的地址线O确定,因此在一个AD7854的读时序中地址线O应改变一次自己的状态。同时AD7854的片选与LnGCS2相连,这也就构成了AD7854的两个读物理地址:0x1000 0000和0x1000 0001。在本设计中,规定先读低8位数据然后为高8位,因此地址线应先送出Oxl000 0000然后送出0x1000 0001。AD7854的读周期时序如图4所示。

    由此可开发AD7854读接口函数,具体代码如下:

 

   写接口函数DWORD ADC_Write(PADC_CON—TEXT pADC,PUCHAR pBuffer,DWORD Count),主要完成对.AD7854的写操作。AD7854的写操作过程和读操作很相似,代码的实现过程也基本相同,在此就不再赘述。
    其余的接口函数主要完成返回AD7854的结构句柄,释放内存空间等工作。虽然必不可少,但是对AD7854的操作不是主要的,在此不再详细介绍。
    编写导出函数和注册表文件,编译生成d11文件,通过PB将其制作成CEC文件,在定制操作系统时可以将驱动程序加入操作系统中。这样就完成了驱动程序的编写,实现了操作系统与硬件之间的连接。

4 结 论
    Windows CE.net是多任务实时嵌入式操作系统,具有良好的图形界面,实时性良好、功能强大,适用于工业控制领域。本文以AD7854的驱动开发为例,阐述了Windows CE.net对外部中断的处理过程和流接口驱动的开发方法。该驱动程序已成功应用在所开发的作业环境监测与评价系统中,在微气候各指标的监测方面应用效果良好。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭