当前位置: 首页 > news >正文

AD5165(超低功耗逻辑电平数字电位器)芯片的详细用法

目录

一、硬件连接

1. 引脚功能与核心连接(8 引脚 TSOT-8 封装,顶视图)

2. 关键外围电路设计

(1)电源电路:必加旁路电容

(2)地处理:数字地与模拟地单点共地

(3)ESD 防护

3. 上电顺序(核心!避免二极管误导通)

4. 3 线数字接口时序要求

二、软件配置

1. 通信协议与数据格式

(1)协议特性

(2)8 位数据格式

2. 编程核心步骤(以 MCU 为例)

3. 不同工作模式的编程计算

(1)变阻器模式(调节 RWB 或 RWA)

(2)电位器模式(调节 VW,分压器)

4. 关键注意事项

三、典型应用电路参考

四、Arduino 环境下 ESP32-PICO 的 AD5165 参考代码

1.硬件连接说明

2.Arduino 参考代码


一、硬件连接

需重点关注电源电路、引脚功能匹配、3 线数字接口时序、上电顺序四大核心,结合芯片特性(如 ESD 保护、电流限制)避免损坏或功能异常。

1. 引脚功能与核心连接(8 引脚 TSOT-8 封装,顶视图)

先明确各引脚定义,再对应连接控制器(如 MCU)、电源及外部电路,引脚功能与连接要求如下表:

引脚号引脚名功能描述硬件连接要求
1W抽头端子(可编程电阻 / 电压输出端)连接负载或检测电路;电压范围0V ≤ V_W ≤ V_DD,极性无限制;零刻度(代码 0x00)时R_WB=100Ω脉冲电流≤20mA,连续电流≤5mA(避免内部开关损坏)
2V_DD正电源供电电压2.7V ~ 5.5V;必须串联电源旁路电容(0.01~0.1μF 陶瓷电容 + 1~10μF 钽 / 电解电容),靠近引脚减少纹波
3GND数字地与模拟地单点连接(避免地弹噪声);需低电阻、低电感布线,优先连接系统地平面
4CLK串行时钟输入(上升沿触发)连接 MCU 的 SPI_CLK 或 GPIO(模拟时钟);时钟频率≤25MHz,高 / 低脉冲宽度≥20ns(满足时序要求)
5SDI串行数据输入(MSB 先传)连接 MCU 的 SPI_MOSI 或 GPIO(模拟数据);数据建立时间≥5ns、保持时间≥5ns(确保 CLK 上升沿采样正确)
6CS片选输入(高有效,区别于 AD5160)连接 MCU 的 GPIO;高电平时使能芯片接收数据,8 位数据传完后拉低,拉低时数据加载到抽头寄存器(核心使能信号);空闲时建议拉低(减少逻辑功耗)
7B电阻 B 端变阻器模式:接电源 / 地或开路;电位器模式:接参考地或低电位端;电压范围0V ≤ V_B ≤ V_DD,极性无限制
8A电阻 A 端变阻器模式:接电源 / 地或开路;电位器模式:接输入电压(如 5V)或高电位端;电压范围0V ≤ V_A ≤ V_DD,极性无限制

2. 关键外围电路设计

(1)电源电路:必加旁路电容

为抑制电源纹波和瞬态干扰,需在V_DDGND之间并联两类电容,布局时靠近芯片引脚:

  • 高频去耦:0.01~0.1μF 多层陶瓷电容(如 0402 封装,X7R 材质);
  • 低频滤波:1~10μF 钽电容或铝电解电容(低 ESR 类型,应对大电流瞬变)。
(2)地处理:数字地与模拟地单点共地

芯片的GND为数字地,若系统存在模拟电路(如W端输出检测),需将数字地与模拟地在电源入口处单点连接,避免数字噪声耦合到模拟端,导致调节精度下降。

(3)ESD 防护

