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


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/623699/rtos-msp432p401r-uart-max-speed

器件型号:MSP432P401R

工具/软件:TI-RTOS

您好!

我有一个 MSP 432、大部分时间处于休眠状态。

但是、当它唤醒时、它必须尽快通过移动网络(UART)接口发送一些数据。

UART 在115200的速度下工作正常、但如果我尝试使用230400等更高的速度、则会挂起。 甚至可以将 UART 的此速度设置 为48M 时钟。

感谢你的帮助

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

    您还需要在 MSP_EXP432P401R.c 中的 UARTMSP432_BudrateConfig 中添加新条目请查看以下帖子 :e2e.ti.com/.../2286331

    希望这对您有所帮助。

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

    尊敬的 David:

    我已将设置更改为:

    CONST UARTMSP432_BudrateConfig uartMSP432BAUDRAates []={
    /*{波特率、输入时钟、预分频器、UCBRFx、UCBRSx、 过采样}*
    //*已添加*/
    {
    .outputBudrate = 230400、
    .inputClockFreq = 48000000、
    .prescalar = 13、
    .hwRegUCBRFx = 0、
    .hwRegUCBRSx = 37、
    过采样= 1
    }、
    {230400、24000000、6、8、 32、1}、
    {230400、12000000、3、 4、2、1}、
    {230400、6000000、 1、10、0、1}、
    {230400、 3000000、13、0、0、0}、
    
    {115200、24000000、13、0、37、 1}、
    {115200、12000000、6、8、 32、1}、
    {115200、6000000、3、 4、2、1}、
    {115200、3000000、 1、10、0、1}、
    
    {9600、 24000000、156、4、0、1}、
    {9600、12000000、78、2、0、 1}、
    {9600、6000000、39、1、 0、1}、
    {9600、3000000、19、 8、85、1}、
    {9600、32768、 3、0、146、0}
    }; 




    波特率更改为:

    uartParams.budrate = 230400; 



    遗憾的是、它不起作用。

    我使用 uartecho 作为测试的起点。

    还有其他需要更改的东西吗?

    谢谢你
    Miha.

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

    您好、Miha、

     真有意思。 我使用了您的设置、但它在我这边工作、请参阅以下内容:

    CONST UARTMSP432_BudrateConfig uartMSP432Budrates []={
    /*{波特率、输入时钟、预分频器、UCBRFx、UCBRSx、 过采样}*/
    {
    .outputBudrate = 115200、
    .inputClockFreq = 24000000、
    .prescalar = 13、
    hwRegUCBRFx = 0、
    hwRegUCBRSx = 37、
    过采样= 1.
    }、
    {230400、24000000、6、8、32、 1}、
    {230400、12000000、3、4、2、 1}、
    {230400、6000000、1、10、0、 1}、
    {230400、3000000、13、0、0、 0}、
    {115200、12000000、6、8、32、 1}、
    {115200、6000000、3、4、2、 1}、
    {115200、3000000、1、10、0、 1}、
    {9600、24000000、156、4、0、 1}、
    {9600、12000000、78、2、0、 1}、
    {9600、6000000、39、1、0、 1}、
    {9600、3000000、19、8、85、 1}、
    {9600、32768、 3、0、146、0}、
    {4800、24000000、312、8、0、 1}、
    {4800、12000000、156、4、0、 1}、
    }; 

    uartecho.c

    /*创建一个数据处理关闭的 UART。 *
    UART_PARAMS_INIT (uartParams);
    uartParams.writeDataMode = UART_DATA_BINARY;
    uartParams.readDataMode = UART_DATA_BINARY;
    uartParams.readReturnMode = UART_return_full;
    uartParams.readEcho = UART_ECHO_OFF;
    uartParams.budrate =230400/*115200*/;
    
    UART = UART_OPEN (Board_UART0、uartParams);
    
    if (UART == NULL){
    /* UART_open()失败*/
    while (1);
    }
    

    打开 UART 时是否出现错误? 或者您在终端上看不到任何回显字符??

    此外、您使用的是哪个 COM 端口??

    uartecho 项目是否工作@ 115200?

    谢谢、

    David

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

    尊敬的 David:

    我复制了您的设置、结果是相同的。

    我得到一个字符、就是这样。

    @115200、工作正常。

    还有其他我可以尝试的吗?  

    P.S. 我在 Mac / OS x 上使用 CCS 。


    谢谢你

    Miha.

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

    是的、您可以尝试57600、38400和9600吗? 我将尝试在 Mac 上运行该程序、然后我会返回给您。

    谢谢、

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

    在 Mac 和 Windows 上进行了几次测试后、我发现您的解决方案可以正常工作。
    因此、msp432 UART 正在工作。

    问题出在 Mac 或 MSP FET 调试器上(尚不知道)、我不需要230400的调试速度、而是需要与 sim7500模块通信。

    谢谢!

    Miha.