参考
对于相关的文件和软件,请访问:
https://www.dialog-semicondoduments.c雷电竞官网登录om/products/greenpak.
下载我们的免费GreenPak Designer软件[1]打开.gp文件[2]并使用GreenPak开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。
雷竞技电竞平台对话框半导体提供完整的应用程序库注意[4],其中包含了设计示例以及对话框IC中的功能和块的说明。
- GreenPak Designer软件,软件下载和用户指南,对话框半导体雷竞技电竞平台
- AN-1177灵活范围ADC具有I2C接口.GP,GreenPak设计文件,对话半导体雷竞技电竞平台
- GreenPak开发工具,GreenPak开发工具网页,对话框半导体雷竞技电竞平台
- GreenPak应用笔记,GreenPak应用笔记网页,对话框半导体雷竞技电竞平台
- SLG46533.数据表,对话框半导体雷竞技电竞平台
- SLG46536.数据表,对话框半导体雷竞技电竞平台
- 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更新速率快得多,以防止其控制循环的受损行为。因此,这种架构更适合于诸如温度传感器的相对慢的感测应用。雷竞技安卓下载
实施:电阻网络
外部电阻和电容器网络用于将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数据。
实施: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计数器,可以轻松调整位宽度。