PSoC6 USB发送数据死机问题?

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
1313_3839421
Level 3
Level 3
10 replies posted 10 questions asked 5 replies posted

PSoC63的USB插到电脑USB口,电脑已经识别到了USB CDC设备,此时电脑端不打开对应的COM口,PSoC63通过USB往电脑发数据就会死掉;电脑端打开COM口就一切正常。PSoC63怎么获取电脑端COM口有没有打开,来选择是否发送数据。我写的发送函数如下图所示

pastedImage_2.png

pastedImage_1.png

0 点赞
1 解答
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

目前来看代码确实存在上位机未开始接收之前,device发送数据,待host开启接收后数据无法被读取导致stuck,还是建议通过host端发送数据作为device开始发送的标志,使得device必要的时候才进行数据发送。

在原帖中查看解决方案

0 点赞
3 回复数
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

没有直接的办法让PSoC6获取电脑端COM口有没有打开, 可以采用间接的办法,比如电脑端打开串口之后先发送标志字符,P6收到后再进行发送。 另外,问题重点应该是为什么会“死掉”,是电脑串口软件卡住了?降低数据发送量还这样吗?

0 点赞

是PSoC6 MCU 的USB发送进入了死循环,一直死在了Cy_USB_Dev_CDC_IsReady(USBFS_COM_PORT, &USBFS_cdcContext) 这里,因为PC端的COM口未打开,所以USB第一次发送的数据没有被PC端读取,第二次再发就进入了死循环。

pastedImage_1.png

0 点赞
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

目前来看代码确实存在上位机未开始接收之前,device发送数据,待host开启接收后数据无法被读取导致stuck,还是建议通过host端发送数据作为device开始发送的标志,使得device必要的时候才进行数据发送。

0 点赞