ADC

ADC代表模数转换器(Analog-to-Digital Converter),是一种电子设备或电路,用于将模拟信号转换为数字信号。模拟信号是连续变化的信号,如电压、电流或温度,而数字信号是离散的信号,由一系列数字值表示。ADC的主要作用是将模拟信号转化为数字形式,以便数字电子设备能够处理、存储和分析这些信号。

HK32F103x/C/D/E是深圳市航顺芯片技术研发有限公司推出的中大容量的103系列芯片。作为32位MCU常用ADC模块,在各类产品中有诸多应用,比如节省I/O引脚的按键检测应用,以及各类传感器,比如光传感器、湿度传感器、温度传感器等,把各种各样的模拟信号转换为电压、电流信号,ADC模块通过对该电压、电流信号的精确测量,实现MCU对外部世界的精确感知,从而实现对应用的精准控制。

HK32F103x/C/D/E的ADC的功能描述:

12 位 ADC 是一种逐次逼近型模拟数字转换器。它有多达 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。

模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。

ADC 的输入时钟不得超过 14MHz,它是由 PCLK2 经分频产生。

HK32F103x/C/D/E的ADC的主要特征:

● 12 位分辨率

● 转换结束、注入转换结束和发生模拟看门狗事件时产生中断

● 单次和连续转换模式

● 从通道 0 到通道 n 的自动扫描模式

● 自校准

● 带内嵌数据一致性的数据对齐

● 采样间隔可以按通道分别编程

● 规则转换和注入转换均有外部触发选项

● 间断模式

● 双重模式(带 2 个或以上 ADC 的器件)

● ADC 转换时间:

─ HK32F103xx 增强型产品:时钟为 56MHz 时为 1μs(时钟为 72MHz 为 1.17μs)

● ADC 供电要求:2V 到 5.5V

● ADC 输入范围:VREF- ≤ VIN ≤ VREF+

● 规则通道转换期间有 DMA 请求产生。

注意:如果有 VREF-引脚(取决于封装),必须和 VSSA 相连接

外部触发转换

转换可以由外部事件触发(例如定时器捕获,EXTI 线)。如果设置了 EXTTRIG 控制位,则外部事件就能够触发转换。EXTSEL[2:0]和 JEXTSEL2:0]控制位允许应用程序选择 8 个可能的事件中的某一个,可以触发规则和注入组的采样。

注意:当外部触发信号被选为 ADC 规则或注入转换时,只有它的上升沿可以启动转换。

“表
表 43 ADC1 和 ADC2 用于规则通道的外部触发

“表
表 44 ADC1 和 ADC2 用于注入通道的外部触发

“表
表 45 ADC3 用于规则通道的外部触发

“表
表 46 ADC3 用于注入通道的外部触发图片

软件触发事件可以通过对寄存器 ADC_CR2 的 SWSTART 或 JSWSTART 位置“1”产生。规则组的转换可以被注入触发打断。

以下是HK32F103系列的功能框图:

“HK32MCU应用笔记(十三)|

HK32F103x/C/D/E在ADC使用过程中需要注意的地方:

问题描述:

[1]当 ADC 在常规通道采样时,使用并配置一个通道进行采样,软件启动采样,然后利用判断EOC的方式来读取采样数据,读到的数据是上一次采样的结果。

[2]当 ADC 在常规通道采样时,使用并配置多个通道采样,软件启动采样,然后利用判断EOC的方式去读取采样数据,读到的数据是上一个通道采样的结果。

根本原因:

在常规通道采样时,由于 EOC 标志置位后,数据寄存器 ADC_DR 没有被及时正确更新。ADC_DR寄存器要么是上一个采样的数据(对应上述[1]),要么是上一个通道的采样数据(对应上述[2])。

解决方案:

在读取 ADC_DR 数据寄存器之前,增加 3 个 NOP 指令。示例代码如下:

“HK32MCU应用笔记(十三)|

参考应用代码如下:

“HK32MCU应用笔记(十三)|

相关阅读:
HK32MCU应用笔记(一)| HK32F030X系列在PH测量笔的应用
HK32MCU应用笔记(二)| 国外品牌采用航顺HK32F030R8T6代替出现串口不兼容解决方法
HK32MCU应用笔记(三)| 航顺芯片在5G光纤测试仪的应用
HK32MCU应用笔记(四)| 关于老版本HK32F103串口USART偶尔出现数据错误
HK32MCU应用笔记(五)| 关于应用HK32F030延时效率问题
HK32MCU应用笔记(六)| HK32MCU芯片调试心得
HK32MCU应用笔记(七)| 航顺HK32MCU闩锁效应问题研究及预防措施
HK32MCU应用笔记(八)| 航顺HK32F03X内部8M时钟倍频成72M解决方案
HK32MCU应用笔记(九)| HK32F103x8xB系列CAN的应用解决方案
HK32MCU应用笔记(十)| HK32F103xC/D/E的ADC常规和注入通道同时触发时的处理机制
HK32MCU应用笔记(十一)| HK32F103xC/D/E的flash读保护应用及注意事项
HK32MCU应用笔记(十二)| HK32F103xC/D/E的GPIO的应用及注意事项

来源: 航顺芯片(作者:Shaodong)
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 246

今天推荐的视频将介绍WFI32器件系列,该系列配备了功能丰富而强大的12位2 Msps双核SAR ADC,最多具有20个模拟输入通道;片内支持2.4 GHz 802.11射频,展现了业界领先的卓越性能。

来源:Microchip
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 16

近日,专注于数模混合信号及模拟芯片创新研发的中微半导体(深圳)股份有限公司(以下简称中微半导)宣布,推出两款24bit Sigma-Delta高精度ADC测量芯片系列型号,分别为大容量8051内核CMS8H5109及ASIC芯片CMS24AD2001。两款芯片均具有低噪声、高速率、高精度等特点,可实现微小信号放大及模数转换,赋能高精度测量产品应用创新。

“中微半导推出24位ADC系列CMS8H5109、CMS24AD2001

CMS8H5109和CMS24AD2001丰富了中微半导现有的高精度ADC测量芯片产品阵营,能提供无与伦比的速率、精度和灵敏度表现,功能性能全面优化,可面向消费电子、家用医疗、工业测量、仪器仪表等领域,提供从产品到完整解决方案的一站式服务。

产品特性

> PGA放大倍率可选:1、2、4、8、16、32、64、128、256
> 当PGA=128、ODR=10Hz、LDO=3V时,有效分辨率为20.6位
> PGA=128、ODR=10Hz、LDO=3V时,等效输入噪声为30nVrms
> 输出速率可选:2.5Hz~2.56KHz

“中微半导推出24位ADC系列CMS8H5109、CMS24AD2001

CMS8H5109

全新CMS8H5109系列使用1T 8051内核为高速数据处理引擎,支持64KB Flash,4K Bytes XRAM,提供独立4K Bytes Data Flash及独立16KB BOOT空间,抗干扰性能强。全系列宽工作电压2.6V~4.4V,符合工业等级-40℃ ~ 85℃工作温度与高抗噪声的性能要求,大容量、高性能、可靠性高并内置24bit ADC的优势,使其应用范围更为广泛。

CMS8H5109系列提供用于模拟或数字外设的完善接口,多达12个GPIOs,所有数字功能均可自由映射到任意GPIO,且所有GPIO都支持AD通道、上升沿、下降沿、双边沿中断,支持高阻输入、推挽输出、开漏输出等模式,具备极高的扩展性。应用在台秤方案精度优异且可靠性高,可实现30Kg量程范围精度±1g。

CMS24AD2001

