最近看到资料,CH375做主机和372通讯时不需要以下操作: get_descr(); set_addr(); get_descr(); set_config(); 为什么不需要上述操作?分配地址,配置怎么办?
和计算机进行通信的时候,375是做设备的,你如果用内置固件的话是不需要上传任何东西。
不是的,我已经说了是375和 372通讯 ,如下程序 #ifdef DEVICE_NOT_CH37X /* 如果设备端是CH37X,那么以下步骤是可选的, 如果是其它USB芯片,那么需要执行以下步骤,并且要分析配置描述符的数据获得配置值以及端点号,并修改本程序中的端点号, 关于如何分析配置描述符请参考CH375PRT.C文件 */ #define USB_RESET_FIRST 1 /* USB规范中未要求在USB设备插入后必须复位该设备,但是计算机的WINDOWS总是这样做,所以有些USB设备也要求在插入后必须先复位才能工作 */ #ifdef USB_RESET_FIRST printf("There is no ch37X\n"); set_usb_mode( 7 ); /* 复位USB设备,CH375向USB信号线的D+和D-输出低电平 */ /* 如果单片机对CH375的INT#引脚采用中断方式而不是查询方式,那么应该在复制USB设备期间禁止CH375中断,在USB设备复位完成后清除CH375中断标志再允许中断 */ for ( i=0; i<250; i++ ) { delay2us(); delay2us(); delay2us(); delay2us(); } /* 复位时间不少于1mS,建议为10mS */ set_usb_mode( 6 ); /* 结束复位 */ while ( wait_interrupt()!=USB_INT_CONNECT ); /* 等待复位之后的设备端再次连接上来 */ for ( i=0; i<250; i++ ) delay2us(); /* 有些USB设备要求延时数百毫秒后才能工作 */ P16=0; #endif get_descr(1); /* 获取USB设备的设备描述符 */ set_addr(5); /* 设置USB设备的地址,因为只有一个USB设备,所以可以分配1到126之间的任意值 */ get_descr(2); /* 获取USB设备的配置描述符 */ set_config(1); /* 设置USB配置值,该数值来自USB设备的配置描述符 */ #endif
如果是375操作372的话,获取设备描述符之类的是不需要的,可以直接进行通信
可是我想知道的是为什么不需要?不知道能不能解答一下,谢谢!
实际在我们375芯片内部,只要插上去是CH37X芯片的话,我们的375芯片就将CH37X芯片给自动的枚举了,对于单片机端就可以不需要枚举了,只需要往相应的端点发送数据就可以了。