AD5272可变电阻

产品简介

  1. 单通道、1024/256位分辨率
  2. 标称电阻:20 kΩ50 kΩ100 kΩ
  3. 标称电阻容差误差:±1%(最大值)
  4. 50次可编程(50-TP)游标存储器
  5. 可变电阻器模式下的温度系数:5 ppm/
  6. 2.7 V5.5 V单电源供电
  7. 双电源供电:±2.5 V±2.75 V(交流或双极性工作模式)
  8. IIC兼容接口

引脚功能简介

引脚编号

引脚名称

描述

1

VDD

正电源。此引脚应通过0.1 μF陶瓷电容和10 μF电容去耦。

2

A

RDAC的A端。VSS ≤ VA ≤ VDD。

3

W

RDAC的游标端。VSS ≤ VW ≤ VDD。

4

VSS

负电源。对于单电源应用,应连接到0 V。此引脚应通过0.1 μF陶瓷电容和10 μF电容去耦。

5

EXT_CAP

外部电容。应在EXT_CAP和VSS之间连接一个1 μF电容。此电容的额定电压必须≥7 V。

6

GND

接地引脚,逻辑地基准点。

7

RESET

硬件复位引脚。以50-TP存储器寄存器的内容更新RDAC寄存器。出厂默认加载中量程,直至第一个

50-TP游标存储器位置被编程。RESET为低电平有效。若未使用,则将RESET连接至VDD。

8

SDA

串行数据线。它与SCL线配合使用,将数据输入或输出16-bit输入寄存器。它是一种双向开漏数据线,

应通过一个外部上拉电阻上拉至电源。

9

SCL

串行时钟线。该引脚与SDA线配合使用,将数据输入或输出16位输入寄存器。

10

ADDR

三态地址输入。将两个最低有效位(位A1、位A0)设为7位从机地址(参见表11)。

原理图

器件地址

ADDR

A1

A0

7-Bit

GND

1

1

0101111

VDD

0

0

0101100

NC

1

0

0101110

指令简介

指令编号

解释

0

NOP:无操作。

1

将串行寄存器数据内容写入RDAC

2

读取RDAC游标寄存器的内容。

3

存储游标设置:RDAC设置存储到50-TP中。

4

软件复位:利用最后一个50-TP存储器存储的值来刷新RDAC

5

在下一帧中从SDO输出读取50-TP的内容。

6

读取最后一次50-TP编程存储器位置的地址。

7

将串行寄存器数据内容写入控制寄存器。

8

读取控制寄存器的内容。

9

软件关断。D0 = 0;正常模式。D0 = 1;关断模式

详情可以参见其数据手册中的说明

阻值计算方法

对于AD5272

RWA(D) = D / 1024 * RWA

对于AD5274

RWA(D) = D / 256 * RWA

其中:

D为载入10/8RDAC寄存器的二进制代码的十进制等

效值。

RWA是端到端电阻。

相关程序

AD5272.h代码

#ifndef __AD5272__
#define __AD5272__
#include "main.h"
unsigned char AD5272WriteInstruction(unsigned char * Instruction) ;
unsigned char AD5272WriteCmd(unsigned char Instruction, unsigned int nData);
unsigned char AD5272ReadInstruction(unsigned char * Instruction);
unsigned int AD5272ReadInt16(void);
void AD5272WriteRDAC(unsigned int nRDAC);
unsigned int AD5272ReadRDAC(void) ;
void AD5272Res50TOP(void);
#endif

AD5272.c代码

unsigned char AD5272WriteInstruction(unsigned char * Instruction) {
    IIC_Start();
    IIC_Send_Byte(0x5E);
    if(!IIC_Wait_Ack()) return 1;
    IIC_Send_Byte(Instruction[0]);
    if(!IIC_Wait_Ack()) return 2;
    IIC_Send_Byte(Instruction[1]);
    if(!IIC_Wait_Ack()) return 3;
    IIC_Stop();
    return 0;
}

unsigned char AD5272WriteCmd(unsigned char Instruction, unsigned int nData) {
    unsigned char ucData[2];
    ucData[0] = (unsigned char)((Instruction<< 2) | (nData >> 8));
    ucData[1] = (unsigned char)(nData & 0xff);
    return AD5272WriteInstruction(ucData);
}

unsigned char AD5272ReadInstruction(unsigned char * Instruction) {
    IIC_Start();
    IIC_Send_Byte(0x5F);
    if(!IIC_Wait_Ack()) return 1;
    //IIC_Wait_Ack();
    Instruction[1] = IIC_Read_Byte(0x00);
    IIC_Ack();
    Instruction[0] = IIC_Read_Byte(0x00);
    IIC_NAck();
    IIC_Stop();
    return 0;
}

unsigned int AD5272ReadInt16(void) {
    unsigned char ucData[2];
    unsigned int nNumber;
    AD5272ReadInstruction(ucData);
    nNumber = ucData[1] & 0x3;
    nNumber = (nNumber << 8) + ucData[0];
    return nNumber;

}

void AD5272WriteRDAC(unsigned int nRDAC) {
    AD5272WriteCmd(0x1, nRDAC);
}

unsigned int AD5272ReadRDAC(void) {
    AD5272WriteCmd(0x2, 0x0);
    return AD5272ReadInt16();
}

void AD5272Res50TOP(void) {
    AD5272WriteCmd(0x7, 0x3);
}

主程序代码

#include "main.h"
Int main(void){
  AD5272Res50TOP();
AD5272WriteRDAC(200);// R = 200/1024 * RAW
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值