编程实验
AD5160是一款256位、数字控制可变电阻(VR)器件。上电期间,内部上电预设将游标置于中间电平,简化了上电时的故障状况恢复。
1、可变电阻器编程
可变电阻器操作
A端和B端间RDAC的标称电阻可以为5kΩ、10kΩ、50kΩ和100kΩ。在订购指南部分列出的型号数字中,最后二到三位表示标称电阻值;例如,在型号AD5160BRJZ10中,10代表10kΩ;AD5160BRJZ50中,50代表50kΩ。可变电阻的标称电阻(RAB)有256个触点,通过游标端和B端触点访问。RDAC锁存器中的8位数据经过解码,用于选择256种可能的设置之一。
假设使用一个10kΩ器件,对于数据0x00,游标的首个连接从B端开始。由于存在一个60Ω游标接触电阻,这种连接导致W端和B端之间至少有60Ω电阻。
第二个连接是第一个抽头点,数据0x01对应电阻为99Ω(RWB=RAB/256+RW=39Ω+60Ω)。
第三个连接是下一个抽头点,数据0x02对应电阻为138Ω(2×39Ω+60Ω),以此类推。随着每个LSB数据值的增加,游标沿电阻梯向上移动,直至到达最终抽头点位置,此时电阻达9961Ω(RAB−1LSB+RW)。图39给出了一个简化的等效RDAC电路框图,该图中最后那个电阻串未被访问;因此,满量程时除了游标电阻,比标称电阻还要小1LSB。
确定W端和B端间的数字编程输出电阻的通用公式是
其中:
D为载入8位RDAC寄存器的二进制代码的十进制等效值。
RAB是端到端电阻。
RW是内部开关导通电阻所分配的游标电阻。
总之,如果RAB=10kΩ且A端处于开路状态,那么下列输出电阻RWB为所示的RDAC锁存器代码而设置。
请注意:在零电平条件下,存在60Ω的有限游标电阻。注意,此状态下要限制端W和端B的电流流动,最大脉冲电流不能超过20mA。否则,内部开关触点会下降或可能毁坏。
与机械电位计相似,游标W和A端间RDAC电阻也产生一个数字可控互补电阻(RWA)。这些端子使用过程中,B端可以断开。RWA电阻值设置从最大电阻值开始,随着锁存器所加载的数据值增加而降低。此操作的通用公式是
如果RAB=10kΩ且B端处于开路状态,则下列输出电阻RWA为所示的RDAC锁存器代码而设置。
典型器件间匹配依进程而定,变化幅度可高达±30%。由于电阻元件经薄膜技术处理,RAB温度系数为45ppm/°C,变化非常小。
2、电位计分压器编程
电压输出操作
在游标与B端和游标与A端之间,数字电位计可轻松用作分压器,与A端与B端间输入电压成正比。VDD到GND必须为正极,而A-B、W-A和W-B的电压可以为任一极性。如果忽略游标电阻作用,取近似效果,那么A端接至5V和B端接至地后,游标与B端产生输出电压,从0V开始至5V以下1LSB。电压每个LSB等于经过256位电位分压器分压的A端与B端间的电压。针对A端和B端间施加的任何有效输入电压,VW处相对于地的输出电压定义为
在分压器模式下使用数字电位计,可提高整个温度范围内的操作精度。与可变电阻模式不同,输出电压主要取决于内部电阻之比(RWA与RWB),而不是绝对值。因此,温度漂移降到15PPM/°C。
SPI兼容型三线式串行总线
AD5160内置三线式SPI兼容型数字接口(SDI、CS和CLK)。8位串行字必须以MSB优先方式加载。字格式如表6所示。正边沿敏感CLK输入需要干净的跃迁以避免将错误数据输入串行输入寄存器。标准逻辑系列性能表现良好。若产品评估中需要用到机械开关,可采用触发器或其他合适的手段去抖。当CS为低电平时,数据在每个正时钟沿读入串行寄存器(见图37)。
有效时序要求取决于规格表内的数据建立时间和数据保持时间。当CS线路回到逻辑高电平时,AD5160使用传输到内部RDAC寄存器的8位串行输入数据寄存器字。多余的MSB位被忽略。
4、ESD保护
如图40和41所示,所有数字输入均受到串联输入电阻和并联齐纳ESD结构保护。这也适用于数字输入引脚SDI、CLK和CS。
5、上电顺序
因为ESD保护二极管限制了A端、B端和W端的顺从电压,所以给A端、B端和W端施加任何电压之前必须给VDD/GND供电;否则,二极管发生正向偏置,以致VDD意外上电,可能会影响用户电路的其他方面。理想的上电顺序如下:GND,VDD,数字输入,然后是VA/B/W。只要在VDD/GND之后上电,VA、VB和VW和数字输入的上电顺序就无关紧要。
6、布局和电源旁路
采用紧凑、最小引线长度的布局设计是很好的做法。这样可尽量做到直接输入,实现最小导线长度。接地路径应具有低电阻、低电感。
同样,采用优质电容将电源旁路达到最佳稳定性也是最佳做法。可采用0.01μF至0.1μF的盘式或片式陶瓷电容实现器件电源旁路。为了尽可能减少瞬态干扰,并滤除低频纹波,电源处应运用低ESR1μF至10μF钽或电解电容(见图42)。若要尽可能降低接地反弹,可在单点处远程连接数字地和模拟地。
引脚配置图:
引脚功能描述:
/********* STC12C5A60S2平台AD5160数字电位器程序 时钟:外部12M晶振
电位器串联外部电阻连接为可变电阻模式,若不串外部电阻直接接参考电压源即工作为数字电位计模式
*NOTE:作为可变电阻模式与外部电阻串联时存在一定程度容差,若所串电阻大于AD5160本身满量程电阻(型号有5K\10K\50K\100K)10倍以上则此容差才可忽略 *****/
/*AD5160.H*/
#ifndef _AD5160_H_ #define _AD5160_H_
#include《STC12C5A60S2.h》 #include《intrins.h》
typedef unsigned char uchar; typedef unsigned int uint;
sbit CPCS = P3^2; //数字电位器AD5160的片选CS,低电平有效 sbit SDI = P3^4; //数字电位器AD5160的数据SDI sbit SCK = P3^5; //数字电位器AD5160的时钟SCLK
void AD5160_init() //AD5160初始化 { CPCS = 1;
SCK = 0
SDI = 1;
}
void set_AD5160(uchar dat) //设定从W抽头到B端的抽头数,以10K版本的为 { //例电阻为RwB = 60+39*rdac 其中W抽头接触电阻为60Ω
uchar i,rdac=0; CPCS = 1;
rdac = dat; //RDAC为写入AD5160 内部8位radc寄存器数据 SCK = 0;
_nop_();_nop_();_nop_();_nop_();
SCK = 1; //SCK在CS拉低前触发一个时钟
_nop_();_nop_(); SCK = 0; _nop_();
CPCS = 0; //拉低CS启动数据写入 for(i=0;i《8;i++) { SDI = (rdac&0x80); rdac《《=1; //高位MSB在先 _nop_(); SCK = 1; _nop_(); SCK = 0; }
CPCS = 1;
_nop_(); //片选拉高后SCK送一个结束时钟,这点很重要 SCK = 1;
_nop_();_nop_(); SCK = 0; _nop_();
}
#endif
全部0条评论
快来发表一下你的评论吧 !