推荐开发流程
5.1 看本介绍USB 2.0协议的书,对USB 2.0协议有所了解。推荐《USB 2.0原理与工程开发》
5.2 看CYUSB.PDF文档。了解驱动安装方法。
5.3 看KEIL C51的书籍,熟悉C51的编程方法,熟悉KEIL C编程环境。
5.4 看CYPRESS提供的例程,了解68013A编程框架。推荐《EZ-USB 2100系列单片机原理、编程及应用》(基本框架类似,部分寄存器定义不同)。
5.5 对照USB 2.0协议,编写dscr.a51文件,配置各种描述符。
5.6 结合FX2 TechRefManual.pdf,研读FW.C、PERIPH.C、FX2REGS.H、FX2.H,了解寄存器的定义。
5.7 根据系统需求编写响应代码,有开发板时,根据开发版上的LED来测试程序正确与否。
5.8 根据CYAPI.PDF CYUSB.PDF编写上位机通讯程序。
同步读取数据方法 XferData();
异步读取数据方法 BeginDataXfer()/WaitForXfer()/FinishDataXfer();
5.9 调试程序。
5.10 编写其他8051上的程序,并继续调试。
___________________________________________下面是对dscr.a51文件的分析_________________________________________________
该文件主要是一个USB设备的描述符配置表
;;-----------------------------------------------------------------------------
;; File: dscr.a51
;; Contents: This file contains descriptor data tables.
;;
;; Copyright (c) 1997 AnchorChips, Inc. All rights reserved
;;-----------------------------------------------------------------------------
;;下面是USB设备的设备描述符类型
;; 设备描述符
;; 配置描述符
;; 接口描述符
;; 端口描述符
;; String字串描述符
;; 装置认可描述符(新添加的,暂时未查到详细信息)
DSCR_DEVICE equ 1 ;; Descriptor type: Device
DSCR_CONFIG equ 2 ;; Descriptor type: Configuration
DSCR_STRING equ 3 ;; Descriptor type: String
DSCR_INTRFC equ 4 ;; Descriptor type: Interface
DSCR_ENDPNT equ 5 ;; Descriptor type: Endpoint
DSCR_DEVQUAL equ 6 ;; Descriptor type: Device Qualifier
;;下面是各描述符的长度
;;设备描述符的长度为18个字节
;;配置描述符的长度为9个字节
;;接口描述符的长度为9个字节
;;端口描述符的长度为7个字节
;;(暂时省略)
DSCR_DEVICE_LEN equ 18
DSCR_CONFIG_LEN equ 9
DSCR_INTRFC_LEN equ 9
DSCR_ENDPNT_LEN equ 7
DSCR_DEVQUAL_LEN equ 10
;;下面应该是事务格式,也即传输类型
;;控制传输方式
;;同步
;;批处理
;;中断
ET_CONTROL equ 0 ;; Endpoint type: Control
ET_ISO equ 1 ;; Endpoint type: Isochronous
ET_BULK equ 2 ;; Endpoint type: Bulk
ET_INT equ 3 ;; Endpoint type: Interrupt
public DeviceDscr, DeviceQualDscr, HighSpeedConfigDscr, FullSpeedConfigDscr, StringDscr, UserDscr
;; TGE DSCR SEGMENT CODE
;;-----------------------------------------------------------------------------
;; Global Variables
;;-----------------------------------------------------------------------------
;; TGE rseg DSCR ;; locate the descriptor table in on-part memory.
cseg at 90H ;; TODO: this needs to be changed before release
;;设备描述符的结构
DeviceDscr:
db DSCR_DEVICE_LEN ;; Descriptor length
db DSCR_DEVICE ;; Decriptor type
dw 0002H ;; Specification Version (BCD)
db 00H ;; Device class
db 00H ;; Device sub-class
db 00H ;; Device sub-sub-class
db 64 ;; Maximum packet size
dw 4705H ;; Vendor ID
dw 0210H ;; Product ID (Sample Device)
dw 0000H ;; Product version ID
db 1 ;; Manufacturer string index
db 2 ;; Product string index
db 0 ;; Serial number string index
db 1 ;; Number of configurations
;;装置认可描述符的结构
DeviceQualDscr:
db DSCR_DEVQUAL_LEN ;; Descriptor length
db DSCR_DEVQUAL ;; Decriptor type
dw 0002H ;; Specification Version (BCD)
db 00H ;; Device class
db 00H ;; Device sub-class
db 00H ;; Device sub-sub-class
db 64 ;; Maximum packet size
db 1 ;; Number of configurations
db 0 ;; Reserved
;;高速描述符的结构介绍开始
;;高速配置描述符结构
HighSpeedConfigDscr:
db DSCR_CONFIG_LEN ;; Descriptor length
db DSCR_CONFIG ;; Descriptor type
db (HighSpeedConfigDscrEnd-HighSpeedConfigDscr) mod 256 ;; Total Length (LSB)
db (HighSpeedConfigDscrEnd-HighSpeedConfigDscr) / 256 ;; Total Length (MSB)
db 1 ;; Number of interfaces
db 1 ;; Configuration number
db 0 ;; Configuration string
db 10100000b ;; Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu)
db 50 ;; Power requirement (div 2 ma)
;;高速接口描述符结构
;; Interface Descriptor
db DSCR_INTRFC_LEN ;; Descriptor length
db DSCR_INTRFC ;; Descriptor type
db 0 ;; Zero-based index of this interface
db 0 ;; Alternate setting
db 2 ;; Number of end points
db 0ffH ;; Interface class
db 00H ;; Interface sub class
db 00H ;; Interface sub sub class
db 0 ;; Interface descriptor string index
;;高速端口描述符结构(出端点)
;; Endpoint Descriptor
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 02H ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 00H ;; Maximun packet size (LSB)
db 02H ;; Max packect size (MSB)
db 00H ;; Polling interval
;;高速端口描述符结构(入端点)
;; Endpoint Descriptor
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 86H ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 00H ;; Maximun packet size (LSB)
db 02H ;; Max packect size (MSB)
db 00H ;; Polling interval
HighSpeedConfigDscrEnd:
;;高速描述符结构介绍完毕
;;全速描述符结构介绍开始
;;全速配置描述符
FullSpeedConfigDscr:
db DSCR_CONFIG_LEN ;; Descriptor length
db DSCR_CONFIG ;; Descriptor type
db (FullSpeedConfigDscrEnd-FullSpeedConfigDscr) mod 256 ;; Total Length (LSB)
db (FullSpeedConfigDscrEnd-FullSpeedConfigDscr) / 256 ;; Total Length (MSB)
db 1 ;; Number of interfaces
db 1 ;; Configuration number
db 0 ;; Configuration string
db 10100000b ;; Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu)
db 50 ;; Power requirement (div 2 ma)
;;全速接口描述符
;; Interface Descriptor
db DSCR_INTRFC_LEN ;; Descriptor length
db DSCR_INTRFC ;; Descriptor type
db 0 ;; Zero-based index of this interface
db 0 ;; Alternate setting
db 2 ;; Number of end points
db 0ffH ;; Interface class
db 00H ;; Interface sub class
db 00H ;; Interface sub sub class
db 0 ;; Interface descriptor string index
;;全速端点描述符(出端点)
;; Endpoint Descriptor
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 02H ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 40H ;; Maximun packet size (LSB)
db 00H ;; Max packect size (MSB)
db 00H ;; Polling interval
;;全速端点描述符(入端点)
;; Endpoint Descriptor
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 86H ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 40H ;; Maximun packet size (LSB)
db 00H ;; Max packect size (MSB)
db 00H ;; Polling interval
FullSpeedConfigDscrEnd:
;;全速描述符介绍完毕
;;下面是字串描述符介绍
StringDscr:
StringDscr0:
db StringDscr0End-StringDscr0 ;; String descriptor length
db DSCR_STRING
db 09H,04H
StringDscr0End:
StringDscr1:
db StringDscr1End-StringDscr1 ;; String descriptor length
db DSCR_STRING
db 'S',00
db 'R',00
db 'C',00
db 'O',00
db 'U',00
db 'T',00
db '_',00
db 'S',00
db ' ',00
db 'v',00
db '0',00
db '.',00
db '2',00
db '.',00
db '0',00
db '0',00
db '0',00
db '0',00
StringDscr1End:
StringDscr2:
db StringDscr2End-StringDscr2 ;; Descriptor length
db DSCR_STRING
db 'E',00
db 'Z',00
db '-',00
db 'U',00
db 'S',00
db 'B',00
db ' ',00
db 'F',00
db 'X',00
db '2',00
db ' ',00
db 'D',00
db 'K',00
db ' ',00
db 'B',00
db 'O',00
db 'A',00
db 'R',00
db 'D',00
db ' ',00
db 'W',00
db '/',00
db 'L',00
db 'O',00
db 'G',00
db 'I',00
db 'C',00
db ' ',00
db 'A',00
db 'N',00
db 'A',00
db 'L',00
db 'Y',00
db 'Z',00
db 'E',00
db 'R',00
StringDscr2End:
UserDscr:
dw 0000H
end
_________________________________________________________________
疑问: 在分析dscr,a51文件时,得知该文件是一个USB设备固件描述符表,有一个疑问就是里面只列出了高速设备和全速设备的描述符,而且这两种描述符中还只包括了ET-BULK(应该批处理传输)的方式,其它(中断、控制、同步)的在哪里定义了啊,而且对于低速设备不用做描述吗
文章评论(0条评论)
登录后参与讨论