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:I2C 时钟配置

Guru**** 1993015 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1443913/tms570ls3137-i2c-clock-configuration

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

工具与软件:

您好!

我使用的是 TMS570LS3137ZWT 器件。

我已经将 VCLK 设置为90MHz

我已将 I2C 预分频器配置为8、以获得10MHz 的模块频率。

按照数据表公式、要获得400kHz I2C 总线、我应该将 CLKH 配置为7、将 CLKL 配置为8

然而、为了获得400kHz 频率、我必须将 CLKH 配置为4、将 CLKL 配置为4...曲折的 VCLK 频率。

我可以通过 ECLK 检查 VCLK:ECLK = VCLK/900给了我一个非常棒的100kHz 方波信号...

我对这种配置感到困惑...

您能帮助我理解吗?

提前感谢您。

Francois

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

    尊敬的 Francois:

    [quote userid="632776" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1443913/tms570ls3137-i2c-clock-configuration 通过数据表公式获得400kHz I2C 总线、我应该将 CLKH 配置为7、将 CLKL 配置为8

    正确、值仅应为7和8。

    [报价 userid="632776" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1443913/tms570ls3137-i2c-clock-configuration "]但是、为了获得400kHz 频率、我必须将 CLKH 配置为4、将 CLKL 配置为4...曲折的 VCLK 频率。

    您如何对此进行验证?

    为什么您怀疑 VCLK 错误? 是否确定所有其他配置? 请确保在相应的寄存器中包含以下内容。

    I2CPSC 应为8

    I2CCLK 和 I2CCLK 应该为5。

    ——

    谢谢、此致、
    Jagadish。

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

    你好 Jagadish ,谢谢你的答复。

    要检查 I2C 频率、请使用示波器。

    您能详细说明一下您的答案吗?

    首先、您说 CLKH=7和 CLKL=8是正确的、然后您说它们应该是5...

    您是如何得到5的值的?

    VCLK = 90MHz (使用 ECLK 引脚上的示波器进行检查)。

    I2CPSC = 8、

    ModuleClockFrequency = VCLK /(I2CPSC + 1)= 10MHz;还有 D 值为5。

    MasterClockFrequency = ModuleClockFrequency /((CLKH + D)+(CLKL + D))。

    400kHz = 10MHz /((7 + 5)+(8 + 5))

    我错了吗?

    但在7和8中、我得到了312kHz

    与4和4个值

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

    抱歉、我的错是个拼写错误、

     I2CCLK 和 I2CCLK 的组合值应该为15

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

    很抱歉、"组合价值"是这里的一项新内容。

    您在哪里可以找到此商品? 您如何计算它?

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

    以下是我的计算方式:

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

    您好、Jagadish。

    感谢您分享该计算。

    我们对计算方法保持一致。 我应该将7和8设置为 CLKL/H 配置值。

    但是、通过使用这些值、我没有将正确的 I2C 频率作为输出...

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

    尊敬的 Francois:

    我现在没有这块板了、是否可以在我结束时分享您的完整项目以进行验证?

    我会很快核实并提供建议。

    ——
    谢谢、此致、
    Jagadish。

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

    很抱歉、我无法共享该项目。

    以下是用于通过示波器检查 VCLK 的代码部分

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //set ECPCLKFUN bit to 1 in SYSPC1
    systemREG1->SYSPC1 = 1U;
    //set output direction
    systemREG1->SYSPC2 = 1U;
    //set pull up-down
    systemREG1->SYSPC9 = 1U;
    //LEAVE CLK_TEST_EN in CLKTEST to use ECPNTL
    //ECPCNTL set by default to VCLK + STOP on suspend + divide by 900
    systemREG1->ECPCNTL = (uint32)((uint32)0U << 24U)
    | (uint32)((uint32)0U << 23U)
    | (uint32)((uint32)(900U - 1U) & 0xFFFFU);
    // 90MHz divide by 900 give 100kHz signal
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    在等待您的反馈时、我将尝试对 HDK 使用不同的配置...

    提前感谢您的测试。

    此致。

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

    或者也可以安排一次现场演示、在那里您可以共享您的屏幕、我会验证您的配置并根据配置指导您进行操作。

    ——
    谢谢、此致、
    Jagadish。

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

    你(们)好

    我不允许这样做。

    你认为你什么时候可以检查你的身边?

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

    大家好、我已经完成了另外一个测试。 我已经在 Halcogen 上生成了一个新工程来与 HDK 配合使用。

    振荡器 16MHz
    VCLK 8MHz OSC/2
    I2C 模块 8MHz 曲折 d = 7
    I2C CLKL 3.
    I2C CLKH 3.
    主器件 CLK 400000

    同样、生成的时钟不是400kHz、而是312kHz。

    我正在等待您的反馈

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

    尊敬的 Francois:

    您是否正在将 HALCoGen 用于您的应用以生成驱动程序级代码?

    我之所以选中此框、是因为、如果我们使用 HALCoGen、那么我们就不需要在两个值之间费神、而是可以直接给出下面所需的波特率框:

    它将自动计算所有值。

    ——
    谢谢、此致、
    Jagadish。

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

    我已经为产品项目编写了驱动程序级别代码、显示了问题。

    我已经用 HalCoGen 生成了一个新项目、并且使用文件和值时、它显示了同样的关于 I2C 波特率的问题。

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

    尊敬的 Francois:

    如前所述、我没有此电路板。 我选用了另一个 Hercules 电路板(TMS570LC4357)。

    对于该板、我采用了一个现有的 I2C 示例、并将波特率配置为400Kb

    在这里我注意到一个有趣的观察:

    以下是在 VCLK 75MHz 下采用400K 波特率时的 I2C 波形:

    以下是在 VCLK 90Mhz 下采用400K 波特率时的 I2C 波形:

    当我将75MHz VCLK 配置到 I2C 模块时、我不会在生成的波特率中看到任何问题(我的意思是我获得411K 波特率)、而当我将90MHz VCLK 配置到 I2C 模块时、生成的波特率不正确(我得到的波特率仅为2.4K)。

    另外、我注意到在90Mhz 情况下、预分频器和 CLKH 以及 CLKL 分频器仅设置为正确值。  

    可能我怀疑这一点、该模块可能不支持 I2C 实例的输入频率90Mhz。 我将进行与此相关的进一步分析、以便加以确认。 平均时间、我建议您尝试使用75MHz 的 VCLK 并在您的末端进行测试

    ——
    谢谢、此致、
    Jagadish。

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

     您好、感谢您完成本次测试。

    我将使用75 MHz 时钟进行测试... 我已经用 VCLK 8MHz 完成了这项工作、现在显示了同样的问题...