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/TMDXIDK5728:RS-485卡在 UART 写入中

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/669752/rtos-tmdxidk5728-rs-485-stuck-in-uart-write

器件型号:TMDXIDK5728

工具/软件:TI-RTOS

尊敬的所有人:

我尝试让 RS-485在 IDK 上运行、但我遇到了一些问题。 基本上、我删除了所有其他代码、将其分解为 UART 例程。

我使用的是 am5728x IDK v1.2处理器 SDK RTOS AM57xx 4.2.0。

/*主入口点*/
int main()
{
/* Init Board */
initBoard();

BiosTaskCreate (UART_TEST、
"UART_TEST"、
8、4096);

/*启动 BIOS 6调度程序*/
BIOS_start ();
返回0;}


static int initBoard()
{
/*呼叫板初始化函数*/
board_initCfg boardCfg;

boardCfg = Board_init_PINMUX_CONFIG |
Board_init_module_clock;//| Board_init_uart_stdio;
board_init (boardCfg);
}

void UART_TEST (UARg arg0、UARg arg1)
{
UART_Params uartParams;
int32_t 计数;
字符输入='\n';
buffchar Pointer[1000];
char echoPrompt[]="\n";
char echoPrompt1[]="接收到的数据为\n";

// CSL_xbarDspIrqConfigure (1、
// CSL_XBAR_INST_DSP1_IRQ_34、
// CSL_XBAR_UART2_IRQ);

UART_INIT();

/*创建一个数据处理关闭的 UART。 *
UART_PARAMS_INIT (uartParams);
uartParams.writeMode = UART_MODE_BLOCKING;
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_return_full;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 9600;


UART_Handle = UART_open (0x01、uartParams);

//首次写入不起作用
UART_WRITE (UART_Handle、echoPrompt、sizeof (echoPrompt));

while (1)
{
UART_WRITE (UART_Handle、echoPrompt1、sizeof (echoPrompt));
Task_sleep (250);
}
} 

我已经使用这些示例开始了。 原理图和引脚多路复用器显示、RS-485连接到 UART2。 我打开了0x01、得到了正确的句柄和地址。 一切看起来都很好、但我永远不会从写入例程中恢复、因为它会在 UART_write2_v1的信标中存根:

if (object->params.writeMode = UART_MODE_Blocking)
{
/*锁定并等待 Hwi 完成。 *
semStatus = UART_osalPendLock (object->writeSem、
事务->超时); 

有趣的部分是、该示例与 UART3配合使用、因此我从 FTDI 获取响应。 也许这是一件容易的事情、但我再也不知道从哪里开始。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    弯曲、

    请查看 pdk_install_path\packages/ti\board\src\idkAM572x 中的 idkAM572x_clock.c 文件。

    在 Board_moduleClockInit 函数中  、默认情况下仅启用 UART1、UART3和 UART9的模块时钟。  要使用 UART2、您可以将以下内容添加到电路板库并重新编译、也可以在 UART_open 之前使用应用程序中的 CSL API 来启用 UART 实例的时钟。

    CSL_FINST (l4PerCmReg -> CM_L4PER2_UART2_CLKCTRL_REG、
    L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART2_CLKCTRL_REG_MODULEMODE、ENABLE);
    
    while (CSL_L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART2_CLKCTRL_REG_IDLEST_FUNC!=
    CSL_FEXT (l4PerCmReg -> CM_L4PER2_UART2_CLKCTRL_REG、
    L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART2_CLKCTRL_REG_IDLEST); 

    n`t 这是否会启用 UART2输出、我们可以尝试提供进一步的指导。

    此致、

    Rahul