芯片内置数字输入(CLK/SDI/CS)和电阻端子(A/B/W)的 ESD 保护电路,但操作时仍需注意:

  • 焊接或调试时,设备(烙铁、示波器)需接地;
  • 避免人体静电(如戴防静电手环),防止 4000V 以上静电放电损坏芯片。

3. 上电顺序(核心!避免二极管误导通)

芯片内部 ESD 保护二极管会钳位A/B/W端电压(不超过V_DDGND),若上电顺序错误,可能导致V_DD被意外供电,影响系统电路。正确顺序

  1. 先接GND(确保地电位稳定);
  2. 再接V_DD(2.7~5.5V);
  3. 最后加载数字输入(CLK/SDI/CS)和A/B/W端电压;
  • 注:A/B/W端电压与数字输入的上电顺序无严格要求,只要在V_DD/GND之后即可。

4. 3 线数字接口时序要求

通信需满足以下时序参数(V_DD=5V±10%-40℃~125℃),否则数据传输错误:

时序参数符号最小值最大值单位说明
时钟频率f_CLK-25MHzCLK 周期≥40ns(高 + 低电平)
时钟高 / 低脉冲宽度t_CH/t_CL20-nsCLK 高、低电平持续时间
数据建立时间t_DS5-nsSDI 数据在 CLK 上升沿前稳定
数据保持时间t_DH5-nsSDI 数据在 CLK 上升沿后稳定
CS 建立时间t_CSS15-nsCS 拉高后到第一个 CLK 上升沿的时间
CS 低脉冲宽度t_CSW40-ns数据加载时 CS 拉低的持续时间

二、软件配置

基于 3 线数字接口(类 SPI,CS 高有效),软件核心是按时序传输 8 位数据,实现 256 个抽头位置的编程,需关注数据格式、编程步骤及不同模式的计算。

1. 通信协议与数据格式

(1)协议特性
  • 类 SPI 协议,无命令字节,直接传输 8 位抽头位置数据
  • 区别于标准 SPI:CS 为高有效(AD5160 为低有效,二者 Pin-to-pin 兼容但 CS 极性相反);
  • CLK 上升沿触发数据采样,SDI 需按MSB(最高位)先传顺序发送。
(2)8 位数据格式

8 位数据对应 256 个抽头位置(0x00~0xFF),数据位定义如下:

位 7(B7)位 6(B6)位 5(B5)位 4(B4)位 3(B3)位 2(B2)位 1(B1)位 0(B0)
MSB(2⁷)2⁶2⁵2⁴LSB(2⁰)
  • 数据范围:0x00(抽头靠近 B 端)~0xFF(抽头靠近 A 端);
  • 上电初始状态:默认中刻度(数据 0x80,128),对应电阻 / 电压的中间值。

2. 编程核心步骤(以 MCU 为例)

需严格遵循时序要求,步骤如下:

  1. 使能芯片:将 CS 引脚拉为高电平(仅高电平时,芯片接收 CLK 和 SDI 信号);
  2. 传输 8 位数据
    • 从数据的MSB(B7)开始,在每个 CLK 上升沿前,将当前数据位(0/1)写入 SDI 引脚;
    • 每传输 1 位,触发 1 次 CLK 上升沿(确保数据被采样),重复 8 次,完成全部 8 位数据传输;
  3. 加载数据:8 位数据传输完成后,将 CS 引脚拉为低电平,此时数据从串行寄存器加载到抽头寄存器,电阻(RWB/RWA)或电压(VW)立即更新;
  4. 空闲状态:CS 保持低电平(减少逻辑功耗,避免误触发)。

3. 不同工作模式的编程计算

AD5165 支持变阻器模式(调节电阻)和电位器模式(调节分压电压),需根据公式计算目标数据。

(1)变阻器模式(调节 RWB 或 RWA)

