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.

[参考译文] SIMPLELINK-MSP432-SDK:连接 MSP432E401Y 上的48 MHz 外部时钟

Guru**** 2532080 points
Other Parts Discussed in Thread: MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1276987/simplelink-msp432-sdk-interfacing-with-48-mhz-external-clock-on-the-msp432e401y

器件型号:SIMPLELINK-MSP432-SDK
主题中讨论的其他器件:MSP432E401Y

大家好!

我在 MSP432P4系列器件(MSP432P401R)上运行了现有软件。 由于 MSP432P4系列已停产、我希望将该软件迁移到 MSP432E4系列器件(MSP432E401Y)、直到找到更持久的解决方案、并重新设计该软件。

由于现有软件是使用 TI 驱动程序编写的、因此我的理解是从 MSP432P4系列器件更改为 MSP432E4系列器件应相当简单(从软件角度而言)。

现有软件基于 MSP432P401R 的可移植 TI 驱动程序 FreeRTOS 示例项目(C:\ti\simplelink_msp432p4_SDK_3_40_00_05\examples\rtos\MSP_EXP432P401R\demos\portable\freertos\ccs\portable_MSP_EXP432P401R_freertos_ccs.projectspec)。 迁移的软件基于 MSP432E401Y 的可移植 TI-Drivers FreeRTOS 示例项目(C:\ti\simplelink_msp432e4_SDK_4_20_00_12\examples\rtos\MSP_EXP432E401Y\demos\portable\freertos\ccs\portable_MSP_EXP432E401Y_freertos_ccs.projectspec)。

我已经开始从引脚排列/外设兼容性开始调查此迁移是否可行。

现有软件使用大约24个 GPIO、4个 UART 接口、2个 I2C 接口、1个 SPI 接口和6个 ADC 输入。 MSP432E401Y 在外设方面兼容:有足够的 GPIO、UART、I2C、SPI 和 ADC 接口。

但是、在使用外部48 MHz 时钟源时、我遇到了难题。

现有软件依赖于外部单端48 MHz 时钟源。 在 MSP432P401R 上、TI 驱动程序电源模块提供了创建自定义性能级别并通过 PowerMSP432_ConfigV1结构配置外部时钟的选项。 我无法为 MSP432E401Y 找到此类选项。 我的印象是、使用 TI 驱动器不容易实现此类连接。

为确保脚潮湿、我查阅了数据表(DTS)和技术参考手册(TRM)、了解详情。

[0.] 根据[TRM:4.1.5.1基本时钟源]:"PIOSC 是 POR 期间和之后微控制器使用的片上时钟源。"

[1.] 根据[TRM:4.1.5.1基本时钟源]:"MOSC 提供一个频率精确的时钟、时钟源由两种方式之一提供:外部单端时钟源连接到 OSC0输入管脚、或外部晶振连接到 OSC0输入管脚和 OSC1输出管脚。 单端时钟源的范围从直流到微控制器指定的速度。"

[2.] 根据[DTS: Table 5-12. 主振荡器输入特性]:"外部时钟基准(PLL 处于旁路模式)"(f_REF_XTAL_BYPASS)的最小值和最大值分别为0 MHz 和120 MHz。

[3.] 根据[TRM: Figure 4-5. 主时钟树]:"mosc"时钟信号来自一个多路复用器、其输入由控制信号"NOXTAL"选择。

[4.] 根据[ TRM:表4-20. MOSCCTL 寄存器字段描述]:PWRDN 寄存器位字段。。 "提供用户对主振荡器电路断电的控制。 当使用晶振且设置为单端模式时、该位应该被清零... 0x0 =启用 MOSC 电源电路。 0x1 = MOSC 电路断电。'

[5.] 根据[ TRM:表4-20. MOSCCTL 寄存器字段说明]:NOXTAL 寄存器位字段…… "为用户提供对从主控制器
振荡器电路。 当使用晶体或单端模式时、该位应置位。 如果应用程序需要 MOSC、则应将此位清零。'

[6.] 根据[ TRM:表4-21. RSCLKCFG 寄存器字段说明]:USEPLL 寄存器位字段... "控制时钟源是由 OSCSRC 域指定、还是 PLL 的输出提供给系统时钟分频器并用作系统时钟源。 0x0 =时钟源由 OSCSRC 域指定。 0x1 =时钟源由 PLL 指定。"

