ADC_parameter_test1

合集下载

stm单片机adc等效采样编程

stm单片机adc等效采样编程

stm单片机adc等效采样编程STM32单片机是一种先进的嵌入式系统,具有高性能、低功耗、丰富的外设和强大的开发工具。

其中,ADC(模数转换器)是STM32单片机中一个重要的外设,用于将模拟信号转换为数字信号。

ADC的等效采样是指将模拟信号离散化为一系列等效采样值,并将其以数字形式存储在内存中。

等效采样编程是指如何通过配置ADC外设和相关的寄存器来实现等效采样。

本文将以STM32F103单片机为例,介绍如何进行ADC等效采样编程。

一、ADC简介STM32F103单片机中的ADC是一个具有先进功能的12位模数转换器。

该ADC可以将模拟信号转换为12位数字值,并通过DMA或中断方式将其传送到内存。

二、ADC的配置和初始化在进行ADC等效采样之前,我们首先需要对ADC进行配置和初始化。

以下是ADC的配置和初始化步骤:1. 使能ADC时钟:通过设置RCC寄存器的对应位来使能ADC时钟。

2. 配置GPIO:选择合适的引脚作为模拟输入。

3. 配置ADC模式:选择合适的ADC模式和采样时间。

4. 配置转换序列:选择要转换的通道和转换顺序。

5. 使能ADCDMA:如果要通过DMA方式传输数据,需要使能ADC的DMA功能。

6. 使能ADC:通过设置CR2寄存器的对应位来使能ADC。

以下是一个简单的ADC初始化代码示例:```c// 使能ADC时钟RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;// 配置GPIOGPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.Pin = GPIO_PIN_0;GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);// 配置ADC模式ADC1->CR1 &= ~ADC_CR1_SCAN;ADC1->CR2 |= ADC_CR2_CONT;ADC1->SMPR2 |= (ADC_SMPR2_SMP0_0 |ADC_SMPR2_SMP0_1);// 配置转换序列ADC1->SQR1 &= ~ADC_SQR1_L;ADC1->SQR3 |= ADC_SQR3_SQ1_0;// 使能ADCDMAADC1->CR2 |= ADC_CR2_DMA;// 使能ADCADC1->CR2 |= ADC_CR2_ADON;```三、开始转换完成ADC的配置和初始化后,我们可以开始进行转换。

MTK平台ADC学习笔记

MTK平台ADC学习笔记

作者: Darren完成日期: 2010-06-28 Page 1 of 14 e-mail:*******************目录1.基本概念 (2)2.MT6225 ADC简介 (3)3.MT6253 ADC简介 (3)4.两种操作模式 (3)5.用于电池电量显示的ADC检测 (4)5.1.主要流程图 (4)5.2.流程说明 (6)5.3.创建步聚 (6)6.充电时ADC的检测 (7)6.1充电时ADC的调度流程 (7)7.工程模式查看电池电压ADC (8)8.MT6225平台区分USB和CHARGER的ADC通道 (8)9.ADC校准 (10)10.ADC检测的主要API (11)11.ADC调度器的成员变量 (13)作者: Darren完成日期: 2010-06-28 Page 2 of 14 e-mail:*******************1.基本概念ADC ,即analog to digital converter,模拟信号至数字信号的转换器。

主要的ADC转换算法有逐次逼近法,双积分法。

它们一般由芯片内部的硬件电路实现,但外部的电路接法会有所不同。

MTK平台ADC采样的可使用外部电路:y=((a*x+b)/100)*factor(如adc_adc2vol()中的算式)x为ADC采样值,y为测量点的实际电压如图2所示,(a*x+b)为A点的电压值,((a*x+b)/100)*factor才是我们要测量的Ui的电压值。

由于ADC的量程有限,故需要进行分压才能测量比较大的电压,之后再根据分压电阻的比值转换成要测量点的电压。

a为每单位表示的电压。

MTK的ADC量程为2.8V,ADC为10位的,故a=2800000/2^10=2734(uV)。

通常为了扩大测量范围,需要把a扩大约一倍(记为a1),之后再通过factor校正。

比如变成5524,是原来的2.02倍b是偏移量,需要测量确定。

ADC参数解释和关键指标

ADC参数解释和关键指标

第五章 ADC静态电参数测试(一)翻译整理:李雷本文要点:ADC的电参数定义ADC电参数测试特有的难点以及解决这些难题的技术ADC线性度测试的各类方法ADC数据规范(Data Sheet)样例快速测试ADC的条件和技巧用于ADC静态电参数测试的典型系统硬件配置关键词解释失调误差Eo(Offset Error):转换特性曲线的实际起始值与理想起始值(零值)的偏差。

增益误差E G(Gain Error):转换特性曲线的实际斜率与理想斜率的偏差。

(在有些资料上增益误差又称为满刻度误差)线性误差Er(Linearity Error):转换特性曲线与最佳拟合直线间的最大偏差。

(NS公司定义)或者用:准确度E A(Accuracy):转换特性曲线与理想转换特性曲线的最大偏差(AD 公司定义)。

信噪比(SNR): 基频能量和噪声频谱能量的比值。

一、 ADC静态电参数定义及测试简介模拟/数字转换器(ADC)是最为常见的混合信号架构器件。

ADC是一种连接现实模拟世界和快速信号处理数字世界的接口。

电压型ADC(本文讨论)输入电压量并通过其特有的功能输出与之相对应的数字代码。

ADC的输出代码可以有多种编码技术(如:二进制补码,自然二进制码等)。

测试ADC器件的关键是要认识到模/数转换器“多对一”的本质。