CMS24AD2001基于中微半导ASIC芯片CMS1237迭代升级,受益于内置高精度24位ADC的优势特性,能轻松实现数模转换的设计。且转换精度高,等效输入噪声低,性能表现更为出色,是业内高性价比24位高精度ADC首选。

CMS8H5109及CMS24AD2001系列引脚及产品功能兼容市场主流产品型号,CMS8H5109提供SOP16、SOP20封装形式,CMS24AD2001提供 SOP8、SOP14等封装形式选择,可灵活满足开发人员选型需求。

“中微半导推出24位ADC系列CMS8H5109、CMS24AD2001

中微半导为全新CMS8H5109、CMS24AD2001系列配备了完善的开发套件及开发工具,简单易用为开发提供了便利性及灵活性。目前,CMS8H5109及CMS24AD2001系列量产样片已准备就绪,即将于2022年Q2季度初批量供货。

关于中微

中微半导体(深圳)股份有限公司成立于2001年,是集成电路(IC)设计企业,专注于数模混合信号芯片、模拟芯片的研发、设计与销售。主要产品包括家电控制芯片、消费电子芯片、电机与电池芯片、传感器信号处理芯片及功率器件等,广泛应用于家用电器、消费电子、电机电池、医疗健康、工业控制、汽车电子和物联网等领域。

来源: 中微半导
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 348

ADC的种类很多,对应的精度和误差也有很多,本文就来讲讲关于ADC精度和误差的内容。

ADC介绍

ADC:Analog Digital Converter,指模数转换,也就是(电压)模拟量转换成数字量。

大多数MCU中都集成了ADC模块,同时ADC也是在产品开发中使用率较高的一个模块,相信大部分人都使用过ADC这个功能。

在STM32中内置最多四个高级12位ADC控制器(ADC1、2、3、4)。当然,ADC控制器数量多少取决于STM32型号,还有部分STM32具有16位采样的ADC(如STM32F373)。他们提供自校准功能,用于提高环境条件变化时的ADC精度。

我们平时在使用ADC中要求不是很高,可能就没有在于ADC转换的值是否精确。但是,有些特定场合就需要更精确的转换值,那么我们就需要对ADC做更多了解。下面章节带领大家了解相关内容。

ADC误差

在涉及模数转换的应用中, ADC精度会影响整体的系统质量和效率。为了提高此精度,有必要了解与ADC相关的误差。

ADC误差主要包含:ADC自身和环境导致的误差。

1、ADC自身导致的误差

说误差之前,先说下ADC精度,为便于参考,将精度误差表达为1 LSB的倍数:

1 LSB = VREF+ / 2^12

A、偏移误差

偏移误差是第一次实际转换和第一次理想转换之间的偏离。第一次转换发生在数字ADC输出从0变为1时。理想情况下,当模拟输入介于0.5 LSB和1.5 LSB之间时,数字输出应为1。

仍然是理想情况下,第一次转换发生在0.5 LSB处。用EO表示偏移误差。可通过应用固件轻松校准偏移误差。

正偏移误差的表示方法:

“单片机中ADC采集都存在哪些误差?"

负偏移误差的表示方法:

“单片机中ADC采集都存在哪些误差?"

B、增益误差

增益误差是最后一次实际转换和最后一次理想转换之间的偏离。增益误差用EG表示。

正增益误差的表示方法:

“单片机中ADC采集都存在哪些误差?"

负增益误差的表示方法:

“单片机中ADC采集都存在哪些误差?"

C、微分线性误差

微分线性误差( DLE)为实际步进和理想步进之间的最大偏离。这里的“理想情况”不是指理想传输曲线,而是指ADC分辨率。

理想情况下, 1 LSB的模拟输入电压变化量应导致数字代码变化。如果需要大于1 LSB的模拟输入电压才能导致数字代码变化,将观察到微分线性误差。因此, DLE对应于从一个数字代码变为下一个数字代码所需的最大额外电压。

“单片机中ADC采集都存在哪些误差?"

D、积分线性误差

积分线性误差为任何实际转换和端点相关线间的最大偏离,用EL表示ILE。

端点相关线可以定义为A/D传输曲线上连接第一次实际转换与最后一次实际转换的线。EL是指与每一次转换的这条线的偏离。因此,端点相关线对应于实际传输曲线并且与理想传输曲线不相关。

“单片机中ADC采集都存在哪些误差?"

E、总未调整误差

总未调整误差( TUE)为实际和理想传输曲线间的最大偏离。此参数指定可能发生的会导致理想数字输出与实际数字输出之间最大偏离的总误差。TUE是记录到的任何输入电压的理想预期值与从ADC获得的实际值之间的最大偏离。

“单片机中ADC采集都存在哪些误差?"

2、ADC环境导致的误差

A、参考电压噪声

由于ADC输出为模拟信号电压与参考电压之比,因此模拟参考上的任何噪声都会导致转换后数字值的变化。在某些封装中, VDDA模拟电源被用作参考电压( VREF+),因此VDDA电源的质量会影响ADC误差。

B、参考电压/电源调节

电源调节对于ADC精度十分重要,因为转换结果是模拟输入电压与VREF+值之比。
当连接到VDDA或VREF+时,如果这些输入上的负载及其输出阻抗导致电源输出下降,将在转换结果中产生误差。

C、外部参考电压参数

当使用外部参考电压源( VREF+引脚上)时,该外部参考源有一些重要参数。必须考虑三个参考电压规格:温度漂移、电压噪声和长期稳定性。

D、模拟输入信号噪声

在采样时间内,小而高频率的信号变化可导致较大转换误差。此噪声由电气设备(例如电机、发动机点火、电源线)生成。它增加了不需要的信号,因此会影响源信号(例如传感器)。这样一来,导致ADC转换结果不准确。

E、最大输入信号幅度的ADC动态范围匹配不佳

为获得最高ADC转换精度, ADC动态范围必须与待转换信号的最大幅度相匹配。

我们假设待转换信号在0 V与2.5 V之间变化,并且VREF+等于3.3 V。如下图,有部分未使用的ADC转换范围,也会使转换后信号精度下降。

“单片机中ADC采集都存在哪些误差?"

如何提高ADC采集数据准确性

这个问题之前写过相关的内容,只是没有单独提出来说,这里汇总一下。

1、减少ADC相关误差的影响

上面描述了“ADC自身导致的误差”,使用STM32 ADC自校准功能或通过微控制器固件可以轻松补偿偏移误差和增益误差。

之前在分享的代码中有提到,比如通过软件校正:

ADC_StartCalibration(ADC1);

2、使外部环境误差最小化

A、参考电压/电源噪声最小化

也就是在VREF和VDDA引脚连接外部去耦电容。

“单片机中ADC采集都存在哪些误差?"

B、模拟输入信号噪声消除

通过添加外部RC滤波器以消除高频。

C、将ADC动态范围与最大信号幅度进行匹配

也就是将参考电压范围匹配采样电压(当然,需要有参考电压引脚的芯片才行)。

“单片机中ADC采集都存在哪些误差?"

同时,也可以使用放大器针对ADC范围调整输入信号范围:

“单片机中ADC采集都存在哪些误差?"

D、温度影响补偿

第一种方法是完整描述偏移和增益漂移特性,并在存储器中提供查询表,以便根据温度变化修正测量值。此校准方法需要额外的成本和时间。

第二种方法包括使用内部温度传感器和ADC看门狗,以在温度变化达到给定值时重新校准ADC。

E、优化PCB布局

  • 将模拟和数字布局分开
  • 隔离模拟和数字电路电源
  • 对供电和接地使用单独的PCB层

3、提高精度的软件方法

A、平均采样

·平均会降低速度但可以提高精度

B、数字滤波(抑制DC值中的50/60 Hz噪声)

