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.

[参考译文] CCS/LAUNCHXL-F28379D:F28379D sci_echoback_cpu01时钟和波特问题

Guru**** 2609685 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/686025/ccs-launchxl-f28379d-f28379d-sci_echoback_cpu01-clocking-and-baud-issues

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:C2000WARE

工具/软件:Code Composer Studio

您好!

我在 C2000Ware 中的 sci_echoback_cpu01示例中遇到问题。 如  本文所述、实际波特率为4800、而评论部分中所写的波特率为9600。 我知道我需要更改 LSPCLK 分频器以获得所需的波特率(以及 SCIHBAUD 和 SCILBAUD)。 我不确定如何以及在何处定义 LSPCLK 分频器选择。 我尝试在示例(example_2837xDSci_Echoback.c)中的 GPIO_SetupPinOptions()函数之后添加以下代码行:

EALLOW;
ClkCfgRegs.LOSPP.bit.LSPCLKDIV = 3;
EDIS; 

但是、当我在运行代码时查看相应的寄存器值时、0x00000002的解法值不会改变。 我为 LSPCLKDIV 指定什么值似乎无关紧要、但默认值保持不变。 我推测它将在代码中的其他位置重置为默认值、但我不知道在哪里。 我希望 LSPCLK 提供50MHz、因此我可以使用 SCIHBAUD = 0x00和 SCILBAUD = 0x02、并获得2000000的波特率。

我的问题:

  1. 在项目中、我在哪里指定 LSPCLK 分频器值?
  2. LSPCLK 分频器选择的选项数量是否有限? 如果是、它们是什么?
  3. 上述代码是否正确配置 LSPCLK 分频器选择?
  4. 我还需要配置什么? 如果是、在哪里以及如何?
  5. 在哪里可以找到有关此微控制器(或类似微控制器) SCI 配置的更多详细信息?

以下是我的代码的快照:

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

    你好 ,Srinivas,

    您是否参考了修复此问题的最新 C2000ware?

    请将"_LAUNCHXL_F28379D"添加到 Project -> Properties -> C2000 compiler -> Predefined symbols 下的预定义符号。

    这将在编译之前启用 LaunchPad 所需的正确"device.h"设置。

    因此、当前代码是针对设置的  

    // SCIA 为9600波特
    //@LSPCLK = 50MHz (200MHz SYSCLK) HBAUD = 0x02且 LBAUD = 0x8B。

    • 在项目中的何处指定 LSPCLK 分频器值?无需更新。 使用添加预定义符号并编译。

    LSPCLK 分频器选择的选项数量是否有限? 如果是、它们是什么?

    • 上述代码是否正确配置 LSPCLK 分频器选择?  

    代码正确。 但不需要。 默认为0x4、而不是0x2。

    • 我还需要配置什么? 如果是、在哪里以及如何?

    是。 如上所述、在项目中添加符号。

    • 在哪里可以找到有关此微控制器(或类似微控制器) SCI 配置的更多详细信息?

    器件 TRM 将提供有关配置的详细信息  

    此致。

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

    谢谢 Meghana。

    它现在起作用、但我认为除了向预分频符号添加_LAUNCHXL_F28379D 外、还需要手动设置 LSPCLK 分频器值。 我认为是这样、因为通过从观察到的4800波特率(BRR = 651、即0x028B)反向计算 LSPCLK、我们得到 LSPCLK = 25、036、800 (25MHz)、这意味着分频器为8 (200MHz/8 = 25MHz)。 我使用上面的代码手动将分频器值设置为1、它现在按预期工作。 它仍然在寄存器查看器中将 LOSPCP 寄存器值显示为0x00000002、但在使用串行端口进行测试时、它似乎可以正常工作。 因此、我的当前配置是 LSPCLKDIV = 1、SCIHBAUD = 0x00、SCILBAUD = 0x02、因此波特率为2000000。 如果我缺少一些东西、请告诉我。

    此致、
    Samvrit

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

    尊敬的 Samvrit:

    LSPCLK = SCI 异步波特* ((BRR + 1)*8)。

    在这种情况下,如果您需要9600 (且 BRR = 651,即0x028B), LSPCLK = 9600 *  (0x028B+ 1)*8)

    LSPCLK = 9600 *  ((0x028C)*8)= 50073600 ~= 50MHz

    有关  详细信息、请参阅技术参考手册(修订版 G)中的表19-3。

    就 LSPCLKDIV 而言 ,是的,寄存 器的默认值是0x2,但转换为默认的4分频器。(即.LSPCLK /4)。

    "我使用上述代码手动将分频器值设置为1"。 这将转换为2的分频器(例如 ie.LSPCLK /2)。 当您不使用预定义符号时、此操作有效。

    有2种方法可以配置此功能,即只使用预分频符号或对分频器进行更新。

    • device.h (启用符号后)中转换为 LSPCLK 的代码段 使用200MHz 的系统时钟,因此4分频将产生50MHz。
    • 或者在默认 情况下(在启用符号之前),转换为 LSPCLK 时使用系统时钟100Mhz,因此4分频将产生25MHz。 这可以通过将分频器更新为/2而不是为您工作的/4来纠正。

    此致。

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

    谢谢! 有道理。

    此致、

    Samvrit