搜索
bottom↓
回复: 4

麻烦大家帮我看看STM32F205这一路配置下来,ADC的时钟是多少

[复制链接]

出0入93汤圆

发表于 2024-1-8 20:25:20 | 显示全部楼层 |阅读模式
MCU是STM32F205RBT6,晶体8MHz,用的老的标准外设库


  1.         RCC_DeInit();               
  2.         RCC_HSEConfig(RCC_HSE_ON);                // Enable HSE (High Speed External clock)
  3.         ...

  4.         RCC_HCLKConfig(RCC_SYSCLK_Div1);

  5.         RCC_PCLK1Config(RCC_HCLK_Div2);                // APB1 Prescaler = 2
  6.         RCC_PCLK2Config(RCC_HCLK_Div2);                // APB2 Prescaler = 2

  7.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 | RCC_APB2Periph_ADC3, ENABLE);
  8.         RCC_PLLConfig(RCC_PLLSource_HSE, 8, 240, 2, 4);
  9.         ...

  10.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
  11.         ...

  12.         ADC_CommonInitTypeDef ADC_CommonInitStructure;
  13.         ...
  14.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);                         // Enable ADC's APB interface Clock
  15.         ...
  16.         ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;       
  17.         ...
  18.         ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;        // Delay between 2 sampling phases

  19.         ADC_CommonInit(&ADC_CommonInitStructure);
  20.         ...
复制代码

出0入9汤圆

发表于 2024-1-8 21:41:29 | 显示全部楼层
闲着无聊,顺便帮你问问chatgpt

1、把你的问题粘贴给chatgpt回答如下:

这段代码是针对使用STM32F205RBT6微控制器的MCU进行的初始化设置。以下是对代码的逐行解释:
RCC_DeInit();
这一行将复位RCC (Reset and Clock Control)寄存器,将所有的时钟设置恢复为默认状态。
RCC_HSEConfig(RCC_HSE_ON);
这一行启用外部高速时钟(HSE),即将外部晶体振荡器作为系统时钟源。
RCC_HCLKConfig(RCC_SYSCLK_Div1);
这一行将AHB总线时钟设置为系统时钟,即HCLK = SYSCLK。
RCC_PCLK1Config(RCC_HCLK_Div2);
这一行将APB1总线时钟设置为HCLK的一半,即PCLK1 = HCLK/2。
RCC_PCLK2Config(RCC_HCLK_Div2);
这一行将APB2总线时钟设置为HCLK的一半,即PCLK2 = HCLK/2。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 | RCC_APB2Periph_ADC3, ENABLE);
这一行启用ADC1、ADC2和ADC3外设的时钟。
RCC_PLLConfig(RCC_PLLSource_HSE, 8, 240, 2, 4);
这一行配置PLL (Phase-Locked Loop)时钟源为HSE,输入分频系数为8,倍频系数为240,PLLM分频系数为2,PLLN倍频系数为4。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
这一行启用电源(PWR)外设的时钟。
ADC_CommonInitTypeDef ADC_CommonInitStructure;
这一行定义了一个名为ADC_CommonInitStructure的结构体变量,用于配置ADC的公共参数。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
这一行启用ADC1外设的时钟。
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
这一行将ADC的分频系数设置为2,即ADC时钟频率为APB2时钟频率的一半。
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
这一行将ADC的两个采样阶段之间的延迟设置为5个时钟周期。
ADC_CommonInit(&ADC_CommonInitStructure);
这一行使用上述配置的参数初始化ADC的公共部分。
以上是部分代码,给出了一些初始化RCC和ADC的设置。这段代码使用了旧的标准外设库进行配置。请注意,这只是代码的一部分,可能还有其他代码用于配置其他外设和功能。

2、继续第二问:
经过这个配置后AD 时钟频率是多少,晶振8MHz?

根据给出的代码和配置信息,通过以下计算可以确定ADC的时钟频率:
首先,根据代码中的RCC_PLLConfig函数配置,PLL的输入频率为8MHz(晶振频率)。
根据代码中的RCC_PCLK2Config函数配置,APB2总线时钟频率为HCLK的一半,即4MHz。
根据代码中的ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2配置,ADC的时钟频率为APB2时钟频率的一半,即2MHz。
因此,经过这个配置后,ADC的时钟频率为2MHz。需要注意的是,这个值是根据代码推断的,并且可能还受到其他因素的影响。实际的时钟频率可能会有所不同。

出0入93汤圆

 楼主| 发表于 2024-1-8 22:13:01 | 显示全部楼层
wanggoals 发表于 2024-1-8 21:41
闲着无聊,顺便帮你问问chatgpt

1、把你的问题粘贴给chatgpt回答如下:
(引用自2楼)

第1问好像解释得还像模像样,第2问回答的结果肯定是错的

chatgpt不靠谱啊

出0入9汤圆

发表于 2024-1-8 22:50:35 | 显示全部楼层
感觉目前的ai的最大问题就是会一本正经的胡说八道。

重新问了下,发现还是错的;告诉它错了,没有考虑分频,输出还是错的;让它继续检查,最终回答如下:


非常抱歉之前的回答仍然有误。根据您提供的代码,以下是对ADC时钟频率进行修正的步骤:

RCC_HSEConfig(RCC_HSE_ON);:启用外部高速时钟(HSE)。

RCC_PLLConfig(RCC_PLLSource_HSE, 8, 240, 2, 4);:配置PLL时钟。根据代码,输入分频系数为8,倍频因子为240,分频系数为2。

RCC_HCLKConfig(RCC_SYSCLK_Div1);:将系统时钟(SYSCLK)作为HCLK的源,分频系数为1。

RCC_PCLK1Config(RCC_HCLK_Div2); 和 RCC_PCLK2Config(RCC_HCLK_Div2);:将HCLK作为APB1和APB2总线时钟源,分频系数为2。

ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;:将ADC的预分频系数设置为2。

根据上述修正,可以推断以下时钟频率:

外部高速时钟(HSE)频率:假设外部晶振的频率为8MHz。

PLL输入频率:由于输入分频系数为8,因此PLL的输入频率为8MHz / 8 = 1MHz。

PLL输出频率:根据配置,倍频因子为240,分频系数为2,因此PLL的输出频率为1MHz * 240 / 2 = 120MHz。

系统时钟(SYSCLK)频率:根据配置,SYSCLK的源为PLL输出,因此SYSCLK的频率为120MHz。

APB1总线时钟频率:根据配置,APB1总线时钟为SYSCLK的一半,即120MHz / 2 = 60MHz。

APB2总线时钟频率:根据配置,APB2总线时钟为SYSCLK的一半,即120MHz / 2 = 60MHz。

ADC时钟频率:根据配置,ADC的时钟源为APB2总线时钟的一半,即60MHz / 2 = 30MHz。

请注意,这些值是根据代码中的配置和修正推断的。实际的时钟频率可能受到其他因素的影响,例如MCU的硬件限制或其他配置设置。因此,在实际应用中,还是建议参考相关的文档和数据手册来确定ADC的准确时钟频率。

出0入93汤圆

 楼主| 发表于 2024-1-8 23:11:10 | 显示全部楼层
wanggoals 发表于 2024-1-8 22:50
感觉目前的ai的最大问题就是会一本正经的胡说八道。

重新问了下,发现还是错的;告诉它错了,没有考虑分频 ...
(引用自4楼)


这次给的解答和我对代码的理解是一致的
希望熟悉该芯片的朋友帮忙确认一下是否正确
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 18:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表