·设置适当的采样频率(这种情况下,从计时器触发十分有用)。
·对采样数据执行软件后处理(例如,对50 Hz噪声及其谐波抑制进行组合滤波)。

C、AC测量的快速傅里叶变换( FFT)

·此方法可以显示被测信号中的谐波部分。
·由于使用了更强的计算能力,因此速度较慢。

D、ADC校准:偏移、增益、位权重校准

·ADC校准可减少内部ADC误差。但是,必须知道内部ADC结构。

E、使CPU生成的内部噪声最小化

应用设计必须确保

·ADC转换期间来自微控制器的干扰尽可能小。
·使采样和转换期间的数字信号变化量最小化(数字静默)。

来源:嵌入式专栏(作者 | strongerHuang)
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 627

对于隔离式高性能ADC,一方面要注意隔离时钟,另一方面要注意隔离电源。SAR ADC传统上被用于较低采样速率和较低分辨率的应用。如今已有1 MSPS采样速率的快速、高精度、20位SAR ADC,例如 LTC2378-20 ,以及具有32位分辨率的过采样SAR ADC,例如 LTC2500-32 。将ADC用于高性能设计时,整个信号链都需要非常低的噪声。当信号链需要额外的隔离时,性能会受到影响。

关于隔离,有三方面需要考虑:

  • 确保热端有电的隔离电源

  • 确保数据路径得到隔离的隔离数据

  • ADC(采样时钟或转换信号)的时钟隔离,以防热端不产生时钟

隔离电源(反激拓扑与推挽拓扑的比较)

反激式转换器被广泛用于隔离电源。图1显示了反激式转换器简单可行的特点。该拓扑的优势是只需要很少的外部元件。反激式转换器只有一个集成开关。该开关可能是影响信号链性能的主噪声源。对于高性能模拟设计,反激式转换器会带来很多断点,引起电磁辐射(称为EMI),这可能会限制电路的性能。

“图1.典型的反激式转换器拓扑。"
图1.典型的反激式转换器拓扑。

图2显示了变压器L1和L2中的电流。在初级(L1)和次级(L2)绕组中,电流在短时间内从高值跳变为零。电流尖峰可以在图3的I(L1)/I(L2)迹线中看到。电流和能量在初级电感中累积,当开关断开时,它们被传输到次级电感,产生瞬变。需要降低开关噪声效应导致的瞬变,因此,设计中必须插入缓冲器和滤波器。除了额外的滤波器之外,反激拓扑的另一个缺点是磁性材料的利用率低,而所需的电感较高,因此变压器较大。此外,反激式转换器的热环路也很大,不易管理。

反激式转换器的另一个挑战涉及开关频率变化。图3显示了负载变化引起的频率变化。如图3a所示,t1 < t2。这意味着fSWITCH随着负载电流从较高负载电流I1减小到较低负载电流I2而变化。频率的变化会在不可预测的时间产生内部噪声。此外,频率也会因器件不同而异,这使得更难以对其进行滤波,因为每个PCB都需要调整滤波。对于一款5 V输入范围的20位SAR ADC,1 LSB相当于大约5μV。EMI噪声引入的误差应低于5μV,这意味着为精密系统隔离电源时,不应选择反激拓扑。

还有其他电磁辐射骚扰较低的隔离电源架构。就辐射而言,推挽式转换器比反激式转换器更合适。像 LT3999 这样的推挽式稳压器提供了与ADC时钟同步的可能性,有助于实现高性能。图4显示了隔离电源电路中的LT3999与ADC采样时钟同步的情况。请记住,初级到次级电容为开关噪声提供了一个避免共模噪声效应的返回路径。该电容可以在PCB设计中利用重叠的顶层平面和第二层平面实现,以及利用实际电容。

“图2.LT8301在变压器绕组中切换电流。"
图2.LT8301在变压器绕组中切换电流。

“图3.(a)
图3.(a) LT8301频率变化,(b)从2.13 ms到2.23 ms的频率变化的特写。

“图4.具有超低噪声后置稳压器的LT3999。"
图4.具有超低噪声后置稳压器的LT3999。

“图5.LT3999电流波形。"
图5.LT3999电流波形。

“图6.LT3999及其与同步引脚的切换关系。"
图6.LT3999及其与同步引脚的切换关系。

图5显示了变压器处的电流波形(初级侧和次级侧电流),它更好地利用了变压器,提供更好的EMI行为。

图6显示了与外部时钟信号的同步。采集阶段的末端与同步引脚的正边沿对齐。因此,将有一个大约4μs的较长安静时间。这使得转换器可以在该时间范围内对输入信号进行采样,并将隔离电源的瞬变效应降至最小。LTC2378-20的采集时间为312 ns,非常适合<1μs的安静窗口。

数据隔离

数据隔离可以使用数字隔离器实现,例如ADuMx系列数字隔离器。这些数字隔离器可用于SPI、I2C、CAN等许多标准接口,例如 ADuM140 可用于SPI隔离。为了实现数据隔离,只需将SPI信号SPI时钟、SDO、SCK和Busy连接到数据隔离器。在数据隔离中,电能通过感性隔离栅从初级侧传输到次级侧。需要添加电流返回路径,这由电容来完成。该电容可以在PCB中利用重叠平面实现。

时钟隔离

时钟隔离是另一项重要任务。如果使用1 MHz采样速率的20位高性能ADC,例如LTC2378-20,可以实现104 dB的信噪比(SNR)。为了实现高性能,需要无抖动时钟。为什么不应使用像ADuM14x系列这样的标准隔离器?标准隔离器会增加时钟抖动,从而限制ADC的性能。

图7显示了不同频率、不同类型时钟抖动下SNR的理论极限。像 LTC2378 这样的高性能ADC的孔径时钟抖动为4 ps,在200 kHz输入下理论限值为106 dB。

“图7.时钟抖动与ADC性能的关系。"
图7.时钟抖动与ADC性能的关系。

图11显示了使用PLL净化时钟的更详细框图。您可以将ADF4360-9用作时钟净化器,并在输出端增加一个2分频器。AD7760 额定支持1.1 MHz。

“图8.使用标准隔离器实现时钟隔离。"
图8.使用标准隔离器实现时钟隔离。

图8显示的标准时钟隔离器概念包括:

  • 像 ADuM250N 这样良好的标准数字隔离器的抖动为70 ps rms。对于100 dB SNR目标,由于时钟抖动,信号采样速率限制为20 kHz。

  • 像 LTM2893 这样优化的时钟隔离器提供30 ps rms的低抖动。对于100 dB SNR目标,现在的信号采样速率为50 kHz,在全部SNR性能下可提供更多带宽。

“图9.使用LVDS时钟隔离器实现时钟隔离。"
图9.使用LVDS时钟隔离器实现时钟隔。

图9:对于更高的输入频率,应使用LVDS隔离器。ADN4654 提供2.6 ps抖动,接近ADC的最佳性能。在100 kHz输入时,时钟抖动导致的SNR限值将是110 dB。

“图10.使用额外PLL净化时钟抖动的时钟隔离。"
图10.使用额外PLL净化时钟抖动的时钟隔离。

图10:使用PLL净化时钟。ADF4360-9 可以帮助减少时钟抖动。

“图11.ADF4360-9用作时钟净化器。"
图11.ADF4360-9用作时钟净化器。

因此,不能直接支持LTC2378等1 MSPS SAR ADC。在这种情况下,低抖动触发器会有帮助。它将时钟2分频。

“图12.触发器用于降低时钟以用于LTC2378。"
图12.触发器用于降低时钟以用于LTC2378。

“图13.隔离(热)侧的时钟产生。"
图13.隔离(热)侧的时钟产生。

