This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF-LAUNCHXL:UART 问题

Guru**** 2539500 points
Other Parts Discussed in Thread: CC3220SF

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/980719/cc3220sf-launchxl-uart-question

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:CC3220SF

大家好、

我的客户对 UART 的使用有疑问。 正如 UART API 文档所说:  不管接收到多少字节,UART_readCancel()都将调用已注册的 RX 回调函数

我的客户做了一些测试:

 UART_Read 仅读取50个字节、然后返回;

通过 UART 流控制连接 CC3220SF 并发送108个字节

接收到100个字节[调用 UART_Read 两次]后、延迟20ms、然后调用 UART_readCancel ()

结果:他发现 RX 回调函数未被调用。 再次执行上述三个步骤、他可以接收丢失的8个字节以及新数据

为什么会发生这种情况?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Viki:

    如果我正确理解该流程,客户将使用 UART_READ()一次读取50个字节。 UART_READ()将在收到请求的数据量后触发 RX 回调函数,因此,如果他调用过两次并接收到100个字节,似乎按预期工作,则会触发该函数。

    在前100个字节之后,他是否调用了 UART_read()以获得另外50个字节? 如果他这样做,他应该在调用 UART_readCancel()后获得返回的8个字节。 但是,如果他没有第三次调用 UART_read(),则没有待执行的读取操作来取消,因此 UART_readCancel()不会触发回调。 您能否澄清客户在收到前100个字节后是否第三次调用 UART_Read()?

    此致、

    Michael