也就是说,ADC的多个不同的输入电压对应一个固定的输出数字代码,因此测试ADC有别于测试其它传统的模拟或数字器件(施加输入激励,测试输出响应)。

对于ADC,我们必须找到引起输出改变的特定的输入值,并且利用这些特殊的输入值计算出ADC的静态电参数(如:失调误差、增益误差,积分非线性等)。

本章主要介绍ADC静态电参数的定义以及如何测试它们。

Figure5.1:Analog-to-Digital Conversion Process. An ADC receives an analog input and outputs the digital codes that most closely represents then input magnitude relative to full scale.1.ADC的静态电参数规范ADC的静态电参数主要验证器件的输入-输出转换曲线符合设计(理想)曲线的程度。

adc检测程序

adc检测程序
// |_| | | +----------------------+
// +------->| A1- VREF |---+
// GND | | |
__interrupt void BT_ISR(void) //1/16秒一次中断(由BasicTimer所产生)
{
BT_Flag=1;
__low_power_mode_off_on_exit(); //唤醒CPU
}
/****************************************************************************
电压由电位器产生,因此滑动电位器可以观察输入电压变化时ADC的读数
变化情况,用于检测ADC和电位器是否工作正常。
ADC2测量的是由外部输入的电压。外部电压先经过100:1分压后才加
到ADC2的输入端,因此ADC本身-0.6~0.6V量程被扩大成-60V~+60V,但由
// |-| | AVss |---+
// W2 | |<----->| A2+ |
// |_| | P1.5 |----KEY1----+
// +------->| A2- | |
*/
//
// MSP430FE425
// +----------------------+
// Vin->100:1-->| A0+ XIN|---
// -20~+60V | | 32kHz
// | | ---
// 1/2Vref | | --- 1nF

ADC配置

ADC配置

对于STM32,在使用ADC的时候需要配置几个参数。

(1)第一个参数是ADC_Mode,这里设置为独立模式:ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;在这个模式下,双ADC不能同步,每个ADC接口独立工作。

所以如果不需要ADC同步或者只是用了一个ADC的时候,就应该设成独立模式了。

(2)第二个参数是ADC_ScanConvMode,这里设置为DISABLE。

ADC_InitStructure.ADC_ScanConvMode = DISABLE;如果只是用了一个通道的话,DISABLE就可以了,如果使用了多个通道的话,则必须将其设置为ENABLE。

(3)第三个参数是ADC_ContinuousConvMode,这里设置为ENABLE,即连续转换。

如果设置为DISABLE,则是单次转换。

两者的区别在于连续转换直到所有的数据转换完成后才停止转换,而单次转换则只转换一次数据就停止,要再次触发转换才可以。

所以如果需要一次性采集1024个数据或者更多,则采用连续转换。

(4)第四个参数是ADC_ExternalTrigConv,即选择外部触发模式。

这里只讲三种:1、第一种是最简单的软件触发,参数为ADC_ExternalTrigConv_None。

设置好后还要记得调用库函数:ADC_SoftwareStartConvCmd(ADC1, ENABLE);这样触发才会启动。

2、第二种是定时器通道输出触发。

共有这几种:ADC_ExternalTrigConv_T1_CC1、ADC_ExternalTrigConv_T1_CC2、ADC_ExternalTrigConv_T2_CC2、ADC_ExternalTrigConv_T3_T以及ADC_ExternalTrigConv_T4_CC4。

定时器输出触发比较麻烦,还需要设置相应的定时器。

以ADC_ExternalTrigConv_T2_CC2触发为例设置相应的定时器:void TIM2_Configuration(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;TIM_TimeBaseStructure.TIM_Prescaler = 4;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseStructure.TIM_Period = 0XFF;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = 0X7F;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;TIM_OC2Init(TIM2, &TIM_OCInitStructure);TIM_Cmd(TIM2, ENABLE);TIM_CtrlPWMOutputs(TIM2, ENABLE);}这样设置之后就可以用定时器2的输出触发了,至于触发的周期,设置TIM2的时间即可。

ADC总结

ADC总结

函数将外设ADCx 的全部寄存器重设为缺省值函数根据ADC_InitStruct 中指定的参数初始化外设ADCx 的寄存器为了能够正确地配置每一个ADC 通道,用户在调用ADC_Init()之后,必须调用ADC_ChannelConfig()来配置每一个所使用通道的转换次序和采样时间.地址偏移:0x00复位值:0x0000 0000ADC_GetFlagStatus检查制定ADC 标志位置1 与否例Status = ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC);位31:15 保留。

必须保持为0。

