收藏 分销(赏)

数字电位器X9241原理及与单片机接口.pdf

上传人:xrp****65 文档编号:5626106 上传时间:2024-11-15 格式:PDF 页数:9 大小:198.11KB 下载积分:10 金币
下载 相关 举报
数字电位器X9241原理及与单片机接口.pdf_第1页
第1页 / 共9页
数字电位器X9241原理及与单片机接口.pdf_第2页
第2页 / 共9页


点击查看更多>>
资源描述
沈阳单片机开发网帮您精确掌握电子器件的使用细节 数字电位器 X9241 原理及与单片机的接口设计 数字电位器 X9241 原理及与单片机的接口设计 作者:湘潭工学院信息与电气工程系 黄采伦 摘 要:I2C 总线数字电位器是 Xicor 公司推出的数字电位器中较有代表性的一种,它集许多先进特性于一体,倍受使用 者瞩目;本文介绍其特性、工作原理及与单片机的接口技术。关键词:数字电位器 I2C 总线 单片机 程序模块 1、引言 1、引言 随着 I2C 总线应用的日益广泛,兼容 I2C 总线的接口芯片及存储器的品种也越来越多,其中数字电位器以其调节方便、使用寿命长、受物理环境的影响小、性能稳定等特点,已被广大电子工程技术人员所认识;尤其是在音频产品、控制领域等的应用越来越受到人们的重视。I2C 总线数字电位器是美国 Xicor 公司推出的 X9系列数字电位器中较有代表性的一种。它是把几个 E2POT 非易失性数字电位器集成在一起的单片 CMOS 微电路,具有二线串行 I2C 总线接口,易于软件控制,可直接读出、写入滑动端位置,可级联使用等先进特性。本文以 X9241 为例说明。2、结构原理 2、结构原理 X9241 内部包括一个 I2C 接口和四个数字电位器。每个数字电位器由电阻阵列及与之对应的滑动端计数寄存器 WCR、四个 8 位数据寄存器 R0R3 等部分构成。其引脚配置如图 1 所示。图 1X9241 引脚配置图 其中 VW0、VW1、VW2 及 VW3 分别为四个电位器的滑动端;VL0、VL1、VL2 及 VL3 分别为四个电位器的低端;VH0、VH1、VH2 及 VH3 分别为四个电位器的高端;A0、A1、A2 及 A3 为地址线(用来设置从属地址低 4 位);SDA 及 SCL 分别为串行数据和串行时钟;VCC 及 VSS 分别为电源和地 2.1 电阻阵列 每个电阻阵列由 63 个串联连接的分立的电阻段组成。每个电阻阵列的物理终端等效于机械电位器的固定端(VH 和 VL 输入端)。每个阵列的 VH 和 VL 以及每个电阻段之间的接点(即抽头)通过 FET 开关连接滑动输出端 VW;而滑动端 VW 在电阻阵列中的位置由 WCR 控制。如果将四个电阻阵列中的两个、三个或四个串联起来可构成 127、190 或 253 个抽头的数字电位器。1沈阳单片机开发网帮您精确掌握电子器件的使用细节 X9241 电位器电阻阵列的阻值种类根据后缀的不同而不同。当分别为 Y、W、U 时,则电阻阵列分别为四个 2k、四个 10k、四个 50k 的数字电位器;而当为 M 时,其内部四个数字电位器阻值分别为 2k、10k、10k、50k。2.2 滑动端计数寄存器 WCR 滑动端计数寄存器 WCR 实际上是一个 6 位带有译码输出的计数器,用来实现选择六十四选一的 FET 开关的位置,即控制滑动端在电阻阵列中的位置。WCR 是一种易失性存贮器,其内容可通过指令改写,上电时装入数据寄存器 R0 的内容(注意:此值可能与断电时的值不同)。2.3 数据寄存器 数据寄存器的内容可由用户读出或写入,其内容可传输到滑动计数寄存器 WCR 以设置滑动端的位置。每个数字电位器有四个 8 位非易失性数据寄存器 R0R3。2.4 串行接口 X9241 支持 I2C 串行双向总线的定向规约:实际应用时 X9241 为从器件,由主机启动数据的传输,并为发送和接收操作提供时钟。数据线 SDA 和时钟线 SCL 的信号间关系(起始条件、终止条件及应答条件)见图 2。3、器件寻址及指令结构 3、器件寻址及指令结构 3.1 器件寻址 在起始后,主器件输出它所要访问的从器件地址,该地址的格式如下:0 1 0 1 A3A2A1A0对于 X9241 来说,这个地址的高 4 位固定为:0101,低 4 位由物理的器件地址 A0A3输入端状态决定。这样,X9241 把串行数据流与地址输入端的状态进行比较,若所有位都比较成功,则该器件在总线上作出一个应答响应。3.2 指令结构 主器件在发送完起始条件及器件地址,且从器件作出应答之后,送到 X9241 的下一个字节包括指令及寄存器指针的信息。其格式如下:I3 I2 I1I0P1P0R1R0其中低 4 位中前两位(R0 和 R1)指出四个寄存器中的一个,后两位(P0 和 P1)选择四个电位器中的哪一个;高 4 位决定指令,X9241 共有 9 条指令见表 1。表 1X9241 指令 指令 I3I2 I1 I0 P1 P0 R1 R0 功能说明 Read WCR 1 0 0 1 1/01/0 读 P1、P0 指定的滑动端计数寄存器内容 Write WCR 1 0 1 0 1/01/0 写新值到 P1、P0 指定的滑动端计数寄存器中 Read Data Register 1 0 1 1 1/01/01/01/0读 P1、P0 和 R1、R0 指定的寄存器内容 Write Data Register 1 1 0 0 1/01/01/01/0写新值到 P1、P0 和 R1、R0 指定的寄存器中 XFT Data 1 1 0 1 1/01/01/01/0传输由 P1、P0 和 R1、R0 指定的寄存器内 2沈阳单片机开发网帮您精确掌握电子器件的使用细节 Register to WCR 容到与它相关的 WCR 中 XFT WCRto Data Register 1 1 1 0 1/01/01/01/0传输由 P1、P0 指定的 WCR 的内容到 R1、R0指定的寄存器中 Global XFT Data Register to WCR 0 0 0 1 1/01/0传输由 R1、R0 指定的所有四个数据寄存器的内容到与它们相应的 WCR 中 Global XFT WCRto Data Register 1 0 0 0 1/01/0传输所有 WCR 中的内容到与它们相应的由R1、R0 指定的数据寄存器中 Increment/Decrement Wiper 0 0 1 0 1/01/0 使能增加/减少由 P1、P0 指定的滑动端计数寄存器(WCR)的内容 9 条指令中包括四条两字节指令,四条三字节指令和一条增加/减少指令。(1)两字节指令:这四条两字节指令用作在 WCR 与数据寄存器中的一个之间交换数据;这种传输可以发生在四个电位器之一与它们的一个辅助寄存器之间,或全局性地发生在所有四个电位器与它们的一个辅助寄存器之间;操作时序见图 2(a)。(2)三字节指令:这四条指令是在主机和 X9241 之间传输数据,无论是主机与一个数据寄存器或是主机直接与 WCR 间都可以;这些指令是读、写 WCR(即读出、写入选定电位器的当前滑动端的位置)或读、写数据寄存器(即读出、写入选定的非易失性寄存器的内容);操作时序见图 2(b)。(3)增加/减少指令:这条指令与其它的指令不同,一旦这条指令发出且 X9241 已用一个应答来响应后,主机才能够以时钟来触发选定的滑动端升或降一个电阻段;这个操作的命令时序见图 2(c)。3沈阳单片机开发网帮您精确掌握电子器件的使用细节 4、电位器的串联方式及控制 4、电位器的串联方式及控制 X9241 提供一个把阵列串联起来的机构,可以把一个阵列的六十三个电阻元件与一个相邻阵列的电阻元件串联起来,其控制位在三字节的指令中。对于三字节的指令,其数据字节包括用来定义滑动端位置的 6 位(LSB)加上高 2 位:CM(串联方式 Caseade Mode)和 DW(禁止滑动端 Disable Wipe)。CM 位的状态用来使能或禁止串联方式;当 WCR 的 CM 位被置为“0”时,则电位器是正常工作方式;当 CM 位置“1”,则与它相邻的高序号的电位器串联连接。例如电位器 WCR1 的位 7 被置为“1”,则 POT1 与 POT2 被串联使用。DW 位的状态用于使能或禁止滑动端,当 WCR 的 DW 位被置为“0”(或“1”)时,则滑动端被使能(或被禁止),禁止时该滑动端是电气上隔离并且是浮空的,当工作于串联方式时,被串联阵列的 VH、VL 及滑动端 VW 这三个输出端必须在电气上与外部连接,除了一个滑动端被使能以外,其余的滑动端必须被禁止。用户可以通过改变 WCR 的内容来改变滑动端的位置。5、与 GMS90/97 系列单片机的接口 5、与 GMS90/97 系列单片机的接口 图 3 是 X9241 与 GMS90/97 系列单片微机之间的一种有代表性的连接,笔者曾将该连接方法成功地用于音频系统和智能仪表中,作为增益反馈电阻,这样可在宽范围内由软件编程来调整放大器的增益。在实际应用系统设计中,采用 I2C 总线数字电位器可以收到降低成本、简化电路的效果;然而在数字电位器带来硬件设计简化的同时,却增加了软件的工作量,原因是对其访问需要一套严格而复杂的操作;假如有了接口程序模块,使用 I2C 总线数字电位器就很方便了。为此,本文给出笔者已成功应用的 I2C 总线数字电位器与 GMS90/97 系列单片机的接口程序模块,读者几乎不需改动就可采用;该程序模块略加修改还可用于串行E2PROM 的读写。图 3GMS90/97 系列单片机与 X9241 的典型连接 在图 3 的连接中,GMS97C51 单片机的时钟为 6MHz。由于只连接一片 X9241 数字电位器,则地址 A3A2A1A0=0000,故 X9241 的器件地址固定为 50H。调用时将直接位 02H 用作滑动端 4沈阳单片机开发网帮您精确掌握电子器件的使用细节 的增减位,命令字节放 30H 单元,要写入的数据放 32H 单元;程序执行结束将读出的数据放31H 单元。其模块程序清单如下:E2POT 驱动程序模块 RW9241:SCL BIT P1.4 SDA BIT P1.5 INCDEC BIT 02H ;滑动端的增减位 DEVICE DATA 50H ;器件地址 COMMAND EQU 30H ;命令字节 RD_DATA EQU 31H ;读出的数据 WR_DATA EQU 32H ;写入的数据 ACALL START_IC ;置开始 MOV A,#DEVICE ACALL WR_BYTE ;写器件地址 MOV A,COMMAND ;根据命令及识别字散转 SWAP A ANL A,#0FH CJNE A,#09H,XRW1 ;指令的高 4 位为 09H 表示 R_WCR AJMP R_WCR XRW1:CJNE A,#0AH,XRW2 ;指令的高 4 位为 0AH 表示 W_WCR AJMP W_WCR 5沈阳单片机开发网帮您精确掌握电子器件的使用细节 XRW2:CJNE A,#0BH,XRW3 ;指令的高 4 位为 0BH 表示 R_ROM(读寄存器)AJMP R_ROM XRW3:CJNE A,#0CH,XRW4 ;指令的高 4 位为 0CH 表示 W_ROM(写寄存器)AJMP W_ROM XRW4:CJNE A,#0DH,XRW5 ;指令的高 4 位为 0DH 表示将寄存器中的值传送到 WCR AJMP ROM_WCR XRW5:CJNE A,#0EH,XRW6 ;指令的高 4 位为 0EH 表示将 WCR 中的值传送到寄存器 AJMP WCR_ROM XRW6:CJNE A,#01H,XRW7 ;指令的高 4 位为 01H 表示全局寄存器中值传送到 WCR AJMP A_ROM_WCR XRW7:CJNE A,#08H,XRW8 ;指令的高 4 位为 08H 表示全局 WCR 中值传送到寄存器 AJMP A_WCR_ROM XRW8:CJNE A,#02H,XRW9 ;指令的高 4 位为 02H 表示指定的 WCR 增/减 AJMP INC_DEC XRW9:ACALL STOP_IC ;命令执行完毕,STOP 并返回 RETI R_WCR:MOV A,COMMAND ;读 WCR 子程序 ACALL WR_BYTE ACALL RD_BYTE MOV RD_DATA,A ACALL ACK_IC AJMP XRW9 W_WCR:MOV A,COMMAND 6沈阳单片机开发网帮您精确掌握电子器件的使用细节 ;写 WCR 子程序 ACALL WR_BYTE MOV A,WR_DATA ACALL WR_BYTE AJMP XRW9 R_ROM:MOV A,COMMAND ;读寄存器子程序 ACALL WR_BYTE ACALL RD_BYTE MOV RD_DATA,A ACALL ACK_IC AJMP XRW9 W_ROM:MOV A,COMMAND ;写寄存器子程序 ACALL WR_BYTE MOV A,WR_DATA ACALL WR_BYTE AJMP XRW9 ROM_WCR:MOV A,COMMAND ;寄存器中数据送 WCR 子程序 ACALL WR_BYTE AJMP XRW9 WCR_ROM:MOV A,COMMAND ;WCR 中数据送寄存器子程序 CALL WR_BYTE AJMP XRW9 A_ROM_WCR:MOV A,COMMAND ;全局寄存器中数据送 WCR 子程序 ACALL WR_BYTE AJMP XRW9 A_WCR_ROM:MOV A,COMMAND ;全局 WCR 中数据送寄存器子程序 ACALL WR_BYTE AJMP XRW9 INC_DEC:MOV R7,#63 MOV A,COMMAND 7沈阳单片机开发网帮您精确掌握电子器件的使用细节 ;指定的 WCR 增/减子程序 ACALL WR_BYTE JB INCDEC,WCRINC CLR SDA SETB SCL JMP IDC WCRINC:CLR SCL SETB SDA IDC:CLR SCL SETB SCL DJNZ R7,IDC AJMP XRW9 START_IC:SETB SDA ;开始子程序 SETB SCL CLR SDA CLR SCL RET WR_BYTE:MOV B,#08 ;写字节子程序,共写 8 位 WR_BYTE1:CLR SCL RLC A ;向左移位至 CY MOV SDA,C ;数据输出 SETB SCL DJNZ B,WR_BYTE1 CLR SCL SETB SDA SETB SCL JB SDA,$;检测 X9241E 的应答 CLR SCL RET RD_BYTE:MOV B,#08 ;读字节子程序,共读 8 位 8沈阳单片机开发网帮您精确掌握电子器件的使用细节 RD_BYTE1:SETB SCL MOV C,SDA RLC A CLR SCL DJNZ B,RD_BYTE1 RET STOP_IC:CLR SDA ;停止子程序 SETB SCL SETB SDA CLR SCL CLR SDA RET ACK_IC:CLR SDA ;应答子程序 SETB SCL CLR SCL RET 参考文献:1No,nvolatile Digital Potentiometer Data Book.Xicor.1996.02 2 詹树仁.GMS90 及 GMS97 系列单片机的工作原理及应用.武汉力源电子股份有限公司,1998.08 3 张积东等.单片机 51/98 开发与应用.北京电子工业出版社,1994.01 9
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服