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.

[参考译文] TMS570LS3137:SCI 波特率问题

Guru**** 2473260 points
Other Parts Discussed in Thread: PROFIBUS, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1298228/tms570ls3137-sci-baudrate-issue

器件型号:TMS570LS3137
主题中讨论的其他器件:ProfibusHALCOGEN

大家好!

我开发了 Profibus 应用程序。 TMS570微控制器通过 UART (SCI)向 Profibus 收发器发送命令。

我们需要将波特率设置为1.5Mbps。 但我无法将波特设置为该速度。

我们的时钟频率(Vclk)为90Mhz。

我使用该公式计算了波特率。

如果预分频器=3

波特率为1.4Mbps

如果预分频器= 2

波特率为1.8Mbps

我无法获得1.5。 因此、接收器器件无法了解我们的 Profibus 消息。

因此、我需要配置为以小数进行波特率。 不过、当我使用分数分频器选择位(M)时、它从不会更改我的 Tx 信号。

另一方面、我不明白 M 位的值为什么介于0-3h 之间? 是3位吗?

我的目标是将波特率设置为1.5Mbps、而不对 Vclk 进行任何更改。 因为我可以在 Vclk=50MHz 时将波特率设置为1.5Mbps。

我可以用示波器跟踪波特率。

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

    您好、Ali、

    您使用的是哪种 SCI?

    您是否使用直接 SCI 或 SCI/LIN?

    如果您使用直接 SCI、那么我们在其波特率中没有小数分频器、您可以只验证 SCI 寄存器中的 BRS 寄存器:

    正如您在这里看到的、这里没有 M 并且24到31位是保留的。 公式中仅使用 P 值、调用为"Baud"。

    如果您使用 SCI/LIN、则只有小数调节器 M 还会显示在公式中。 您可以通过在 SCI/LIN 寄存器中验证 BRS 寄存器

    如果您使用它、那么我们将在1.4和1.8Mbps 之间的范围内获得额外的15个中间值、因为 M 值是4位。

    如果您使用的是直接 SCI、则无法获得这个中间值、唯一的方法是调整 vclk。

    (+) TMS570LC4357:BSR 波特率寄存器-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    因此、sciREG 没有 M 个分数控制位? 我得到了答案吗?

    谢谢

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

    您好、Ali、

    为什么 sciREG 没有 M 个分数控制位? 我是否正确?

    你是对的。  

    sciREG 它不具有 M 分频控制、 丝滑铁氧



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

    您好!

    我完全理解、谢谢。

    但现在我有两个新问题。

    首先、I configured Vclk 设置如下所示:

    当我将 Vclk 设置为0时、程序不在微处理器上运行。 我进行了调试、但无法进入主函数。 在抛出代码后没有变化。 Vclk 与0不兼容吗?

    第二个问题:我改变了 Vlck 为100Mhz、波特率为1.5Mpbs。

    当我通过 SCI 发送消息时、我可以完全看到该消息。 没有问题

    但是、当我将发送命令更改为接收命令时、处理器会在收到某个命令时卡住。 我无法继续进行调试

    看起来是分步式的。

    启动时不会出现任何问题:

    我按了第步进入:

    下一步:

    我按下"step into "按钮。 调试器停留在这里。 没有取得任何进展。

    为什么? 我不理解这一点

    以下所有代码:

    /** @file sys_main.c 
    *   @brief Application main file
    *   @date 11-Dec-2018
    *   @version 04.07.01
    *
    *   This file contains an empty main function,
    *   which can be used for the application.
    */
    
    /* 
    * Copyright (C) 2009-2018 Texas Instruments Incorporated - www.ti.com 
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    
    /* USER CODE BEGIN (0) */
    #include "sci.h"
    #include "het.h"
    #include "gio.h"
    /* USER CODE END */
    
    /* Include Files */
    
    #include "sys_common.h"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    /** @fn void main(void)
    *   @brief Application main function
    *   @note This function is empty by default.
    *
    *   This function is called after startup.
    *   The user can use this function to implement the application.
    */
    
    /* USER CODE BEGIN (2) */
    /* USER CODE END */
    
    uint8	emacAddress[6U] = 	{0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFU};
    uint32 	emacPhyAddress	=	0U;
    
    int main(void)
    {
    /* USER CODE BEGIN (3) */
        int i;
    
        sciInit();
        hetInit();
        gioInit();
    
        uint8_t data[254] = {0xDA};
        uint8_t token[254] = {0xDC, 0x22, 0x22};
        uint8_t rxbuffer[254];
        gioSetBit(gioPORTA, 0, 1);
        gioSetBit(hetPORT1, 1, 1);
        gioSetBit(hetPORT1, 7, 1);
    
        while(1)
        {
            //sciSend(sciREG, 6, data);
            //for(i = 0; i<100000; i++) ;
            //sciSend(sciREG, 3, token);
            sciReceive(sciREG, 1, rxbuffer);
            for(i = 0; i<100000; i++) ;
        }
    /* USER CODE END */
    
        return 0;
    }
    
    
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    

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

    您好、Ali、

    当我将 Vclk 设置为0时,程序不在微处理器上运行。 我进行了调试、但无法进入主函数。 在抛出代码后没有变化。 Vclk 与0不兼容吗?

    您可以配置0、但如果配置"0"意味着输出频率应小于或等于110Mhz。

    是否确保配置 vclk1频率小于或等于110Mhz?

    第二个问题:我改变了 Vlck 为100Mhz、波特率为1.5Mpbs。

    当我通过 SCI 发送消息时、我可以完全看到该消息。 没有问题

    但是、当我将发送命令更改为接收命令时、处理器会在收到某个命令时卡住。

    [/报价]

    让我来测试一下该条件。

    --
    谢谢。此致、
    Jagadish。

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

    您好、Ali、

    刚才我测试了你的代码,我看不到任何问题在我的最后。

    我随附代码供您参考、请确认。

    e2e.ti.com/.../SCI_5F00_1_5F00_5Mbps_5F00_Baudrate_5F00_Test_5F00_LS3137.zip

    我的建议是、做一个干净的构建并再次测试。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我测试了你的代码,它适合我。 我认为我的一些 halcogen 设置与你的不同。

    我正在分析它。 我希望能够解决它。

    您可以配置0,但如果配置"0"意味着输出频率应小于或等于110Mhz。[/quoto]
    当我将 Vclk 设置为0时,程序不能在微处理器上运行。 我进行了调试、但无法进入主函数。 在抛出代码后没有变化。 Vclk 与0不兼容吗?

    是的、你是对的。 Vlck 大于110.

    谢谢大家。

    祝你度过美好的一天!

    此致。

    [/quote]