位:规则通道开始位ADC_FLAG_STRT Status = 该位由硬件在规则通道转换开始时设置,由软件清ADC_GetFlagStatus(ADC1, 除。

ADC_FLAG_EOC); 0:规则通道转换未开始1:规则通道转换已开始位3 :注入通道开始位ADC_FLAG_JSTRT Status = 该位由硬件在注入通道组转换开始时设置,由软件ADC_GetFlagStatus(ADC1, 清除。

ADC_FLAG_EOC); 0:注入通道转换未开始1:注入通道转换已开始位ADC_FLAG_JEOC Status = 该位由硬件在所有注入通道组转换结束时设置,由ADC_GetFlagStatus(ADC1, 软件清除ADC_FLAG_EOC); 0:转换未完成1:转换完成位ADC_FLAG_EOC Status = 该位由硬件在(规则或者注入)通道组转换结束时设ADC_GetFlagStatus(ADC1, 置,由软件清除或者由读取ADC_DR时清除ADC_FLAG_EOC); 0:转换未完成1:转换完成位ADC_FLAG_AWD Status = 该位由硬件在转换的电压值超出了ADC_LTR和ADC_GetFlagStatus(ADC1, ADC_HTR寄存器定义的范围时设置,由软件清除ADC_FLAG_EOC); 0:没有发生摹拟看门狗事件1:发生摹拟看门狗事件地址偏移:0x04复位值:0x0000 0000位31:24位23 ADC_AnalogWatchdog_SingleRegEnable 单个规则通道上设置摹拟看门狗ADC_AnalogWatchdog_SingleInjecEnable 单个注入通道上设置摹拟看门狗ADC_AnalogWatchdog_SingleRegorInjecEna ble 单个规则通道或者注入通道上设置摹拟看门狗ADC_AnalogWatchdog_AllRegEnable 所有规则通道上设置摹拟看门狗ADC_AnalogWatchdog_AllInjecEnable 所有注入通道上设置摹拟看门狗ADC_AnalogWatchdog_AllRegAllInjecEnable 所有规则通道和所有注入通道上上设置摹拟看门狗ADC_AnalogWatchdog_None 不设置摹拟看门狗位22ADC_AnalogWatchdogCmd(ADC2,ADC_AnalogWatchdog_AllRegAllInjec Enable);位21:20位19:16ADC_Mode_IndependentADC1 和ADC2 工作在独立模式ADC_Mode_RegInjecSimultADC1 和ADC2 工作在同步规则和同步注入模式ADC_Mode_RegSimult_AlterTrigADC1 和ADC2 工作在同步规则模式和交替触发模式ADC_Mode_InjecSimult_FastInterlADC1 和ADC2 工作在同步规则模式和快速交替模式ADC_Mode_InjecSimult_SlowInterlADC1 和ADC2 工作在同步注入模式和慢速交替模式ADC_Mode_InjecSimultADC1 和ADC2 工作在同步注入模式保留。

ADC_TEST

ADC_TEST

DDRD = 0xff; //D 口作输出口,控制数码管位数 PORTD = 0x00; }
/************************************************************************** //函数名称:void adc_convert(int8_t N) //功 能:对 N 通道进行 ADC 转换 //入口参数:N //出口参数:NULL //备 注:NULL **************************************************************************/ void adc_convert(uint8_t N) { uint16_t Result = 0;
adc所以一定要注它主要是设置adc了说一下这个测然后把两路转换的结果用数码管显示出来本来在数据手册上说的是而懒猫也没有写什么控制条件最avr学习日志四十九学习使用单片机自带的adc每天进步一点点开心多一点懒猫爱飞硬件说完了说一下软件软件不是太难主要就是寄存器的配置还有就是数码显示用的是八位共阳极数码管显示精度是两位
//读取转换结果,并转换为电压值 Result = (uint16_t)((ADCL+(ADCH<<8))*500.0/1023.0);
//Result = (uint16_t)(ADC*500.0/1023.0); //这个表达式具有同样的效果
//ADC0 结果放入数组 0.1.2 单元 ADC1 的结果放入数组 4.5.6 中 Dis_Buf[N * 4] = Result/100; Dis_Buf[N * 4+1] = Result/10%10; Dis_Buf[N * 4+2] = Result%10;

ADC的参数解析

ADC的参数解析

adc的参数1)分辩率(Resolution) 指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2n 的比值。

分辩率又称精度,通常以数字信号的位数来表示。

2)转换速率(Conversion Rate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。

积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行/串并行型AD可达到纳秒级。

采样时间则是另外一个概念,是指两次转换的间隔。

为了保证转换的正确完成,采样速率(Sample Rate)必须小于或等于转换速率。

因此有人习惯上将转换速率在数值上等同于采样速率也是可以接受的。

常用单位是ksps和Msps,表示每秒采样千/百万次(kilo / Million Samples per Second)。

3)量化误差(Quantizing Error) 由于AD的有限分辩率而引起的误差,即有限分辩率AD的阶梯状转移特性曲线与无限分辩率AD(理想AD)的转移特性曲线(直线)之间的最大偏差。

通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。

4)偏移误差(Offset Error) 输入信号为零时输出信号不为零的值,可外接电位器调至最小。

5)满刻度误差(Full Scale Error) 满度输出时对应的输入信号与理想输入信号值之差。

6)线性度(Linearity) 实际转换器的转移函数与理想直线的最大偏移,不包括以上三种误差。

其他指标还有:绝对精度(Absolute Accuracy) ,相对精度(Relative Accuracy),微分非线性,单调性和无错码,总谐波失真(Total Harmonic Distotortion缩写THD)和积分非线性。

AD的选择,首先看精度和速度,然后看是几路的,什么输出的比如SPI或者并行的,差分还是单端输入的,输入范围是多少,这些都是选AD需要考虑的。

DA呢,主要是精度和输出,比如是电压输出啊,4-20mA电流输出啊,等等。

hc32f460的adc例程

hc32f460的adc例程

hc32f460的adc例程
摘要:
1.引言
2.hc32f460的adc介绍
3.adc例程的实现
4.总结
正文:
hc32f460是一款高性能的32位单片机,内置了丰富的外设,其中ADC (模数转换器)是用于将模拟信号转换为数字信号的重要组件。

本文将详细介绍hc32f460的adc例程,以及如何实现adc功能。

首先,我们来了解一下hc32f460的adc。

它具有两个独立的12位ADC 模块,可以同时进行两个通道的模拟信号转换。

此外,adc模块还具有自动扫描功能,可以自动检测模拟信号输入并根据需要进行转换。

为了提高转换精度和速度,hc32f460的adc模块还支持多种采样模式,如连续采样、单次采样和待机模式等。

接下来,我们来看一下adc例程的实现。

这里我们以一个简单的例子为例,实现对adc模块的初始化、配置和数据采集功能。

