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:无法使用 MQTT 协议将数据可靠地发布到 Azure 云

Guru**** 2558250 points
Other Parts Discussed in Thread: CC3220SF, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/989788/cc3220sf-launchxl-not-able-to-reliably-publish-the-data-to-azure-cloud-with-mqtt-protocol

器件型号:CC3220SF-LAUNCHXL
Thread 中讨论的其他器件:CC3220SFSysConfig

您好!

我尝试使用 Azure IoT 插件每秒将来自 CC3220sf 的300字节数据(通过 UART 从 AM335x 接收)发送到 Azure 云

并 通过 UART 将确认结果从云端写回 AM335x。

->我使用的是 simplelink_CC32xx_SDK 版本4.10 (因为 azure_cc32xx_4_10_01_01 SDK 构建于 cc32xx_SDK v4.10上)

此外、我还将在 波特率为115200的情况下使用 CONFIG_UART_1进行上述操作、并使用 UART_readPolling 和 UART_writePolling API 与 AM335x 进行 UART 通信。  

但是、每次向云端发送大约700到1200条消息后、我都会不断收到以下错误:

IoTHubClient 已接受要发送的消息
错误:文件:../../sdk/iothub_client/src/iothubtransport_mqtt_common.c Func:publish_MQTT_msg Line:892
尝试发布 MQTT 消息失败
消息 ID:832已接收。 结果回叫已调用! 结果为:IOTHUB_CLIENT_CONFIRMATION_ERROR

我需要帮助了解上述错误的原因并解决该问题。

我在下面附上了我的实现方案的源文件以供参考

谢谢、

e2e.ti.com/.../iothub_5F00_client_5F00_sample_5F00_mqtt.c

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

    您好!

    您的邮件大小是否相同? 代码可能无法根据您的有效负载生成消息并发送消息。

    很遗憾、IOTHUB_CLIENT_CONFIRMATION_ERROR 是一个宽泛的错误代码。 云日期日志中是否有任何迹象表明、当 CC3220上发生错误时出现了问题?

    此致、

    Michael

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

    您好、Michael、

    感谢你的答复。

    是的、为了进行测试、我每秒将大约211字节的数据从 AM335x 发送到 CC3220sf。   

    我使用 Visual Studio Code 监视发送到云的数据、我在接收到的数据中看不到任何错误。(在云中查找所需日志的位置有任何建议?) 我还应该启用任何日志来查找应用程序或 SDK 级别的错误原因吗?

    如果您需要更多信息、请告诉我。

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

    您好!

    除了查看云日志之外,您还可以通过应用程序跟踪以查看错误的发生方式,如检查 publish_mqt_teleting_msg()的调用堆栈。

    对于云日志、您需要检查自己的云接口。 云服务器可能指示出了什么问题、或者它拒绝 CC3220中的特定 MQTT 数据包的原因、或者可能只是由于超时导致连接丢失。 不幸的是、我不知道在云中进行精确检查的地方。

    此致、

    Michael

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

    您好、Michael、

    我还想提的一点是、当我在没有 UART 通信 b/w AM335x 的情况下测试代码时、从 CC3220sf 发送一些硬编码的211字节数据、在2个多小时内工作正常。

    如何在 CC3220sf 中对 UART 使用 DMA 模式?

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

    您好!

    要为 UART 启用 DMA、您可以在 SysConfig 中为 UART 接口勾选"使用 DMA"选项:

    这会将使用的 UART 驱动程序切换为支持 DMA 的驱动程序版本。

    如果启用该设置、您是否仍然看到问题?

    此致、

    Michael

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

    您好、Michael、

    我为 UART 启用了 DMA 设置、但仍然看到同样的问题。

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

    您好!

    有趣的是、如果您禁用 AM335x 器件之间的 UART 通信、则不会看到 Azure 问题。

    您是否曾尝试检查 RTOS 状态以查看是否存在某些堆栈溢出或其他类似的运行时问题?

    此致、

    Michael