摘要:目录编程编程程序简介实验程序,我们要感谢Gong提供了本实验的参考程序,设备和意见的全面批准。 首先,它是一种使用通信的公司生成的数字电位器,具有非易失性存储器。
目录的表1。Ad52522。使用步骤3的概述。编程步骤4。实验步骤5。完整的参考计划确认:我们要感谢锣为本实验提供了设备和意见。
1。 AD5252
AD5252/1的概述是ADI生成的数字电位器,并使用I2C通信带有非挥发性内存(NVM)。 这一系列芯片有两种型号。
AD5251:双电位计,64位。 AD5252:双电位计,256位。
AD5251仅支持50kΩ。 AD5252有1kΩ,10kΩ,50kΩ和100kΩ。 AD5252/1:单电源:2.7 V至5.5 V.双电源:±2.25 V至±2.75 V.环境用法:–40°C至 +105°C。 芯片内部结构图:芯片引脚图:
销钉数字名称函数3WP写入保护,高级活动2,11AD0,套件地址4,5,6W1,B1,A1预稳定计112,13,14W3,b3,b3,b3,a3电位器37,9SDA,SCLI2C,scli2c fore Themert fore Thement Intection for Intection for Intection for Intection in Contection in Contection in Contection <persive <2 exteries <persive <2。注意使用时,AD5252系列芯片必须连接到SDA和SCL拉力电阻。这是我使用的测试电路图:SDA,SCL连接到Arduino Uno的I2C接口,WP连接到引脚13,A0,A1和相应的A0,A1针。
3。编程过程
首先,设置AD5252的地址:
ad0并设置AD1。 执行写操作时,必须将WP设置为更高的值。 写操作步骤:读取操作过程:主API
void res_set(int Date,int chal); //设置电阻值的未符号int red_res(int chal)。 //读取阻力值unsigned int red_eem(int chal); //阅读注册的void set_eem(int Date,int chal)。 //写寄存器4。实验描述
实验使用1K AD5252。该程序可以通过串行端口设置电阻值,同时将串行端口上的值设置为两个电位计,并将设置值写入EEMEM4(相应程序的1个)。 RES_1是启用的设定值,RESL_READ是通过AD采样计算的电阻,它对应于实际测量的电阻器。 设定值和实际值之间有约75欧姆的差异。区别在于幻灯片的电阻。 60欧姆在这里不同。
5。参考程序完成#包括#define addr 0x2d // ad5252默认地址#define WP 13 //写入访问保护PIN #Define AD5252_EE_RDAC1 CHAL = 2 - - -> RDAC3*RDAC3*/void Res_set(Int Chan int Chan = 1)0x010x01;// PIN2总是低延迟(100); //启动I2C传输线。开始传输(ADDR); //通道电线。Write(channel); //输入电阻值,0x80(128)WIRE.WRITE(DATE); //停止i2c transmit wire.endtransmission()。延迟(100); DigitalWrite(WP,低); }/*函数:AD5252电阻设置值读取函数输出参数:chal = 1 - -> rdac1 chal = 2 - - -> rdac3*/unsigned int int red_res(int chal){unsigned int int data; int通道; if(chal == 1){channel = 0x01; } if(chal == 2){channel = 0x03; } //启动I2C传输线。选择begintransermiss(addr); //注册Wire.Write(Channel); //停止i2c通信线。 //传输1-bit读取命令线.requestfrom(addr,1); //读取1个数据字节,如果(wire.abailable()== 1){data = wire.read(); }返回数据。 }/*函数:写入数据以注册输出参数:日期 - >数据查尔斯1至11对应于EIM4和EIM15*/void set_eem(int date,int chal){int channel;开关(CHAL){情况1:频道= 0x04;休息;情况2:频道= 0x05;休息;情况3:频道= 0x06;休息;情况4:频道= 0x07;休息;情况5:频道= 0x08;休息;案例6:频道= 0x0a;休息;情况7:频道= 0x0b;休息;情况8:频道= 0x0c;休息;案例9:频道= 0x0d;休息;案例10:频道= 0x0e;休息;案例11:频道= 0x0f; } DigitalWrite(WP,High); // PIN2总是低延迟(100); //启动I2C传输线。开始传输(ADDR); //设置寄存器Wire.Write(AD5252_EE_RDAC |频道)。 Wire.Write(日期); //停止I2C延迟(100); Wire.EndTransmission();延迟(100); DigitalWrite(WP,低); }/ *函数:读取注册的数据输出参数:CHAL 1至11对应于EIM15对EIM4 */unsigned int red_eem(int chal){unsigned int int data; int通道; SW瘙痒(chal){情况1:频道= 0x04;休息;情况2:频道= 0x05;休息;情况3:频道= 0x06;休息;情况4:频道= 0x07;休息;情况5:频道= 0x08;休息;案例6:频道= 0x0a;休息;情况7:频道= 0x0b;休息;情况8:频道= 0x0c;休息;案例9:频道= 0x0d;休息;案例10:频道= 0x0e;休息;案例11:频道= 0x0f; } //启动I2C Wire.BeginTransmission(ADDR)。 //选择“寄存器” write(AD5252_EE_RDAC |频道)。 //停止i2c通信线。 wire.requestfrom(addr,1); if(wire.abailable()== 1){data = wire.read(); }返回数据。 }
评论前必须登录!
注册