本应用笔记介绍了一种DS1845或DS1855非易失数字电位器的简单接口方案,利用Microchip?的PIC12F509实现。
硬件设置
图1所示原理图描述了按键与微控制器的连接,也说明了IC接口的实现方案。
三个瞬态按键开关分别用于递增(UP)、递减(DWN)和中间值(MID)设置。按下按键时,开关迫使对应的微控制器通用I/O (GP0、GP1和GP3)口置低。因为微控制器内部有上拉电阻(可选),可以确切选择这些I/O口。如果微控制器工作在低电流休眠模式,IO口的电平变化也能产生唤醒中断信号。另一输入开关为单刀双掷开关,连接到微控制器的GP2引脚,通过软件编程选择POT0和POT1。
SDA、SCL和LED连接到GP5、GP4和GP0。SDA和SCL具有4.7kΩ上拉电阻,直接与数字电位器的通信接口连接。LED和MID瞬态开关共用GP0引脚。大部分时间段,GP0作为输入引脚,按下MID按键时将GP0拉低。然而,如果按下其它开关的任何一个或两个同时按下,PIC?输出低电平,点亮LED。这种情况下,LED将在MID按下时被点亮,其它按键按下时,LED由PIC驱动。R1、R2、R3可选,使用PIC12F509时并不需要这些电阻。
图2给出了估DS1845/DS1855时的特定连接方式。跳线器用来选择地址总线,隔离开所使用的电源VCC (VDD)以及SDA和SCL。
图1.PIC12F509接口威廉希尔官方网站
图2.DS1845/DS1855数字电位器与PIC控制器的连接
固件说明
这个项目的固件采用汇编语言编写,由MPLAB IDE (7.31版)进行编译。该编译软件可以从Microchip免费获得。整个软件占用的指令空间低于512字节(闪存),数据空间低于14字节(RAM)。
指令分为5个模块:初始化、读操作、递增调节、递减调节、中间值设置。固件简单地以连续轮询检测输入引脚进行循环。因为软件的固有延迟和软件处理逻辑限制,采用了开关去抖,减少噪声引起开关的误操作。
一旦PIC电源上电或从休眠状态唤醒(如果休眠状态使能),将运行初始化模块。初始化模块运行后,为相应的寄存器、标志位及变量赋值。执行这些指令后,从循环中调用读操作或写操作,通过I?C接口与数字电位器通信。
数字电位器的I?C读操作仅发生在RD_FLAG标志置位时。初始化期间标志位被置位,此后,任何按键操作将改写数字电位器的数值。数字电位器的电阻值改变后或器件开启后,执行一次I?C读操作;如果没有按下UP、DWN或MID按键,总线上不会发生通信操作。例如:如果数字电位器用来控制电源校准,这时接通按键控制器可实现在线编程。当前的数字电位器抽头位置将在执行I?C写命令之前读取。I?C写指令完成后,RD_FLAG将重新置位,通过I?C读取新的数字电位器数值。
运行UP、DWN和MID模块后将执行读操作。运行这些模块时,对应的引脚被拉至低电平;一旦检测到引脚的高电平状态,将立即退出相应的程序模块,不会产生任何I?C通信。如果检测到低电平状态,软件将按照逻辑流程执行相应的程序模块。
可以从Maxim的FTP网站下载程序源代码(.asm文件)。
功能说明
该项目固件和硬件提供几种不同操作,对DS1845/DS1855数字电位器的抽头位置进行编程。开关和LED的功能如下:
POT0/1 (选择触发开关) 该开关选择下一个循环需要控制的数字电位器。改变开关S4的状态选择POT0或POT1,这将产生I?C读操作,不会影响LED。
点击MID、UP或DWN按键(< 400ms) 按下其中一个按键,所选择的数字电位器的抽头位置将递增(UP)、递减(DWN)或设置为中间值(MID)。执行I?C写操作时,LED将马上点亮;I?C读操作将在下一循环产生。
按下并保持UP或DWN按键(> 400ms) 按下并保持UP或DWN按键时,所选择的数字电位器将进入快速递增或递减模式。数字电位器的抽头位置将连续变化,直到释放按键或达到最大/最小值。执行I?C写操作时,LED将点亮,并在释放按键之前保持点亮状态。释放按键后,将在下一循环执行I?C读操作。
按下并保持UP按键,然后点击DWN按键按下并保持UP按键,所选择的数字电位器的抽头位置将开始递增。然后,在UP按键仍处于按下状态时,点击DWN按键,抽头位置将直接置于最大电阻位置。LED始终处于点亮状态,直到释放按键。释放按键后,将在下一循环执行I?C读操作。
按下并保持DWN按键,然后点击UP按键按下并保持DWN按键,所选择的数字电位器的抽头位置开始递减。在DWN按键按下的同时,点击UP按键,所选择电位器抽头位置将直接置于最小电阻值0x00。LED始终处于点亮状态,直到释放按键。释放按键后,将在下一循环执行I?C读操作。
LED闪烁3次 PIC上电初始化或当看门狗定时器(使能情况下)引起系统复位时,LED将闪烁3次。
LED连续快速闪烁发生I?C通信故障时,LED将连续闪烁。故障解除后,LED将恢复正常状态。通过检测器件地址是否正确、是否连接了I?C总线进行故障排查。
结论
本应用笔记介绍了一种DS1845/DS1855接口方案,利用简单的高性价比控制器实现。按键输入将被转化成I?C命令,无需主机控制,即可实现数字电位器的递增、递减调节,或将其设置在数字电位器的中间值。