图13:本地产生时钟是获得具有所需抖动性能的时钟的另一个方案。本地时钟生成会使时钟架构更加复杂,因为它将异步时钟域引入系统。例如,若要使用两个单独的隔离ADC,则时钟的绝对频率将会不同,必须增加采样速率转换以重新匹配时钟。有关采样速率转换的一些细节,请参阅工程师对话笔记EE-268。

高性能Sigma-Delta ADC的时钟

时钟的类似问题也适用于高性能Sigma-Delta ADC,如AD7760。这里,重要的时钟信号是无抖动过采样时钟,例如40 MHz。这种情况下不需要额外的分频器。

结论

隔离式高性能ADC需要仔细设计隔离方案并选择隔离技术,以实现高于100 dB的高性能SNR。应特别重视隔离时钟,因为时钟抖动的影响可能会破坏性能。其次应注意隔离电源。简单的隔离拓扑(如反激)会引入高EMI瞬变。

为了获得更好的性能,应使用推挽式转换器。还需要关注数据隔离(尽管不太重要),可用标准器件能提供良好性能,对整体系统性能的影响较小。介绍这三个隔离主题有助于设计人员提出高性能隔离系统解决方案。

来源:亚德诺半导体
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 40

ADC简介

STM32F103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器中。ADC的输入时钟不得超过14MHz,其时钟频率由PCLK2分频产生。

ADC功能框图讲解

学习STM32开发板上的外设时首先要了解其外设的功能框图,如下:

“详解STM32中的ADC"

功能框图可以大体分为7部分,下面一一讲解:

电压输入范围

ADC所能测量的电压范围就是VREF- ≤ VIN ≤ VREF+,把 VSSA 和 VREF-接地,把 VREF+和 VDDA 接 3V3,得到ADC 的输入电压范围为:0~3.3V。

输入通道

ADC的信号输入就是通过通道来实现的,信号通过通道输入到单片机中,单片机经过转换后,将模拟信号输出为数字信号。STM32中的ADC有着18个通道,其中外部的16个通道已经在框图中标出,如下:

“详解STM32中的ADC"

这16个通道对应着不同的IO口,此外ADC1/2/3 还有内部通道:ADC1 的通道 16 连接到了芯片内部的温度传感器, Vrefint 连接到了通道 17。ADC2 的模拟通道 16 和 17 连接到了内部的 VSS。

ADC的全部通道如下图所示:

“详解STM32中的ADC"

外部的16个通道在转换时又分为规则通道和注入通道,其中规则通道最多有16路,注入通道最多有4路(注入通道貌似使用不多),下面简单介绍一下两种通道:

规则通道顾名思义就是,最平常的通道、也是最常用的通道,平时的ADC转换都是用规则通道实现的。

注入通道是相对于规则通道的,注入通道可以在规则通道转换时,强行插入转换,相当于一个“中断通道”吧。当有注入通道需要转换时,规则通道的转换会停止,优先执行注入通道的转换,当注入通道的转换执行完毕后,再回到之前规则通道进行转换。

转换顺序

知道了ADC的转换通道后,如果ADC只使用一个通道来转换,那就很简单,但如果是使用多个通道进行转换就涉及到一个先后顺序了,毕竟规则转换通道只有一个数据寄存器。多个通道的使用顺序分为俩种情况:规则通道的转换顺序和注入通道的转换顺序。

规则通道中的转换顺序由三个寄存器控制:SQR1、SQR2、SQR3,它们都是32位寄存器。SQR寄存器控制着转换通道的数目和转换顺序,只要在对应的寄存器位SQx中写入相应的通道,这个通道就是第x个转换。具体的对应关系如下:

“详解STM32中的ADC"

通过SQR1寄存器就能了解其转换顺序在寄存器上的实现了:

“详解STM32中的ADC"

和规则通道转换顺序的控制一样,注入通道的转换也是通过注入寄存器来控制,只不过只有一个JSQR寄存器来控制,控制关系如下:

“详解STM32中的ADC"

需要注意的是,只有当JL=4的时候,注入通道的转换顺序才会按照JSQ1、JSQ2、JSQ3、JSQ4的顺序执行。当JL<4时,注入通道的转换顺序恰恰相反,也就是执行顺序为:JSQ4、JSQ3、JSQ2、JSQ1。

配置转换顺序的函数如下代码所示:

/**
  * @brief  Configures for the selected ADC regular channel its corresponding
  *         rank in the sequencer and its sample time.
  * @param  ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
  * @param  ADC_Channel: the ADC channel to configure. 
  *   This parameter can be one of the following values:
  *     @arg ADC_Channel_0: ADC Channel0 selected
  *     @arg ADC_Channel_1: ADC Channel1 selected
  *     @arg ADC_Channel_2: ADC Channel2 selected
  *     @arg ADC_Channel_3: ADC Channel3 selected
  *     @arg ADC_Channel_4: ADC Channel4 selected
  *     @arg ADC_Channel_5: ADC Channel5 selected
  *     @arg ADC_Channel_6: ADC Channel6 selected
  *     @arg ADC_Channel_7: ADC Channel7 selected
  *     @arg ADC_Channel_8: ADC Channel8 selected
  *     @arg ADC_Channel_9: ADC Channel9 selected
  *     @arg ADC_Channel_10: ADC Channel10 selected
  *     @arg ADC_Channel_11: ADC Channel11 selected
  *     @arg ADC_Channel_12: ADC Channel12 selected
  *     @arg ADC_Channel_13: ADC Channel13 selected
  *     @arg ADC_Channel_14: ADC Channel14 selected
  *     @arg ADC_Channel_15: ADC Channel15 selected
  *     @arg ADC_Channel_16: ADC Channel16 selected
  *     @arg ADC_Channel_17: ADC Channel17 selected
  * @param  Rank: The rank in the regular group sequencer. This parameter must be between 1 to 16.
  * @param  ADC_SampleTime: The sample time value to be set for the selected channel. 
  *   This parameter can be one of the following values:
  *     @arg ADC_SampleTime_1Cycles5: Sample time equal to 1.5 cycles
  *     @arg ADC_SampleTime_7Cycles5: Sample time equal to 7.5 cycles
  *     @arg ADC_SampleTime_13Cycles5: Sample time equal to 13.5 cycles
  *     @arg ADC_SampleTime_28Cycles5: Sample time equal to 28.5 cycles
  *     @arg ADC_SampleTime_41Cycles5: Sample time equal to 41.5 cycles
  *     @arg ADC_SampleTime_55Cycles5: Sample time equal to 55.5 cycles
  *     @arg ADC_SampleTime_71Cycles5: Sample time equal to 71.5 cycles
  *     @arg ADC_SampleTime_239Cycles5: Sample time equal to 239.5 cycles
  * @retval None
  */
void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)
{
  函数内容略;
}

触发源

ADC转换的输入、通道、转换顺序都已经说明了,但ADC转换是怎么触发的呢?就像通信协议一样,都要规定一个起始信号才能传输信息,ADC也需要一个触发信号来实行模/数转换。

其一就是通过直接配置寄存器触发,通过配置控制寄存器CR2的ADON位,写1时开始转换,写0时停止转换。在程序运行过程中只要调用库函数,将CR2寄存器的ADON位置1就可以进行转换,比较好理解。

另外,还可以通过内部定时器或者外部IO触发转换,也就是说可以利用内部时钟让ADC进行周期性的转换,也可以利用外部IO使ADC在需要时转换,具体的触发由控制寄存器CR2决定。

在参考手册中可以找到,ADC_CR2寄存器的详情如下:

“详解STM32中的ADC"

“详解STM32中的ADC"

“详解STM32中的ADC"

转换时间

还有一点,就是转换时间的问题,ADC的每一次信号转换都要时间,这个时间就是转换时间,转换时间由输入时钟和采样周期来决定。

