在STM32F103ZET6的处理器上,设置ADC1的采样频率为1KHz,采样精度为12位,对电压进行数据采集

在STM32F103ZET6的处理器上,设置ADC1的采样频率为1KHz,采样精度为12位,对电压进行数据采集,第1张

芯片:STM32F103

库函数版本:3.5

平台:KEIL 4.72

ADC1初始化部分

ADC_InitTypeDef ADC_USER

RCC_ADCCLKConfig(RCC_PCLK2_Div6)

ADC_USER.ADC_Mode = ADC_Mode_Independent

ADC_USER.ADC_ScanConvMode = DISABLE

ADC_USER.ADC_ContinuousConvMode = DISABLE

ADC_USER.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None

ADC_USER.ADC_DataAlign = ADC_DataAlign_Right

ADC_USER.ADC_NbrOfChannel = 1

ADC_Init(ADC1, &ADC_USER)

ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5)

ADC_Cmd(ADC1, ENABLE)

ADC_ResetCalibration(ADC1)

while(ADC_GetResetCalibrationStatus(ADC1))

ADC_StartCalibration(ADC1)

while(ADC_GetCalibrationStatus(ADC1))

ADC_SoftwareStartConvCmd(ADC1, ENABLE)

//主程序调用ADC部分

ADC_SoftwareStartConvCmd(ADC1, ENABLE)

delay_us(200)

while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC))

num = ADC_GetConversionValue(ADC1)//返回值就是采集的数据

ADC的分辨率指的是模数转换器所能表示的最大数是多少,即ADC的位数,如果ADC是10位ADC,那么分辨率是2的10次方,即1024的分辨率,如果模拟量是温度,测量范围是0~100度,那么可以把100度分成1024份,每一份你都能感知,当温度有100/1024度的变化时,能测量出来。

采样率指ADC每秒钟会进行多少次的模拟量转数字量的 *** 作,如10K/s就是说ADC每秒钟,就采集了10K个模拟量,并将模拟量转换为数字量。当采样声时,一般的采样率是44Kbps/s,当采样温度时,几K/s的采样率就够了。

扩展资料:

所有的模拟数字转换器以每隔一定时间进行采样的形式进行工作。因此,它们的输出信号只是对输入信号行为的不完全描述。在某一次采样和下一次采样之间的时间段,仅仅根据输出信号,是无法得知输入信号的形式的。

如果输入信号以比采样率低的速率变化,那么可以假定这两次采样之间的信号介于这两次采样得到的信号值。然而,如果输入信号改变过快,则这样的假设是错误的。

如果模拟数字转换器产生的信号在系统的后期,通过数字模拟转换器,则输出信号可以忠实地反映原始信号。如经过输入信号的变化率比采样率大得多,则是另一种情况,模拟数字转换器输出的这种“假”信号被称作“混叠”。混叠信号的频率为信号频率和采样率的差。

参考资料来源:百度百科--ADC

0809上有个clock脚,这个是接工作时钟的,和采样率不是一个概念。采样率由控制芯片决定。比如你用单片机,就有单片机发送一个采样”指令"给0809,它就采样一次。指令发送速度就是采样频率。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11095953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存