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**** 2609895 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/653170/rtos-msp432p401r-uart-with-flow-control-stalls

部件号:MSP432P401R

工具/软件:TI-RTOS

您好,

我在波特率11.52万下运行UART时遇到问题,其中包括对蜂窝模块的流控制。 我在MSP432P401R修订版C上使用Simplelink 1.40 .00.28

在我的项目的最小化版本中,线程侦听来自蜂窝模块的UART数据包,然后将其发送到另一个UART端口以进行控制台显示,另一个线程(优先级较低)启动连接蜂窝网络的过程。 在这里,UART通信运行顺畅,网络通信可以保持。

UART模块随后集成到运行更多线程的全尺度项目中(用于记录,常规功能以及I2C和SPI传感器)。 UART侦听器线程在其他线程中仍具有最高优先级。 这里我遇到两个问题:

1.负责连接到蜂窝网络的线程需要在每次UART传输之间等待很长时间才能成功发送和接收数据。 基本上,我必须在每个UART指令之间插入usleep(20万)到蜂窝模块。 (20万是通过试验和错误获得的)

2.当预期数据较大时(此处为130字节),UART似乎停止,根本无法接收数据。

请参阅slSCI44中的勘误表610 m ,MCLK和SMCLK (运行我的UART时钟)均由DCO驱动,我尚未轮询UCAxTXIFG和UCAxRXIFG。 我还将UART环缓冲区大小增加到1024,但没有效果。 请在此方面提供帮助。

谢谢!

Alvin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Alvin,
    类似的内容在此处描述:
    e2e.ti.com/.../63.9111万

    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Alvin,
    想知道您是使用阻塞API还是非阻塞API来读取UART环缓冲区。 此外,如果对接收数据和处理回调(如果适用)的方案流程进行任何描述,将不胜感激。

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

    您好,Chris:

    感谢您的回复。

    在这种情况下,我已将环缓冲区大小增加到1024 (并尝试了2048),但问题仍然存在。
    我正在使用UART的阻塞模式。 我也不在项目中使用回调。

    对于程序流,有3个线程处理UART通信:
    1.线程A (优先级1)启动连接过程以连接到蜂窝网络。 它将蜂窝模块的指令输入到消息队列中,然后等待事件位设置,然后再输入下一个指令。
    2.线程B (优先级3)通过UART将消息队列中的指令发送到蜂窝模块。
    3.线程C (优先级8)持续侦听来自蜂窝模块的UART数据。 收到的UART消息被馈送到连接到PC控制台的另一个UART端口,然后进行解析。 然后,它将根据分析结果为线程A设置事件位。

    希望所附的图示流程能够帮助澄清计划流程。

    Alvin

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

    Alvin,
    我无法解决问题。 我建议您了解为什么需要uSleep才能使系统正常工作。 具体而言,我将了解不同线程如何暂停(通过睡眠或待装)以允许维修其他线程。 请记住,无论任务优先级如何,HWI都将优先处理,因此您最终可以为多个ISR提供服务,从而延迟任务的完成。

    我将关闭此对话,因为我无法进行对话。


    Chris