由于ADC在STM32中是挂载在APB2总线上的,所以ADC的时钟是由PCLK2(72MHz)经过分频得到的,分频因子由 RCC 时钟配置寄存器RCC_CFGR 的位 15:14 ADCPRE[1:0]设置,可以是 2/4/6/8 分频,一般配置分频因子为8,即8分频得到ADC的输入时钟频率为9MHz。

采样周期是确立在输入时钟上的,配置采样周期可以确定使用多少个ADC时钟周期来对电压进行采样,采样的周期数可通过 ADC采样时间寄存器 ADC_SMPR1 和 ADC_SMPR2 中的 SMP[2:0]位设置,ADC_SMPR2 控制的是通道 0~9, ADC_SMPR1 控制的是通道 10~17。每个通道可以配置不同的采样周期,但最小的采样周期是1.5个周期,也就是说如果想最快时间采样就设置采样周期为1.5.

转换时间=采样时间+12.5个周期

12.5个周期是固定的,一般我们设置 PCLK2=72M,经过 ADC 预分频器能分频到最大的时钟只能是 12M,采样周期设置为 1.5 个周期,算出最短的转换时间为 1.17us。

数据寄存器

转换完成后的数据就存放在数据寄存器中,但数据的存放也分为规则通道转换数据和注入通道转换数据的。

规则数据寄存器负责存放规则通道转换的数据,通过32位寄存器ADC_DR来存放:

“详解STM32中的ADC"

当使用ADC独立模式(也就是只使用一个ADC,可以使用多个通道)时,数据存放在低16位中,当使用ADC多模式时高16位存放ADC2的数据。需要注意的是ADC转换的精度是12位,而寄存器中有16个位来存放数据,所以要规定数据存放是左对齐还是右对齐。

当使用多个通道转换数据时,会产生多个转换数据,然鹅数据寄存器只有一个,多个数据存放在一个寄存器中会覆盖数据导致ADC转换错误,所以我们经常在一个通道转换完成之后就立刻将数据取出来,方便下一个数据存放。一般开启DMA模式将转换的数据,传输在一个数组中,程序对数组读操作就可以得到转换的结果。

注入通道转换的数据寄存器有4个,由于注入通道最多有4个,所以注入通道转换的数据都有固定的存放位置,不会跟规则寄存器那样产生数据覆盖的问题。ADC_JDRx 是 32 位的,低 16 位有效,高 16 位保留,数据同样分为左对齐和右对齐,具体是以哪一种方式存放,由ADC_CR2 的 11 位 ALIGN 设置。

“详解STM32中的ADC"

中断

“详解STM32中的ADC"

从框图中可以知道数据转换完成之后可以产生中断,有三种情况:

规则通道数据转换完成之后,可以产生一个中断,可以在中断函数中读取规则数据寄存器的值。这也是单通道时读取数据的一种方法。

注入通道数据转换完成之后,可以产生一个中断,并且也可以在中断中读取注入数据寄存器的值,达到读取数据的作用。

当输入的模拟量(电压)不再阈值范围内就会产生看门狗事件,就是用来监视输入的模拟量是否正常。

以上中断的配置都由ADC_SR寄存器决定:

“详解STM32中的ADC"

当然,在转换完成之后也可以产生DMA请求,从而将转换好的数据从数据寄存器中读取到内存中。

电压转换

要知道,转换后的数据是一个12位的二进制数,我们需要把这个二进制数代表的模拟量(电压)用数字表示出来。比如测量的电压范围是0~3.3V,转换后的二进制数是x,因为12位ADC在转换时将电压的范围大小(也就是3.3)分为4096(2^12)份,所以转换后的二进制数x代表的真实电压的计算方法就是:

y=3.3* x / 4096

初始化结构体

每个外设的核心就是其对应的初始化结构体了,ADC的初始化结构体代码如下:

typedef struct
 {
 uint32_t ADC_Mode; // ADC 工作模式选择
 FunctionalState ADC_ScanConvMode; // ADC 扫描(多通道)或者单次(单通道)模式选择 
 FunctionalState ADC_ContinuousConvMode; // ADC 单次转换或者连续转换选择
 uint32_t ADC_ExternalTrigConv; // ADC 转换触发信号选择
 uint32_t ADC_DataAlign; // ADC 数据寄存器对齐格式
 uint8_t ADC_NbrOfChannel; // ADC 采集通道数
 } ADC_InitTypeDef;

通过配置初始化结构体来设置ADC的相关信息。

单通道电压采集

用这个程序来简单熟练一下ADC的单通道电压采集吧,程序使用了ADC1的通道11,对应的IO口是PC^1,因为博主的开发板上PC ^1引脚没有任何复用,使用中断,在中断中读取转换的电压。

头文件

为了提高文件的可移植性,头文件中定义了一些与ADC和中断相关的量,在移植程序的时候只需要修改头文件中的定义即可。

#ifndef __ADC_H
#define __ADC_H
#include "stm32f10x.h"
/* 采用ADC1的通道11  引脚为PC^1 模式必须是模拟输入*/
#define ADC_GPIO_RCC     RCC_APB2Periph_GPIOC
#define ADC_GPIO_PORT    GPIOC
#define ADC_GPIO_PIN     GPIO_Pin_1
#define ADC_GPIO_MODE    GPIO_Mode_AIN  
/* 配置与中断有关的信息 */
#define ADC_IRQn         ADC1_2_IRQn
#define ADC_RCC          RCC_APB2Periph_ADC1
/* 配置ADC初始化结构体的宏定义 */
#define ADCx                          ADC1
#define ADCx_ContinuousConvMode       ENABLE                      //连续转换模式
#define ADCx_DataAlign                ADC_DataAlign_Right         //转换结果右对齐
#define ADCx_ExternalTrigConv         ADC_ExternalTrigConv_None      //不使用外部触发转换,采用软件触发
#define ADCx_Mode                     ADC_Mode_Independent        //只使用一个ADC,独立模式
#define ADCx_NbrOfChannel             1                          //一个转换通道
#define ADCx_ScanConvMode             DISABLE                     //禁止扫描模式,多通道时使用
/* 通道信息和采样周期 */
#define ADC_Channel                   ADC_Channel_11
#define ADC_SampleTime                ADC_SampleTime_55Cycles5
/* 函数声明 */
void ADC_COnfig(void);
void ADC_NVIC_Config(void);
void ADC_GPIO_Config(void);
void ADCx_Init(void);
#endif  /* __ADC_H */

引脚配置函数

首先配置相应的GPIO引脚,毕竟模拟信号是通过GPIO引脚传输到开发板的,注意的是,引脚的模式一定要是模拟输入!

void ADC_GPIO_Config(void)
{
GPIO_InitTypeDef   GPIO_InitStruct;
RCC_APB2PeriphClockCmd(ADC_GPIO_RCC,  ENABLE);
GPIO_InitStruct.GPIO_Pin = ADC_GPIO_PIN ;
GPIO_InitStruct.GPIO_Mode = ADC_GPIO_MODE ;
GPIO_Init(ADC_GPIO_PORT , &GPIO_InitStruct);
}

配置引脚就是老套路:声明结构体变量、开启时钟、写入结构体、初始化GPIO。

NVIC配置函数

因为我们是在转换完成后利用中断,在中断函数中读取数据,所以要首先配置中断函数的优先级,因为程序中只有这一个中断,所以优先级的配置就比较随意。

void ADC_NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStruct ;
/* 配置中断优先级分组(设置抢占优先级和子优先级的分配),在函数在misc.c */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1) ;
/* 配置初始化结构体 在misc.h中 */
/* 配置中断源 在stm32f10x.h中 */
NVIC_InitStruct.NVIC_IRQChannel = ADC_IRQn ;
/* 配置抢占优先级 */
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1 ;
/* 配置子优先级 */
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1 ;
/* 使能中断通道 */
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE ;
/* 调用初始化函数 */
NVIC_Init(&NVIC_InitStruct) ;
}

