正在加载图片...
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 表4UsB驱动程序主要文件列表 文件名 描述及作用 D2 Config. h|D2驱动程序的配置,包括所有与硬件相关的配置 DI2HAL. c|UsB设备控制驱动,与具体使用的MCU及硬件相关 DI2HALhUSB设备控制驱动D2HALc的头文件 DI2CL.c USB接口控制驱动,与具体使用的USB芯片相关 DI2CIh USB接口控制驱动D12CIc的头文件 USB协议层,P 所有描述符取值 Descriptor. h|USB描述符结构体的定义,以及 PDIUSBD12用到的一些宏定义取值 Chap 9.c USB协议层,完成所有与控制传输相关的工作 Chap 9.h USB协议层Chap9c的头文件,包含控制传输用到的结构体的定义 D2 Driver.cUSB应用层,包含提供给用户使用的AP函数 D2 Driver h|UsB应用层D2 Driver.c的头文件 DI2 For uCos- IUSBDriver目录的 USBDriver.mcp工程提供了使用该驱动程序的一个例 子。该例子建立时使用的工程模板为: ARM Executable Image for UCOSI( (for lpc220 如果你的硬件配置与软件包的默认配置不同。那么只须修改软件包中的D2 Config. h文 件,该文件主要是配置 PDIUSBD2与LPC220的引脚。D12 Config. h文件相关配置的修改 的方法请见《嵌入式系统软件开发实例》中的《USB驱动程序开发》,这一章详细地说明了 该软件包的开发方法及该文件的配置方法。 除此以外,还有几点需要注意 (1)每个C文件的开始都包括了头文件(# include" config. h"),该头文件是工程模板 ARM Executable Image for UCOSll( for lpc2200)的配置文件,软件包中默认已加上。 (2)在工程模板的IRQs文件的END语句之前加上下面的语句(例子中默认已加上): Usb Handler HANDLER USb Exception (3)由于 PDIUSBD12收发大量数据时中断比较频繁,因此必须修改工程模板中允许 中断嵌套的层数,因此 Startup.s文件的第二行应改为(例子中已进行修改) IRQ STACK LEGTH EQU9*25;每层嵌套需要9个字堆栈,允许25层嵌套 (4)本例子使用了3个事件,控制传输处理使用了1个信号量,例子应用程序中使用 了2个信号量。因此 os cfg. h文件中操作系统最大事件数的定义应至少为3。 #define OS MAX events (5)本例子不使用统计任务,因此把统计任务关闭( os cfg. h文件中) #define OS TASK STAT EN (6) PDIUSBD12使用了外部存储空间的Bank2部分,所以必须配置LPC2200的BCFG2 寄存器,在模板的 target. c文件的 TargetInito函数添加以下代码 BCFG2=0 BCFG2F(0x04<<5米0x01<<10)(0x04<11) 配置BCFG2控制寄存器 (7)工程模板配置外部RAM和外部 FLASH ROM总线的访问速度是适应于大部分型 号的RAM与 FLASH ROM的。对于 EasyARM2200开发板上的RAM与 FLASH ROM的型 号,必须重新配置控制总线有关参数的BCFG0和BCFG1寄存器,这样程序的运行速度才 能跟上 PDIUSBD12的运行速度。这些值的配置的具体方法见LPC2200数据手册以及你所 使用的RAM与 FLASH ROM的数据手册。程序的运行速度主要与CPU主频与外部RAM FLASH速度相关。这方面在模板的 target.c的 TargetResetlnito函数中修改。如程序清单1所广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 表 4 USB 驱动程序主要文件列表 文件名 描述及作用 D12Config.h D12 驱动程序的配置,包括所有与硬件相关的配置 D12HAL.c USB 设备控制驱动,与具体使用的 MCU 及硬件相关 D12HAL.h USB 设备控制驱动 D12HAL.c 的头文件 D12CI.c USB 接口控制驱动,与具体使用的 USB 芯片相关 D12CI.h USB 接口控制驱动 D12CI.c 的头文件 Descriptor.c USB 协议层,PDIUSBD12 所有描述符取值 Descriptor.h USB 描述符结构体的定义,以及 PDIUSBD12 用到的一些宏定义取值 Chap_9.c USB 协议层,完成所有与控制传输相关的工作 Chap_9.h USB 协议层 Chap_9.c 的头文件,包含控制传输用到的结构体的定义 D12Driver.c USB 应用层,包含提供给用户使用的 API 函数 D12Driver.h USB 应用层 D12Driver.c 的头文件 D12 For uCos-II\USBDriver\目录的USBDriver.mcp工程提供了使用该驱动程序的一个例 子。该例子建立时使用的工程模板为:ARM Executable Image for UCOSII(for lpc2200)。 如果你的硬件配置与软件包的默认配置不同。那么只须修改软件包中的 D12Config.h 文 件,该文件主要是配置 PDIUSBD12 与 LPC2200 的引脚。D12Config.h 文件相关配置的修改 的方法请见《嵌入式系统软件开发实例》中的《USB 驱动程序开发》,这一章详细地说明了 该软件包的开发方法及该文件的配置方法。 除此以外,还有几点需要注意: (1)每个 C 文件的开始都包括了头文件(#include "config.h"),该头文件是工程模板 ARM Executable Image for UCOSII(for lpc2200)的配置文件,软件包中默认已加上。 (2)在工程模板的 IRQ.s 文件的 END 语句之前加上下面的语句(例子中默认已加上): Usb_Handler HANDLER Usb_Exception (3)由于 PDIUSBD12 收发大量数据时中断比较频繁,因此必须修改工程模板中允许 中断嵌套的层数,因此 Startup.s 文件的第二行应改为(例子中已进行修改): IRQ_STACK_LEGTH EQU 9*25 ;每层嵌套需要 9 个字堆栈,允许 25 层嵌套 (4)本例子使用了 3 个事件,控制传输处理使用了 1 个信号量,例子应用程序中使用 了 2 个信号量。因此 os_cfg.h 文件中操作系统最大事件数的定义应至少为 3。 #define OS_MAX_EVENTS 3 (5)本例子不使用统计任务,因此把统计任务关闭(os_cfg.h 文件中): #define OS_TASK_STAT_EN 0 (6) PDIUSBD12使用了外部存储空间的Bank2部分,所以必须配置LPC2200的BCFG2 寄存器,在模板的 target.c 文件的 TargetInit()函数添加以下代码: BCFG2 = 0; BCFG2 |= (0x04 << 5)|(0x01 << 10)|(0x04 << 11); //配置 BCFG2 控制寄存器 (7)工程模板配置外部 RAM 和外部 FLASH ROM 总线的访问速度是适应于大部分型 号的 RAM 与 FLASH ROM 的。对于 EasyARM2200 开发板上的 RAM 与 FLASH ROM 的型 号,必须重新配置控制总线有关参数的 BCFG0 和 BCFG1 寄存器,这样程序的运行速度才 能跟上 PDIUSBD12 的运行速度。这些值的配置的具体方法见 LPC2200 数据手册以及你所 使用的 RAM 与 FLASH ROM 的数据手册。程序的运行速度主要与 CPU 主频与外部 RAM、 FLASH 速度相关。这方面在模板的 target.c 的 TargetResetInit()函数中修改。如程序清单 1 所 - 5 -
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有