使用CH552G接收电脑上位机发送的数据。由于要使用io发送波形,频率达800khz,因而要关闭总中断使能。发送的波形是125ms时间内发送0.7ms的波形。发送完,再打开总中断使能。而后就接收不到上位机发送的数据。用的是p2端接收数据。
查看: 804
回复: 6
CH552G运行中关闭总中断使能,再开总中断使能后,usb接收不了上位机(电脑)发送的数据。
热门产品 :
CH32X035: 32位USB+USB PD单片机
可以尝试在关闭中断前先将端点接收应答置为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主机都可以等。你可以拿逻辑分析仪看看数据包在中断前后有什么异常。
请问:主频改为16mhz,对usb通信有影响吗?
理论不会对USB造成影响,具体问题应当具体分析
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录