CH374做主机,怎样知道从机要给主机发送数据??

如题,请教,从机使用的是CH340,而主机CH374并不知道从机什么时候要发送数据。这个问题怎么解决?

我的理解:IN令牌包是主机发送的,主机不发IN令牌包,设备不发数据。
我的问题:那么问题来了,因为USB从机(CH340)何时发送数据是随机的,所以在程序中,CH374需要频繁的设置成IN事务,
SPI2_USB_WriteOneByte(REG_USB_H_PID,(DEF_USB_PID_IN<<4)|0x02); //主机设置成USB IN事务,被操作的目的端点0x02
                SPI2_USB_WriteOneByte( REG_USB_H_CTRL, ( USB_RX_tog1 ? ( BIT_HOST_START | BIT_HOST_TRAN_TOG | BIT_HOST_RECV_TOG ) : BIT_HOST_START ) );
这两行代码我是放在CH374的中断接收函数中执行的,当执行完之后,在CH340没有数据的时候,会返回NAK,返回的NAK又触发了CH374中断。现在就是这个中断频繁次数已经影响到程序的其他正常功能。

请教,沁恒的技术支持,这个问题如何合理的解决。谢谢!


对于操作340,收数据,这是一个批量传输。发IN包,可以放主循环发,也可以开定时器定时发IN包。看你的主循环运行时间,保证正常340缓冲区不溢出的前提下发一次IN包即可。

按340缓冲区32字节计算,波特率115200,8N1模式(10位),340不间断收,缓冲区将会在2.7ms满,所以理论上一定要在2.7ms之内发一次IN包。这是一个115200的理论极限值。


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