首先,我们需要调用ADC_Init()函数对adc模块进行初始化。

这个函数会配置adc模块的工作模式、采样周期等参数。

接下来,我们需要调用ADC_Config()函数对adc模块进行配置,包括通道选择、采样模式等。

最后,调用ADC_Cmd()函数启动adc模块,并使用ADC_GetConvertedData()函数读取转换后的数字信号。

通过以上步骤,我们就可以实现对hc32f460的adc模块的控制,从而完成模拟信号到数字信号的转换。

需要注意的是,为了确保adc模块正常工作,我们还需要配置相应的时钟和复位信号。

总之,hc32f460的adc例程为我们提供了一个很好的参考,可以帮助我们快速上手并实现adc功能。

ADC参数解释和关键指标

ADC参数解释和关键指标

ADC参数解释和关键指标ADC是模数转换器(Analog-to-Digital Converter)的简称,它将模拟信号转换为数字信号。

在数字化时代,模数转换是非常重要的过程之一,因为数字信号在计算机和电子设备中更易于处理和传输。

本文将解释ADC参数的含义和关键指标。

首先,我们需要了解几个基本概念。

1. 分辨率(Resolution):分辨率指的是ADC可以提供的离散量化信号的级别数。

分辨率越高,ADC可以提供更精确的数字表示。

常用的分辨率单位是位(bit),表示ADC的输出值是二进制的。

例如,一个12位ADC可以提供2^12=4096个不同的量化级别。

2. 采样率(Sampling Rate):采样率是指每秒钟采样的次数,通常用赫兹(Hz)表示。

采样率决定了ADC能够捕捉到的模拟信号的频率范围。

根据奈奎斯特定理,采样率应至少是信号最高频率的两倍。

接下来,我们将讨论一些关键的ADC参数和指标。

1. 量程(Full Scale Range):量程是指ADC能够测量的输入信号的最大范围。

它通常使用伏特(V)单位表示。

例如,一个0-5V的ADC将在0V到5V的范围内进行测量。

2. 精度(Accuracy):精度是指ADC输出值与实际输入值之间的误差。

它通常使用百分比或最大输出误差(Maximum Output Error)表示。

例如,一个12位精度的ADC可能有1%的误差,即最大输出误差为0.01*量程。

3. 信噪比(Signal-to-Noise Ratio,SNR):信噪比是指有效信号与噪声信号之间的比值。

它通常以分贝(dB)表示,dB = 20 * log10(信号/噪声)。

信噪比越高,ADC可以提供更精确的数字表示。

4. 使能时间(Conversion Time):使能时间是指ADC完成一次转换所需的时间。

它通常以微秒(μs)为单位表示。

较短的转换时间意味着ADC可以更快地采集信号。

5. 非线性误差(Non-linearity Error):非线性误差表示ADC输出与输入之间的非线性关系。

ADC总结

ADC总结

✓函数ADC_DeInit 将外设ADCx 的全部寄存器重设为缺省值✓函数ADC_Init 根据ADC_InitStruct 中指定的参数初始化外设ADCx 的寄存器✓为了能够正确地配置每一个ADC 通道,用户在调用ADC_Init()之后,必须调用ADC_ChannelConfig()来配置每个所使用通道的转换次序和采样时间.✓1 ADC状态寄存器(ADC_SR)地址偏移:0x00复位值:0x0000 0000ADC_GetFlagStatus检查制定ADC 标志位置1 与否2 ADC控制寄存器1(ADC_CR1)地址偏移:0x04复位值:0x0000 00003 ADC控制寄存器2(ADC_CR2)地址偏移:0x08复位值:0x0000 00004 ADC采样时间寄存器1(ADC_SMPR1)地址偏移:0x0C复位值:0x0000 00005 ADC采样时间寄存器2(ADC_SMPR2)地址偏移:0x10复位值:0x0000 00006 ADC注入通道数据偏移寄存器x (ADC_JOFRx)(x=1..4)地址偏移:0x14-0x20复位值:0x0000 00007 ADC看门狗高阀值寄存器(ADC_HTR)地址偏移:0x24复位值:0x0000 0000用于确定模拟看门狗的高阀值8 ADC看门狗低阀值寄存器(ADC_LRT)地址偏移:0x28复位值:0x0000 0000规则通道有16个转换数目注入通道有4个转换数目9 ADC规则序列寄存器1(ADC_SQR1)地址偏移:0x2C复位值:0x0000 000010 ADC规则序列寄存器2(ADC_SQR2)地址偏移:0x30复位值:0x0000 000011 ADC规则序列寄存器3(ADC_SQR3)地址偏移:0x34复位值:0x0000 000012 ADC注入序列寄存器(ADC_JSQR)地址偏移:0x38复位值:0x0000 000013 ADC 注入数据寄存器x (ADC_JDRx) (x= 1..4)地址偏移:0x3C – 0x48复位值:0x0000 000014 ADC规则数据寄存器(ADC_DR)地址偏移:0x4C复位值:0x0000 0000。

ADC芯片参数测试技术解析

ADC芯片参数测试技术解析

ADC芯片参数测试技术解析
随着数字技术的不断发展和计算机在信号处理、控制等领域中的广泛应用,过去由模拟电路实现的工作,今天越来越多地由数字电路或计算机来处理。

作为模拟与数字之间的桥梁,模拟数字转换器(ADC)的重要性越来越突出,由此也推动了ADC测试技术的发展。

本文首先介绍了ADC的测试,包括静态参数和动态参数测试,然后结合自动测试系统测试实例,详细介绍了ADC芯片参数的测试过程。

