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/msp432p401r:正在检测UART溢出?

Guru**** 2609285 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/656515/rtos-msp432p401r-detecting-uart-overrun

部件号:MSP432P401R

工具/软件:TI-RTOS

TI RTOS UART驱动程序中是否有用于检测超限的钩子?  此时,我只是想看看超支是否是我们通信故障的根本原因。

与其他海报一样,我们尝试与固定波特率约为1Mbaud的设备进行通信。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Marc
    我不知道有直接的API或机制来检测超限。 您可以使用运行时对象视图来管理/监视堆栈溢出。 在您的特定应用程序中,环形缓冲区的大小是多少?您使用的是阻塞还是非阻塞实现?

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

    好的。  我将查看运行时对象视图。  通常,对这些信息进行编程访问很有帮助,因为它可能在程序操作期间发生。

    我不希望超过环形缓冲区。  我可以任意设置它大。  至于拦截或非拦截,我不确定。  我正在使用UART_READ呼叫。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要明确一点,我不期望堆栈溢出。 我真的想知道UART何时出现超限。 即,当UART收到一个字符时,最后一个字符尚未从接收寄存器中删除。 您是否告诉我运行时对象查看器是实现此目的的方法?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Marc
    否,ROV不提供外围设备的可见性。 具体来说,eUSCI外围设备在状态寄存器中提供超限状态。 它位于eUSI_AX状态寄存器 www.ti.com/.../slau356h.pdf 中。

    UART驱动程序检查hwi (UARTMSP432_hwiIntFxn)中的错误,在硬件属性中,您可以指定回调,即UARTMSP432_ErrorCallback。

    /*! 接收错误时要调用的应用程序错误函数*/
    UARTMSP432_ErrorCallback errorFxn;
    } UARTMSP432_HWAttrsV1;

    /*!
    *@简介 UART使用的可选回调函数的定义
    * 驱动程序在出现接收错误(FIFO溢出,
    * 奇偶校验错误等)。
    *
    *@参数 UART_HANDLE UART_HANDLE
    *
    *@参数 错误 接收的当前值
    * 状态寄存器。 请参阅
    * 设备数据表来解释此情况
    * 值。
    */
    typedef void (*UARTMSP432_ErrorCallback)(UART_HANDLE句柄,UINT32_t错误);

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

    啊。  现在,我在配置结构的末尾看到了这一点。

    我发现ROV中的监视点无法检测到状态寄存器中的超限情况。  在驱动程序代码中设置断点。 似乎MSP432的速度不够快,无法以92.16万波特率接收背对背字符。  我的测试程序是一个从UART读取的小代码,每次读取一个字节,并在接收每个字节后切换IO行。  使用逻辑分析器,我可以看到一条13字节的消息被传输到MSP432,其中9到11字节通过切换IO线来标识。  我还可以从断点看到UART溢出。  对于48MHz MCU来说,这有点令人惊讶,尽管我没有尝试分析驱动程序代码来测量代码路径的长度。

    如果有更有效的方法从UART接收字节,我们会很高兴看到指针。

    谢谢