阅读:2941回复:3
USB开发调试
我现在进行USB与PC通信产品的开发,使用的芯片为PDIUSBD12+89C52,在进行Firmware调试时(PC暂时无Driver),开始能收到GetDiscriptor中断(数值为:80,06,00,01,00,00,40),但是我在Mainloop中WriteDriverDiscriptor后(长度为:16),我认为接下来应有中断产生,以便将长度为18的DRIVER_DISCRIPTOR余下的数据送完。请教各位高手,这种现象该如何解决?
|
|
最新喜欢:changj...
|
沙发#
发布于:2001-08-18 19:47
PDIUSBD12芯片全速模式下的枚举调试过程:
1) 单片机上电后立即初始化所有的接口、存储区、定时器和中断服务程序指针,按USB协议要求把PDIUSBD12芯片中的Soft_Connect位寄存器置为“1”,把D+线变为高电平,此时D-为低电平,信号为差分1。设备插入USB集线器后,集线器的状态寄存器发生变化,主机软件查询到变化后,发送一系列请求使能集线器的端口中。 2) 如果PDIUSBD12配置为总线供电方式,则外设一连接到集线器上,端口使能后便被提供100mA 总线电流,外设处于上电状态,芯片所有的寄存器清零并指向默认地址。如果用自供电方式,芯片的EOT_N管脚通过一个上拉电阻接到USB的V_BUS上。 3) 单片机第一次接收到主机的GetDescriptor请求中断响应,主机要求外设发送设备描述符,确定外设缺省管道控制端点的每次数据包大小。单片机程序中通过控制端点回送设备描述符,这次只需要保证设备描述符中前8个字节发送正确。 4) 主机发送SetAddree请求到外设,给USB外设分配唯一的地址。单片机把PDIUSBD12芯片的SetAddressEnable寄存器置为1。这时外设被分配唯一地址,此时设备才是真正的外设,只有这以后的USB设备才能进行数据传送。 5) 外设再一次接收到GetDescriptor请求。单片机再一次向主机传送设备描述符,主机分析描述符的信息。操作系统此时才有足够信息来寻找设备的驱动程序。 6) 操作系统会继续发出GetConfiguration请求,读取设备的配置信息。单片机程序中要把PDIUSBD12芯片的各个端点的配置情形回送到主机中。如果有多个配置信息,有多次请求发生。 7) 在设备能通讯前,主机给PDIUSBD12 一个SetConfiguration请求,主机根据整个系统的USB使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关信息,使设备能被客户软件利用。 |
|
板凳#
发布于:2001-10-16 22:12
你是怎么知道收到GET-DESCRIPTOR数据的?
|
|
|
地板#
发布于:2001-10-17 22:15
当初我调试时可把每一步细细的实验的。本子用了两本。所以我每一步非常熟悉。
下面既然是单片机就可以捕获的. |
|