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.

[参考译文] CC2652P:使用两个 UART、当一个 UART 关闭时、另一个 UART 接收到数据错误。

Guru**** 2952510 points

Other Parts Discussed in Thread: CC2652P

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/989480/cc2652p-using-two-uarts-when-one-uart-closed-another-uart-recieves-data-error

器件型号:CC2652P

大家好、 我使用 CC2652P、simplelink_cc13x2_26x2_SDK_4_40_04_04、CCS10.2。

我在调试两个 UART 时遇到了一个难题。

在 CC2652P 上的应用中、我需要使用两个 UART、一个用于与 PC 通信、一个用于与另一个 STM32 MCU 通信。

当我只打开两个 UART 时、它们运行良好。

但是、当我做更多的事情时、会出现问题。

由于我的应用中的低功耗需求、两个 UART 不能始终保持打开状态。 因此、我需要使它们分别打开和关闭。

系统启动后、两个 UART 正常工作、稍后我关闭一个 UART、然后在另一个 UART 的读取回调中、读取缓冲区中的数据为错误、始终错误、如下所示(仅示例):

这是 UART 读取缓冲区中的原始数据。

我使用 UART 模块向 PC 接收相同的数据、并且 PC 中的数据是正确的。 因此、TX 数据是正确的、问题应该出在 CC2652P 中的 Rx 上。

我已经多次测试过这个问题。 当两个 UART 刚刚打开时、它们接收的数据正确。 但是、在一个 UART 在运行时关闭后、另一个 UART 接收到数据错误。

那么、我想知道两个 UART 是否是独立的?

我可以 完全独立地使用它们吗?

谢谢你。

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

    您好!

    CC2652P 具有两个独立的 UART 外设、可在低功耗待机模式下运行、无需关闭。  您是否进行了两个不同的处理并确保在 UART_Close 之前使用 UART_readCancel?  更多 信息、请参阅 UART TI 驱动程序运行时 API。

    此致、
    Ryan

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

    是的,我使用两个不同的句柄, 在 UART_CLOSE ()之前确实使用了 UART_READCancel。 我为每个 UART 使用两个不同的波特率。 这是可以的吗?

    我尝试了 readcancel 但没有关闭、问题仍然存在。

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

    我发现、如果我再次打开已关闭的 UART、则另一个 UART 接收到正确的数据。

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

    使用两个不同的波特率应该是可以的、因为如前所述、它们是两个不同的外设。  您能否提供 UART 初始化和功能代码片段?  如果改为使用 UART2、行为是否会发生变化?

    此致、
    Ryan

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

    此问题已解决。 谢谢你。