核心是通过数据D(0~255)编程WB(或WA)之间的电阻,R_AB=100kΩ(固定),R_W=50Ω(抽头接触电阻)。

  • W-B 端电阻(RWB):抽头靠近 B 端时电阻小,公式:R_WB(D) = (D / 256) * R_AB + 2*R_W示例:D=0x00(0)→ RWB=100Ω;D=0xFF(255)→ RWB≈99710Ω;D=0x80(128)→ RWB≈50100Ω。
  • W-A 端电阻(RWA):抽头靠近 A 端时电阻小,公式:R_WA(D) = ((256 - D) / 256) * R_AB + 2*R_W示例:D=0x00(0)→ RWA=100100Ω;D=0xFF(255)→ RWA=490Ω。
(2)电位器模式(调节 VW,分压器)

A接高电位(如 5V),B接低电位(如 GND),W输出分压电压,精度受电阻比值影响(温漂仅 15ppm/℃,优于变阻器模式)。

  • 简化计算(忽略 R_W)V_W(D) = (D / 256) * V_A + ((256 - D) / 256) * V_B示例:V_A=5V,V_B=0V,D=0x80(128)→ V_W=2.5V。
  • 精确计算(含 R_W)V_W(D) = (R_WB(D)/R_AB) * V_A + (R_WA(D)/R_AB) * V_B

4. 关键注意事项

  • 数据完整性:必须传输完整 8 位数据,少传 / 多传会导致抽头位置错误;
  • 时序裕量:软件中延迟时间需大于手册最小时序(如示例中用 1μs,远大于 15ns/20ns,避免 MCU 主频高导致时序不满足);
  • 低功耗优化:空闲时 CS 保持低电平,此时芯片待机电流仅 50nA(典型值),适合电池供电场景;
  • 电流限制:RWB≤1kΩ 时,W-B 端连续电流≤5mA,避免内部开关过热损坏(如 D=0x00 时 RWB=100Ω,V_WB≤0.5V 时电流≤5mA)。

三、典型应用电路参考

以 “5V 供电,电位器模式调节输出电压” 为例,硬件连接如下:

  • V_DD:接 3.3V/5V 电源,并联 0.1μF 陶瓷电容 + 10μF 钽电容;
  • GND:接系统地,与模拟地单点共地;
  • A:接 5V(输入电压);
  • B:接 GND;
  • W:接负载或 ADC 输入(检测输出电压);
  • CLK/SDI/CS:接 MCU 的 GPIO(如 STM32 的 PB1/PB2/PB0);
  • 软件调用AD5165_WriteData(0x80)W端输出≈2.5V。

四、Arduino 环境下 ESP32-PICO 的 AD5165 参考代码

1.硬件连接说明

需严格遵循文档中 AD5165 的引脚功能()、电源要求()及时序参数(),ESP32-PICO 与 AD5165 的连接如下表:

ESP32-PICO 引脚AD5165 引脚功能对应(文档依据)连接说明
GPIO184(CLK)串行时钟输入(上升沿触发)()数字输出模式,时钟频率≤25MHz
GPIO195(SDI)串行数据输入(MSB 先传)()数字输出模式,数据需在 CLK 上升沿前稳定
GPIO216(CS)片选输入(高有效)()数字输出模式,初始拉低(空闲低功耗)()
3.3V/5V2(VDD)正电源(2.7V~5.5V)()建议接 ESP32 的 3.3V,需并联 0.1μF 陶瓷电容 + 10μF 钽电容()
GND3(GND)数字地()与 ESP32 的 GND 共地,需单点连接模拟地(若有)()
外部 5V8(A)电阻 A 端(电位器模式高电位)()电位器模式下接输入高电平,电压≤VDD()
GND7(B)电阻 B 端(电位器模式低电位)()电位器模式下接 GND,与 A 端形成分压()
负载 / ADC 输入1(W)抽头端子(输出端)()输出电压 / 电阻,零刻度时 RWB=100Ω,电流≤5mA()

2.Arduino 参考代码

