跳到主要内容

具有I2C接口的AN-1177灵活范围ADC

内容

参考

对于相关的文件和软件,请访问:

https://www.dialog-semicondoduments.c雷电竞官网登录om/products/greenpak.

下载我们的免费GreenPak Designer软件[1]打开.gp文件[2]并使用GreenPak开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。

雷竞技电竞平台对话框半导体提供完整的应用程序库注意[4],其中包含了设计示例以及对话框IC中的功能和块的说明。

  1. GreenPak Designer软件,软件下载和用户指南,对话框半导体雷竞技电竞平台
  2. AN-1177灵活范围ADC具有I2C接口.GP,GreenPak设计文件,对话半导体雷竞技电竞平台
  3. GreenPak开发工具,GreenPak开发工具网页,对话框半导体雷竞技电竞平台
  4. GreenPak应用笔记,GreenPak应用笔记网页,对话框半导体雷竞技电竞平台
  5. SLG46533.数据表,对话框半导体雷竞技电竞平台
  6. SLG46536.数据表,对话框半导体雷竞技电竞平台
  7. SLG46538.数据表,对话框半导体雷竞技电竞平台

作者:余汉太阳

介绍

在此应用中,我们将描述如何在GreenPak5设备中创建最多16位的ADC,该设备具有用于连接MCU的I2C接口。ADC架构采用最小的GreenPak资源,但允许通过电阻实现简单的输入范围调整。

ADC架构

ADC基本上包括模拟比较器和数模转换器(DAC)。比较器感测到DAC输出电压的输入电压Vs,然后控制是否增加或减少DAC输入代码,使得DAC输出会聚到输入电压。得到的DAC输入代码成为ADC数字输出代码。

在我们的实现中,我们使用PWM控制的电阻网络创建DAC。我们可以使用GreenPak轻松创建精确的数字控制PWM输出。滤波时的PWM变为我们的模拟电压,因此用作有效的DAC。这种方法的明显优点是通过简单地调整电阻值,易于设定对应零代码和满量程(等效偏移和增益)的电压。例如,用户想要从具有0.5V的零摄氏度的温度传感器读取零码,并且在100度的满量程代码对应于0.7V。这通过简单地设置一些电阻值可以轻松实现。通过使ADC系列匹配感兴趣的传感器范围,我们最大限度地利用ADC分辨率。

这种架构的设计考虑因素是内部PWM频率需要比ADC更新速率快得多,以防止其控制循环的受损行为。因此,这种架构更适合于诸如温度传感器的相对慢的感测应用。雷竞技安卓下载

图1. ADC电阻网络

实施:电阻网络

外部电阻和电容器网络用于将PWM转换为模拟电压,如图1所示。计算值的值,用于最大分辨率,其中DAC MIN和MAX电压匹配传感器的最小电压和最大电压。为实现这种灵活性,我们将电阻R2和R3平行于VDD和地。它们的值可以使用以下等式来解决。

注意:ACMP的负输入不得超过1.0V。GreenPak具有片上增益分频器,可用于如果需要,可用于分割输入电压。

实施:ACMP.

配置ACMP,使得正输入是GPIO,负输入也是GPIO。正端子应连接到传感器和负端子到电阻网络。

此ACMP的输出控制PWM将增加或减少的方向。高输出表示传感器大于DAC。低输出表示传感器小于DAC。

实施:PWM DAC

PWM由GreenPak内部生成。其输出连接到R1。此PWM是独一无二的,因为它是可调且不断运行的。

首先,采取两个相同长度的计数器,并允许它们持续运行。它们的输出将成为PWM的集合和复位信号。该设置指示PWM输出变高。重置指示PWM输出何时低位。因此,设置和复位之间的相对时序等同于PWM宽度。

为了创建可调时定时,通过在复位计数器保持恒定时添加或减去时钟来调整设定计数器。有关3位LUT1属性,请参见图2。当IN2(UP / NDOWN)为逻辑0时,此块的输出将跳过一个时钟。当In2是逻辑1时,此块的输出将添加一个时钟。

添加时钟相对于复位相对于复位,增加了PWM宽度。跳过时钟将稍后相对于复位移动设置,降低PWM宽度。如前所述,添加或跳过的选择由ACMP输出控制。

设置输出反转并连接到DFF7的NRESET。复位输出连接到DFF7的CLK。DFF7输出也被反转。设置为低电平时,PWM信号变高。重置变高时,PWM信号变为低电平。图3是表示PWM信号如何切换的时序图。

实施:更新期

以前,我们提到内部循环必须比外部循环慢得多,以获得最佳稳定性。这里它由CNT3实现,CNT3在其输出高之前计算64个复位信号。因此,更新速率比PWM频率慢64倍。

该信号还用于更新下一个讨论的ADC数据。

图2. 3位LUT1属性
图3.时钟添加和时钟跳过的时序图。
图4. PWM信号和DATA_READ_WINDOW的时序图

实施:I2C可读性

在GreenPak5中,我们可以使用I2C来读取计数器数据。这仅适用于计数器CNT0,CNT1,CNT5和CNT6。在这里,我们使用16位CNT0来存储PWM宽度。在更新的上升沿,CNT0开始使用相同的时钟源填充,只有这次它且具有PWM输出的频率。因此,CNT0保持PWM的数字表示。

为了读取CNT0中的数据,访问位置0xec和0xEB,表示位[15:8]和[7:0]。重要的是要记住,在加载过程中,每次更新周期和数据都不正确完成此过程。data_read_window是一个输出信号,连接到nupdate,它可以用作计数器具有有效数据时的指示器。

变体

基本设计具有电源的比例。例如,这适用于电阻桥传感器。

在非比率应用中,我们可以使用外部LDO雷竞技安卓下载,或者,我们可以使用双轨GreenPak,如SLG46538来实现内部LDO。双电源装置可以配置成使得第二电源是第一电源的降压,从而创建简单的LDO。注意,这种LDO的输出驱动受GPIO输出强度的限制。

我们可以实现的另一个变体是2nADC通道在同一芯片上。这可以通过重用两个通道的复位计数器来实现。但是由于没有足够的16位计数器,双通道版本只能有多达8位分辨率。我们已经提供了一个示例设计,其中两个信道ADC的计数器数据存储在0xEB和0xee。

对于我们想要处理超过ADC范围的输入的情况,我们需要实现翻转保护电路。例如,当我们达到0%或100%时,我们希望防止ADC代码滚动。额外的计数器可用于设置最小PWM和最大PWM。或者,可以设置电阻器分隔器,使得传感器输出永远不会到达Vmin和Vmax。

结论

基于结果,我们能够实现最大16位ADC,+/- 1或2 LSB抖动。设计示例设置为10位,以实现更快的收敛性。使用这种设计的16位ADC非常慢,因为PWM DAC通过线性步骤更新,因此只能与缓慢移动信号一起使用。通过调整PWM计数器,可以轻松调整位宽度。

附录-A:1通道ADC在SLG46536中
附录-B:1通道ADC,MIN / MAX限制器SLG46536
附录-C:SLG46536中的1通道ADC应用电路
附录-D:2通道ADC在SLG46533中
附录-E:SLG46533中的2通道ADC应用电路
附录-F:SLG46538中的非比率2通道ADC
附录-G:SLG46538中的非比率2通道ADC的应用电路