测试原理1. 1静态参数的测试原理
ADC的静态参数是指在低速或者直流流入ADC芯片测得的各种性能参数。

静态参数测试方法有逐点测试法等,其主要测试过程如图1所示。

(1)零点误差的测量
零点误差又称输入失调,是实际模数转换曲线中数字0的代码中点与理想模数转换曲线中数字0的代码中点的最大误差,记为EZ。

其测试方法如下:输入电压逐渐增大,当图1中的数字显示装置从00..00变为00..01,记下此时输入电压Vin1 ,然后逐渐减小输入电压,使数字显示装置由00..01变为00..00,记下输入电压Vin2 :
式中:N 为A /D的位数; VFSR 为A /D输入电压的满量程值,LSB为ADC的最低有效位。

(2)增益误差EG 测量
增益误差是指转换特性曲线的实际斜率与理想斜率之间的偏差。

测试方法如下:把零点误差调整为0,输入电压从满量程开始变化,使数字输出由11..11 变11..10,记为Vin1。

反方向逐渐变化Vin ,使输出端由11..10变为11..11,记下输入电压Vin2 。

则:
(3)线性误差的测量
线性误差指实际转换曲线与理想特性曲线间的最大偏差。

实际测量是测试第j码的代码中。

300K宽带ADCP_设置命令

300K宽带ADCP_设置命令

300K宽带ADCP 设置命令CR1 恢复到出厂设置CB811 将波特率设置为115200, 注意:VMDAS外业采集时一般用CB811,当数据线不超过25米,数据量较大时,推荐用此设置,相应的较低波特率设置还有CB611(38400)/CB411(9600)WB0 宽带时候一定要用WB0,窄带为WB1(不推荐)WM1 也可用WM5(高精度脉冲相干),但是如果流场比较紊乱或不知流场特征的情况下,还是用WM1WP00002 一个数据组中测水的脉冲数个数(当前设置为2个),注意:这里要根据测量和环境来设定,例如锚系或坐底的自容ADCP的WP的个数一般要比走航多WN050 流速剖面的水的层数(当前设置分为50层),注意:要根据测量和环境来设定WS200 每层的厚度(cm),设置范围是0 ~3200 cm(当前设置是2米);注意:要根据测量需要和环境来设定, 300K的设置不要小于1米WF176 盲区设置(cm)(当前设置是1.76米)300K的默认设置是WF176,建议300K的设置一般不小于1米,层厚越大,设置越大WV175 模糊速度(cm)设置,此项设置主要是为了降低测量流速的标准偏差,一般设置应在船速和水流速之间,默认WV175,ADCP安装在浮标上或坐底时,可设置略低BP001 一个数据组中测底的脉冲数是1,可设置为2或其它,不宜设置过高,因为要占用发射和计算时间BX800 底跟踪的最大深度(dm),根据实际设置,注意:单位是分米注意:以上BP命令仅在有底跟踪跟能的ADCP上才能执行WD111100000 输出数据的内容,默认为WD111100000WD abcdefghia = 流速;b = 相关(性);c =回波强度;d = 好数据的百分比;e = 状态;以上1为输出,0为不输出。

f~i 为预留TP000030 每个发射脉冲之间的时间间隔(mmssff),当前是0.3秒,最后两位ff是百分之一秒。

rt-thread adc使用原理

rt-thread adc使用原理

文章标题:深入探讨RT-Thread中ADC的使用原理1. 前言在嵌入式开发中,ADC(模数转换器)是一个非常重要的模块,它能够将模拟信号转换为数字信号,进一步用于各种应用场景中。

在RT-Thread实时操作系统中,ADC的使用原理也是非常关键的一部分。

本文将深入探讨RT-Thread中ADC的使用原理,帮助读者更好地理解和应用这一模块。

2. RT-Thread中ADC的基本原理在RT-Thread中,ADC的使用原理可以分为硬件层面和软件层面两部分。

首先是硬件层面,通常需要配置引脚、时钟等相关硬件资源,以使ADC模块能够正常工作。

其次是软件层面,需要编写相应的驱动程序或应用程序,通过API接口与硬件进行交互,实现对ADC模块的控制和数据采集。

3. RT-Thread中ADC的配置与初始化在RT-Thread中,配置和初始化ADC模块通常需要经过以下几个步骤:1) 硬件引脚配置:在板级文件或驱动程序中配置相应的引脚,以连接到ADC模块。

2) 时钟配置:使能ADC模块所需的时钟,并设置时钟源、分频等参数。

3) ADC初始化:通过调用相应的API接口,初始化ADC模块,并设置采样精度、采样速率等参数。

4. RT-Thread中ADC的数据采集与处理一旦ADC模块配置和初始化完成,接下来就可以进行数据采集和处理。

在RT-Thread中,通常可以通过以下步骤实现数据采集与处理:1) 数据采集:通过调用相应的API接口,触发ADC模块进行数据采集,并获取采集到的模拟信号数值。

2) 数据处理:根据具体的应用场景,对采集到的数字信号进行处理,如数据滤波、校准、转换等操作。

5. RT-Thread中ADC的应用实例为了更好地理解和应用RT-Thread中的ADC模块,我们可以通过一个简单的示例来展示其具体应用:假设我们需要在嵌入式系统中测量温度,可以通过连接温度传感器到MCU的ADC引脚,利用ADC模块采集传感器输出的模拟信号,并通过数字处理算法,将其转换为实际温度数值。

adc外部触发教训

adc外部触发教训

adc外部触发教训ADC1和ADC2双ADC模式TIM8同时触发。

折腾了3天,各种查询,感谢网上的大侠提供的信息。

