参考文献
有关文件及软件,请浏览:
//www.xmece.com/亚博电竞菠菜products/greenpak
下载我们的免费GreenPAK设计软件[1],打开。gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。
yabo国际娱乐Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。
- GreenPAK设计软件,软件下载和用户指南,Dialog Semiconductoryabo国际娱乐
- AN-1177 Flexible Range ADC with I2C Interface.gp,绿派克设计文件,Dialog半导体yabo国际娱乐
- GreenPAK开发工具, GreenPAK开发工具网页,Dialog半导体yabo国际娱乐
- GreenPAK应用笔记,绿派克应用笔记网页,对话半导体yabo国际娱乐
- SLG46533对话框数据表,半导体yabo国际娱乐
- SLG46536对话框数据表,半导体yabo国际娱乐
- SLG46538对话框数据表,半导体yabo国际娱乐
作者:玉涵太阳
介绍
在本应用笔记中,我们将描述如何在GreenPAK5设备中创建多达16位的ADC,该设备具有用于连接MCU的I2C接口。ADC架构使用最小的GreenPAK资源,但允许通过电阻轻松调整输入范围。
ADC架构
ADC主要由模拟比较器和数模转换器(DAC)组成。比较器感知输入电压和DAC输出电压,然后控制DAC输入码是增加还是减少,这样DAC输出就会收敛到输入电压。得到的DAC输入码成为ADC数字输出码。
在我们的实现中,我们使用PWM控制电阻网络创建一个DAC。我们可以很容易地使用GreenPAK创建精确的数字控制PWM输出。滤波后的PWM成为我们的模拟电压,因此作为一个有效的DAC。这种方法的一个明显的优点是,只需简单地调整电阻器的值,就可以很容易地设置对应于零码和满量程(等效偏置和增益)的电压。例如,用户希望从温度传感器读取零摄氏度对应0.5V的零码,100摄氏度对应0.7V的满刻度码。这很容易实现,只需设置几个电阻器的值。通过使ADC范围匹配感兴趣的传感器范围,我们最大限度地利用ADC分辨率。
这种架构的一个设计考虑是,内部PWM频率需要比ADC更新速率快得多,以防止其控制回路的欠阻尼行为。因此,这种结构更适合于相对慢的传感应用,如温度传感器。亚博国际官网平台网址
实现:电阻网络
外部电阻和电容网络用于将PWM转换为模拟电压,如图1中的电路原理图所示。当DAC的最小和最大电压与传感器的最小和最大电压匹配时,这些值将被计算为最大分辨率。为了实现这种灵活性,我们将电阻R2和R3并联到VDD和地。它们的值可以用下面的方程求解。
注意:ACMP的负输入不能超过1.0V。GreenPAK具有片上增益分压器,如果需要,可以使用它来分解输入电压。
实现:ACMP
配置ACMP的正输入为GPIO,负输入为GPIO。正极接传感器,负极接电阻网络。
ACMP的输出控制PWM增加或减少的方向。高输出表示传感器大于DAC。低输出表示传感器小于DAC。
实现:PWM DAC
PWM是由GreenPAK内部产生的。它的输出连接到R1。这种PWM是独特的,因为它是可调的和不断运行。
首先,取两个相同长度的计数器,让它们连续运行。它们的输出将成为PWM的设置和复位信号。Set表示PWM输出高电平。复位表示PWM输出变为LOW。因此,Set和Reset之间的相对定时相当于PWM宽度。
要创建可调节的时间,设置计数器通过增加或减少时钟来调整,而复位计数器保持恒定。请参见图2中的3位LUT1属性。当IN2 (Up/nDOWN)为逻辑0时,此块的输出将跳过一个时钟。当IN2为逻辑1时,此块的输出将增加一个时钟。
增加时钟使Set相对于Reset更早,增加PWM宽度。跳过时钟将使Set相对于复位晚一点,降低PWM宽度。如前所述,添加或跳过的选择由ACMP输出控制。
Set输出被反向连接到DFF7的nReset。Reset输出连接到DFF7的CLK上。DFF7的输出也是反向的。当Set为Low时,PWM信号为HIGH。当Reset变高时,PWM信号变低。图3是显示PWM信号是如何切换的时序图。
实现:更新周期
前面我们提到,为了获得最佳稳定性,内部循环必须比外部循环慢得多。在这里它是由CNT3实现的,它计数64个Reset信号之前,它的输出是高的。因此,更新速率比PWM频率慢64倍。
这个信号也被用来更新ADC数据,这是接下来讨论的。
实现:I2C可读性
在GreenPAK5中,我们可以使用I2C读取计数器数据。这只适用于CNT0, CNT1, CNT5和CNT6。这里我们使用16位CNT0存储PWM宽度。在更新的上升边缘,CNT0开始填充使用相同的时钟源,只是这次它是与PWM输出。因此,CNT0保持PWM的数字表示。
为了读取CNT0中的数据,需要访问位置0xc和0xEB,这两个位置代表位[15:8]和[7:0]。重要的是要记住,这个过程在每个Update周期中只执行一次,并且在加载过程中数据是不正确的。Data_Read_Window是一个输出信号,连接到nUpdate,它可以用作计数器是否有有效数据的指示器。
变体
基本的设计是与电源的比值。例如,这对于电阻式电桥传感器非常有效。
在非比率应用程序中,我们可以使用外部L亚博国际官网平台网址DO,或者使用双轨GreenPAK(如SLG46538)来实现内部LDO。双电源设备可以配置为第二个电源是第一个电源的buck,从而创建一个简单的LDO。注意,这种LDO的输出驱动受到GPIO输出强度的限制。
我们可以实现的另一种变体是2nd同一芯片上的ADC通道。这可以通过为两个通道重用Reset计数器来实现。然而,由于没有足够的16位计数器,双通道版本最多只能有8位分辨率。我们提供了一个示例设计,其中两个通道ADC的计数器数据存储在0xEB和0xEE。
对于那些我们想要处理超出ADC范围的输入的情况,我们需要实现翻转保护电路。例如,当我们达到0%或100%时,我们想要防止ADC代码滚动。附加的计数器可以用来设置最小的PWM和最大的PWM。或者,可以设置电阻分压器,使传感器输出永远不会达到Vmin和Vmax。
结论
根据结果,我们能够实现最大16位ADC与+/- 1或2 LSB的抖动。为了更快的收敛,设计示例设置为10位。使用这种设计的16位ADC相当慢,因为PWM DAC通过线性步骤更新,因此只能使用一个缓慢移动的信号。通过调整PWM计数器,可以很容易地调整位宽。