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.

[参考译文] MSP432E401Y:如何将 ADC 时钟配置为32MHz

Guru**** 2533590 points
Other Parts Discussed in Thread: MSP-EXP432E401Y, SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1001170/msp432e401y-how-to-configure-adc-clock-to-32-mhz

器件型号:MSP432E401Y
Thread 中讨论的其他器件:MSP-EXP432E401YSYSBIOS

问题摘要

我需要每秒执行尽可能多的模数转换。  我的理解是、有2个 ADC 模块、每个模块都能够通过将 ADCCLK 设置为32MHz 来收集2MSPS。  默认配置显示为以240MHz 的频率运行 PLL、以120MHz 的频率运行 SYSCLK、以16MHz 的频率运行 PIOSC 的 ADCLK。  PLL 为240MHz 时、没有 ADC_CC 设置为实现32MHz、以支持每模块2MSPS 的最大收集速率(CLKDIV 8可实现30MHz、CLKDIV 7约为34MHz、超过32MHz 限制)。

我想将 PLL 设置为480MHz、将其除以4以获得120MHz SYSCLK、并将其除以15以获得32MHz ADCCLK。  然而、Boot_sysctl.c 中的 Boot_sysCtlClockFreqSetI 函数似乎有一个错误。 该值以系数2关闭。  调查显示、类似产品 TM4C129x 的芯片勘误表 SYSCTL_22 (SPMZ850G-2013年10月- 2017年3月修订)。  勘误表记录了 RSCLKCFG 的问题 硬件和在软件中对这些值进行倒角处理是权变措施的一部分(附录3)。  MSP43E 勘误文档(SLAZ709-2017年10月)中没有此类勘误表。

最后、技术参考指出、PSYSDIV 必须一直被设定为0x1 (从而产生一个2分频)的次数是多次的。  我需要将其设置为0x3、从而得到4分频。

问题

MSP432Y 的 RSCLKCFG 中是否存在相同的硅缺陷 硬件?

是否应从 MSP432Y TIRTOS 中删除 TM4C129x 缺陷的变通办法?

我是否可以使用 N=0x4、Q=0x0和 PSYSDIV=0x3来获得480MHz PLL 和120MHz SYSCLK?

其他信息

我正在 MSP-EXP432E401Y Launch Pad 原型板上进行开发。  我的 IDE 是 Code Composer Studio 版本:9.0.1.00004。  我使用 TIRTOS 3_20_00_10。

我将一个25MHz 晶体连接到 OSC0 OSC1引脚。

检查调试器运行中的寄存器、我看到:

PLLFREQ0 = 0x1

PLLFREQ0 = 0x0

PLLFREQ0 =0x60 (十进制96)

PLLFREQ1 = 0x1

PLLFREQ1 = 0x4

PLLSTAT = 0x1

RSCLKCFG = 0x1

RSCLKCFG =0x3 (MOSC)

RSCLKCFG = 0x1

根据 技术参考手册第4.1.5.5.1节" PLL 配置"中的公式、这会导致 PLL VCO 频率为240MHz、SYSCLK 频率为120MHz。  默认情况下、ADCCLK 似乎正在以16MHz 的频率从 PIOSC 运行。

然后、我修改 了 Boot_sysctl.c 来设置 PLLFREQ1 = 0x0且 RSCLKCFG =0x3、希望这将导致 PLL VCO 频率为480MHz、SYSCLK 频率为120MHz。  我还设置了 ADC_CC = 0x0 (PLL VCO)和 ADC_CC =0xE (十进制的14)、以实现32MHz 的 ADCCLK 频率。

我的安装中有三个 sysctl.c 文件。  driverlib 和 SYSBIOS 文件使用240000000作为480 MHz 频率。   我假设 driverlib 是供应用程序使用和修改的-我不使用它。  当我运行时、系统正在使用 SYSBIOS 文件。

C:\ti\simplelink_msp432e4_sdk_3_20_00_10\source\ti\devices\msp432e4\driverlib\sysctl.c

C:\ti\simplelink_msp432e4_sdk_3_20_00_10\kernel\tirtos\packages/ti\sysbios\family\arm\msp432e4\init\Boot_sysctl.c

//*****************************************************************************
//
// Look up of the possible VCO frequencies.
//
//*****************************************************************************
static const uint32_t g_pui32VCOFrequencies[MAX_VCO_ENTRIES] =
{
    160000000,                              // VCO 320
    240000000,                              // VCO 480
};

目录文件使用480000000作为480MHz 频率。  我不知道目录是什么。  我认为 TIRTOS 或我的应用不会使用这种方法。

C:\ti\simplelink_msp432e4_sdk_3_20_00_10\kernel\tirtos\packages/ti\catalog\arm\cortexm4\Tiva\ce\Boot_sysctl.c

//*****************************************************************************
//
// Look up of the possible VCO frequencies.
//
//*****************************************************************************
static const uint32_t g_pui32VCOFrequencies[MAX_VCO_ENTRIES] =
{
    320000000,                              // VCO 320
    480000000,                              // VCO 480
};

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

    你(们)好  

    请按照以下说明操作

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

    正如我所说的、我已经设置了 ADCCC 0x0和  ADCCC =0xE (十进制14)。  自从我最初发布以来、我已经完成了进一步的运行、并且已经看到 SYSCLK 正在响应 PSYSDIV 的各种设置。  随着 PSYSDIV 的增加、运行时间会按比例增加。 因此、我确信我可以使用除0x1以外的 PSYSDIV 值。  但是、我最初的问题仍然没有得到解答:

    MSP432Y 的 RSCLKCFG 中是否存在相同的硅缺陷 硬件?

    是否应从 MSP432Y TIRTOS 中删除 TM4C129x 缺陷的变通办法?

    我是否可以使用 N=0x4、Q=0x0和 PSYSDIV=0x3来获得480MHz PLL 和120MHz SYSCLK?

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

    我想您可以将 PLL VCO 配置为320MHz、并将 CLKDIV 配置为10、这样您就可以为 ADC 获得32MHz 的频率。

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

    可能、但我无法对 PLL VCO 进行分频以获得120MHz SYSCLOCK。

    无论如何,这不是我的问题。  除非有人能提供更好的信息、否则我将回答我自己的问题...

    MSP432Y 的 RSCLKCFG 中是否存在相同的硅缺陷 硬件?  

    MSP432似乎没有相同的硬件问题。  我可以更改 PSYSDIV、它会影响 CPU 吞吐量。

    是否应从 MSP432Y TIRTOS 中删除 TM4C129x 缺陷的变通办法?

    可能、但我编写了一些应用层软件、在 RTOS 错误设置寄存器后、按照我需要的方式设置寄存器。

    我是否可以使用 N=0x4、Q=0x0和 PSYSDIV=0x3来获得480MHz PLL 和120MHz SYSCLK?

    我能够在应用层中设置这些值、我很确定 ADC 时钟为32MHz、SYSCLOCK 为120MHz。

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

    您使用的时钟源是什么? 外部晶体? 它的频率是多少?

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

    我将一个25MHz 晶振连接到 OSC0 OSC1管脚并通过 RSCLKCFG 进行选择 =0x3 (MOSC)。

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

    您是否尝试过此配置设置 MiNT = 0x40 N=4且  PSYSDIV=0xA?

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

    假设您的意思是 Q = 0、PLL VCO 将为320MHz、但 SYCLK 将仅为32MHz。  我尝试在不降低 CPU 速度的情况下将 ADCCLOCK 设置为32MHz。