ADC配置函数

ADC的配置函数是ADC的精髓,在这个函数中包含的内容有:ADC的初始化结构体配置、配置了时钟分频、配置了通道转换顺序、打开转换中断、进行校准、软件触发ADC采集等。

函数中都有详细的注释:

void ADC_COnfig(void)
{
  ADC_InitTypeDef  ADC_InitStruct;
  RCC_APB2PeriphClockCmd(ADC_RCC,  ENABLE);
  /* 配置初始化结构体,详情见头文件 */
  ADC_InitStruct.ADC_ContinuousConvMode = ADCx_ContinuousConvMode  ;
  ADC_InitStruct.ADC_DataAlign = ADCx_DataAlign ;
  ADC_InitStruct.ADC_ExternalTrigConv = ADCx_ExternalTrigConv ;
  ADC_InitStruct.ADC_Mode = ADCx_Mode ;
  ADC_InitStruct.ADC_NbrOfChannel = ADCx_NbrOfChannel ;
  ADC_InitStruct.ADC_ScanConvMode = ADCx_ScanConvMode ;
  ADC_Init(ADCx, &ADC_InitStruct);
  /* 配置ADC时钟为8分频,即9M */
  RCC_ADCCLKConfig(RCC_PCLK2_Div8);
  /* 配置ADC通道转换顺序和时间 */
  ADC_RegularChannelConfig(ADCx, ADC_Channel, 1, ADC_SampleTime );
  /* 配置为转换结束后产生中断 在中断中读取信息 */
  ADC_ITConfig(ADCx, ADC_IT_EOC,ENABLE);
  /* 开启ADC,进行转换 */
  ADC_Cmd(ADCx, ENABLE );
  /* 重置ADC校准 */
  ADC_ResetCalibration(ADCx);
  /* 等待初始化完成 */
  while(ADC_GetResetCalibrationStatus( ADCx))
    /* 开始校准 */
    ADC_StartCalibration(ADCx);
  /* 等待校准完成 */
  while (ADC_GetCalibrationStatus(ADCx));
  /* 软件触发ADC转换 */
  ADC_SoftwareStartConvCmd(ADCx, ENABLE);
}

中断函数

在中断函数中进行读取数据,将数据存放在变量result中,此处使用关键字extern声明,代表变量result已经在其他文件中定义,关于extern的介绍在之前发的文章中有extern关键字的介绍。

extern uint16_t resurt;
void ADC1_2_IRQHandler(void)
{
    /* 判断产生中断请求 */
  while(ADC_GetITStatus(ADCx, ADC_IT_EOC) == SET)
    resurt=ADC_GetConversionValue(ADCx);
  /* 清除中断标志 */
  ADC_ClearITPendingBit(ADCx, ADC_IT_EOC);
}

主函数

主函数负责接收转换的值,并将其转换为电压值,然后通过串口打印在计算机上,便于调试。

变量result是主函数中的全局变量,注意最后的结果应该转换为浮点型。

#include "stm32f10x.h"
#include "usart.h"
#include "adc.h"
uint16_t result;
void delay(void)
{
  uint16_t k=0xffff;
  while(k--);
}
int main(void)
{
  float voltage;
  /* 串口调试函数 */
  DEBUG_USART_Config();
  /* 与ADC相关的函数打包在此函数中 */
  ADCx_Init();
  while(1)
  {
      /* 强制转换为浮点型 */
    voltage = (float) result/4096*3.3;
    printf("\n电压值为:%f\n",voltage);
    delay();
  }
}

来源:单片机与嵌入式
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:
cathy@eetrend.com)。

围观 417

采集时间

采集时间是从释放保持状态(由采样-保持输入电路执行)到采样电容电压稳定至新输入值的1 LSB范围之内所需要的时间。采集时间(Tacq)的公式如下:

“ADC和DAC常用的56个技术术语"

混叠

根据采样定理,超过奈奎斯特频率的输入信号频率为“混叠”频率。也就是说,这些频率被“折叠”或复制到奈奎斯特频率附近的其它频谱位置。为防止混叠,必须对所有有害信号进行足够的衰减,使得ADC不对其进行数字化。欠采样时,混叠可作为一种有利条件。

孔径延迟

ADC中的孔径延迟(tAD)是从时钟信号的采样沿(下图中为时钟信号的上升沿)到发生采样时之间的时间间隔。当ADC的跟踪-保持切换到保持状态时,进行采样。

“ADC和DAC常用的56个技术术语”

孔径抖动

孔径抖动 (tAJ) 是指采样与采样之间孔径延迟的变化,如图所示。典型的ADC孔径抖动值远远小于孔径延迟值。

二进制编码(单极性)

准二进制是一种常用于单极性信号的编码方法。二进制码(零至满幅)的范围为从全0 (00...000)到全1的正向满幅值(11...111)。中间值由一个1 (MSB)后边跟全0 (10...000)表示。该编码类似于偏移二进制编码,后者支持正和负双极性传递函数。

双极性输入

术语“双极性”表示信号在某个基准电平上、下摆动。单端系统中,输入通常以模拟地为基准,所以双极性信号为在地电平上、下摆动的信号。差分系统中,信号不以地为基准,而是正输入以负输入为参考,双极性信号则指正输入信号能够高于和低于负输入信号。

共模抑制(CMRR)

共模抑制是指器件抑制两路输入的共模信号的能力。共模信号可以是交流或直流信号,或者两者的组合。共模抑制比(CMRR)是指差分信号增益与共模信号增益之比。CMRR通常以分贝(dB)为单位表示。

串扰(Crosstalk)

串扰表示每路模拟输入与其它模拟输入的隔离程度。对于具有多路输入通道的ADC,串扰指从一路模拟输入信号耦合到另一路模拟输入的信号总量,该值通常以分贝(dB)为单位表示;对于具有多路输出通道的DAC,串扰是指一路DAC输出更新时在另一路DAC输出端产生的噪声总量。

微分非线性(DNL)误差

对于ADC,触发任意两个连续输出编码的模拟输入电平之差应为1 LSB (DNL = 0),实际电平差相对于1 LSB的偏差被定义为DNL。对于DAC,DNL误差为连续DAC编码的理想与实测输出响应之差。理想DAC响应的模拟输出值应严格相差一个编码(LSB)(DNL = 0)。(DNL指标大于或等于1LSB保证单调性。)(见“单调”。)

“ADC和DAC常用的56个技术术语”

数字馈通

数字馈通是指DAC数字控制信号变化时,在DAC输出端产生的噪声。在下图中,DAC输出端的馈通是串行时钟信号噪声的结果。

“ADC和DAC常用的56个技术术语”

动态范围

动态范围定义为器件本底噪声至其规定最大输出电平之间的范围,通常以dB表示。ADC的动态范围为ADC能够分辨的信号幅值范围;如果ADC的动态范围为60dB,则其可分辨的信号幅值为x至1000x。对于通信应用,信号强度变化范围非常大,动态范围非常重要。如果信号太大,则会造成ADC输入过量程;如果信号太小,则会被淹没在转换器的量化噪声中。

有效位数(ENOB)

ENOB表示一个ADC在特定输入频率和采样率下的动态性能。理想ADC的误差仅包含量化噪声。当输入频率升高时,总体噪声(尤其是失真分量)也增大,因此降低ENOB和SINAD(参见“信号与噪声+失真比(SINAD)”)。满幅、正弦输入波形的ENOB由下式计算:

“ADC和DAC常用的56个技术术语"

加载-感应输出