// 1. 定义AD5165与ESP32-PICO的连接引脚(需与硬件接线一致)
const int AD5165_CLK = 18;  // CLK引脚(文档1-76:引脚4,串行时钟输入)
const int AD5165_SDI = 19;  // SDI引脚(文档1-76:引脚5,串行数据输入)
const int AD5165_CS  = 21;  // CS引脚(文档1-76:引脚6,片选输入,高有效)// 2. 初始化函数:配置引脚模式及时序基础
void AD5165_Init() {pinMode(AD5165_CLK, OUTPUT);pinMode(AD5165_SDI, OUTPUT);pinMode(AD5165_CS, OUTPUT);// 文档1-25:空闲时CS拉低,减少逻辑功耗;初始状态为中刻度(0x80)digitalWrite(AD5165_CS, LOW);digitalWrite(AD5165_CLK, LOW);  // 时钟初始低电平AD5165_WriteData(0x80);         // 上电初始化为中刻度(文档1-232:上电默认中刻度)
}// 3. 核心通信函数:向AD5165写入8位抽头数据(文档1-162/1-166:MSB先传,CS拉低加载数据)
// data:抽头数据(0x00~0xFF,对应256个位置,文档1-176:8位数据解码选择抽头)
void AD5165_WriteData(uint8_t data) {digitalWrite(AD5165_CS, HIGH);  // 步骤1:CS拉高使能芯片(文档1-166:CS高时接收数据)delayMicroseconds(1);           // 满足CS建立时间t_CSS≥15ns(文档1-57),留裕量// 步骤2:传输8位数据(MSB先传,从bit7到bit0,文档1-162)for (int i = 7; i >= 0; i--) {digitalWrite(AD5165_CLK, LOW);  // 时钟拉低,准备数据delayMicroseconds(1);           // 满足数据建立时间t_DS≥5ns(文档1-57)// 提取当前位(MSB优先),写入SDIuint8_t bit = (data >> i) & 0x01;digitalWrite(AD5165_SDI, bit);digitalWrite(AD5165_CLK, HIGH); // 时钟上升沿,采样数据(文档1-166:上升沿触发)delayMicroseconds(1);           // 满足时钟高脉冲宽度t_CH≥20ns(文档1-57)}// 步骤3:CS拉低,加载数据到抽头寄存器(文档1-166:CS拉低时数据生效)digitalWrite(AD5165_CLK, LOW);   // 时钟恢复低电平delayMicroseconds(1);            // 满足CS低脉冲宽度t_CSW≥40ns(文档1-57)digitalWrite(AD5165_CS, LOW);    // 回到空闲低功耗状态
}// 4. 示例:根据目标电阻(RWB)计算抽头数据(文档1-182:RWB(D) = (D/256)*R_AB + 2*R_W)
// R_AB=100kΩ(文档1-6),R_W=50Ω(文档1-179),返回对应8位数据D(0x00~0xFF)
uint8_t AD5165_CalcDataFromRWB(uint32_t targetRWB) {// 公式变形:D = [(targetRWB - 2*R_W) * 256] / R_ABuint32_t R_W = 50;uint32_t R_AB = 100000;int32_t D = ((targetRWB - 2*R_W) * 256) / R_AB;// 数据范围限制(0x00~0xFF,文档1-176:256个抽头位置)if (D < 0) D = 0;if (D > 255) D = 255;return (uint8_t)D;
}// 5. 示例:根据目标电压(VW)计算抽头数据(文档1-202:VW(D) = (D/256)*VA + ((256-D)/256)*VB)
// 假设VA=5V、VB=0V(电位器模式),返回对应8位数据D(0x00~0xFF)
uint8_t AD5165_CalcDataFromVW(float targetVW) {float VA = 5.0;  // A端输入电压(需与硬件一致)float VB = 0.0;  // B端输入电压(需与硬件一致)// 公式变形:D = (targetVW - VB) * 256 / (VA - VB)int32_t D = (targetVW - VB) * 256 / (VA - VB);// 数据范围限制(0x00~0xFF,文档1-176)if (D < 0) D = 0;if (D > 255) D = 255;return (uint8_t)D;
}// 6. 初始化ESP32引脚及AD5165
void setup() {Serial.begin(115200);  // 串口调试(可选)AD5165_Init();         // 初始化AD5165(默认中刻度0x80)Serial.println("AD5165 Init Complete (Default: Midscale 0x80)");
}// 7. 主循环:演示不同模式的调节(可根据需求修改)
void loop() {// 示例1:电位器模式,输出2.5V(中刻度,文档1-202:VA=5V时,D=128→VW=2.5V)uint8_t dataMid = 0x80;AD5165_WriteData(dataMid);Serial.print("Set to Midscale: Data=0x");Serial.print(dataMid, HEX);Serial.println(" (VW≈2.5V, VA=5V)");delay(3000);  // 延时3秒// 示例2:电位器模式,输出1.25V(D=64,文档1-202:(64/256)*5V=1.25V)uint8_t dataLow = 0x40;AD5165_WriteData(dataLow);Serial.print("Set to Low Scale: Data=0x");Serial.print(dataLow, HEX);Serial.println(" (VW≈1.25V, VA=5V)");delay(3000);// 示例3:变阻器模式,设置RWB=50100Ω(中刻度,文档1-189:D=128→RWB=50100Ω)uint32_t targetRWB = 50100;uint8_t dataRWB = AD5165_CalcDataFromRWB(targetRWB);AD5165_WriteData(dataRWB);Serial.print("Set RWB=");Serial.print(targetRWB);Serial.print("Ω: Data=0x");Serial.println(dataRWB, HEX);delay(3000);
}

