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.

[参考译文] EK-TM4C1294XL:用于 UART UDMA 的软件

Guru**** 2460850 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/653063/ek-tm4c1294xl-software-to-uart-udma-transfere

器件型号:EK-TM4C1294XL

您好 Foks、

我想重新设计我的解决方案、以便通过 UART 在两个 TM4C 器件之间发送和接收数据包。 我有两个问题:

  1. CPU 数据表中仅使用术语"通道编号"、但外围驱动程序库中的某些 API 函数期望定义包含外围设备名称、例如:#define UDMA_CHANNEL UART0TX   9、这是我的困惑所在。 这些定义不包含 UART 3或7。 如何想象 UDMA 通道? 对于我来说、通道有两端、从 API 函数来看、这些常量似乎会声明结束 A、而5个可能的结果是结束 B
  2. 在不知道下一个封装的确切大小的情况下、如何针对来自 UART 外设的任意字节数执行 UDMA 接收?

此致、

Norbert

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

    您好 Norbert、

    对于问题1、您应该参考器件数据表的第9.2.1节"通道分配"。 在本节中、表9-1列出了所有 uDMA 通道分配。 对于 RX/TX、UART3分别位于通道16和17上;对于 RX/TX、UART7分别位于通道20和21上。

    然后、在 driverlib 文件夹中的 udma.h 头文件中、您将找到以下定义:

    #define UDMA_CH16_UART3RX 0x00020010
    #define UDMA_CH17_UART3TX 0x00020011
    
    和
    
    #define UDMA_CH20_UART7RX 0x00020014
    #define UDMA_CH21_UART7TX 0x00020015
    

    您可以将其用于代码、因此定义就在那里、您只需深入探究一下即可。

    我希望看到9.1表的组合以及现在看到更多#define 的组合、驱动程序库也会清除包含外设名称的。

    就问题2而言、这似乎是表面上的一个奇怪的请求、但也许您可以提供更多详细信息? 如果 MCU 不知道要接收多少字节、那么我的问题是、它应该如何知道何时停止? 您打算如何向 MCU 指示 RX 应结束? 消息期间是否会在某个点传输一个数据包大小? 正在发送"接收结束"字节/序列?

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

    谢谢你对第一个问题的答复,现在我很清楚。
    关于第二个主题:
    我想实施一个香草 Modbus RTU 堆栈。 正如标准所说、没有"PDU size"字段、因此现在我必须在接收 PDU 时计算预期的大小。
    这正是我想以某种方式用 DMA 传输取代的一点、而不知道传入请求的确切大小

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

    "不清零、"终止字符/字节"是否与"Modbus?"中的内容是否正确?

    如果是这样、"证明情况"-您可以、"追加(添加)这样一个终止字符。 数据包"-在传输之前?    这假设您"有能力"这样做"-这可能无法证明情况。
    您的接收端将被编程-首先识别-然后对这个独特的"终止字符"的"存在"做出反应。

    您写了" 必须计算接收期间的"预期大小"-但"不清楚如何知道和/或创建(任何)此类"预期"!

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

    如 CB1所述、如果确实没有数据包大小或终止字符/特征、则需要自行实现其中一个。 您最终决定使用哪种方法由您决定、但您肯定需要让 MCU 知道何时停止接收。 我想不出您在没有这些基本知识的情况下可以摆脱的任何实施方案。