问题出在哪里?看看我写的一个从375到usb设备发送数据的子程序

我是用51控制usb耳机,描述符和配置都能够读出来了,下面是我的一个51通过375往 设备发送数据的子程序,在调试过程中,程序中的s的值,一直都是2eh,看了资料说是 INTALL,这个是什么意思啊。怎么能够解决这个问题。谢谢了

***************************************************************** void send_data( unsigned short len, unsigned char *buf ) { /* 主机发送数据块,一次最多64KB */ unsigned char l, s; while( len ) { /* 连续输出数据块给USB打印机 */ toggle_send( tog_send ); /* 数据同步 */ l = len>endp_out_size?endp_out_size:len; /* 单次发送不能超过端点尺寸 */ wr_usb_data( l, buf ); /* 将数据先复制到CH375芯片中 */ s = issue_token( ( endp_out_addr << 4 ) | DEF_USB_PID_OUT ); /* 2eh请?e驝H375输出数据 */ if ( s==USB_INT_SUCCESS ) { /* CH375成功发出数据 */ tog_send = ~ tog_send; /* 切换DATA0和DATA1进行数据同步 */ len-=l; /* 计数 */ buf+=l; /* 操作成功 */ } else { /* 操作失败,正常情况下不会失败 */ clr_stall( endp_out_addr ); tog_send = 0; /* 操作失败 */ } } }

自己顶一个


而且读取的设备描述符是(318个字节3e01,接口数为3): /**********************************************/ 09 02 3e 01 03 01 00 80 32 09 04 00 00 00 01 01 00 00 0a 24 01 00 01 75 00 02 01 02 0c 24 02 0d 01 02 00 01 01 00 00 00 09 24 06 06 0d 01 03 00 00 0c 24 02 0c 01 01 00 02 03 00 00 00 0d 24 04 09 02 0c 06 02 03 00 00 00 00 0a 24 06 01 09 01 01 02 02 00 09 24 03 0e 01 03 00 01 00 0c 24 02 0b 01 02 00 01 01 00 00 00 09 24 06 02 0b 01 03 00 00 0c 24 04 07 01 02 01 01 00 00 00 00 09 24 03 0a 01 01 00 07 00 09 04 01 00 00 01 02 00 00 09 04 01 01 01 01 02 00 00 07 24 01 0c 01 01 00 17 24 02 01 02 02 10 05 40 1f 00 11 2b 00 22 56 00 44 ac 00 80 bb 00 09 05 01 09 c0 00 01 00 00 07 25 01 01 00 00 00 09 04 01 02 01 01 02 00 00 07 24 01 0c 01 01 00 17 24 02 01 01 02 10 05 40 1f 00 11 2b 00 22 56 00 44 ac 00 80 bb 00 09 05 01 09 60 00 01 00 00 07 25 01 01 00 00 00 09 04 02 00 00 01 02 00 00 09 04 02 01 01 01 02 00 00 07 24 01 0a 00 01 00 17 24 02 01 01 02 10 05 40 1f 00 11 2b 00 22 56 00 44 ac 00 80 bb 00 09 05 84 09 60 00 01 00 00 07 25 01 01 02 01 00 /******************************************/ 其中配置描述符是: 09 02 3e 01 03 01 00 80 32

其中接口描述府是: 09 04 00 00 00 01 01 00 00

09 04 01 00 00 01 02 00 00 09 04 01 01 01 01 02 00 00 09 04 01 02 01 01 02 00 00 09 04 02 00 00 01 02 00 00 09 04 02 01 01 01 02 00 00 其中端口描述符是: 09 05 01 09 c0 00 01 00 00 09 05 01 09 60 00 01 00 00 09 05 84 09 60 00 01 00 00

问题: 1.怎么端口的描述符的长度是9? 2.怎么选择接口,及端点? 3。其他的配置描述符是什么?

望大侠指点,谢谢


顶一个


有同步端点,CH375肯定操作不了,CH374引脚与CH375差不多,支持ISO传输,用CH374也许可以,只要USB设备不要求一定发最大包长度CH374就可以支持,选接口的方法参考计算机的USB做法


只有登录才能回复,可以选择微信账号登录