本手冊為MAX5290-MAX5295,MAX5580-MAX5585,MAX5590-MAX5595用戶可編程D/A轉(zhuǎn)換器(DAC)提供詳細(xì)的時序圖和高級編程特性。該系列的每一個器件共享一個非常靈活的3,4或5線串行接口,組成該接口的輸入和輸出信號為:
- SCLK—串行時鐘輸入。根據(jù)不同的配置,數(shù)據(jù)可以在時鐘的上升沿或下降沿,同步輸入或輸出串行接口。
- DIN—串行數(shù)據(jù)輸入。
- CS—低電平有效芯片選擇。除DSP幀同步模式外,對于其他所有模式,CS下降沿對應(yīng)串行接口指令開始,CS上升沿對應(yīng)指令結(jié)束。
- DSP—DSP在上電復(fù)位序列結(jié)束時進(jìn)行采樣,其狀態(tài)決定了為DIN數(shù)據(jù)提供時鐘的SCLK信號的有效沿。連接DSP至DVDD,則SCLK上升沿時數(shù)據(jù)同步輸入,連接DSP至DGND,則SCLK下降沿數(shù)據(jù)同步輸入。DSP也可進(jìn)行有源驅(qū)動,在這種情況下,上電復(fù)位后DSP的第一個上升沿將使能DSP幀同步模式。
- UPIO1/UPIO2—該系列器件均有兩個用戶編程I/O端口(UPIO1和UPIO2),可以配置成包括串行數(shù)據(jù)輸出端口在內(nèi)的多種模式,既可以讀回(DOUTRB),也可以是菊花鏈(DOUTDC0或DOUTDC1)。
該系列器件中的任何一款都支持多種配置方式,如下所示(不限于這些方式):
- 單器件寫操作
- 單器件讀操作
- 菊花鏈模式中,多器件的讀寫操作
- 多器件的直接讀寫操作(非DSP幀同步模式)
- DSP幀同步模式下多器件直接讀寫操作
對單器件的寫操作
串行接口支持使用CS,SCLK和DIN三種輸入的只寫操作。將DSP連至DVDD,SCLK上升沿的同步輸入數(shù)據(jù)。將DSP連至DGND,SCLK下降沿的同步輸入數(shù)據(jù)。DSP在上電復(fù)位周期結(jié)束時被采樣,SCLK時鐘有效沿在檢測到DSP的上升沿或器件斷電前一直有效。圖1是數(shù)據(jù)在上升沿同步輸入時,與器件通信的CS,SCLK,DIN時序圖。將CS置低,DIN同步串行數(shù)據(jù)在SCLK的上升沿進(jìn)入輸入移位寄存器。收到16的整數(shù)倍(如,N*16)個SCLK脈沖后,CS置高,寫入數(shù)據(jù)或指令生效。如果CS在N*16個SCLK周期之前就置高,則寫入無效。
點擊看大圖
圖1. 單器件寫操作—SCLK上升沿數(shù)據(jù)同步輸入
圖2是數(shù)據(jù)在下降沿同步輸入時,與器件通信的CS,SCLK,DIN時序圖。將CS置低,DIN同步串行數(shù)據(jù)在SCLK的下降沿進(jìn)入輸入移位寄存器。收到16的整數(shù)倍(如,N*16)個SCLK脈沖后,CS置高,寫入數(shù)據(jù)或指令生效。如果CS在N*16個SCLK周期之前就置高,則寫入無效。
點擊看大圖
圖2. 單器件寫操作—SCLK下降沿數(shù)據(jù)同步輸入
對單器件的讀操作
該系列器件串行接口可以支持多種讀指令選項。多數(shù)情況下,由讀指令產(chǎn)生的輸出數(shù)據(jù)為8位,這樣總的指令序列為16位(8位指令和8位輸出數(shù)據(jù))。對于DAC數(shù)據(jù)的讀操作,接口從輸入(12位)和所選通道的DAC (12位)寄存器同時輸出數(shù)據(jù)。輸出數(shù)據(jù)為24位,指令序列總長度為32位。從器件種讀取數(shù)據(jù)時,將UPIO1或UPIO2配置為DOUTRB (DOUT為讀回)。接口在上電時采樣DSP輸入,判斷采用哪個時鐘邊沿傳輸來自DOUTRB的串行數(shù)據(jù)。上電時,如果DSP接在DVDD上,數(shù)據(jù)在SCLK的上升沿同步輸入,在SCLK的下降沿同步輸出。上電時,如果DSP接在DGND上,數(shù)據(jù)在SCLK的下降沿同步輸入,在SCLK的上升沿同步輸出。
圖3是數(shù)據(jù)在SCLK上升沿同步輸入時,與器件通信的CS,SCLK,DIN時序圖。將CS置低,在SCLK的上升沿,DIN 8位讀指令同步進(jìn)入輸入移位寄存器。根據(jù)不同的讀取長度,數(shù)據(jù)在下一個8或24 SCLK周期的DOUTRB上出現(xiàn)。24位讀操作需要在8位讀指令后寫兩個額外的NO-OP指令(0xFF),以保證數(shù)據(jù)的最后兩字節(jié)由DOUTRB輸出。DOUTRB輸出數(shù)據(jù)在SCLK的下降沿改變,在SCLK的上升沿有效。整個讀操作過程中,CS一直保持低電平。
點擊看大圖
圖3. 單器件讀操作—SCLK上升沿數(shù)據(jù)同步輸入
圖4是數(shù)據(jù)在SCLK下降沿同步輸入時,與器件通信的CS,SCLK,DIN時序圖。將CS置低,在SCLK的下降沿,DIN 8位讀指令同步進(jìn)入輸入移位寄存器。根據(jù)不同的讀取長度,數(shù)據(jù)在下一個8或24 SCLK周期的DOUTRB上出現(xiàn)。24位讀操作在8位讀指令后需要兩個額外的NO-OP指令(0xFF),以保證數(shù)據(jù)的最后兩字節(jié)由DOUTRB輸出。DOUTRB的輸出數(shù)據(jù)在SCLK的上升沿改變,在SCLK的下降沿有效。整個讀操作過程中,CS一直保持低電平。
點擊看大圖
圖4. 單器件讀操作—SCLK下降沿數(shù)據(jù)同步輸入
對菊花鏈中多器件的寫操作
該系列器件串行接口可以支持多種菊花鏈配置。數(shù)據(jù)在時鐘的上升沿或下降沿同步進(jìn)入鏈上的每一個器件。這樣,鏈上前一個器件輸出的串行數(shù)據(jù)可能在時鐘的任意沿出現(xiàn)。串行接口可提供靈活的應(yīng)用,如需要相同的時鐘相位,或菊花鏈上時鐘相位的交替變化。對一些電路板級的考慮可能會影響如何選擇時鐘方案,如:- 時鐘斜移—如果器件A和器件B之間出現(xiàn)了明顯的時鐘斜移,則可以考慮使用反相邊沿數(shù)據(jù)傳送(如,SCLK上升沿由器件A輸出,SCLK下降沿輸入器件B)。這種方法能夠有效克服時鐘斜移,但是如果沒有進(jìn)行仔細(xì)的電路板設(shè)計,工作在串行接口支持的最大時鐘速率時,該方案會難以實現(xiàn)。
- 時鐘速率—如果必須工作在菊花鏈最大時鐘速率下,可以考慮在整個鏈上采用同一個時鐘沿。但是,采用這種方式前必須仔細(xì)設(shè)計電路板。為保證菊花鏈的正常工作,應(yīng)避免過長的數(shù)據(jù)傳輸線,明顯的器件間的時鐘斜移或者板上條件(溫度,電源等)的大幅度變化等。
- 時鐘占空比—由于數(shù)據(jù)從一個器件傳送到另一個器件時,使用半個時鐘周期,因此,菊花鏈上采用交替的時鐘方案依賴于合理的時鐘信號占空比。如果不仔細(xì)設(shè)計,采用低速但是占空比很高或很低的時鐘時菊花鏈也不能正常工作。
- 低速時鐘或數(shù)據(jù)邊沿—菊花鏈上時鐘信號驅(qū)動能力不足會導(dǎo)致緩慢的上升和下降時間??梢詫⑦@種情況當(dāng)作特殊的時鐘斜移來處理,這樣可能會導(dǎo)致菊花鏈上不同器件的同步時鐘出現(xiàn)在不同的時刻。
在菊花鏈上,第一個器件從總線主機得到DIN,其后的器件從前一個器件的DOUTDC_輸出得到DIN。為使器件A通過串行接口將菊花鏈數(shù)據(jù)傳送到器件B,在接收到16位指令序列后,器件A的CS信號必須保持低電平(沒有上升沿)。DOUTDC_同步輸出數(shù)據(jù)等同于同步輸入DIN數(shù)據(jù)被延時了16個時鐘周期。
菊花鏈上所有器件均在CS上升沿執(zhí)行存儲在串行寄存器的寫指令(對于讀指令參見菊花鏈和回讀互作用一節(jié))。如果在下一個寫指令同步進(jìn)入器件之前,沒有出現(xiàn)CS的上升沿(CS保持低電平),那么新的寫指令將會覆寫輸入移位寄存器中的舊指令。這樣,數(shù)據(jù)可以在鏈上器件間相互傳輸而狀態(tài)不會改變。對于那些不應(yīng)受到影響的器件,對其發(fā)出NO-OP (0xFF)指令。
可以同時控制輸入時鐘沿和輸出時鐘沿,這意味著對于一個工作正常的菊花鏈,數(shù)據(jù)可能需要延時15.5,16或16.5個時鐘周期。CPOL和CPHA控制位設(shè)置一個器件DIN到 DOUTDC_延時,以保證無論器件之間時鐘如何配置,整個菊花鏈都可以正常工作。
CPOL和CPHA同SPI?接口中所描述的定義相似:
- CPOL描述時鐘極性
- CPHA描述在任何給定的序列中,在第一個有效時鐘邊沿之前,是否有引導(dǎo)時鐘邊沿。
表1. DSP,CPOL和CPHA設(shè)置
DSP | CPOL | CPHA | DOUTDC1 (ALWAYS CLOCKED OUT ON RISING EDGE OF SCLK)* |
DOUTDC0 (ALWAYS CLOCKED OUT ON FALLING EDGE OF SCLK)* |
COMMENT |
DGND | 0 | 1 | ? | ? | DIN clocked in on falling edge of SCLK. Power-up state of CPOL/CPHA for this DSP connection. |
DVDD |
0 | 0 | ? | ? | DIN clocked in on rising edge of SLCK. Power-up state of CPOL/CPHA for this DSP connection. |
DGND | 0 | 0 | Invalid | Invalid | This combination is unused. |
DGND | 0 | 1 | Delay of 15.5 clocks from SCLK falling edge (active edge for DIN) to SCLK rising edge (active edge for DOUTDC1) | Delay of 15 clocks from SCLK falling edge (active edge for DIN) to SCLK falling edge (active edge for DOUTDC0) | ? |
DGND | 1 | 0 | Delay of 15.5 clocks from SCLK falling edge (active edge for DIN) to SCLK rising (active edge for DOUTDC1) | Delay of 16 clocks from SCLK falling edge (active edge for DIN) to SCLK falling edge (active edge for DOUTDC0) |
|
DGND | 1 | 1 | Invalid | Invalid | This combination is unused. |
DVDD | 0 | 0 | Delay of 16 clocks from SCLK rising (active edge for DIN) to SCLK rising (active edge for DOUTDC1) | Delay of 15.5 clocks from SCLK rising (active edge for DIN) to SCLK falling (active edge for DOUTDC0) | |
DVDD | 0 | 1 | Invalid | Invalid | This combination is unused. |
DVDD | 1 | 0 | Invalid | Invalid | This combination is unused. |
DVDD | 1 | 1 | Delay of 15 clocks from SCLK rising (active edge for DIN) to SCLK rising (active edge for DOUTDC1) | Delay of 15.5 clocks from SCLK rising (active edge for DIN) to SCLK falling (active edge for DOUTDC0) |
*數(shù)據(jù)總是在SCLK有效沿(DOUTDC0上升沿,DOUTDC1下降沿)同步輸出DOUTDC_。
圖5是在一種菊花鏈配置方式下,寫入多個器件時的CS,SCLK,DIN和DOUTDC0時序圖,其中,鏈上每一個器件的DIN在SCLK上升沿同步輸入,DOUTDC0將數(shù)據(jù)從一個器件傳送到下一個器件。
點擊看大圖
圖5. 菊花鏈—SCLK上升沿數(shù)據(jù)同步輸入
進(jìn)行菊花鏈寫操作時,將CS置低以選中菊花鏈上的所有器件。來自總線主機或前一器件的DOUTDC0的數(shù)據(jù)同步進(jìn)入每一個級聯(lián)器件的DIN。只要CS保持低電平,器件將不受經(jīng)過輸入移位寄存器數(shù)據(jù)的影響。當(dāng)數(shù)據(jù)已在菊花鏈上傳輸時,假設(shè)已有16的整數(shù)倍個(N*16) SCLK脈沖,驅(qū)動CS為高電平將使鏈上所有器件輸入移位寄存器中存儲的DAC指令同時生效。如果在N*16個SCLK周期之前,CS置高,那么鏈上的所有器件將忽略此次寫操作。
圖6是菊花鏈的一種特殊配置方式下,寫入多個器件時的CS,SCLK,DIN和DOUTDC1時序圖,其中,鏈上每一個器件的DIN在SCLK下降沿同步輸入,DOUTDC1將數(shù)據(jù)從一個器件傳送到下一個器件。
點擊看大圖
圖6. 菊花鏈—SCLK下降沿數(shù)據(jù)同步輸入
進(jìn)行菊花鏈寫操作時,將CS置低以選中菊花鏈上的所有器件。來自總線主機或前一器件的DOUTDC1的數(shù)據(jù)同步進(jìn)入每一個級聯(lián)器件的DIN。只要CS保持低電平,器件將不受經(jīng)過輸入移位寄存器數(shù)據(jù)的影響。當(dāng)數(shù)據(jù)已在菊花鏈上傳輸時,假設(shè)已有16的整數(shù)倍個(N*16) SCLK脈沖,驅(qū)動CS為高電平將使鏈上所有器件輸入移位寄存器中存儲的DAC指令同時生效。如果在N*16個SCLK周期之前,CS置高,那么鏈上的所有器件將忽略此次寫操作。
菊花鏈實例
下面的例子建立了由3個器件(A,B和C)組成的菊花鏈。器件A離總線主機最近。每一個器件與其他兩個配置均不同。
- CS置低以配置器件A。從總線主機發(fā)出指令至器件A將其UPIO1配置為DOUTDC0 (指令1)。該指令存儲在器件A的輸入移位寄存器中。將CS置高,執(zhí)行存儲在器件A輸入移位寄存器中的指令。器件A配置完畢。
- CS置低以配置器件B。從總線主機發(fā)出經(jīng)過器件A的指令將器件B的UPIO2配置為DOUTDC1 (指令2)。收到這16位寫指令后,器件B的輸入移位寄存器在隨后的時鐘周期內(nèi)立即更新。
- 從總線主機發(fā)出指令至器件A覆寫其輸入移位寄存器數(shù)據(jù),這樣器件A的狀態(tài)保持不變(指令3)。如果需要進(jìn)行特殊的操作(如配置UPIO1,改變速率位等),可用任何指令替代器件A中的NO-OP。器件B的輸入移位寄存器在這16個時鐘周期內(nèi)被前一指令進(jìn)行更新。將CS置高,執(zhí)行存儲在器件A和器件B輸入移位寄存器中的指令。器件A和器件B配置完畢。
- CS置低以配置器件C。從總線主機發(fā)出指令將器件C的UPIO1配置為DOUTDC1 (指令4),該指令將經(jīng)過器件A和器件B。
- 從總線主機發(fā)出的指令將器件B的輸入移位寄存器數(shù)據(jù)覆寫,這樣器件B的狀態(tài)保持不變(指令5),該指令經(jīng)過器件A。器件B的輸入移位寄存器被步驟5的指令進(jìn)行更新。
- 從總線主機發(fā)出的指令將器件A的輸入移位寄存器數(shù)據(jù)覆寫,這樣器件A的狀態(tài)保持不變(指令6)。器件B的輸入移位寄存器被步驟6的指令進(jìn)行更新。器件C的輸入移位寄存器被步驟5的指令進(jìn)行更新。將CS置高,執(zhí)行存儲在器件A、器件B和器件C輸入移位寄存器中的指令。
STEP | DEVICE A (FROM BUS MASTER) |
DEVICE B (FROM DOUTDC_ OF DEVICE A) |
DEVICE C (FROM DOUTDC_ OF DEVICE B) |
RISING EDGE OF CS? |
1 | COMMAND 1 | - | - | YES |
2 | COMMAND 2 | - | - | NO |
3 | COMMAND 3 | COMMAND 2 | - | YES |
4 | COMMAND 4 | - | - | NO |
5 | COMMAND 5 | COMMAND 4 | - | NO |
6 | COMMAND 6 | COMMAND 5 | COMMAND 4 | YES |
菊花鏈和回讀的互作用
該系列器件的每一個串行接口都有2個UPIO端口。一個可以配置為回讀(DOUTRB),另一個可作為菊花鏈?zhǔn)褂?DOUTDC1或DOUTDC0)。這種組合是非常有效的,大多數(shù)情況下,回讀和菊花鏈都可以正常工作,但是有兩種情況,這種配置會帶來一些影響。具有數(shù)據(jù)回讀的菊花鏈例子
該例使用兩個器件:A和B,A離總線主機最近。如果器件A有DOUTRB和DOUTDC_,器件B有DOUTRB,那么以下步驟可以有效執(zhí)行:
- 將CS置低。從總線主機發(fā)出8位讀指令(指令1)至器件A。保持CS低電平,不要將其置高。
- 從總線主機發(fā)出一些其他的讀或?qū)懼噶?指令2)至器件A。器件B的輸入移位寄存器被指令1更新。執(zhí)行指令1的有效輸出數(shù)據(jù)在器件A的DOUTRB出現(xiàn)。將CS置高,完成該指令序列。
- 執(zhí)行指令1的有效輸出數(shù)據(jù)在器件B的DOUTRB出現(xiàn)。器件A執(zhí)行指令2。
相互作用的第二個例子是只從器件A (距離總線主機最近)讀取24位DAC,該指令可以正確執(zhí)行。除了鏈上的第一個器件外,24位讀信號同菊花鏈不兼容。這是因為當(dāng)數(shù)據(jù)輸出至DOUTDC_時,鏈上第一個器件將24位讀信號轉(zhuǎn)換為NO-OP。同樣,一個24位讀信號是32位的總指令長度,這同菊花鏈的16位指令序列不兼容。
對多器件的直接讀、寫操作
如圖7和圖8所示,可以通過一個共享的3+N線串行接口對多器件進(jìn)行讀或?qū)懖僮鳌是共享串行接口的器件數(shù)量,同時也是片選線之和,這是由于每個器件都有自己的CS。讀寫操作遵從前面章節(jié)中的協(xié)議。SCLK,DIN和DOUTRB信號對所有的器件都相同。該方法同菊花鏈的兩點主要不同為1)每一個器件都有自己的CS和2) DIN對所有器件都相同。當(dāng)連接多個器件至一個共享串行接口時,可以按照以下要求進(jìn)行:
- 同時選中多個芯片,然后通過一個單步寫操作將相同的數(shù)據(jù)廣播至幾個器件。
- 為避免競爭,數(shù)據(jù)回讀時,只能有一個器件的DOUTRB有效。對于沒有選中的器件,DOUTRB為高阻抗,允許其他器件驅(qū)動總線。
- 連接在單個信號線(SCLK,DIN,DOUTRB)上的多器件負(fù)載減慢了串行接口的速度。速度減慢的程度取決于PCB布線和共享總線上的器件數(shù)量等外部因素。
- 由于CS線通常由微控制器或DSP端口來驅(qū)動,因此接入多個器件需要額外的軟件開銷。這和一個DAC應(yīng)用情況不同,在DAC應(yīng)用情況下,CS可以一直置低,或通過一個DSP基于硬件的幀同步信號來控制。
點擊看大圖
圖7. 多器件讀操作—SCLK上升沿數(shù)據(jù)同步輸入
點擊看大圖
圖8. 多器件讀操作—SCLK下降沿數(shù)據(jù)同步輸入
DSP幀同步模式
DSP幀同步模式的讀寫操作同前面幾節(jié)所述的協(xié)議相似,但是有兩點主要的不同。第一,寫操作的開始以DSP的下降沿為參考,而不是CS信號(在DSP幀同步模式下,CS必須置低以便選中該器件)。第二,16位DAC數(shù)據(jù)或?qū)懼噶钤贒SP下降沿之后的16個SCLK周期內(nèi)有效。在DSP幀同步模式下,不需要其他模式下執(zhí)行指令的CS上升沿條件。注意,由于器件不需要CS上升沿對16位數(shù)據(jù)進(jìn)行操作,而是直接將數(shù)據(jù)傳送到下一個器件,因此DSP幀同步模式同菊花鏈模式不兼容。
幀同步模式下,可以通過一個共享4+N線串行接口對多器件進(jìn)行讀或?qū)懖僮鳌是共享串行接口的器件數(shù)量,同時也是片選線之和,這是由于每個器件都有自己的CS。在上電后DSP的第一個上升沿,器件進(jìn)入DSP幀同步模式。如果不使用這種模式,如前節(jié)所示,上電時應(yīng)將DSP連至DVDD或DGND。
DSP幀同步模式的主要優(yōu)點是一個硬件信號(幀同步)控制接入串行總線上多個器件DSP的時序。由于DAC操作時序的關(guān)鍵因素不再是軟件控制片選信號,因此該模式具有性能上的優(yōu)勢。一個充分利用這種特性的例子是多芯片CODEC,其共同的幀同步信號以同一速率驅(qū)動(永久使能) DAC和ADC。DSP軟件在一次將DAC數(shù)據(jù)輸入緩沖區(qū),并將緩沖區(qū)的全部ADC數(shù)據(jù)讀出,并允許串行接口硬件處理全雙工數(shù)據(jù)傳送。
點擊看大圖
圖9. DSP幀同步模式—多路讀操作
評論
查看更多