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.

[参考译文] TM4C129EKCPDT:ADC 时钟配置获取错误值

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162125/tm4c129ekcpdt-adc-clock-config-get-return-wrong-value

器件型号:TM4C129EKCPDT

您好!  

  我将 tm4c129ekcpdt 微控制器与 Tivaware 驱动程序库搭配使用。

  我已将 ADC 时钟设置为32MHz、ADC 工作正常。

 但是、当我使用 ADCClockConfigGet  API 读取时钟配置时、我每次都会得到112。  

 这是主要问题。

代码如下所示  

空 init_adc()

uint32_t adc_clk、ui32ClockDiv;
//uint32_t adc_clk;
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);//SYSCTL_Periph_GPIOD //系统外设启用
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);// ADC 模块0
while (!map_SysCtlPeripheralReady (SYSCTL_Periph_ADC0))//等待外设启用


MAP_GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_7);//为 ADC 设置 GPIO 引脚7端口 D
ADCClockConfigSet (ADC0_BASE、ADC_CLOCK _SRC_PLL|ADC_CLOCK _RATE_FULL、15);
MAP_ADCReferenceSet (ADC0_BASE、ADC_REF_INT);
MAP_ADCSequenceConfigure (ADC0_BASE、0、ADC_TRIGGER_PROCESSORE、0);// ADC 基模块0、处理器触发
MAP_ADCSequenceStepConfigure (ADC0_BASE、0、0、ADC_CTL_CH4|ADC_CTL_IE|ADC_CTL_END);
MAP_ADCSequenceEnable (ADC0_BASE、0);// ADC 序列启用
MAP_ADCHardwareOversampleConfigure (ADC0_BASE、8);
MAP_ADCIntClear (ADC0_BASE、0);// ADC 中断清除
 ADC_clk = ADCClockConfigGet (ADC0_BASE、\ui32ClockDiv);
 system_printf ("adc_clk =%d %d\n"、adc_clk、ui32ClockDiv);System_flush ();

对于 时钟分频器、ADC_clk = 112 15 // 15、但为什么每次都要112?

我更改了时钟分频器、但结果相同。

 

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

    您好!

     我将深入研究它并返回。  

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

    谢谢、Charles

     请检查代码段。 可能是我做了一些错误。  

    苏米特  

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

    您好!

     我还在研究它。 当我更改分频率值时、 ADCClockConfigGet 仍然返回相同的值。  

     同时 、在 ADCClockConfigGet 之外、您的代码在2MSPS 下工作正常、对吧?

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

    大家好、Charles、早上好  

    上述代码正常工作、但我不知道 ADC 是否为2MSPS。 我已设置为2MSPS。

    是否有任何检查 ADC 速度的过程?

    --总结  

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

    您好!

     ADC 时钟(ADCLK)被 PLL VCO 分频。 理论上、VCO 可配置为480MHz。 如果您要将480MHz 除以15、您将得到32MHz。 但是、由于一个勘误问题、如果 你使用最新的 TivaWare 来配置时钟、SysCtlFreqClockSet()将只将 VCO 配置为240MHz。  由于 VCO 以240MHz 运行、VCO/15之后的 ADCCLK 仅为16MHz。  因此、使用您的电流设置、您只能实现1MSPS。 要实现2MSPS、您需要将240Mhz 除以8、这样您就可以得到30Mhz。 ADC 模块不支持小数分频。 因此、您无法指定240Mhz / 7.5以实现32MHz。 如果您想以120MHz 运行 SYSCLK、ADCLK 的30MHz 将是您可以获得的频率。  

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

    您好、Charles、

    你是对的。 PLL VCO 最高可达240MHZ、但不能超过此值。 我们可以使用  ADCClockConfigGet API 设置 ADC 时钟、但它始终返回112。

    可能是112是某些 默认值。 我在"Register"视图中看到 ADC 时钟集正在工作。

    谢谢、

    Sumit Chaulya

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

    您好!

    [引用 userid="525210" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162125/tm4c129ekcpdt-adc-clock-config-get-return-wrong-value/4374095 #4374095">您是对的。 PLL VCO 最高可达240MHZ、但不能超过此值。 我们可以使用  ADCClockConfigGet API 设置 ADC 时钟、但它始终返回112。

    是的、关于 VCO 的240Mhz。 只要您使用  ADCClockConfigSet (ADC0_BASE、ADC_CLOCK _SRC_PLL|ADC_CLOCK _RATE_FULL、7)、您就应该得到 ADCCLK 的30Mhz。  

    [引用 userid="525210" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162125/tm4c129ekcpdt-adc-clock-config-get-return-wrong-value/4374095 #4374095"]可能是112、这是一些 默认值。 我在"Register"视图中看到 ADC 时钟集正常工作。[/quot]

    这也是我在运行代码时看到的内容。 不知怎么说、它不会改变。 但我非常确信您以预期的频率运行。