1、MCP4142XXX 系列数字电位器及其应用MCP4142XXX Series Digital Potentiometer and Application范 腾 王富东 (苏州大学机电工程学院 ,江苏 苏州 215021)摘 要介绍了微芯公司 MCP4142XXX 系列数字电位器的结构与特点 ,分析了其接口方式 ,给出了与微处理器的接口程序 ,并用不同的方式实现了数字电位器的输出调整 。 最后给出了一个基于该系列数字电位器音量调节的应用实例 。关键词 :数字电位器 ,MCP4142XXX,SPI 接口 ,dsPIC30FAbstractThis paper introduces the str
2、ucture and characteristics of MCP4142XXX series digital potentiometers of Microchip,IncThe interface programs with the microprocessor based on the analysis of its interface are given in order to adjust the out-put of the digital potentiometer from different waysFinally,an application example based o
3、n the series of digital potentiome-ter was designed for the volume control systemKeywords:digital potentiometers,MCP4142XXX,SPI interface,dsPIC30F数字电位器 (Digital Potentiometer)亦称数控可编程电阻器 (Digitally Controlled Potentiometers,简称 DCP),是一种代替传统机械电位器 (模拟电位器 )的新型 CMOS 数字 、模拟混合信号处理的集成电路 。 国际上生产数字电位器的厂家很多 ,主要
4、有 Microchip、Catalyst、Intersil、ADI、Maxim 等公司 。 这些公司在针对总电阻值 、调节精度 、接口方式等方面推出了丰富的产品线 。 其中 ,Microchip 公司的 MCP4142XXX 系列数字电位器接口灵活 ,使用方便 ,适合工业及民用产品应用 。1 MCP4142XXX 系列数字电位器的结构与特点MCP4142XXX 系列数字电位器采用低功耗 CMOS 技术 ,静态工作电流最大值为 1A, 最大 INL 和 DNL 误差为 1LSB。该系列数字电位器在工业级 SPI 接口控制下线性变化 , 分辨率可达 257 阶 ,并有 10k、50k 和 100k
5、 三种电阻值选择 。图 1 MCP4142XXX 系列数字电位器引脚排列MCP41XXX 是单通道器件 ,MCP42XXX 是双通道器件 ,引脚如图 1 所示 。 其中 PW 为电位器滑动端 ;PA、PB 为电位器的两个终端 ;SCK、SI 为 SPI 总线的串行时钟和串行数据线 。 同时MCP42XXX 系列 SPI 接口包括 SI 和 SO 引脚 ,允许使用菊花链连接多个器件 。 软件关断功能可将 PA 端与电阻阵列断开 ,同时将抽头连接到 PB 端 。 此外 ,双通道 MCP42XXX 还有一个引脚 ,可通过硬件实现上述相同功能 。在关断模式期间 ,能更改抽头控制寄存器的内容 ,电位器在
6、退出关断模式后将使用新值 。 在上电时滑动端复位到半量程(80H),芯片运行时也可以通过 RS(复位 )引脚执行硬件复位并将滑动端返回半量程 。2 MCP4142XXX 系列数字电位器与 MCU 的接口21 MCP4142XXX 系列数字电位器指令格式MCP4142XXX 系列数字电位器的指令由命令和数据两字节组成 (如图 2 DCP SI 所示 )。本文中 ,数字电位器都单独工作 ,取其中的电位器 0 为例 ,图中省略 SO 口时序 。图 2 电位器与 dsPIC30F 系列 MCU SPI 接口时序图命令字节的格式如表 1 所示 :表 1 命令字节的格式命令字节中命令选择位 C1、C0 和
7、选择位 P1、P0 的功能如表 2 和表 3 所示 :表 2 命令选择位的功能当电位器 0 单独工作时 ,命令字节通常为写为 0x11,即将数据字节内的值写入电位器寄存器中从而改变输出阻值 ; 数据MCP4142XXX 系列数字电位器及其应用104工业控制计算机 2011 年第 24 卷第 9 期字段为 8 位数据 ,决定了滑动端处于 257 级中的哪一个位置 。MCP4142XXX 系列数字电位器工作时所有命令都是通过将 CS 拉低 ,并随后在时钟上升沿将命令字节和紧跟的数据字节移入 16 位移位寄存器完成的 。命令会在 CS 上升后执行 。数据都是在时钟上升沿读取的 ,如图 2 所示 。
8、器件会记录 CS 处于低电平时的时钟数 (上升沿 ),如果时钟数不是 16 的倍数 ,则中止所有操作 。22 SPI 接口程序要严格的保证 CS 处于低电平时的时钟数为 16 的倍数 ,为此 ,首先分析 dsPIC30F 系列的 SPI 模块工作流程 。dsPIC30F 系列 MCU 的 SPI 模块包括 SCK1、SDO1、SDI1和 SS 四个引脚 , 分别对应于标准 SPI 的 SCK、MOSI、MISO 和SS 。本文中的 SPI 模块工作于 16 位数据方式下 ,当模块被设置为主控工作模式并使能后 ,待发送数据就会写入 SPI1BUF 寄存器 (用于缓冲待发送数据和已接收数据 , 由
9、 SPI1TXB 和SPI1RXB 寄存器共享 )同时将 SPITBF 位置位 。当然 SPI1TXB 的内容转移到移位寄存器 SPI1SR(用于将数据移入和移出 SPI 端口 )后 ,模块将 SPITBF(SPI 接收缓冲器满状态位 )清零 。 然后一组 16 个时钟脉冲将 16 位发送数据从移位寄存器 SPI1SR 移出到 SDO1 引脚 ,同时将 SDI1 引脚的数据移入 SPI1SR。由 图 2 SPI1BUF 时 序 可 以 看 出 , 待发送数据进入SPI1BUF 寄存器再转移到移位寄存器的时间很短 ,所以无法通过 SPITBF 位来确定 CS 处于低电平时的时钟数 。要确保 CS
10、 处于低电平时的时钟数为 16 的倍数 ,必须引入中断 。 从图 2 SPI1IF 时序可以看出 ,当 SPI1SR 将 16 位数据移到SDO1 引脚 ,完成后将产生一个中断 ,并且将置位 SPI1IF。 所以需用 SPI 中断来确保 CS 处于低电平时的时钟数为 16 的倍数 。按照 SPI 协议 ,发送与接收工作是同时进行的 ,虽然此处只需用到 SPI 的发送功能 , 数据从移位寄存器 SPI1SR 移出到SDO1 引脚的同时 SDI1 引脚的数据也被移入 SPI1SR。 然后SPIRBF 位会被硬件置位表明接收缓冲器满 ,如果下一次 SPI 模块从 SPI1SR 传输数据到 SPI1R
11、XB 时 ,SPIRBF 仍置位 ,即程序未曾读取过 SPI 模块 ,SPIROV(接收溢出标志位 )置位 ,表明产生了溢出 。 经实验 ,SPIROV 位处于置位状态时无法进入中断子程序 , 导致无法正常使用中断功能 。 所以需在程序中手动清零SPIROV 位 。SPI 接口程序如下 : SPI 中断程序voidattribute(interrupt)SPI1Interrupt()邀 清除中断标志位SPI1IF0; 清除溢出标志位SPI1STATbitsSPIROV 0; 告诉主程序产生中断 ,确保 CS 保持 16 个时钟低电平SPIflag1;妖Void WrtieSPI()邀 清除 S
12、PI1 中断标志 ,中断优先级为 7,使能中断ConfigIntSPI1(0x000f); SPI1CON0x013c,使能 SPI 模块OpenSPI1(0x053c,0x8000);Delay1s();CS0;Delay(); 写入数字电位器命令字节和数据字节 WriteSPI1 (Resis-tanceValue);SPIflag0; 产生中断后 ,跳出循环 ,将 CS 置一while(SPIflag0);CS1;Delay();妖23 模拟 SPI 接口程序对于没有 SPI 接口的 MCU 可以用三个 IO 口与电位器CS 、SI 和 SCK 口相连 , 数据传输严格按照 MCP414
13、2XXX 系列数字电位器的工作时序 ,就可以达到模拟 SPI 接口的效果 。 需要注意的是 ,数据输出后要稳定一段时间 ,以便数字电位器能够采集到正确的数据 。模拟接口程序如下 :Void Write DCP ()邀 写入 MCP41010 命令字节 for(i0x80;i选0;i1)邀SCK0;if(iCommandByte)SDO1;else SDO0;Delay();SCK1;妖 写入数字电位器数据字节 for(i0x80;i选0;i1)邀SCK0;if(iDataByte) SDO1;else SDO0;Delay();SCK1;妖妖3 应用实例图 3 系统原理图图 3 是自行开发的某
14、台高压电气设备仿真系统的原理图 ,该设备要求在升压的过程中产生事先录制的电晕放电声 。 其中音量控制模块的核心采用的就是数字电位器 。 通过调节数字电位器的输出值 , 使数字录音机输出的音频信号与升压过程中电晕放电声音的大小同步 。经过现场实用 ,采用数字电位器 MCP41010 控制电晕放电声音达到了预期的效果 。参考文献1沙占友 数字电位器设计原理与应用 M北京 :机械工业出版社 ,20072刘和平 ,郑群英 ,江渝 ,等 dsPIC 通用数字信号控制原理及应用 基于 dsPIC30F 系列 M北京 :北京航空航天大学出版社 ,20023DS70067EKMicrochip Technology Inc,20104DS11195CCNK Microchip Technology Inc, 2006收稿日期 :2011427表 3 数字电位器选择位的功能105