一、USB规范简介
USB是一种支持在USB主机和USB设备之间进行串行数据传输的通信协议。主机作为总线的主叫方,采用两种信令模式:全速模式12Mb/s和低速模式1.5Mb/s。USB使用四种数据传输方式:控制传输(control)、中断传输(interrupt)、批量传输(bulk)及等时传输(isochronous)。其中控制模式主要用于控制指令传输及USB规范的实现,等时传输主要用于音频及视频传输。USB通过两次总线列举(Enumeration and
Renumertion)来实现设备识别以及驱动程序析加载。其具体过程为:USB设备连到主机后,主机依据USB规范在特定地址通过端口0(endpoint0)与外设通信,并将外设视为默认设备。外设与主机通信将其6设备标识(DID、PID、VID)发给主机进行第二次总线列举。主机根据设备标识,加载相应设备驱动程序,重新分配地址,并将控制权转交给外设固件(firmware),通过固件与设备驱动程序及主机应用程序的交互通信,来实现外设的功能。
二、USB控制器芯片
1.CYPRESS2131简介
CYPRESS2131芯片是一种高度集成的USB芯片,具有3个显著特片:
(1)提供一种软件(SOFT,RAM BASED)解决方案,可实现外设固件的不断更新与升级;
(2)完全符合USB规范,提供足够的端点数目、缓冲区大小以及足够的速度;
(3)其内核可自动实现对USB规范的响应,最大限度地压缩了代码长度。
另外,CYPRESS2131还支持存储器扩展,具有低功耗、低噪声、有效的高级语言支持和增强的指令集等特性。CYPRESS2131芯片为80针PQFP封装,其引脚如图1所示。
2.CYPRESS2131的组成
CYPRESS2131功能框图如图2所示。
(1)收发器
USB电缆只包含4根电线:Vbus、D+、D-和GND。数据以12Mb/s的全速信号或1.5Mb/s的低速信号在D+和D-信号线上差分传输。收发器建在芯片上,不需要外部电路(在D+或D-上用来选择全速或低速的上拉电阻的情况除外)。
(2)串行接口引擎(SIE)
SIE通过包排序、信号产生/检测、CRC产生/校验、NRZI数据编码、位填充和包标识产生/解码来处理USB通信协议,并保证传送到USB电缆上的数据字节以LSB开头。
(3)微控制及片上RAM
CYPRESS2131使用增强型8051,具有以下特点:
(1)使用3.3V电源;
(2)24MHz晶振,一个总线周期仅用4个时钟周期;
(3)使用双数据指针;
(4)增加了异步串口UART2和16位定时器T2;
(5)高速内存接口及专用16位地址总线;
(6)增加了8个中断(INT2~INT5、PFI、T2及UART2);
(7)快速外部存储存取模式(使用AutoPoint);
(8)支持断点功能。
CYPRESS2131上用的片内内存(RAM)为8KB,但是为了便于外设固件的升级与更新,该8KB RAM既可用于传统意义上的ROM,又可用于RAM。其中的6KB用于程序存储与数据存储,其他2KB用于端点缓冲区。 CYPRESS2131使用16个端:8个批量传输端点(IN、OUT各8个)、8个等时传输端点(IN、OUT各8个),每个端点的缓冲区为 64Byte。每个端点均个有字节计数器及重新发送和接收当数据组的能力。该8KB RAM需通过命令MOVX进行访问。
另外,为了便于实现总线列举和国外部功能芯片相通信,CYPRESS2131还支持I2C总线。
三、CYPRESS2131在图像采集中的应用
1.图像采集系统的硬件实现
在图像采集系统中,使用OV6120作为图像采集芯片。OV6120是OmniVision公司开发的COMS黑白图像采集芯片。该芯片将COMS光感应核与外围支持电路集成在一起,输出的视频为黑白图像,与CCIR标准兼容;也可输出单帧图像,为 YUV格式,从其D7:0输出Y信号。这里使用YUV方式。
在整个图像采集系统中,CYPRESS2131主要有三方面的作用:作为 USB芯片与主机通信并传输数据;利用其片上增强型8051作为控制器使OV6120正常工作;通过其I2C总线对OV6120的对比度、亮度、锐度等各项参数进行设置。其具体工作过程为:SUB芯片上电复位后,CYPRESS2131按照USB规范应答,提供设备标识,USB进行二次总线列举,加载对应驱动程序,并将控制权转交给8051。8051通过I2C总线对OV6120各项参数进行设置。8051发出帧采集指令(通过OV6120的FREX)后进行图像采集,并同数据转移信号PCLK、行频HSYNC及场频VSYNC(后两个信号,图3中未标出)一起传给8051。8051将所得的数据信号转储到SRAM中,当一帧数据采集完后,再将SRAM中数据通过USB总线传至PC。CYPRESS2131在访问外部RAM时,通过FWR与FRD使之成为快速读写模式。使用标准12MHz晶振的情况下,读或写外部RAM一个字节只需使用333ns。图像采集系统原理示意如图3所示。
2.图像采集系统源程序
由于驱动程序较为复杂,这里仅给出利用USB总线发送数据的8051子例程。
START:MOV SP,#STACK-1 ;设置堆栈
FILL:MOV R7,#64 ;设置传输字节数
MOV DPTR,#IN2BUF;使用BULK端点
MOV DPTR1,#0000H
MOV A,@DPTR1 ;从外部RAM中读取数据
INC DPTR1
MOVX @DPTR,A
INC DPTR
DJNZ R7,FILL
MOV DPTR,#IN2BC
MOV A,#40H
MOVX @DPTR,A ;启动IN2缓冲区传输
LOOP:MOV DPTR,#IN2CS
MOVX A,@DPTR
JNB ACC.1,FILL ;若不忙,继续循环
END