在CH375DS2里面有详细的介绍
void toggle_recv(void) /* 主机接收成功后,切换DATA0和DATA1实现数据同步 */ { CH375_WR_CMD_PORT( CMD_SET_ENDP6 ); CH375_WR_DAT_PORT( endp6_mode ); endp6_mode^=0x40; delay2us(); }
void toggle_send(void) /* 主机发送成功后,切换DATA0和DATA1实现数据同步 */ { CH375_WR_CMD_PORT( CMD_SET_ENDP7 ); CH375_WR_DAT_PORT( endp7_mode ); endp7_mode^=0x40; delay2us(); }
以上两个函数从CH375LNK.C(ch375+ch372连接两个单片机系统)拷贝出来的,未经修改,事实上这个操作行得通。
原来在操作set_usb_made的时候赋值了
不知道这样的理解正确不:发送接收操作通一个端点的话,n(奇数)为操作次数(包括发送接收),不管该次操作是接收还是发送,操作数都是80,n+1就是c0。如果接收发送操作的是不同的端点,那么对于同一端点80和c0应该是交替的。
用0x80,0x06,0x00,0x04,0x00,0x00,0x09,0x00读不了接口描述符的吗?接口描述符的类型是4
实际在你读取配置描述符的时候,在读取完成之后,里面的数据包括配置描述符,接口描述符,端点描述符,这些描述符是在你发送0x80,0x06,0x00,0x02,0x00,0x00,0xff,0x00之后全部读取到了
我的意思是能不能单独读接口描述符?
至少USB协议里面标准的获取描述符的请求是没有单独获取接口描述符的命令的,具体的你可以参考USB的协议
如果配置描述符总长度大于64,那么用get_descr(2)函数读出前64字节,还能通过rd_usb_data去读剩下的吗?还是大于64字节的,一开始就必须用rd_usb_data去读呢?
一开始的时候就要用外置固件来读