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