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.

[参考译文] RTOS/DRA72XEVM:BSP UART EDMA 功能无法正常工作

Guru**** 2568585 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/627680/rtos-dra72xevm-bsp-uart-edma-function-can-not-work

器件型号:DRA72XEVM

工具/软件:TI-RTOS

当我使用 M4的 ti 驱动器组件时、发生以下错误、

1、配置 OMODE UART_OPMODE_DMAINTERRUPT

2、配置事件使能

3、在期间任务中发送和接收消息

4、调试程序,使用逻辑分析仪来读取消息是否正确

我发现, M4始终发送56个字节 “\0”,等于 txThreshold,,并且始终接收8个字节  “\0”,,等于 rxThreshold。

但实际上,我要发送的是 0x01、0x02……在我的程序中接收的是0x01、0x02。

我检查了程序,找不到原因。

是否有人与我遇到过相同的事情? 如何解决此问题?

PS:当我 配置 OMODE UART_OPMODE_INTERRUPT 时、它运行良好。

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

    您使用哪款 SDK?

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

    您好!

    这是 UART 驱动器的电流限制-一个只能发送 TX 阈值的倍数、只能接收 RX 阈值的倍数。

    这是因为当需要进行非多路阈值传输时、维护不同的参数集以及将 EDMA 与 UART 连接以传输最后一个数据块所涉及的复杂性。

    没有计划在驱动程序中实现此功能。 请使用中断模式。

    此致

    Sivaraj R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    感谢您的回复、我使用的是 VISION_SDK 2.9。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    感谢您的回答、我还有两个问题。
    1 μ s、,、如果我想使用 EDMA 发送非多路复用数据为 μ s、我应该更改驱动程序以解决该问题?
    2、为什么所有感应和接收到的数据的值都是'0',而不是我在0x01、0x02、0x3...程序中写入的值 同时,线路错误中断总是发生?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的。 但是、实现此功能的一种方法是将阈值设置为1个字节。 这将每字节生成一个 DMA 事件、因此不是很有效、并将会对 EDMA/L3进行寄存。

    我不理解第二个问题。

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

    很抱歉回复这么晚,

    第二个问题如下:

    1、我通过 UART EDMA 发送数组测试[9]={0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08、0x09}。

    2、然后使用逻辑分析仪来监控 是否来自 UART 的 TxD 端口的输出数据是我是否发送的。

    3、井号,outout 数据 rrom UART 端口为 {0x00、0x00、0x00、0x00…0x00}、大小为56字节。 不 是{0x01,0x02,0x03,0x04,0x05,06,0x07,0x08,0x09}。

    所以我不知道为什么会发生这种情况。

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

    这可能是因为缓存。 在向驱动程序提供缓冲区之前、请确保缓冲区已清空、内容已写入实际存储器。

    56个字节(而不是9个字节)可能是由于我之前提到的阈值限制。