http://www.dtcms.com/a/391540.html

相关文章:

  • 38、多模态模型基础实现:视觉与语言的智能融合
  • 租赁合同管理系统如何使用?功能深度解析
  • 构建高质量RAG知识库,文档解析破解AI应用的数据质量难题
  • CS课程项目设计17:基于Face_Recognition人脸识别库的课堂签到系统
  • 跨平台开发地图:客户端技术选型指南 | 2025年9月
  • 隐私保护 vs 技术创新:AI 时代数据安全的边界在哪里?
  • 如何在网页开发中建立数字信任?
  • 网站模版 网站建站 网站设计源码模板
  • 访问飞牛NAS的时候为啥要加:5667?不能隐藏它吗?啥是重定向?HTTPS为啥是红的?
  • 端口切换导致 mcp 和 gimini cli 连接失败
  • (论文速读)KL-CLIP:零采样异常分割的K均值学习模型
  • FlexE实践笔记
  • 搭建Redis群集模式
  • 视觉SLAM第13讲:实践,设计SLAM系统
  • 【论文阅读】WebWalker: Benchmarking LLMs in Web Traversal
  • 页面水印记录
  • 快速学习kotlin并上手 Android 开发指南
  • Linux进程控制(下):进程等待和进程替换
  • 如何检查数据库是否处于恢复模式
  • AI一周资讯 250913-250919
  • Livox-mid-360录制的.lvx2文件转化为.bag文件(TBC)
  • 【 svn】自动重试: cleanup + update
  • 有哪些Java学习书籍推荐?
  • 机动车登记证 OCR 识别:让车辆业务办理驶入 “快车道“
  • 在QT中使用FFmpeg实现录屏功能
  • 使用redisson实现延迟队列
  • 算法面试(1)-----两阶段检测器(如Faster R-CNN)和单阶段检测器(如YOLO、SSD)的区别与优劣?
  • 10cm钢板矫平机:一条“钢铁传送带”上的隐形战场
  • 数据结构与算法3:链式最基本的表示和实现——单链表
  • redisson延迟队列最佳实践