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.

[参考译文] SK-AM62:UART 超时

Guru**** 2487425 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1440221/sk-am62-uart-timeout

器件型号:SK-AM62

工具与软件:

您好!

我想详细了解  AM62x TRM 中提到的_UART_TIMEOUT 寄存器。 我无法在内核源中看到对它的任何引用。  

我可以看到  UART_IIR 中提到了字符超时指示检测。 如何手动设置超时。 是否存在任何样片?

谢谢!

Chetana Patil

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

    尊敬的 Chetana:

    请参阅 TRM 第12.2.4.4.8.1.3.7节"超时和中断条件"。

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

    谢谢 Bin Liu、

    我们计划使用此寄存器手动设置为3.5个字符(相对于波特率)、用于时间分隔的消息。 产生中断的可靠性如何?  

    根据勘误表 i2310 "当读取 RHR/MSR/LSR 寄存器时、USART 可能会错误地清除或触发超时中断"   

    权变措施中提到了将超时设置为高电平、我们将无法对其进行操作。

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

    尊敬的 Chetana:

    我们计划使用此寄存器针对波特率手动设置为3.5字符、用于时间分隔的消息。 产生中断的可靠性如何?  [报价]

    这尚未在 Linux 中进行评估。

    在变通办法中提到将超时设置为高电平、我们将无法操作。

    此权变措施已在内核 v6.6 UART 驱动程序中实现。

            if (priv->habit & UART_RX_TIMEOUT_QUIRK &&
                (iir & UART_IIR_RX_TIMEOUT) == UART_IIR_RX_TIMEOUT &&
                serial_port_in(port, UART_OMAP_RX_LVL) == 0) {
                    unsigned char efr2, timeout_h, timeout_l;
    
                    efr2 = serial_in(up, UART_OMAP_EFR2);
                    timeout_h = serial_in(up, UART_OMAP_TO_H);
                    timeout_l = serial_in(up, UART_OMAP_TO_L);
                    serial_out(up, UART_OMAP_TO_H, 0xFF);
                    serial_out(up, UART_OMAP_TO_L, 0xFF);
                    serial_out(up, UART_OMAP_EFR2, UART_OMAP_EFR2_TIMEOUT_BEHAVE);
                    serial_in(up, UART_IIR);
                    serial_out(up, UART_OMAP_EFR2, efr2);
                    serial_out(up, UART_OMAP_TO_H, timeout_h);
                    serial_out(up, UART_OMAP_TO_L, timeout_l);
            }

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

    谢谢 Bin Liu、

    在哪里可以找到您发布的代码片段的参考? 它在最新的 SDK 中提供吗?

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

    尊敬的 Chetana:

    是的、它位于 SDK 10.0内核中。 请检查内核文件 drivers/tty/serial/8250/8250_omap.c、第668行。