ch376芯片的一个bug,麻烦查下![原创]

最近在用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

其他都是正常的,比如我写 执行发送事务之类的,都有正常的中断返回的。

版主可以试试

据资料说是 USB接收事务完成时才会产生一个中断,那么如果此时ch376无数据接收进来,而去发送一个接收事务,

会产生什么情况? 难道ch376就是死机异常了?

求解释


这可不是BUG,说明你对CH376还不了解。 因为没有数据时CP2102一直给CH376发送NAK。这样CH376会一直重试。你可以设置重试次数让CH376重试一定次数后,结束,会产生中断。


好的,我设置下试试


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