最近在用ch376和cp2102通讯,现在收发分开都是可以了,用的是论坛里的ch374操作cp2102的资料移植过去的
现发现一个问题 当我用cpu控制ch376执行接收事务后,如果cp2102无数据给ch376,那么ch376会死掉,无论我cpu发什么指令给ch376,他都不会正常响应,比如设置模式,复位ch376,都操作失败,此时也无中断响应。
上代码,版主可以自己去试一下
//***************************************************** //* NAME: issue_token(UINT8 endptog, UINT8 endp_and_pid ) //* FUCTION: 执行USB事务 //* 输入参数: endptog 同步标志 endp_and_pid 端点号和令牌 //* 输出参数:无 //* 说明: 高4位目的端点号, 低4位令牌PID //****************************************************** void issue_token(u8 endptog, u8 endp_and_pid ) { xWriteCH376Cmd( CMD2H_ISSUE_TKN_X ); xWriteCH376Data( endptog ); xWriteCH376Data( endp_and_pid ); mDelayuS(3); }
就是写了下面这句话--执行接收事务之后,无论cpu如何操作ch376,都返回失败,超时。 issue_token( 0,( mDiskBulkInEndp << 4 ) | DEF_USB_PID_IN );
其中 mDiskBulkInEndp 是USB设备的输入端点,我这里为 1
其他都是正常的,比如我写 执行发送事务之类的,都有正常的中断返回的。
版主可以试试