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.

[参考译文] AM2634:AM2634 FSI传输时钟速度问题

Guru**** 2524550 points
Other Parts Discussed in Thread: AM2634

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1099397/am2634-am2634-fsi-transmit-clock-speed-question

部件号:AM2634

您好,

我正在SPRUJ09中开发的评估套件上使用Sitara AM2634。 我正在尝试测试FSI性能。 我确实从SDK FSI 8.2 .0.28 复制了示例"fis_looping_polling_am263x-cc_r5fs0-0_nortos_ti-arm-clang",并更改为FSI通道2,以便能够测量评估套件J6上的信号。 此外,我还禁用了内部回送。 运行该程序会在100条消息左右后返回成功。

但是,当我测量检定套件(AM263x控制卡硬件) J6上的时钟时,我确实得到了3 MHz(!) 应根据本示例中的注释来代替50 MHz。 实际上,我可能搞错了,但我没有触及SoC的时钟设置。 在CCS的控制台窗口中,它会显示:

CS_DAP_0:凝胶输出:*******************************************************************
CS_DAP_0:凝胶输出:********** 所有R5F内核均已发布以加载程序********
CS_DAP_0:凝胶输出:*******************************************************************
CS_DAP_0:Gel输出:SYS_CLK DIVBY2
CS_DAP_0:Gel输出:DPLL_core_HSDIV0_CLKOUT0被选为R5FSS和SYS CLK的CLK源
CS_DAP_0:凝胶输出:

CLK编程R5F=400MHz和SYS_CLK=200MHz  

因此,我假设SoC的系统时钟为200 MHz。 如果将此值除以4,则示例中的代码将给出50 MHz的值。 我在J6上测量3MHz ... 当我尝试在CCS中显示FSI 2 Tx时钟控制寄存器的内容时,我确实得到了地址0x502A0004处的“0.0012万”。 根据TRM和注册文件,这是有意义的。 时钟已启用,'prescale_VAL'为4,这是获得50MHz时钟所需的。 我确实在CPU3而不是CPU0上运行示例代码。 不过,我认为这并不重要。

如果有任何关于我接下来可以查看的内容的想法,我将不胜感激? 与以往一样,我们对项目中此类SoC的设计决策有点压力...

巴西

Markus

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

    深入了解一下,我发现在syscfg工具中正在使用时钟的名称是(FSI Rx/Tx其他依赖项...) 'WUCPUCLK'。 这是25MHz的板载时钟源。 这确实解释了为什么使用SDK中的一个FSI示例可以获得3.125MHz而不是所需的50MHz。 但是,将输入时钟源更改为SYS_CLK等不会更改任何内容。

    我不知道在启动/启动过程中控制模块寄存器是在设置(MSS_RCM_CONTROLSS_PLL_CLK_SRC_SEL寄存器)。 登记册文件SPRUJ42第357页---- 2022年3月)。 重建项目会生成名为'ti_power时钟_config.c'的源文件...

    最好提供有关如何使用PLLRAWCLK或SYS_CLK设置FSI的提示。

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

    您好Markus:

    我正在研究这件事,不久将与您联系。

    此致,
    弗兰克

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

    您好Markus:

    我同意你的意见。 问题似乎是SYSCFG未生成配置时钟mux的代码,选择FSI功能时钟的输入。 因此,FSI功能时钟设置为25 MHz。

    这对我来说似乎是一个软件错误。 我将跟进软件开发团队进行确认。

    在调用fsis_looping_main()之前,我将此代码添加到main(),以获得正确的FSI功能时钟:

    #include <drivers/soc.h>
    
    SOC_controlModuleUnlockMMR(0, MSS_RCM_PARTITION0);
    SOC_rcmSetPeripheralClock(SOC_RcmPeripheralId_CONTROLSS_PLL , SOC_RcmPeripheralClockSource_DPLL_CORE_HSDIV0_CLKOUT2, 400000000);
    SOC_controlModuleLockMMR(0, MSS_RCM_PARTITION0);
    

    您能知道这是否适合您吗?

    此致,
    弗兰克

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

    您好,Frank,

    它现在确实有效。 这对现在来说是好的。 谢谢你。

    顺便提一下,我确实发现了另一个有关财政司法机构的问题。 例如,当我选择SYS_CLK作为FSI块的时钟源时,它得到一种印象(示例测量),即时钟速度始终是输入时钟的1/2。 在SYS_CLK的情况下,它始终为100MHz。 这与预分值无关。 请您仔细检查一下吗? 在我看来,实际的文件在这方面有些模糊。 通过阅读文档,我得到的印象是TxClk预校准器是在选择时钟源之后,无论是PLLRAWCLK还是SYS_CLK。 现在我想预分频器只是在PLLRAWCLK选择之后,而不是在SYS_CLK之后,在我们的情况下是200MHz。

    巴西

    Markus

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

    您好Markus:

    我正在与一位同事联系,以帮助解决计时问题。

    此致,
    弗兰克

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

    您好Markus:

    此处有两个时钟信号,您应注意:

    1) TXCLK (FSITX接口时钟)

    2) TXCLKIN (FSITX接口时钟*2或FSI-SPI-信号模式时钟)

    此信息可从CONTROLSS_FSITX:TX_CLK_CTRL寄存器描述中理解(下面的屏幕截图供参考)。

    此处的关键是以下注释:

    TXCLKIN =输入时钟/ prescale_VAL
    在FSI模式中:TXCLK = TXCLKIN / 2
    在SPI模式中:TXCLK = TXCLKIN


    分频器按压值
    输入时钟被此8位值除以,然后输入到发射器核心。 此分频时钟是TXCLK的工作速率。

    0H (R/W)=保留
    1h (R/W)=输入时钟/1
    2H (R/W)=输入时钟/2
    3h (R/W)=输入时钟/3
    4小时(R/W)=输入时钟/4
    ...
    FFH (R/W)=输入时钟/255

    TXCLKIN =输入时钟/ prescale_VAL
    在FSI模式中:TXCLK = TXCLKIN / 2
    在SPI模式中:TXCLK = TXCLKIN

    此致,

    Zackary Fleenor