现总结下我遇到的问题1、配置问题:ADC1配置模式选择:ADC_Mode_RegSimult触发选择:ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGOGPIO_PinRemapConfig (GPIO_Remap_ADC1_ETRGREG, ENABLE); /*重要!!通过复用选择触发*/就这一句话,我找了一天的原因,汗!!重点:要使用管脚重映射来选择外部触发信号,原因:2、配置TIM8TRGO信号要注意:如果选择了更新模式,同时又开启了预加载,那么此时重复计数器会影响这个信号的输出。

3、ADC配置程序:ADC_InitTypeDef ADC_InitStructure;DMA_InitTypeDef DMA_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;/* ADCCLK = PCLK2/4 */RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14MGPIO_PinRemapConfig (GPIO_Remap_ADC1_ETRGREG, ENABLE); /*重要!!通过复用选择触发*//* Enable peripheral clocks ------------------------------------------------*/ /* Enable DMA1 and DMA2 clocks */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2, ENABLE);/* Enable ADC1, ADC2, ADC3 and GPIOC clocks */RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 |RCC_APB2Periph_ADC3, ENABLE);/* DMA1 channel1 configuration ----------------------------------------------*/ DMA_DeInit(DMA1_Channel1);DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&AdcCh12Buf //ADC12公用缓冲DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //从外设读DMA_InitStructure.DMA_BufferSize = AdDataNum; //传送数量DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址加关闭DMA_InitStructure.DMA_MemoryInc =DMA_MemoryInc_Enable; //寄存器地址加开启DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //字32位传输DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; //字32位传输DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //单次传输:DMA_Mode_Normal,DMA_Mode_CircularDMA_InitStructure.DMA_Priority = DMA_Priority_High; //高优先级DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //非存储器到存储器模式DMA_Init(DMA1_Channel1, &DMA_InitStructure);DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE); //中断配置:半满和全满/* Enable DMA1 channel1 */DMA_Cmd(DMA1_Channel1, ENABLE);/* DMA2 channel5 configuration ----------------------------------------------*/ DMA_DeInit(DMA2_Channel5);DMA_InitStructure.DMA_PeripheralBaseAddr = ADC3_DR_Address; //ADC3地址DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&Adc3Buf //数据缓冲DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //从外设读DMA_InitStructure.DMA_BufferSize = AdDataNum; //传输个数DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址增加关闭DMA_InitStructure.DMA_MemoryInc =DMA_MemoryInc_Enable; //寄存器地址增加开启DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//半字传输DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//半字传输DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //普通传输,DMA_Mode_CircularDMA_InitStructure.DMA_Priority = DMA_Priority_High;DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;DMA_Init(DMA2_Channel5, &DMA_InitStructure);/* Enable DMA2 channel5 */DMA_Cmd(DMA2_Channel5, ENABLE);/* ADC1 configuration ------------------------------------------------------*/ADC_InitStructure.ADC_Mode = ADC_Mode_RegSimult; //同步规则ADC_InitStructure.ADC_ScanConvMode = DISABLE; //扫描禁止ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //连续转换,由外部启动ADC_InitStructure.ADC_ExternalTrigConv =ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO; //使用TIM8的TRGO:ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGOADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //右对齐ADC_InitStructure.ADC_NbrOfChannel = 1; //规则转换数量ADC_Init(ADC1, &ADC_InitStructure);/* ADC1 regular channels configuration */ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_1Cycles5);//电压检测通道//ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_28Cycles5);//电压给定通道ADC_DiscModeChannelCountConfig(ADC1, 2);//间断模式通道计数ADC_DiscModeCmd(ADC1, ENABLE); //使能间断模式/* Enable ADC1 DMA */ADC_DMACmd(ADC1, ENABLE);/* ADC2 configuration ------------------------------------------------------*/ADC_InitStructure.ADC_Mode = ADC_Mode_RegSimult; //ADC2和ADC3这些位为保留位ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC2, &ADC_InitStructure);/* ADC2 regular channels configuration */ADC_RegularChannelConfig(ADC2, ADC_Channel_11, 1, ADC_SampleTime_1Cycles5);//电流反馈//ADC_RegularChannelConfig(ADC2, ADC_Channel_12, 1,ADC_SampleTime_28Cycles5); //电流峰值//ADC_RegularChannelConfig(ADC2, ADC_Channel_2, 2, ADC_SampleTime_28Cycles5);//给定电流ADC_DiscModeChannelCountConfig(ADC2, 2);//间断模式通道计数ADC_DiscModeCmd(ADC2, ENABLE); //使能间断模式/* Enable ADC2 EOC interrupt *///ADC_ITConfig(ADC2, ADC_IT_EOC, ENABLE);4、TIM8配置程序://GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure; //NVIC_InitTypeDef NVIC_InitStructure;//====================================时钟初始化===========================//使能定时器4时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);//====================================输出管脚重映射=======================//GPIO_PinRemapConfig(GPIO_FullRemap_TIM8, ENABLE); //Timer1全部重映射//====================================定时器初始化===========================//定时器时间基配置说明//HCLK为72MHz,APB1经过2分频为36MHz//TIM8的时钟倍频后为72MHz(硬件自动倍频,达到最大)//TIM最大计数值为usTim8Timerout50u//定时器1初始化TIM_TimeBaseStructure.TIM_Period = 60-1;TIM_TimeBaseStructure.TIM_Prescaler = 2-1;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数方向为向上计数,配合PWM1,小于时为高电平,实现开始就是高电平TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);//预装载使能TIM_ARRPreloadConfig(TIM8, ENABLE);//====================================TIM_SelectMasterSlaveMode(TIM8,TIM_MasterSlaveMode_Disable); //主模式关闭TIM_SelectOutputTrigger(TIM8, TIM_TRGOSource_OC1); //比较:数据更新作为触发输出TIM_SelectInputTrigger(TIM8, TIM_TS_ITR0); //同步计数器输入为:外部触发ETRFTIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Reset); //选择:TRGI信号的上升沿重新初始化计数器//TIM_ETRConfig(TIM8, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted,0x00); //预分频关闭,高电平或者上升沿,滤波器归零//====================================P WM初始化===============//初始化TIM8 Channel1 PWM模式TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable;TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //互补端的极性TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; //TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; //TIM_OCInitStructure.TIM_Pulse = 5;//------------------------------------TIM_OC1Init(TIM8, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM8OC1TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable); //使能TIM8在CCR2上的预装载寄存器//------------------------------------TIM_OC2Init(TIM8, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM8OC1TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable); //使能TIM8在CCR2上的预装载寄存器//------------------------------------TIM_OC3Init(TIM8, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM8OC1TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable); //使能TIM8在CCR2上的预装载寄存器//------------------------------------TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //电源用,打开TIM_OC4Init(TIM8, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM8OC1TIM_OC4PreloadConfig(TIM8, TIM_OCPreload_Enable); //使能TIM8在CCR2上的预装载寄存器//------------------------------------//====================================中断初始化=========================== //设置NVIC 优先级分组为Group2:0-3抢占式优先级,0-3的响应式优先级//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE; //中断未使能NVIC_Init(&NVIC_InitStructure);//清除溢出中断标志位//TIM_ClearITPendingBit(TIM8, TIM_IT_Update);//定时器4溢出中断关闭//TIM_ITConfig(TIM8,TIM_IT_Update|TIM_IT_CC1|TIM_IT_CC2, ENABLE); //中断配置:更新中断和比较输出中断1 |TIM_IT_Trigger//定时器4禁能;TIM_Cmd(TIM8, ENABLE);TIM_CtrlPWMOutputs(TIM8, ENABLE); //time1和time8关于PWM输出开关控制(必不可少)因为有了相互分享,才有了效率。

