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.

[参考译文] AM2434:具有 RX 触发电平中断的 UART

Guru**** 2794765 points

Other Parts Discussed in Thread: AM2434, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1618968/am2434-uart-with-rx-trigger-level-interrupt

器件型号: AM2434
主题: SysConfig 中讨论的其他器件

您好、此问题与此问题相关: “AM2434:UART 接收中断“
我通过一个执行几乎相同步骤的新示例、中断现在已启用并正常工作。

问题是我希望在 FIFO 中接收到的每个特定字节数时都触发中断。 我试图改变 “rxtriglvl"</s>“ 初始化配置中完成、但它没有完成任务。

该中断会在接收到每个字节后触发、并持续触发、直到 FIFO 清空。
我附上了我所做的整个项目。 为了进一步说明这一点、我在 main 函数 (empty_main) 中初始化 UART、并使用名为 (mygUartInitObject) 和的初始化结构 不会 从 SysConfig 生成的函数。

RX_INTERRUPT_TEST.zip 

提前感谢您

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

    您好、

    让我检查驱动程序中的 rxTriggerLvl 行为。

    BR Vaibhav

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

    您好、

    您能否根据您设置的值 16 检查是否触发了 Rx 中断、或者它是触发了字符超时中断、请告诉我。

    我提出这一点的原因是、会针对每个字节触发 CTI 或字符超时中断。

    BR Vaibhav

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

    尊敬的 Vaibhav:

    该中断每字节触发一次、而不是在 16 位之后触发。 我附加了 ISR 的屏幕截图和我得到的照片。 它表明、即使我立即发送几个字节、ISR 也会触发每个字节、它会为每个字节触发多次。

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

    H Hatem、

    或者是否触发了字符超时中断、请告诉我。

    请告诉我这一个。

    我也在检查我的最后。 我认为、您的要求是每接收到 16 个字节生成 RX 中断。

    此致、

    Vaibhav

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

    您问题的答案:
    触发的是“字符超时中断 (CTI)“、它是每个字节。

    我检查了是否使用了此函数  UART_getIntrIdentityStatus (baseAddr)“ 、它返回“0000 1100“、这是从技术参考中显示的超时中断。

    是的 、我的要求是每接收 16 个字节生成 RX 中断、和 不会 每个字节。

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

    您好 Hatem、

    感谢您确认这是每次触发的字符超时中断。

    我在 AM243 TI EVM 上也得到了手。

    我们会对此进行测试并尽快通知您。

    对于我来说、我将按照以下步骤进行测试:

    1. 运行基本的 UART echo SDK 应用程序。
    2. 当调用 UART_read 时、则在 UART ISR 例程内放置一个断点以监控其到达时间。
    3. 通过以下两种方式发送数据并进行测试:
      1. 通过终端逐个发送数据(8 个字节)。
      2. 通过 Python 脚本发送数据(8 字节)。
    4. 我将报告这两种情况下的行为、并查看我可以在哪里为您提供帮助。

    感谢您的耐心。

    此致、

    Vaibhav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过终端逐个发送数据(8 个字节)。

    通过此测试、在我的设置中可以观察到、触发的 ISR 低于 RX 字符超时中断、因此对于 8 个字符、即使我设置的 RX 触发电平为 8、我也看到 8 个中断而不是 1、因此现在要检查第二个测试用例。 会让您随时发布信息。

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

    您好 Hatem、

    通过 Python 脚本发送数据(8 字节)。

    通过这条路由、当我将 RX 触发电平设置为假设设为 8 时、然后在 8 个字节之后本身会生成 ISR。

    我会告诉您根本原因。

    基本上、当您在终端中输入字符、然后预计 UART_read 将其逐个处理到缓冲区中时、还需要 FIFO 最多填充(在本例中为 16 个字节)、然后只需要一个 RX ISR。

    但是、UART RX 期望以相同的波特率接收数据(默认为 115200)。 当您开始在控制台上键入内容时、便会出现问题。

    因此、以配置的波特率将数据发送到 COM 端口(UART 端口)的基本 python 脚本将确保在每个 RX Tigger 级别触发 ISR。

    查看我的 python 脚本、您可以根据您的 COM 端口和 UART 设置对其进行自定义。

    e2e.ti.com/.../uart_5F00_test.py

    希望这可以解决您的问题。

    BR Vaibhav

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

    尊敬的 Vaibhav:

    我不确定应该从代码方面做些什么。
    我确信我对双方都使用了正确的 Baudrate。

    您发送的 Python 脚本同时仅发送 8 个字节、这是我已经尝试过的、但一旦第一个字符位于 FIFO 中、就会触发中断。 为了得到更多的确认,我尝试使用你的脚本只发送 3 个字符,这不应该导致中断触发,但它仍然在触发。

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

    您好 Hatem、

    要进行更多确认、我尝试使用您的脚本仅发送 3 个字符、这不会导致中断触发、但它仍在触发。

    您是否可以尝试使用 UART 回显示例开始? 它将帮助您很容易地进行,在您所做的项目中可能会有一些配置错误。 是否要浏览示例并首先检查该示例的行为? 因为通过示例本身、我能够实现您的最终目标:

    [quote userid=“646909" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1618968/am2434-uart-with-rx-trigger-level-interrupt/6242988 是的 、我的要求是每接收 16 个字节生成 RX 中断、和 不会 每个字节。

    此致、

    Vaibhav

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

    好的、我将再次尝试示例示例、然后返回给您。
    谢谢你。

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

    期待您的答复。