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.

[参考译文] TM4C1294NCPDT:如何在 UART4上使用 UDMA?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1048169/tm4c1294ncpdt-how-can-i-use-udma-on-uart4

器件型号:TM4C1294NCPDT

从 TI 的 UDMA_DEMO 示例开始、我尝试更改 UART1示例中的 UART1、以便 UDMA 传输到 UART4。

当我在 UDMA 中将引用从 UART1更改为 UART4时、我运行错误"identifier "UDMA_CHANNEL UART4TX"未定义"

仔细看 UDMA.h、它具有 "#define UDMA_CHANGE_UART1RX  22"、但没有关于"UDMA_CHANGE_UART4TX"的内容

然后、阅读 tm4c12atile 的用户手册、第681页的表9-1 UDM 通道分配、"UDMA_CHANNEL UART1RX  22" 用于 对列0进行编码、而 UART4列在编码列2下、 但在 UDMA_DEMO 示例中找不到任何编码参考。

如何将 UART4与 UDMA 配合使用?

谢谢!

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

    尊敬的 David:

     请查看此示例、该示例仅使用 UART4进行 TX 传输。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <stdint.h>
    #include <stdbool.h>
    #include "inc/hw_ints.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "inc/hw_uart.h"
    #include "driverlib/fpu.h"
    #include "driverlib/gpio.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/pin_map.h"
    #include "driverlib/rom.h"
    #include "driverlib/rom_map.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/systick.h"
    #include "driverlib/uart.h"
    #include "driverlib/udma.h"
    #include "utils/cpu_usage.h"
    #include "utils/uartstdio.h"
    #include "utils/ustdlib.h"
    //*****************************************************************************
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    它解决了符号问题、但我认为程序不起作用、它有一些拼写错误、例如 UART1IntHandler、但即使修复后、它也不会遇到 uDMAIntHandler。

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

    请参阅我再次粘贴的代码。 它具有 UART4IntHandler、而不是  UART1IntHandler。 您还 可以在 startup_ccs.c 文件中输入 UART4IntHandler、如下所示。  

    我只是运行它、它对我来说是有效的。 我可以看到来自 UART4TX 引脚的数据流。  

    当 UDMA 传输完成时、它将中断 UART4IntHandler、而不是 uDMAIntHandler。 在 UART4IntHandler 上放置一个断点、然后查看 CPU 是否在那里停止。  

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

    我还可以看到 UART4X 数据流式传输、但不确定我错过了什么、当数据流停止时、程序永远不会命中 UART4IntHandler (如果我向 UART4 RX 发送内容、程序将会命中)

    (PS。这确实是我的故障、当我写 UART1IntHandler 时、它来自旧代码)

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

    我的错、我又做了另一个拼写错误。