C8051F320在USB设计中的应用
随着USB技术的快速发展以及USB外设在越来越多场合的广泛应用,支持USB接口技术的芯片也越来越多。对于USB接口的设计,如非扩展之用,选用带有MCU的USB控制器当然是设计师们的首选,因为这样不仅可以大大简化硬件电路、减小外设体积,而且还可以提高产品的可靠性。文中介绍的C8051F320就是顺应这种需求而推出的一种新型USB控制器芯片。
1 C8051F320的主要特点
C8051F320是Cygnal公司推出的一款具有全速USB功能的混合信号flash微控制器芯片,该器件内部集成有2304 Byte RAM和16k Byte的flash存储器。实际上,C8051F320是一个完整的小型片上系统(SoC)。由于利用该芯片进行设计时可以不需要任何外部元件(包括电阻和晶振),因而是小型USB应用的理想选择。与其它同类产品相比,C8051F320主要具有如下一些特点:
●全速的USB 2.0功能控制器;
●内部集成了时钟恢复电路,且不需要外接晶体振荡器;
●可支持8个USB端点;
●带有1k字节的USB缓冲存储器;
●内部集成了USB接口的数据收发器,设计中无需外部上拉电阻;
●具有高速增强型8051 MCU内核,该MCU内核采用流水线式指令结构,70%的指令执行时间为一个或两个系统时钟周期,处理速度可达25MIPS(时钟频率为25MHz时)。
此外,C8051F320还有许多其它特性,如支持在系统编程(ISP),带有可编程的数字I/O和数字交叉开关,可提供全速、非侵入式的在系统片内调试电路等。
2 C8051F320的引脚功能
C8051F320的引脚排列如图1所示。主要引脚的功能如下:
D+、D-:USB电缆的USB D+和USB D-连接端;
VDD:2.7~3.6V片上电源输入端或片内电压调节器的3.3V输出端;
REGIN:片内电压调节器的5V输入端;
VBUS:USB电缆VBUS引线的感应输入端,当该脚出现5V高电平信号时,表示该设备已经和主机连接好;
RST/C2CK:多功能引脚,内部上电复位POR(Power On Reset)和VDD监视器的漏极开路输出,使该脚保持低电平15μs以上可对系统进行一次复位。此外,该脚还可作为C2接口的时钟信号输入端;
P3.0/C2D:多功能引脚,可作为I/O端口或C2接口的双向数据信号传输端口。
3 应用举例
笔者以C8051F320为核心设计了一个USB和CAN总线的接口转换模块,运用该接口转换模块可以方便地把具有USB接口的测控设备连接到一个CAN总线测控网络中,以对系统的运行状况进行系统和整体的测试和分析。在该接口转换模块的设计中,最主要的工作就是USB接口部分的设计,包括硬件电路和固件程序的设计。
3.1 USB 接口硬件电路设计
由于C8051F320微控制器具有简单易用的特点,因此,用C8051F320进行USB接口的硬件设计也显得十分简单,主要包括两部分的内容,一是接口转换模块供电方式的选择,二是USB引脚的连接,图2是其USB接口电路图。
由于整个模块的功率估计在3W左右,而USB总线的供电量只适合小功率模块的供电,最大也只有500mA,因此不能满足整个模块的安全供电,所以模块选择自供电模式,图2所示的整个模块(包括C8051F320和模块中所有其它部分)的供电电源都来自外部5V电源。由于C8051F320中的USB收发器内部集成了上拉电阻,因而不需要任何外部器件便可直接与USB接口相连。
3.2 USB固件程序设计
USB固件程序设计是USB接口部分的主要工作,它的主要目的是:当USB设备连接到主机上时,主机可以发现新设备,然后建立连接并完成数据传输任务,也就是能够让Windows正常检测和识别USB设备。因此在USB固件程序中,最重要的工作就是USB描述符的定义和USB传输中断的处理。
(1)USB描述符
USB描述符是USB协议定义的一套描述设备功能和属性的固定结构的描述语言。USB2.0中的描述符包括设备描述符、配置描述符、接口描述符、端点描述符等8种标准描述符和其它一些非标准描述符。USB主机通过USB描述符完成设备类型的识别和配置,同时为设备提供相应的客户端驱动程序,运行于USB协议栈上层的客户端驱动程序通过这些信息来正确访问设备并与其通信,从而达到即插即用的目的。其中,配置中用到的两个端点描述符如表1所列。
表1 端点描述
偏移量 | 域 | 大小 (字节) | 端点描述符1 | 端点描述符2 | ||
数值 | 说明 | 数值 | 说明 | |||
0 | bLength | 1 | 0x07 | 描述符字节数 | 0x07 | 描述符字节数 |
- C8051F320单片机原理及引脚及封装(04-17)
- 基于S3C44B0X的心电血压监测仪USB接口设计(11-28)
- 基于ISP1581型接口电路的USB2.0接口设计(01-18)
- 用CP2101将USB口扩展成串口(01-18)
- TM1300 PCI-XIO口的UART和USB接口设计(01-17)
- 基于CH371的实用USB接口设计(01-23)