一种测量技术,在电路的远端点加载电压(或电流),然后测量(检测)产生的电流(或电压)。例如,带有集成输出放大器的DAC有时就包含加载-感应输出。输出放大器可提供反相输入用于外部连接,反馈通路必须通过外部形成闭环。

全功率带宽(FPBW)

ADC工作时施加的模拟输入信号等于或接近转换器的规定满幅电压。然后将输入频率提高到某个频率,使数字转换结果的幅值降低3dB。该输入频率即为全功率带宽。

满幅(FS)误差

满幅误差为触发跳变至满幅编码的实际值与理想模拟满幅跳变值之差。满幅误差等于“失调误差+增益误差”,如下图所示。

“ADC和DAC常用的56个技术术语”

FS增益误差(DAC)

数/模转换器(DAC)的满幅增益误差为实际与理想输出跨距之差。实际跨距为输入设置为全1时与输入设置为全0时的输出之差。所有数据转换器的满幅增益误差都与选择用于测量增益误差的基准有关。

增益误差

ADC或DAC的增益误差表示实际传递函数的斜率与理想传递函数的斜率的匹配程度。增益误差通常表示为LSB或满幅范围的百分比(%FSR),可通过硬件或软件校准进行消除。增益误差等于满幅误差减去失调误差。

“ADC和DAC常用的56个技术术语”

增益误差漂移

增益误差漂移指环境温度引起的增益误差变化,通常表示为ppm/°C。

增益一致性

增益一致性表示多通道ADC中所有通道增益的匹配程度。为计算增益的一致性,向所有通道施加相同的输入信号,然后记录最大的增益偏差,通常用dB表示。

尖峰脉冲

尖峰脉冲指MSB跳变时在DAC输出端产生的电压瞬态振荡,通常表示为nV?s,等于电压-时间曲线下方的面积。

谐波

周期信号的谐波为信号基频整数倍的正弦分量。

积分非线性(INL)误差

对于数据转换器,积分非线性(INL)是实际传递函数与传递函数直线的偏差。消除失调误差和增益误差后,该直线为最佳拟合直线或传递函数端点之间的直线。INL往往被称为“相对精度”。

“ADC和DAC常用的56个技术术语”

互调失真(IMD)

IMD是指由于电路或器件的非线性产生的原始信号中并不存在的新频率分量的现象。IMD包括谐波失真和双音失真。测量时,将其作为将所选交调产物(即IM2至IM5)的总功率与两个输入信号(f1和f2)的总功率之比。2阶至5阶交调产物如下:

·2阶交调产物(IM2):f1 + f2、f2 - f1

·3阶交调产物(IM3):2 x f1 - f2、2 x f2 - f1、2 x f1 + f2、2 x f2 + f1

·4阶交调产物(IM4):3 x f1 - f2、3 x f2 - f1、3 x f1 + f2、3 x f2 + f1

·5阶交调产物(IM5):3 x f1 - 2 x f2、3 x f2 - 2 x f1、3 x f1 + 2 x f2、3 x f2 + 2 x f1

最低有效位(LSB)

在二进制数中,LSB为最低加权位。通常,LSB为最右侧的位。对于ADC或DAC,LSB的权重等于转换器的满幅电压范围除以2N,其中N为转换器的分辨率。对于12位ADC,如果满幅电压为2.5V,则1LSB = (2.5V/2^12) = 610μV

MSB跳变

MSB跳变(中间刻度点)时,MSB由低电平变为高电平,其它所有数据位则由高电平变为低电平;或者MSB由高电平变为低电平,而其它数据位由低电平变为高电平。例如,01111111变为10000000即为MSB跳变。MSB跳变往往产生最严重的开关噪声(见尖峰脉冲)。

单调

在序列中,如果对于每个n,Pn + 1总是大于或等于Pn,则说该序列单调增大;类似地,如果对于每个n,Pn + 1总是小于或等于Pn,则说该序列单调减小。对于DAC,如果模拟输出总是随DAC编码输入的增大而增大,则说该DAC是单调的;对于ADC,如果数字输出编码总是随模拟输入的增大而增大,则说该ADC是单调的。如果转换器的DNL误差不大于±1LSB,则能够保证单调。

最高有效位(MSB)

在二进制数中,MSB为最高加权位。通常,MSB为最左侧的位。

乘法DAC (MDAC)

乘法DAC允许将交流信号施加至基准输入。通过将感兴趣的信号连接至基准输入,并利用DAC编码缩放信号,DAC可用作数字衰减器。

无丢失编码

当斜线上升信号施加至ADC的模拟输入端时,如果ADC产生所有可能的数字编码,则该ADC无丢失编码。

奈奎斯特频率

奈奎斯特定理说明:ADC的采样率必须至少为信号最大带宽的两倍才能无失真地完整恢复模拟信号。该最大带宽被称为奈奎斯特频率。

偏移二进制编码

偏移二进制是一种常用于双极性信号的编码方法。在偏移二进制编码中,负向最大值(负向满幅值)用全0 (00...000)表示,正向最大值(正向满幅值)用全1 (11...111)表示。零幅由一个1 (MSB)后边跟全0 (10...000)表示。该方法与标准二进制类似,后者常用于单极性信号(参见二进制编码,单极性)。

失调误差(双极性)

双极性转换器失调误差的测量与单极性转换器失调误差的测量类似,但在双极性传递函数的中间点测量零幅处的误差(参见失调误差单极性)

失调误差(单极性)

失调误差常称为“零幅”误差,指在某个工作点,实际传递函数与理想传递函数的差异。对于理想数据转换器,第一次跳变发生在零点以上0.5LSB处。对于ADC,向模拟输入端施加零幅电压并增加,直到发生第一次跳变;对于DAC,失调误差为输入编码为全0时的模拟输出。

“ADC和DAC常用的56个技术术语"

失调误差漂移

失调误差漂移指环境温度引起的失调误差变化,通常表示为ppm/°C。

过采样

对于ADC,如果采样模拟输入的频率远远高于奈奎斯特频率,则称为过采样。过采样有效降低了噪底,所以提高ADC的动态范围。提高动态范围又进而提高了分辨率。过采样是Σ-Δ ADC的基础。

相位匹配

相位匹配表示施加至多通道ADC所有通道的完全相同信号的相位匹配程度。相位匹配指所有通道中的最大相位偏移,通常用度表示。

电源抑制比(PSRR)

电源抑制比(PSRR)指电源电压变化与满幅误差变化之比,以dB表示。

量化误差

对于ADC,量化误差定义为实际模拟输入与表示该值的数字编码之间的差异(参见“量化”)。

比例测量

施加至ADC电压基准输入的电压不是恒定电压,而是与施加至变送器(即负载单元或电桥)的信号成比例。这种类型的测量称为比例测量,它消除了基准电压变化引起的所有误差。下图中使用电阻桥的方法就是比例测量的一个例子。

“ADC和DAC常用的56个技术术语"

分辨率

ADC分辨率为用于表示模拟输入信号的位数。为了更准确地复现模拟信号,就必须提高分辨率。使用较高分辨率的ADC也降低量化误差。对于DAC,分辨率与此类似:DAC的分辨率越高,增大编码时在模拟输出端产生的步进越小。

有效值(RMS)

交流波形的RMS值为有效直流值或该信号的等效直流信号。计算交流波形的RMS值时,先对交流波形进行平方以及时间平均,然后取其平方根。对于正弦波,RMS值为峰值的 2/2 (或0.707)倍,也就是峰-峰值的0.354倍。

采样率/频率

样率或采样频率以“采样/秒”(sps)表示,指ADC采集(采样)模拟输入的速率。对于每次转换执行一次采样的ADC(如SAR、Flash ADC或流水线型ADC),采样速率也指吞吐率。对于Σ-Δ ADC,采样率一般远远高于数据输出频率。

