ch376连接两个单片机系统通信出错,求助!!!

主机发送数据的个数,从机能够正确收到,但是所收到的数据一个都不正确,请问这是怎么回事!下面是主机程序 void host_send( unsigned char len, unsigned char *buf ) { /* 主机发送 */ wr_usb_data( len, buf ); toggle_send(); F=issue_token( ( 2 << 4 ) | DEF_USB_PID_OUT ); if (F !=USB_INT_SUCCESS ) ERROR(); /* 如果设备端不是CH37X芯片,那么需要修改端点号 */ if(F!=0)F=0;

main() { unsigned char data_to_send[250], data_by_recv[250]; /* 收发缓冲区 */ unsigned char i, len; WDTCTL = WDTPW + WDTHOLD; Key_Init(); int_clk(); Display_Init(); _EINT(); s = mInitCH376Host( ); /* 初始化CH376 */ mStopIfError( s ); mDelaymS(200); // 等待USB设备通电后完全稳定 set_usb_mode( 6 ); /* 设置USB主机模式, 如果设备端是CH37X, 那么5和6均可 */ while(1) { if(Key_Flag==1) /* 等待设备端连接上来 */

{ set_usb_mode( 7 ); /* 复位USB设备,CH375向USB信号线的D+和D-输出低电平 */ P2IE &= ~BIT0; /* 如果单片机对CH375的INT#引脚采用中断方式而不是查询方式,那么应该在复制USB设备期间禁止CH375中断,在USB设备复位完成后清除CH375中断标志再允许中断 */ for ( i=0; i<250; i++ ) { delay2us(); delay2us(); delay2us(); delay2us(); } /* 复位时间不少于1mS,建议为10mS */ set_usb_mode( 6 ); /* 结束复位 */ P2IE |= BIT0; while ( wait_interrupt()!=USB_INT_CONNECT ); /* 等待复位之后的设备端再次连接上来 */ for ( i=0; i<250; i++ ) delay2us(); /* 有些USB设备要求延时数百毫秒后才能工作 */ for(i=0;i<8;i++) data_to_send[i]=8; //for ( l=0; l<128; ) //{ // l+=63; Buf=&data_to_send[0]; host_send( 8, Buf ); /* 发送256字节的数据给设备端 */ // for ( i=0; i<250; i++ ) { delay2us(); delay2us(); delay2us(); delay2us(); } /* 有些USB设备要求延时数百毫秒后才能工作 */ //} Total+=1; Key_Flag=0; } else { Flow_Rate=2; //Total=0; } Display_All(); } }

看你的程序,你连设备枚举都没做,怎么能通讯? USB主机检测到有设备插入后,要进行获取设备描述符,分配地址等操作


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