设计指南 3189

MAX5290-MAX5295,MAX5580-MAX5585,MAX5590-MAX5595用户可编程DAC程序员手册


摘要 : 本程序员手册提供MAX5290-MAX5295,MAX5580-MAX5585,MAX5590-MAX5595用户可编程D/A转换器(DAC)的详细时序图和高级编程特性。

本手册为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)。
详细的时序规范和器件配置信息请参考MAX5290-MAX5295, MAX5580-MAX5585MAX5590-MAX5595数据资料。

该系列器件中的任何一款都支持多种配置方式,如下所示(不限于这些方式):
  • 单器件写操作
  • 单器件读操作
  • 菊花链模式中,多器件的读写操作
  • 多器件的直接读写操作(非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上升沿数据同步输入
点击看大图

图1. 单器件写操作—SCLK上升沿数据同步输入

图2是数据在下降沿同步输入时,与器件通信的CS,SCLK,DIN时序图。将CS置低,DIN同步串行数据在SCLK的下降沿进入输入移位寄存器。收到16的整数倍(如,N*16)个SCLK脉冲后,CS置高,写入数据或指令生效。如果CS在N*16个SCLK周期之前就置高,则写入无效。

图2  单器件写操作—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上升沿数据同步输入
点击看大图

图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下降沿数据同步输入
点击看大图

图4. 单器件读操作—SCLK下降沿数据同步输入

对菊花链中多器件的写操作

该系列器件串行接口可以支持多种菊花链配置。数据在时钟的上升沿或下降沿同步进入链上的每一个器件。这样,链上前一个器件输出的串行数据可能在时钟的任意沿出现。串行接口可提供灵活的应用,如需要相同的时钟相位,或菊花链上时钟相位的交替变化。对一些电路板级的考虑可能会影响如何选择时钟方案,如:
  • 时钟斜移—如果器件A和器件B之间出现了明显的时钟斜移,则可以考虑使用反相边沿数据传送(如,SCLK上升沿由器件A输出,SCLK下降沿输入器件B)。这种方法能够有效克服时钟斜移,但是如果没有进行仔细的电路板设计,工作在串行接口支持的最大时钟速率时,该方案会难以实现。
  • 时钟速率—如果必须工作在菊花链最大时钟速率下,可以考虑在整个链上采用同一个时钟沿。但是,采用这种方式前必须仔细设计电路板。为保证菊花链的正常工作,应避免过长的数据传输线,明显的器件间的时钟斜移或者板上条件(温度,电源等)的大幅度变化等。
  • 时钟占空比—由于数据从一个器件传送到另一个器件时,使用半个时钟周期,因此,菊花链上采用交替的时钟方案依赖于合理的时钟信号占空比。如果不仔细设计,采用低速但是占空比很高或很低的时钟时菊花链也不能正常工作。
  • 低速时钟或数据边沿—菊花链上时钟信号驱动能力不足会导致缓慢的上升和下降时间。可以将这种情况当作特殊的时钟斜移来处理,这样可能会导致菊花链上不同器件的同步时钟出现在不同的时刻。
将器件的UPIO1或UPIO2配置为DOUTDC0 (DOUT为菊花链模式0)或DOUTDC1 (DOUT为菊花链模式1)输出。在模式0时,DOUTDC0数据在SCLK的下降沿改变,在SCLK的上升沿有效。模式1时,DOUTDC1数据在SCLK的上升沿改变,在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™接口中所描述的定义相似:
  • CPOL描述时钟极性
  • CPHA描述在任何给定的序列中,在第一个有效时钟边沿之前,是否有引导时钟边沿。
可编程CPOL和CPHA位同DSP一起将串行菊花链DOUTDC1和DOUTDC0输出数据适当延时。参见表1。

表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上升沿数据同步输入
点击看大图

图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下降沿数据同步输入
点击看大图

图6. 菊花链—SCLK下降沿数据同步输入

进行菊花链写操作时,将CS置低以选中菊花链上的所有器件。来自总线主机或前一器件的DOUTDC1的数据同步进入每一个级联器件的DIN。只要CS保持低电平,器件将不受经过输入移位寄存器数据的影响。当数据已在菊花链上传输时,假设已有16的整数倍个(N*16) SCLK脉冲,驱动CS为高电平将使链上所有器件输入移位寄存器中存储的DAC指令同时生效。如果在N*16个SCLK周期之前,CS置高,那么链上的所有器件将忽略此次写操作。

菊花链实例

下面的例子建立了由3个器件(A,B和C)组成的菊花链。器件A离总线主机最近。每一个器件与其他两个配置均不同。
  1. CS置低以配置器件A。从总线主机发出指令至器件A将其UPIO1配置为DOUTDC0 (指令1)。该指令存储在器件A的输入移位寄存器中。将CS置高,执行存储在器件A输入移位寄存器中的指令。器件A配置完毕。
  2. CS置低以配置器件B。从总线主机发出经过器件A的指令将器件B的UPIO2配置为DOUTDC1 (指令2)。收到这16位写指令后,器件B的输入移位寄存器在随后的时钟周期内立即更新。
  3. 从总线主机发出指令至器件A覆写其输入移位寄存器数据,这样器件A的状态保持不变(指令3)。如果需要进行特殊的操作(如配置UPIO1,改变速率位等),可用任何指令替代器件A中的NO-OP。器件B的输入移位寄存器在这16个时钟周期内被前一指令进行更新。将CS置高,执行存储在器件A和器件B输入移位寄存器中的指令。器件A和器件B配置完毕。
  4. CS置低以配置器件C。从总线主机发出指令将器件C的UPIO1配置为DOUTDC1 (指令4),该指令将经过器件A和器件B。
  5. 从总线主机发出的指令将器件B的输入移位寄存器数据覆写,这样器件B的状态保持不变(指令5),该指令经过器件A。器件B的输入移位寄存器被步骤5的指令进行更新。
  6. 从总线主机发出的指令将器件A的输入移位寄存器数据覆写,这样器件A的状态保持不变(指令6)。器件B的输入移位寄存器被步骤6的指令进行更新。器件C的输入移位寄存器被步骤5的指令进行更新。将CS置高,执行存储在器件A、器件B和器件C输入移位寄存器中的指令。
表2. 器件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,那么以下步骤可以有效执行:
  1. 将CS置低。从总线主机发出8位读指令(指令1)至器件A。保持CS低电平,不要将其置高。
  2. 从总线主机发出一些其他的读或写指令(指令2)至器件A。器件B的输入移位寄存器被指令1更新。执行指令1的有效输出数据在器件A的DOUTRB出现。将CS置高,完成该指令序列。
  3. 执行指令1的有效输出数据在器件B的DOUTRB出现。器件A执行指令2。
在这种情况下,器件B要执行的8位指令首先要经过器件A。当指令经过A时,A的DOUTRB端口响应该读指令(输出有效读数据)。这并不妨碍读指令向B传送,器件B同样响应读指令,输出有效数据。

相互作用的第二个例子是只从器件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上升沿数据同步输入
点击看大图

图7. 多器件读操作—SCLK上升沿数据同步输入

图8. 多器件读操作—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帧同步模式—多路读操作
点击看大图

图9. DSP帧同步模式—多路读操作

下一步
EE-Mail 订阅EE-Mail,接收关于您感兴趣的新文档的自动通知。
© , Maxim Integrated Products, Inc.
The content on this webpage is protected by copyright laws of the United States and of foreign countries. For requests to copy this content, contact us.
APP 3189:
设计指南 3189,AN3189, AN 3189, APP3189, Appnote3189, Appnote 3189