建立时间

对于DAC,建立时间是从更新(改变)其输出值的命令到输出达到最终值(在规定百分比之内)之间的时间间隔。建立时间受输出放大器的摆率和放大器振铃及信号过冲总量的影响。对于ADC,采样电容电压稳定至1 LSB所需的时间小于转换器的捕获时间至关重要。

信纳比(SINAD)

SINAD是正弦波(ADC的输入,或DAC恢复的输出)的RMS值与转换器噪声加失真(无正弦波)的RMS值之比。RMS噪声加失真包括奈奎斯特频率以下除基波和直流失调以外的所有频谱成分。SINAD通常表示为dB。

信噪比(SNR)

信噪比(SNR)是给定时间点有用信号幅度与噪声幅度之比,该值越大越好。对于由数字采样完美重构的波形,理论上的最大SNR为满幅模拟输入(RMS值)与RMS量化误差(剩余误差)之比。理想情况下,理论上的最小ADC噪声仅包含量化误差,并直接由ADC的分辨率(N位)确定:

(除量化噪声外,实际ADC也产生热噪声、基准噪声、时钟抖动等。)

带符号二进制编码

带符号二进制编码方法中,MSB表示二进制数的符号(正或负)。所以,-2的8位表示法为10000010,+2的表示法为00000010。

摆率

摆率是DAC输出变化的最大速率,或者不会造成ADC数字输出错误的输入变化的最大速率。对于带有输出放大器的DAC,规定摆率通常是放大器的摆率。

小信号带宽(SSBW)

为测量小信号带宽,向ADC施加一个幅值足够小的模拟输入信号,其摆率不会限制ADC的性能。然后,扫描输入频率,直到数字转换结果的幅值降低3dB。小信号带宽往往受限于相关采样-保持放大器的性能。

无杂散动态范围(SFDR)

无杂散动态范围(SFDR)是基波(信号成分最大值)RMS幅值与第二大杂散成份(不包含直流失调)的RMS值之比。SFDR以相对于载波的分贝(dBc)表示。

总谐波失真(THD)

THD测量信号的失真成分,用相对于基波的分贝(dB)表示。对于ADC,总谐波失真(THD)是所选输入信号谐波的RMS之和与基波之比。测量时,只有在奈奎斯特限值之内的谐波被包含在内。

跟踪-保持

跟踪-保持往往也被称为“采样-保持”,指ADC的输入采样电路。跟踪-保持输入的最基本表示形式是模拟开关和电容(见图)。开关闭合时,电路处于“跟踪”模式;开关开路时,采样电容保持输入的最后瞬态值,电路处于“保持”模式。

“ADC和DAC常用的56个技术术语"

转换噪声

转换噪声指引起ADC输出在相邻输出编码之间切换的输入电压变化范围。当增大模拟输入电压时,由于相关瞬态噪声的原因,触发每个编码发生跳变(编码边缘)的电压是不确定的。

二进制补码编码

二进制补码编码方法用于正数和负数编码,简化加法和减法计算。该编码方法中,-2的8位表示法为11111110,+2的表示法为00000010。

欠采样

欠采样技术中,ADC采样率低于模拟输入频率,该条件下将引起混叠。根据奈奎斯特定理,自然知道欠采样将丢失信号信息。然而,如果对输入信号进行正确滤波,以及正确选择模拟输入和采样频率,则可将包含信号信息的混叠成分从较高频率搬移至较低频率,然后进行转换。该方法有效地将ADC用作下变频器,将较高带宽信号搬移到ADC的有效带宽。要想该技术取得成功,ADC跟踪-保持电路的带宽必须能够处理预期的最高频率信号。

单极性

对于单端模拟输入ADC,单极性信号输入范围为零幅(通常为地)至满幅(通常为基准电压);对于差分输入ADC,信号输入范围为零幅至满幅,以正输入相当于负输入测量输入范围。

零幅误差

参见失调误差(单极性)。

来源:高速射频百花潭
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:
cathy@eetrend.com)。

围观 44

德州仪器(TI)近日扩充了其高速数据转换器产品系列,推出了一系列全新的逐次逼近寄存器(SAR)模数转换器(ADC),它们可在工业设计中实现高精度数据采集。ADC3660 系列在超低功耗下可实现出色的动态范围,包括八款分辨率为14、16和18位、采样速度为10-125 MSPS的SAR ADC,可帮助设计人员提高信号分辨率、延长电池寿命并增强系统保护功能。

“新型ADC帮助实现高精度数据采集,同时降低65%的功耗”

提高高速数据采集精度满足了工业系统对实时控制日益增长的需求。在高速数字控制环路中,ADC在复杂系统中监控电压或电流的快速变化并对其作出响应,有助于防止电源管理系统中的关键元件受损而浪费成本。随着工业系统中数据密集型任务数量的增加,系统需要通过快速决策来防止出现系统故障,这增加了对更快速度和更高精度的需求。

在数字控制环路中通过更快的响应时间保护工业系统

ADC3660系列在类似速度下的延迟比同类器件低80%。例如,系统设计人员使用125 MSPS、14位、双通道ADC3664,可实现一个时钟(8 ns)的ADC延迟。该系列的超低延迟使各种工业系统中的高速数字控制环路能够更准确地监控电压和电流峰值并对其作出响应,从而提高在半导体制造等应用场景中的工具精度。

在超低功耗下实现业界先进的噪声性能

直到现在,设计工业系统的工程师还不得不在出色的噪声性能和低功耗之间做出选择。对于设计需要精确数据采集的电池供电器件的工程师来说,这是一个特别困难的决定。ADC3660系列则无需进行这种权衡。例如,ADC3683(业界超快的18位、65 MSPS ADC)可提高便携式国防无线电等窄带频率应用的噪声性能,它可提供84.2 dB的信噪比(SNR)和-160 dBFS/Hz的噪声频谱密度,同时保持每通道94 nmW的低功耗。10 MSPS、14位ADC3541的总功耗为36 mW,可简化热管理并延长GPS接收器或手持电子设备等功率敏感型应用的电池寿命。65 MSPS、16位ADC3660可提供82 dBFS SNR,从而提高声纳应用中的图像分辨率,而且功耗比同类器件低65%(每通道71 mW)。

利用集成特性和高采样频率降低设计复杂性

ADC3660系列的高采样速度和集成特性可帮助设计人员减少其系统中的元件数量。例如,ADC3683在两倍的通道密度下,实现比同类18位器件快四倍的采样率;它还支持一种将所需信号的谐波推往更高频率的过采样技术,这使设计人员能够降低抗混叠滤波器的复杂性并减少75%的系统元件数量。

可降低设计复杂性的其他系列特性包括片上抽取选项,设计人员可通过该选项轻松去除系统中不需要的噪声和谐波,并将SNR和无杂散动态范围提高至15 dB。这些抽取选项以及互补金属氧化物半导体(CMOS)接口支持设计人员搭配使用这些ADC与基于Arm® 的处理器或数字信号处理器,而不必使用现场可编程门阵列(FPGA),这有助于降低系统成本。

封装、供货情况

ADC3563、ADC3583、ADC3643、ADC3660、ADC3663、ADC3664和ADC3683 采用5mm x 5mm超薄Quad Flat No-lead(WQFN)封装,TI现已发售。ADC3541的预量产版本现仅通过TI.com供货,预计将于2022年第一季度实现量产。TI可提供相关器件的评估模块。TI.com支持灵活支付,以人民币结算,提供快速、可靠的发货方式。

“新型ADC帮助实现高精度数据采集,同时降低65%的功耗”
围观 20

页面

订阅 RSS - ADC