adc函数实现的具体过程

adc函数实现的具体过程

adc函数实现的具体过程一、介绍ADC(Analog-to-Digital Converter)即模数转换器,是将模拟信号转换为数字信号的重要组成部分。

在嵌入式系统中,ADC常用于采集传感器数据、控制电机等场景中。

本文将详细介绍如何使用STM32F4系列MCU的内置ADC模块进行模拟信号采集,并给出完整的代码实现。

二、硬件准备1. STM32F4开发板一块;2. 电位器一个;3. 杜邦线若干。

三、软件准备1. Keil5开发环境;2. STM32F4库函数包。

四、初始化ADC首先需要在Keil5中新建一个工程,并将STM32F4库函数包添加至工程中。

接着,在main函数中进行如下初始化:```cvoid ADC_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef ADC_InitStructure;//使能GPIOA时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能ADC1时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//配置PA0为模拟输入引脚GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; //模拟输入模式GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不使用上下拉电阻GPIO_Init(GPIOA, &GPIO_InitStructure);//ADC参数配置ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; //12位精度ADC_InitStructure.ADC_ScanConvMode = DISABLE; //非扫描模式ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //单次转换模式ADC_InitStructure.ADC_ExternalTrigConvEdge =ADC_ExternalTrigConvEdge_None; //不使用外部触发转换ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //数据右对齐ADC_InitStructure.ADC_NbrOfConversion = 1; //1个转换通道//ADC初始化ADC_Init(ADC1, &ADC_InitStructure);//使能ADC1 DMA模式(可选)// ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);// ADC_DMACmd(ADC1, ENABLE);//使能ADC1ADC_Cmd(ADC1, ENABLE);}```以上代码中,首先需要使能GPIOA和ADC1的时钟。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7
Agilent Restricted September 18, 2014
扩展:ADC参数介绍_Full scale error
Full scale error is the deviation of the last transition (full scale transition) of the actual ADC from the last transition of the perfect ADC, measured in LSB or volts. Full scale error is due to both gain and offset errors.
11
Agilent Restricted September 18, 2014
ADC参数介绍_INL、DNL
非线性微分和积分是指代码转换与理想状态之间的差异。非 线性微分(DNL)主要是代码步距与理论步距之差,而非线性积分 (INL)则关注所有代码非线性误差的累计效应。 对一个ADC来说,一段范围的输入电压产生一个给定输出代 码,非线性微分误差为正时输入电压范围比理想的大,非线性微 分误差为负时输入电压范围比理想的要小。从整个输出代码来看, 每个输入电压代码步距差异累积起来以后和理想值相比会产生一 个总差异,这个差异就是非线性积分误差。
5
Agilent Restricted September 18, 2014
ADC参数介绍_增益误差
定义:ADC的增益误差(gain error)是指当 偏置误差补偿之后,输出为全1时对应的实际 输入电压与理想输入电压之差。 The gain error shown in right Figure is defined as the difference between the nominal and actual gain points on the transfer function after the offset error has been corrected to zero. 计算方法:1、实际的输出代码过渡为满幅时 对应的实际输入电压值加上1/2 LSB值,再加 上偏置(offset error)。 2、The gain error is calculated as LSBs from a vertical straight line drawn between the midpoint of the last step of the actual transfer curve and the ideal straight line.
17
Agilent Restricted September 18, 2014
ADC参数仿真方法介绍_正弦直方图(码密度法)
码密度直方图测试是基于数理统 计理论,ADC对周期模拟输入信号进 行随机采样,不同数字码输出的出现 次数称为码密度.以ADC的输出数字 码及其出现次数为坐标画图,所得图 形称为直方图.在直方图中,每个数 字码称为码箱(Code Bin),每个数字码 出现的次数称为码箱宽度.根据码密 度数据,可以估计出ADC的静态特性 参数。
19
Agilent Restricted September 18, 2014
码密度法测算DNL、INL的基本原理
对于每个码箱,正弦波概率密度函数的积分为: P(i)=(asin(V/A*(2*i/2^m-1))-asin(V/A*(2*(i-1)/2^m-1)))/pi; 式中,n表示二进制数字码;V表示ADC的满量程范围;N表示 ADC的位数。 实际ADC传输函数中任何一点的DNL为 DNLn=PA(n)/PI(n) 式中,PA(n)表示实际ADC第n个数字码出现的概率;PI(n)表示 理想ADC第竹个数字码出现的概率。 失码可看作是DNL的一种特殊情况(即DNL=-1LSB),此时码箱 宽度是0,也就是说没有事件发生。
ADC parameters test
1
Agilent Restricted September 18, 2014
ADC parameters test
1、ADC参 数介绍
2、ADC参 数仿真方法 介绍
3、ADC参 数仿真实例 验证
2 Agilent Restricted September 18, 2014
9
Agilent Restricted September 18, 2014
ADC参数介绍_DNL
若DNL误差指标≤ 1LSB,就意味着传输函数具有保证的单调 性,没有丢码。当一个ADC的数字量输出随着模拟输入信号的增 加而增加时(或保持不变),就称其具有单调性,相应传输函数曲 线的斜率没有变化。 较高数值的DNL增加了量化结果中的噪声和寄生成分,限制 了ADC的性能,表现为有限的信号-噪声比指标(SNR)和无杂散动 态范围指标(SFDR)。 DNL指标是在消除了静态增益误差的影响后得到的。
ADC参数介绍
ADC参数
静态参数
动态参数
满幅范围
偏置offset error
增益误差 gain error
INL 、DNL
LSB
SNR
SNDR信号与 噪声谐波比
THD总谐波 失真
IM互调失真
动态范围、 无杂散动态 范围
我们需要重点关注的参数是ADC的偏置、增益误差、以及INL、DNL,下 面将对他们分别做具体介绍。
4
Agilent Restricted September 18, 2014
ADC参数介绍_偏置
It should be noted that offset errors limit the available range for the ADC. A large positive offset error causes the output value to saturate at maximum before the input voltage reaches maximum. A large negative offset error gives output value 0 for the smallest input voltages.
15
Agilent参数仿真方法介绍_线性直方图
ideal
16
Agilent Restricted September 18, 2014
ADC参数仿真方法介绍_正弦直方图(码密度法)
正弦直方图测试DNL与线性直方图原理基本相同,区别在于 线性直方图中,所有代码对应的理想点击数是可以直接计算出来 一个固定的值。而正弦直方图中,由于理想情况下落在每个代码 对应的点击数是不同的,所以我们需要根据数理统计理论去推算 出理想情况下的码箱宽度(即每个代码出现的次数,也就是前面 所说的理想点击数),进而计算DNL。下面详细介绍码密度法测 量DNL.
14
Agilent Restricted September 18, 2014
ADC参数仿真方法介绍_线性直方图
线性直方图原理:
线性斜升技术的应用,首先使输入电压线性增加,同时对输 出以固定间隔连续采样,电压逐步增加时连续几次采样都会得到 同样输出代码,这些采样次数称为“点击数”。
从统计上讲,每个代码的点击数量直接与该代码的相应输入 电压范围成正比,点击数越多表明该代码的输入电压范围越大, 非线性微分误差也就越大;同样,代码点击数越少表明该代码输 入电压范围越小,非线性微分误差也就越小。用数学方法计算, 如果某个代码点击数为9,而“理想”情况下是8,则该器件的非线 性微分误差就是(9-8)/8或0.125。非线性积分是所有代码非线性微 分的累计值。从数学观点来看,非线性积分误差等于在代码X-1 的非线性微分误差加上代码X和代码X-1的非线性微分误差平均值。
正弦波激励的码密度直方图如右图 所示,理想情况符合浴盆(Bathtub) 分布曲线
18
Agilent Restricted September 18, 2014
码密度法测算DNL、INL的基本原理
正弦波在满量程电压范围内随机采样的概率密度函数可用公 式表示: p(v)=1/(pi*sqrt(A2-v2) 式中,A表示正弦波幅度;v表示随机的输入变量,这里指电 压.对于实际的ADC,某给定数字码存在的概率数小于所期望的 数值,表明在该输入频率下,实际码箱(即所存在的概率)的宽度 小于理想码箱的宽度;同样,当发生的事件大于期望的数值时, 表明实际ADC的码箱宽度大于理想码箱的宽度。
8
Agilent Restricted September 18, 2014
ADC参数介绍_DNL
DNL(Differential Nonlinearity,微分非 线性)误差定义为实际量化台阶与对应 于1LSB的理想值之间的差异。指任一 代码偏离理想的1 LSB步进的程度。 计算方法:两个转换点之间的模拟输 入量之差减去一个LSB值。 测量方法:先分析各直方图,然后对 实际发生概率与理想概率进行比较。 结果即是各代码DNL的直接测量值。
12
Agilent Restricted September 18, 2014
ADC parameters test
1、ADC参 数介绍
2、ADC参 数仿真方法 介绍
3、ADC参 数仿真实例 验证
13 Agilent Restricted September 18, 2014
ADC参数仿真方法介绍
6
Agilent Restricted September 18, 2014
ADC参数介绍_增益误差
Gain errors cause the actual transfer function slope to deviate from the ideal slope. This gain error can be measured and compensated for by scaling the output values.
相关文档
最新文档