| 基于ATJ2085D芯片组成的应用系统中USB接口的应用设计 |
| 类别:网文精粹 |
| Appliction of USB Interface Based on ATJ2085D Chip Abstract: This paper introduces ATJ2085D chip designed by Actions Semiconductor of Zhuhai and the USB interface characteristic of the chip, explores the USB hardware circuit using the chip and the design method of software flow, at last provides an instance using ATJ2085D with USB interface. Key words: USB, endpoint, device descriptor 摘要:本文介绍由珠海炬力公司设计的ATJ2085D芯片及内含USB接口特点,详细叙述了使用该芯片构成的USB设备的硬件电路、软件流程的简化程序设计方法,文章还给出了一个带有USB接口的ATJ2085D应用实例。 关键词:USB;端点;设备描述符 1 引言 随着嵌入式系统的深入发展,越来越多的芯片设计公司都将自己的产品向着SoC方向发展。USB接口由于具有使用方便、传输速度快、成本低、稳定性好等特点,已经成为SoC芯片中接口模块的首选。ATJ2085D芯片内含USB接口,可以很方便的构成一个全速的,含有5个端口的USB设备。本文详细介绍基于ATJ2085D芯片组成的应用系统中USB接口的应用设计。 2 ATJ2085D芯片概述[1] 2.1 特点 ATJ2085D芯片由珠海炬力公司设计,是一款单芯片解决数字音频播放器IC。它采用CMOS工艺制造,具有低价格、高性能、低功耗、高集成化(800多万门)的8位MCU、24位DSP的SoC微控制芯片,采用LQFP装,引脚数为64。芯片的最高工作频率为72MHz,数据存储器RAM为4个,程序存储器Flash ROM为125K,堆栈层根据编译器的需要可以设多个,中断源为3个,内有9个功能模块。 2.2 宏定义头文件和包含文件 ATJ2085D芯片的汇编源程序中允许使用宏定义头文件(head file)和宏定义包含文件(include file)。宏定义头文件类似C语言中的头文件,以字母H作为文件的后缀名,头文件主要存放寄存器名称、存储单元地址或程序中使用到的变量、常量等定义。 3 USB接口模块 3.1 特点 ATJ2085D芯片内含的USB接口模块有如下特点: 1. 可以使用芯片构成5个USB端点(Endpiont)的USB设备,不能用来作主机; 2. 符合USB1.1标准,支持低速和全速传输; 3. 支持USB控制传输、中断传输和巨量传输模式,不支持实时传输模式。 3.2 USB寄存器 ATJ2085D的MCU在USB数据传输的过程中担任控制的角色,芯片所有控制的功能的实现都是通过USB寄存器的设置和中断响应处理完成。USB寄存器分为关于USB端点使用的,总共有4个。其中关于端点使用的寄存器的主要有: 1.通用控制寄存器(USBCTL):标志USB设备的状态为挂起(suspend)、连接 (connected)、恢复(resume)还是重置(reset); 2.端点0、1、2、3、4控制寄存器(EP_CTL):可停止或使能对应的USB端点,指 定端点的数据传输方式和传输方向; 3.端点中断事件标志寄存器(EP_IRQ):由此寄存器标志端点0、1、2、3、4的数据 发送或接收是否正常完成; 4.端点配置寄存器(EP_CFG):存放端点0、1、2、3、4发送或接收的数据,通过 设置此寄存器配置端点发送或接收数据寄存器中的数据; 5.端点计数寄存器(EP_BC):通过设置此寄存器指定每次传输的数据包的长度。 3.3 USB接口硬件电路 由于ATJ2085D芯片是一个高度集成化的SoC芯片,因此无需增加多少元器件,只需要将芯片中的USB接口引脚直接连接到外接USB插座,并将D+端的偏置上拉电阻为1.5K。 4 USB接口程序设计 ATJ2085D芯片应用时,PC机是主机,芯片是应用设备,两者在进行通信时必须遵守USB1.1协议。在PC主机端,主机要控制管理整个传输过程,包括数据端的管理,事务管理,错误处理,电源管理以及一些状态控制等;在USB设备端,由芯片根据协议要求对USB寄存器内容进行设置、协议内容收发、数据收发、错误处理以及其他主机控制命令的响应等。 4.1 主机端程序的设计 当USB设备插入ATJ2085D的USB端口时,必须都先按照协议要求,使PC主机)识别此设备,其流程如图一所示。如果用户使用的是win98的系统则需要由程序人员指定相应的驱动程序,如果使用的是win2000和winXP的系统则不需要指定相应的驱动程序。驱动程序的编写是一项比较复杂的工作,驱动程序要完成发送USB命令、解析设备描述符、与设备进行数据传输、指定设备配置及提供应用程序接口的功能等,可以结合ATJ2085D的USB接口特点来写。 500)this.style.width=500;" border=0> 图1 USB主机端程序设计流程 4.2 设备端程序的设计 对于设备端的程序设计,主要是完成对芯片的USB模块的初始化、端点的状态控制以及对USB数据收发的控制子程序的编写等,流程如下图: 500)this.style.width=500;" border=0> 图2 USB设备端程序设计流程 ATJ2085D中的USB传输的控制都是通过寄存器的设置及中断响应的方式完成,用户编写的代码所完成的功能包括: 1.USB初始化模块: 1)指定USB数据缓存区:ATJ2085D中提供了7个RAM存储页面,每个页面包括4 个数据寄存器,编程人员可以通过寄存器IO来指定缓存页面,ATJ2085D可通过间接地址内容寄存器USBREGIDX取出缓存寄存器页面中数据寄存器的内容。 2)通过外围设备控制寄存器USBGLBCTL使能ATJ2085D的USB功能。 3)通过端点中断事件寄存器IRQSTAT0使能端点的中断响应功能。 4)通过设备地址寄存器DEVADDR设定它们的地址。 5)通过通用控制寄存器USBCTL设定USB为全速或低速运行。 2.等待USB配置完成。通过状态寄存器的配置位判断USB设备是否配置完成,此配 置位在USB设备配置完成时会自动设定。 3.从USB数据缓存区中获取数据送到USB端点数据寄存器EP_DAT。 4.通过端点控制寄存器EP_MAXPKT设定每一帧数据包的大小。 5.通过端点计数寄存器EP_TC设定传输的方式(巨量、中断、控制)和传输的方向 (从PC机到USB设备还是从USB设备到PC机)。 6.通过端点命令寄存器EP_CFG设定开始发送或接收FIFO队列中的数据。 ATJ2085D 中USB接口程序的编写内容比较繁琐,涉及到的寄存器众多,程序也比较长,这样比较复杂的程序设计对于用户来说也是比较麻烦的事。为此,炬力公司也提供了一个模块程序可供用户参考编写源程序使用,这样一来,程序设计就变的相对简单得多。 5 应用实例——基于ATJ2085D的USB应用实例 下图是ATJ2085D的USB应用实例图。 500)this.style.width=500;" border=0> 6 结论 ATJ2085D是一款具有多功能模块的MP3播放器的SoC微控制器芯片。可以很方便的构成一个全速的含有5个端点的USB设备,对于ATJ2085D 的USB接口程序的设计可采用开发商提供的模块程序架构,其中有关USB协议和初始化等主要部分均已经包含在模块程序设计框架的几个文件中。用户只需要相应的编译器,加入自己的应用程序,整个USB设备系统的程序设计即可完成。这种USB设备应用程序的模块化框架的设计方法大大简化了程序设计过程,为ATJ2085D以及后续型号芯片的广泛应用创造了便利条件。 |
- B2B搜索“联姻”..
- 2008-9-11
- HOLTEK推出H..
- 2008-9-11
- 关于ISPRO校验..
- 2008-9-11
- 利用适配板实现免制..
- 2008-9-11
- GSMSMS模块客..
- 2008-9-11
- ISPro下载型编..
- 2008-9-11
- C语言之stati..
- 2008-9-11
- 完美结合语音芯片与..
- 2008-9-11
- 又做一工具:ATm..
- 2008-9-11
- QE128的DEM..
- 2008-9-11
- 特别推荐一款高性能..
- 2008-9-11
- SATA硬盘使用解..
- 2008-9-16
- EPoX主板几种前..
- 2008-9-16
- 反其道行之降低电压..
- 2008-9-16
- 基于ATM8051..
- 2008-9-16
- THB6016H测..
- 2008-9-16
- 显示器黑屏的解决办..
- 2008-9-16
- 你会买网络服务器吗..
- 2008-9-16
- 酷漫教你制作只带一..
- 2008-9-16
- 酷漫破解网页右健锁定
- 2008-9-16



