CH552G运行中关闭总中断使能,再开总中断使能后,usb接收不了上位机(电脑)发送的数据。

使用CH552G接收电脑上位机发送的数据。由于要使用io发送波形,频率达800khz,因而要关闭总中断使能。发送的波形是125ms时间内发送0.7ms的波形。发送完,再打开总中断使能。而后就接收不到上位机发送的数据。用的是p2端接收数据。

可以尝试在关闭中断前先将端点接收应答置为NAK,开启中断后再置为ACK,也可以尝试另外增加与上位机的协议,再关闭中断前上传数据提前告知主机后续无法接收状态,开启中断后再告知主机可接收,具体可以用一些抓包工具看看数据通讯流程。


你给的方案好像不行。能使用timer作为中断,且将timer的中断优先级为最高。在中断里发波形。这个方法可以吗?


频率达800khz。你是想发WS2812的数据吧。

WS2812高电平期间不能中断,但低电平可以。只要低电平延长时间少于RESET时间就行。


参考

https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/


另外正常情况下主机收到NAK可以等。才0.7ms不至于超时。我这边测试禁用中断100ms主机都可以等。你可以拿逻辑分析仪看看数据包在中断前后有什么异常。



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