[7.] 根据[ TRM:表4-21. RSCLKCFG 寄存器字段描述]:OSCSRC 寄存器的位字段"指定成为振荡器时钟(OSCCLK)源的振荡器源、在 RUN 或 SLEEP 模式期间绕过 PLL 时使用它... 0x3 = MOSC 是振荡器源。"

[8.] 根据[表4-26. DSCLKCFG 寄存器字段描述]:DSOSCSRC 寄存器的位字段"指定成为振荡器时钟(OSCCLK)源的振荡器源、在深度睡眠模式绕过 PLL 时使用它... 0x3 = MOSC"

根据[1、2]、可以看到 MSP432E401Y 可以支持频率为48 MHz 的单端外部时钟参考。

根据[0、3、4、5、6、7、8]、可能会显示、忽略 OSCCLK 时钟分频器(我期望默认为1)、如果我要使 SYSCLK 成为以我的单端外部时钟作为源的48 MHz 时钟、我应该:
[A.]设置 MOSCCTL。 自动断电
[B]清除 MOSCCTL。 NOXTAL
[c.]清除 RSCLKCFG。 USEPLL
[D.]将0x3分配给 RSCLKCFG。 DSOSCSRC
[E.]将0x3分配给 RSCLKCFG。 OSCSRC

你认为这会起作用吗? 如果没有、我接下来可以从哪里寻找解决方案?

最终、我可以设计一个原型板并使用实际外部时钟对此进行测试、但在执行此操作之前、我想详细列出所有其他选项。

非常感谢、


迪伦

时钟树、参考:

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

    但是、在使用外部48 MHz 时钟源时、我遇到了难题。

    现有软件依赖于外部单端48 MHz 时钟源。 在 MSP432P401R 上、TI 驱动程序电源模块提供了创建自定义性能级别并通过 PowerMSP432_ConfigV1结构配置外部时钟的选项。 我无法为 MSP432E401Y 找到此类选项。 我的印象是、使用 TI 驱动器不容易实现此类连接。

    [/报价]

    假设您要为 MSP432E 保留使用外部单端48Mhz 时钟。 是这样吗?

    我建议您查看一个示例 、如 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\msp_EXP432E401Y\driverlib\hello。 在这个示例和很多其他示例中、可以找到通常如何使用 API  SysCtlClockFreqSet 来配置时钟。 请参阅下面的示例、以使用外部25MHz MOSC 作为 PLL 的源时钟、从而在120MHz 频率下生成最终的 SYSCLK。  


    //在120 MHz 处从 PLL 运行。
    //
    g_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000);

    API 相当复杂、可处理许多情况。 您可以在 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4\driverlib\sysctl.c 中读取此 API 的源代码。 我不希望你完全理解它,因为我也不。 话虽如此、现有的 API 设置了一个 API、并不支持外部单端时钟输入源。 您可以做的是设置时钟、就像使用25MHz 的外部 MOSC 一样、但您只需要省略 OSC1引脚、并将单端48Mhz 连接到 OSC0引脚。

      SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_OSC)、25000000);

    下面这篇文章中的海报能够使其与 30.72MHz 外部单端时钟配合使用。   请按照讨论内容进行操作。  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1265145/tm4c1290ncpdt-epi-host-mode-clocking/4791729#4791729

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

    非常感谢您的提示回复--以及 有用的主题。 对我来说、这看起来是一个很好的起点。

    是的、我想保留对外部48 MHz 时钟源的使用、因为有一些控制算法已在这个频率下使用这个特定的外部时钟进行测试。

    我必须花一些时间来浏览另一个海报的主题、然后我将再次讨论该主题。

    乍一看、如果 我不是非常了解 MSP432E4、我认为与海报相比、唯一可能需要做的事情就是 针对48 MHz 频率手动配置 MEMTIM0 (MSP432E4 TRM、第7.2.3.1节)? 看起来、由于 相同的 MEMTIM0寄存器设置可用于25 MHz 和30.72 MHz、如果在30.72 MHz 上使用单端时钟、则可以在不配置 MEMTIM0的情况下摆脱这种情况。

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

    您好!

     这是一个非常好的观点。 是的、对于48MHz 的频率、您需要根据表手动调整 MEMTIM0寄存器中的闪存等待状态。 您还需要设置 RSCLKCFG 寄存器中的 MEMTIMU 位、以应用 MEMTIM0。  

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

    感谢你的帮助。