DS1845/DS1855数字电位器的接口方案

接口定义

111人已加入

描述

        本应用笔记介绍了一种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命令,无需主机控制,即可实现数字电位器的递增、递减调节,或将其设置在数字电位器的中间值。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分