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/PROCESSOR-SDK-AM57X:更改示例代码中的 UART 不起作用

Guru**** 2589245 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/591541/rtos-processor-sdk-am57x-changing-uarts-in-example-code-not-working

器件型号:PROCESSOR-SDK-AM57X

工具/软件:TI-RTOS

 UART_BasicExample_evmAM572x_armTestproject 位于 "C:\ti\pdk_am57xx_1_0_5\packages/MyExampleProjects\UART_BasicExample_evmAM572x_armTestproject"、默认为 UART 3。

我在 Beagle Board X15上运行代码、该电路板是 AM572x EVM 开发套件的一部分。

看来电路板的引脚多路复用器已配置为支持使用 UART 1、而 UART 1 Tx 和 Rx 从电路板引出至连接器。

根据我的理解、我只需要将 UART_Instance 从默认值2 (UART 3)更改为 值0 (UART 1)。

我根据以下代码段尝试过此操作、但在 XMT 行上看不到任何使用示波器进行查看的活动。

*==== UART 读/写测试===
*
*测试函数在阻塞模式下测试读/写操作
*
静态 bool UART_TEST_READ_WRITE (bool dmaMode)

UART_Handle UART =空;
UART_Params uartParams;
int length = 0;
uint32_t addrDataPrint、addrScanPrompt、addrEchoPrompt;
UART_Transaction 事务;
bool ret = false;


char outstring[26]="abcdefghijklmnopqrstuvwxyz";
int i、cnt=10;

/* UART SoC 初始化配置*/
UART_initconfig (dmaMode);

