EZ-USB处理器的配置特性、接口设备开发方法与应用

网友投稿 310 2022-11-08

EZ-USB处理器的配置特性、接口设备开发方法与应用

引 言

1、EZ-USB处理器

内置的8051处理器,相对标准的8051处理器进行了改进。以AN2131QC为例,主要有以下改进方面:

◇双数据指针和自动指针提高了数据交换效率;

◇扩展的中断系统支持13个中断源,并支持自动中断向量;

◇芯片内部集成有8KB外部RAM,8051内核要用MOVX指令访问此RAM区。

2、EZ-USB软配置特性

2.1 软配置特性

2.2 配置方式

软配置可采用两种方式实现:自动配置和命令配置。

自动配置是指当设备连接时,固件由专门的装载驱动程序自动装载到设备。这种方式下固件要捆绑在装载驱动程序之中,固件与装载驱动程序之间一一对应,固件修改时要重新生成并重新安装装载驱动程序,固件装载后要重新枚举,以建立定制的USB设备,如果不重新枚举主机会找不到设备。

命令配置是指在应用程序中通过命令操作将固件装载到设备。这种方式不需要专用的装载驱动程序,可在任何时刻装载任意固件。固件装载后可以不用重枚举操作,由EZ-USB内核响应主机请求,可以简化固件设计。采用命令配置方式时,在应用程序中要编写固件装载代码。固件装载代码主要完成下列操作:

◇向EZ-USB请求复位8051内核;

◇向EZ-USB请求8051内核脱离复位状态;

⑤ 对EZ-USB外设接口和交替功能进行设置。

3、EZ-USB接口设备开发方法

USB设备开发的一般步骤和内容如图1所示。其中面向设备的固件主要包括设备描述符信息、设备功能代码和通信控制功能代码。设备描述信息描述USB设备的一般特性和配置,如设备类别、接口配置、VID和PID等。主机在设备枚举时要获取USB设备的描述符,从而获得设备的配置信息和相关驱动信息。用户可以通过修改固件中的描述符来改变设备的特性。设备功能代码由设备的功能需求决定。通信控制功能代码执行主机请求分析处理和数据交换处理功能。

设备驱动程序提供用户访问设备的接口。开发系统提供厂家的通用设备驱动程序。用户也可以用相关驱动程序开发工具自己定制。自己定制的设备驱动程序要求符合WDM驱动程序规范。若采用自动配置方式,EZ-USB开发系统提供了装载驱动程序开发模板,利用模板开发较简单。采用命令配置方式则要用户在应用程序中编写固件装载代码。

驱动程序一般通过INF文件来安装,INF文件把设备的VID和PID绑定到设备驱动程序上,指定存放驱动程序的路径,提供有关驱动程序的注册和显示信息。因此,Windows检测到EZ-USB设备连接时,能根据注册表自动将设备驱动程序装入系统环境。

4、设计举例

4.1 固件设计

通用EZ-USB模块的固件包括描述符表和USB通信测试程序。描述符表是一组符合USB规范及描述设备特性的结构化信息,赋予其中变量不同的值,设备就呈现出不同的特性。在设备连接时,主机要请求设备提供描述符表,因此描述符表是固件的一部分。本通用模块中定义了5种描述符表,表1所列是各描述符的主要参数。

表1 通用EZ-USB接口模块描述符及主要参数

此通用模块中的固件仅用于EZ-USB通信测试、设备驱动和固件装载演示。通过实验发现固件设计有两点值得注意。

① 采用ezusb.sys通用驱动程序时,主机要用查询方式接收从设备来的数据。若主机接收不到设备上传的数据时会长时间等待,甚至会死机。在本文的设计中,解决此问题的方法是数据上传和下传操作成对发生。主机每次下传一个数据包时,设备就上传一个数据包。此时如果设备有数据上传就将数据置入上传数据包中,否则返回一个空包。

② 初始化时应清空一次相应的端点缓冲区,否则有时会出现第一次传输出错的现象,原因可能是复位不充分或者内部RAM掉电延时。在实际中发现,设备掉电相当长一段时间,EZ-USB的RAM中数据仍然保持。

4.2 生成设备驱动程序

可以直接用厂家提供的通用设备驱动程序来驱动设备。但通用设备驱动程序只能执行一些标准的USB设备请求和数据传输,而且只支持查询方式与设备通信。如果不能满足用户需要,用户可以在模板的基础上进行扩充,重新用WDM DDK生成驱动程序。通用模块中采用了通用驱动程序Ezusb.sys。采用查询方式,并且使上传和下传对应出现,实时性较好,能满足一般设备要求。

4.3 生成装载驱动程序

采用自动配置方式时,可根据EZ-USB开发系统提供的模板生成固件装载驱动程序。

通用模块中固件装载采用命令配置方式。其操作流程如图2所示,其中主要定义了以下4个函数以完成固件装载。

Hex_To_Bin() 移去Intel格式的Hex文件中格式描述部分,转换为纯固件代码。

Download_Bin() EZ-USB8051内核复位、固件装载到设备、8051内核解复位并运行固件。装载固件前要使EZ-USB8051内核进入复位状态,然后装载固件,装载结束后使EZ-USB脱离复位状态开始运行固件。三种操作共用一个函数,用传递不同的参数进行区别。

Set_InterFaceAlt()设置EZ-USB接口号和交替功能值,建立通信管道。

4.4 安装驱动程序

4.5 应用程序与设备接口

通用EZ-USB模块的测试程序提供两种方式访问EZ-USB设备,一是直接通过I/O控制调用访问设备,用CreateFile()函数打开设备,用DeviceIoControl()函数与设备进行通信;二是将复杂的访问函数封装为DLL,对用户提供更简洁的方法访问外设。

5、结 语

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:共享服务之 samba
下一篇:共享服务之 NFS
相关文章

 发表评论

暂时没有评论,来抢沙发吧~