第一字段的前4位为设备类型标识,对于X9241,其固定值为0101,后4位是设备地址(A3,A2,A1,A0),这4位的0,1取值取决于芯片上的A3-A0引脚是接GND还是接VCC。
第二字段描述了操作类型和操作对象。其中前4位是指令代码I3~I0,后4位是操作对象P1、P0和R1、R0。其中P1,P0是4个电位器的选择编码,R1,R0是每个电位器的4个寄存器的选择编码。X9241的指令集如表1所列。表中的1/0表示数据为1或0,N/A为无效位。
第三字段是8bits的数据段,它的前两位CM、DW是控制位,其中CM是级联模式控制位,当CM为0时,为正常模式,当CM为1时,该电位器与序号比它高一级的电位器级联。比如,若WCR2的CM为1,表示电位器2就与电位器3级联。DW是电位器滑动端使能控制位。当DW为0时,为正常模式,当DW为1时,该电位器的滑动端失效,即滑动端处于绝缘悬浮状态。CM和DW配合使用可以实现电位器的级联,并可保证级联电位器在滑动时只有一个有效滑动端。
X9241的三字节指令序列传输示意图如图4所示,X9241还有一种递增/递减的控制方式,由于不常用,在此不再陈述。一个完整的X9241读/写时序包括以下几个部分:
(1)起始位。以SCL为高电平,SDA出现下跳沿为起始标志;
(2)传送X9241的从属设备地址字段;
(3)接收X9241返回的ACK(应答)信号,它是在SCL为高电平期间,SDA线上为低电平的状态;
(4)向X9241传送指令字段;
(5)接收X9241返回的ACK信号;
(6)如果是‘写’方式,则向X9241发送8bit数据。并接收ACK信号;如果是‘读’方式,则准备接收X9241将要返回的8bit数据,并在接收完成后,向X9241发送ACK信号;
(7)停止位。以SCL为高电平,SDA出现上跳沿为I2C传输的停止标志。
3 在TMS320F206型DSP中的应用
图5是笔者在氨氮传感器中使用X9241的部分电路示意图。在这个电路中,用X9241上的POT0和POT3代替原模拟电路中的两个10kΩ机械电位器来完成调整倍率和零点的任务。DSP的I/O2,I/O3分别连接到SCL和SDA端口上。该电路中,X9241的A3獳0均接地,所以它的设备地址是0000。因此在对这个芯片的电位器进行读/写操作时,第一字段应当是01010000,即50h(DSP的十六进制数)。
图6和图7分别是用IO2和IO3模拟I2C总线时,对X924进行读、写的子程序流程图。
4 结束语
使用数字电位器的主要优势是定位精度高,不受机械震动影响,并可以通过程控来实现半自动化调节。另外,由于数字电位器的VH、VL电压窗口较宽,因而能在许多场合取代机械模拟电位器。使用数字电位器的缺点是不能连续调节。由于每个数字电位器只有64档,所以对于离散多档位调节场合,用数字电位器很方便。而在需要连续调节的场合,似乎不如连续可调的模拟电位器方便。但是设计时可以采取以下方法进行补偿:
(1)多芯片级联使用,以增加有效档位;
(2)两个数字电位器配合使用,一个作为粗调,一个作为细调,两者搭配,可以得出许多种适合不同需要的组合。