/*初始化默认配置参数。 *
UART_PARAMS_INIT (uartParams);

//uartParams.budrate = 230400;

#define UART_ONE 0
#define UART_Three 2.

UART = UART_OPEN (UART_ONE、uartParams);
如果(UART == NULL)

转至 Err;

对于(i=0;i<1000;i++)

//uart_jdbg (cnt++);
UART_WRITE (UART、(void *) outstring、sizeof (outstring));

如果能提供任何指导,我将不胜感激。

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

    UART_Instance 不是更改代码中的 UART 实例所需的唯一更改。 您需要检查您要使用的实例是否已加电并正在计时。 如果未配置 pinmux,则需要更改 PADCONFIG 设置并配置时钟。

    所有这些更改都需要在 evmAM572x 的电路板库中发生。 以下是使用 Beagle Bone 的一个很好的示例、您可能会发现它很有用:
    www.ti.com/.../sprac32.pdf

    在 evmAM572x 上、我们能够从扩展连接器启用 UART9引脚、正如我在这里的文章中所述:
    e2e.ti.com/.../2085526


    希望这对您有所帮助。

    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rahul、
    感谢快速响应。
    此 SDK 与 sprac32.pdf 中的示例之间存在许多差异、我认为它不是很有用。
    除了将 Board_UART_Instance 从2更改为0之外、似乎此 SDK 中已配置 UART 1、并且应按照以下文件正常工作。 但是、如果我这么做、它会禁用 UART 3吗? 我想我可以在应用程序中定义该实例、例如:

    #define UART_ONE 0
    #define UART_Three 2.
    UART = UART_OPEN (UART_ONE、uartParams);

    我需要做的是通过 RTOS 从 CortexA15_0与 EVM 上连接的5个 UART (1、3、8、9、10)进行通信。 我需要读取/写入一些3.3V 串行外设(仅 Tx 和 Rx)。 只要我很小心、我就不需要缓冲器。
    您是否认为使用此 EVM 和 SDK 可以实现此目的?

    C:\ti\pdk_am57xx_1_0_5\packages/ti\board\src\evmAM572x\include\board_cfg.h

    /*jj 添加以下内容以便能够构建以从 CCS 加载*/
    #define pdk_raW_boot
    /* UART LLD 实例编号*/
    #define Board_UART_Instance2.

    我认为、如果我对 board_cfg.h 和以下任何文件进行更改、我将需要重建电路板库、对吧?。 我修改了 board_cfg.h 以添加#define pdk_raW_boot、我是否可以将其保留在中并重新编译、以确保所有内容都能正常工作?

    C:\ti\pdk_am57xx_1_0_5\packages/ti\board\src\evmAM572x\evmAM572x_clock.c

    CSL_FINST (l4PerCmReg -> CM_L4PER_UART1_CLKCTRL_REG、
    L4PER_CM_CORE_COMPONENT_CM_L4PER_UART1_CLKCTRL_REG_MODULEMODE、ENABLE);
    while (CSL_L4PER_CM_CORE_COMPONENT_CM_L4PER_UART1_CLKCTRL_REG_IDLEST_FUNC!=
    CSL_FEXT (l4PerCmReg -> CM_L4PER_UART1_CLKCTRL_REG、
    L4PER_CM_CORE_COMPONENT_CM_L4PER_UART1_CLKCTRL_REG_IDLEST);
    CSL_FINST (l4PerCmReg -> CM_L4PER_UART3_CLKCTRL_REG、
    L4PER_CM_CORE_COMPONENT_CM_L4PER_UART3_CLKCTRL_REG_MODULEMODE、ENABLE);
    while (CSL_L4PER_CM_CORE_COMPONENT_CM_L4PER_UART3_CLKCTRL_REG_IDLEST_FUNC!=
    CSL_FEXT (l4PerCmReg -> CM_L4PER_UART3_CLKCTRL_REG、
    L4PER_CM_CORE_COMPONENT_CM_L4PER_UART3_CLKCTRL_REG_IDLEST);

    在您的示例中、您具有:
    CSL_FINST (l4PerCmReg -> CM_L4PER2_UART9_CLKCTRL_REG、
    L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART9_CLKCTRL_REG_MODULEMODE、ENABLE);
    while (CSL_L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART9_CLKCTRL_REG_IDLEST_FUNC!=
    CSL_FEXT (l4PerCmReg -> CM_L4PER2_UART9_CLKCTRL_REG、
    L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART9_CLKCTRL_REG_IDLEST);

    UART1和 UART3、它没有 L4PER2。 您的示例中的 L4PER2与我的代码中的 L4PER 之间有何区别?

    C:\ti\pdk_am57xx_1_0_5\packages/ti\board\src\evmAM572x\boardPadDelayInit.c

    /* UART8 - C18上的 uart8_RxD - UART8 (exp)*
    {0x1734、0x60003、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART8 - A21上的 uart8_TXD - UART8 (exp)*/
    {0x1738、0x00003、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART8 - G16上的 uart8_CTSN - UART8 (exp)*/
    {0x173C、0x40003、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* D17上的 UART8 - uart8_rtsn - UART8 (exp)*/
    {0x1740、0x20003、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* Aa3 - UART9上的 UART9 - uart9_RxD */
    {0x1744、0x60003、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART9 - AB9 - UART9上的 uart9_TXD */
    {0x1748、0x00003、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART9 - AB3 - UART9上的 uart9_CTSN *
    {0x174C、0x40003、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* AA4 - UART9上的 UART9 - uart9_rtsn */
    {0x1750、0x20003、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* D27上的 UART3 - uart3_RxD - UART3 (FTDI)*/
    {0x17F8、0x60002、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* C28上的 UART3 - uart3_TXD - UART3 (FTDI)*/
    {0x17FC、0x00001、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART1 - B27上的 uart1_RxD - UART1 */
    {0x17E0、0x60000、{0x0、0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART1 - C26 - UART1上的 uart1_TxD */
    {0x17E4、0x00000、{0x0、0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART10 - D1 - UART10上的 uart10_RxD */
    {0x1570、0x40008、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART10 - E2 - UART10上的 uart10_TXD */
    {0x1574、0x00008、{0x0、0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART10 - D2 - UART10上的 uart10_CTSN *
    {0x1578、0x40008、{0x0、0}、 {0x0、0、0}、{0x0、0、 0}}、
    /* UART10 - F4 - UART10上的 uart10_rtsn */
    {0x157C、0x00008、{0x0、0、0}、 {0x0、0、0}、{0x0、0、 0}}、

    C:\ti\pdk_am57xx_1_0_5\packages/ti\board\src\evmAM572x\evmAM572x_SR2.0.pinmux
    从 mAM572x_SR2.0.pinmux 中提取的 UART 信息与上面的 boardPadDelayInit.c 保持一致、并与原理图扩展连接器保持一致。
    UART 8.
    名称解码器文本:"C18"、
    assignedToName:"uart8_RxD"、P1733
    nameDecoratorText:"A21"、
    assignedToName:"uart8_TXD"、P1727
    nameDecoratorText:"G16"、
    assignedToName:"uart8_CTSN"、P1711
    nameDecoratorText:"d17"、
    assignedToName:"uart8_rtsn"、P1714.
    UART 9.
    名称解码器文本:"Aa3"、
    assignedToName:"uart9_RxD"、P1710
    名称解码器文本:"AB9"、
    assignedToName:"uart9_TXD"、P179
    名称解码器文本:"AB3"、
    assignedToName:"uart9_CTSN"、P1740
    名称解码器文本:"AA4"、
    assignedToName:"uart9_rtsn"、P1739
    UART 3.
    名称解码器文本:"D27"、
    assignedToName:"uart3_RxD"、P104.
    名称解码器文本:"C28"、
    assignedToName:"uart3_TXD"、P105.
    UART 1
    名称解码器文本:"B27"、
    assignedToName:"uart1_RxD"、P1860
    名称解码器文本:"C26"、
    assignedToName:"uart1_TXD"、P1830
    UART 10.
    名称解码器文本:"D1"、
    assignedToName:"uart10_RxD"、P1812.
    名称解码器文本:"E2"、
    assignedToName:"uart10_TXD"、P1842
    名称解码器文本:"D2"、
    assignedToName:"uart10_CTSN"、P1813.
    名称解码器文本:"F4"、
    assignedToName:"uart10_rtsn"、P188.

    谢谢、
    Jim
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    劳尔
    对我在上一篇帖子中的问题有什么意见?
    谢谢、
    Jim
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rahul、
    首先、我想知道是否可以从单个 CortexA15内核控制多个 UART。 我的应用需要控制5个 UART。
    谢谢、
    Jim