X9241數(shù)字電位器的原理及在DSP中的應(yīng)用
X9241是Xicor公司生產(chǎn)的一種集成數(shù)字電位器。它在單一芯片上集成了4個10kΩ數(shù)字電位器,每個電位器的滑動端共有64個離散的調(diào)節(jié)節(jié)點,并有4個8bit的E2PROM數(shù)據(jù)寄存器以及一個滑刷控制寄存器(WCR)。用戶可以通過相應(yīng)指令使電位器的WCR(滑刷控制寄存器)與某個數(shù)據(jù)寄存器相關(guān)聯(lián),也可以直接控制WCR以達(dá)到改變電位器滑動端位置的目地。X9241芯片具有I2C總線接口,可以實現(xiàn)寄存器映射、改變滑刷位置以及進(jìn)行電位器級聯(lián)等操作。X9241采用20引腳雙列直插封裝,其引腳排列如圖1所示。其中VWi(i=0~3)為四個獨立的10kΩ電位器的滑動端;VLi(i=0~3)分別為四個電位器的兩個終端;A3,A2,A1,A0為X9241芯片的設(shè)備地址;SCL,SDA分別為I2C接口的串行時鐘和串行數(shù)據(jù)線。X9241的工作電壓為5V。
1.1 X9241的內(nèi)部結(jié)構(gòu)
X9241的內(nèi)部結(jié)構(gòu)如圖2所示,從圖中可以看出,一個X9241芯片內(nèi)含有:I2C總線接口、SDA串行數(shù)據(jù)線、SCL串行時鐘線以及4個POT(電位器)。每個POT有4個8bit的E2PROM數(shù)據(jù)寄存器和一個WCR滑刷控制寄存器。
1.2 X9241的控制方式
需要說明的是,雖然X9241具有I2C總線接口,但由于X9241采用特殊的3字節(jié)指令結(jié)構(gòu),而普通I2C硬件都是雙字節(jié)格式。因此最好采用軟件模擬I2C總線時序。
1.3 X9241的主要參數(shù)
X9241的主要性能參數(shù)如下:
●SCK,SCL或其它地址輸入端相對于Vss的電壓為-1~+7V;
●VH或VL相對于Vss的電壓范圍為±8V;
●△V=|VH-VL|為16V;
●X9241工作電壓范圍為5V+10%。
因為VH或VL相對于VSS的電壓范圍是±8V,所以X9241可以不受數(shù)字電路0~+5V電源窗口的制約而廣泛地應(yīng)用于各種具有正負(fù)電源的模擬電路之中。
2 X9241的指令字格式
X9241的讀/寫指令均由三段組成(如圖3所示),每段均有一個字節(jié):第一段為從屬設(shè)備地址;第二段為指令字節(jié);第三段為數(shù)據(jù)。 ?
第一字段的前4位為設(shè)備類型標(biāo)識,對于X9241,其固定值為0101,后4位是設(shè)備地址(A3,A2,A1,A0),這4位的0,1取值取決于芯片上的A3-A0引腳是接GND還是接VCC。
第二字段描述了操作類型和操作對象。其中前4位是指令代碼I3~I(xiàn)0,后4位是操作對象P1、P0和R1、R0。其中P1,P0是4個電位器的選擇編碼,R1,R0是每個電位器的4個寄存器的選擇編碼。X9241的指令集如表1所列。表中的1/0表示數(shù)據(jù)為1或0,N/A為無效位。
第三字段是8bits的數(shù)據(jù)段,它的前兩位CM、DW是控制位,其中CM是級聯(lián)模式控制位,當(dāng)CM為0時,為正常模式,當(dāng)CM為1時,該電位器與序號比它高一級的電位器級聯(lián)。比如,若WCR2的CM為1,表示電位器2就與電位器3級聯(lián)。DW是電位器滑動端使能控制位。當(dāng)DW為0時,為正常模式,當(dāng)DW為1時,該電位器的滑動端失效,即滑動端處于絕緣懸浮狀態(tài)。CM和DW配合使用可以實現(xiàn)電位器的級聯(lián),并可保證級聯(lián)電位器在滑動時只有一個有效滑動端。
X9241的三字節(jié)指令序列傳輸示意圖如圖4所示,X9241還有一種遞增/遞減的控制方式,由于不常用,在此不再陳述。一個完整的X9241讀/寫時序包括以下幾個部分:
?。?)起始位。以SCL為高電平,SDA出現(xiàn)下跳沿為起始標(biāo)志;
(2)傳送X9241的從屬設(shè)備地址字段;
?。?)接收X9241返回的ACK(應(yīng)答)信號,它是在SCL為高電平期間,SDA線上為低電平的狀態(tài);
?。?)向X9241傳送指令字段;
?。?)接收X9241返回的ACK信號;
(6)如果是‘寫’方式,則向X9241發(fā)送8bit數(shù)據(jù)。并接收ACK信號;如果是‘讀’方式,則準(zhǔn)備接收X9241將要返回的8bit數(shù)據(jù),并在接收完成后,向X9241發(fā)送ACK信號;
?。?)停止位。以SCL為高電平,SDA出現(xiàn)上跳沿為I2C傳輸?shù)耐V箻?biāo)志。
3 在TMS320F206型DSP中的應(yīng)用
圖5是筆者在氨氮傳感器中使用X9241的部分電路示意圖。在這個電路中,用X9241上的POT0和POT3代替原模擬電路中的兩個10kΩ機械電位器來完成調(diào)整倍率和零點的任務(wù)。DSP的I/O2,I/O3分別連接到SCL和SDA端口上。該電路中,X9241的A3獳0均接地,所以它的設(shè)備地址是0000。因此在對這個芯片的電位器進(jìn)行讀/寫操作時,第一字段應(yīng)當(dāng)是01010000,即50h(DSP的十六進(jìn)制數(shù))。
圖6和圖7分別是用IO2和IO3模擬I2C總線時,對X924進(jìn)行讀、寫的子程序流程圖。
4 結(jié)束語
使用數(shù)字電位器的主要優(yōu)勢是定位精度高,不受機械震動影響,并可以通過程控來實現(xiàn)半自動化調(diào)節(jié)。另外,由于數(shù)字電位器的VH、VL電壓窗口較寬,因而能在許多場合取代機械模擬電位器。使用數(shù)字電位器的缺點是不能連續(xù)調(diào)節(jié)。由于每個數(shù)字電位器只有64檔,所以對于離散多檔位調(diào)節(jié)場合,用數(shù)字電位器很方便。而在需要連續(xù)調(diào)節(jié)的場合,似乎不如連續(xù)可調(diào)的模擬電位器方便。但是設(shè)計時可以采取以下方法進(jìn)行補償:
?。?)多芯片級聯(lián)使用,以增加有效檔位;
?。?)兩個數(shù)字電位器配合使用,一個作為粗調(diào),一個作為細(xì)調(diào),兩者搭配,可以得出許多種適合不同需要的組合。