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.

[参考译文] CC2340R5:使用 Zephyr BLE 网状网络在 CC2340R53 上未触发 UART RX 中断。

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1610833/cc2340r5-uart-rx-interrupt-not-triggering-on-cc2340r53-using-zephyr-ble-mesh

器件型号: CC2340R5

TI 团队大家好、

我目前正在使用 CC2340R53 ADC 启动设备 Zephyr RTOS 、开发 BLE 网状网络应用

作为项目的一部分、我正在实施 A 裸 UART 接口 。 我面临的问题是 UART 接收中断不会在传入数据时触发 尽管如此 基于 UART 轮询的接收工作正常


问题摘要

  • 器件: CC2340R53

  • RTOS: Zephyr

  • 应用: BLE 网状网络

  • UART 接收模式:

    • 轮询 RX: 正常工作

    • 基于中断的 RX: 不触发

我已经验证了 UART 配置、包括波特率、引脚映射和基本初始化。 由于轮询模式按预期工作、因此硬件和引脚配置似乎是正确的。 但是、接收到数据时、不会调用 RX 中断回调。


请求指导

我希望得到以下几点的支持:

  1. 是否有任何已知的限制或特殊要求 使用 Zephyr 时 CC2340R53 上的 UART RX 中断

  2. 有任何问题 其它设备树、Kconfig 或 IRQ 相关设置 未被启用?

  3. 有任何问题吗 参考示例或推荐的方法 如何在带有 Zephyr 的 CC2340R53 上实现基于中断的 UART 接收?

请告诉我是否需要我这边的日志、配置文件或信息进行进一步分析。

期待您的指导。

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

    您好:

    感谢您的联系。

    请问您正在使用什么 Zephyr 版本标签? 此外、请分享您在设置中断驱动程序 UART 功能时所使用的主配置。 我认为问题可能与未启用 DMA 有关。

    此致、

    David。

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

    您好:

    感谢您的答复。

    我当前正在使用的器件 Zephyr 发布版本标签 v3.7.0-ti-9.10.02_ea  and toolchain zephyr 0.16.9

    对于 UART、我已启用 中断驱动模式 使用标准 Zephyr UART 驱动程序 API 来完成。 基于轮询的接收工作正常、但未触发 RX 中断回调。

    以下是我使用的主要配置详细信息:

    --> prj.conf



    --> lp_em_cc2340r53.dts

       


    此致。

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

    您好:

    谢谢。 请分享您正在调用哪些 UART API? 例如 uart_rx_enable ()? 在 Zephyr 中、中断驱动型 API 和异步 API 不应同时用于相同的硬件外设。 例如、uart_rx_enable () 是一个异步 API(通过 CONFIG_UART_ASYNC_API = n 禁用)。 在这种情况下、您可以仅使用中断 API 和相关函数、例如 UART_IRQ_rx_ENABLE

    BR、

    David。

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

    您好:

    感谢您的答复。

    我附加了 API 的屏幕截图。

    BR、

    Tarun

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

    你好、Tarun、

    请允许我直至星期一完成复印工作。

    您使用哪个示例作为参考? 您是否能够通过仅 UART 的示例正确配置此项?  

    BR、

    David。

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

    您好、David、

    我参考的是“echo_bot"示“示例。
    否、我尚未使用独立示例、但通过轮询、我能够使用 UART 进行接收和发送。

    BR、

    Tarun。

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

    你好、Tarun、

    对延迟深表歉意。 我使用仅 UART 的示例进行复制。 我可以询问您是否可以在您的环境中启用 CONFIG_UART_CC23X0_DMA_DRIVEN 标志设置为 Yes?

    BR、

    David。

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

    您好、David、

    基于中断的 UART 现在正在工作。 但是、我正在寻找一种 UART RX 实现方案、该方案使用超时而不是字符串定界符来确定数据接收结束。 具体来说、我需要一个超时 API、它可以在指定时间内捕获数据、然后使数据可用。

    对此有何建议?

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

    您好 David、能否就此提供一些建议或指导、特别是关于具有超时功能的 UART RX 的实现、使我能够在定义的时间范围内捕获数据、然后使其可访问?