1概述
AD5532是美国ADI公司推出的一款32通道、14位串行输入、电压输出型单片集成数模转换器。它还内置一个额外的A/D转换器,能将外部电压采样数据传递至相应D/A单元,可以实现精度高达±0.018%的无限采样保持功能。AD5532具有串行输人、多通道模拟输出等特性,适用于对性能、功耗要求高,模拟通道需求多的测控系统。
2 内部结构及引脚功能
图1所示为AD5532的内部结构框图,AD5532片内集成1个A/D转换单元(专为ISHA模式设置)和32个D/A转换单元,每个D/A转换单元均配有一个输出缓冲器。此外,片上还有串行、并行逻辑电路易于外部控制器相连。在D/A转换模式下,需要通过串行输入方式将14 bit的数据传送到32个D/A转换寄存器中的某一个,随后,该数据将转换为模拟输出VOUT0~VOUT31(带有增益和偏移)。
AVCC:模拟供电电压,范围为4.75 V~5.25 V,只向D/A转换器内核供电;
VDD:正电源端,范围为8 V~16.5 V;
VSS:负电源端,电压范围-4.75 V~-16.5 V;
DGND:数字地,数字电路的参考点;
DVCC:数字电源端数字信号供电电压,范围为2.7 V~5.25 V;
DAC_GND:所有D/A转换模块的参考地;
REF_IN:VOUT0~VOUT31的参考输入电压;
REF_OUT:内部参考输出电压,提供3 V电压;
VOUT:32个通道的输出;
VIN:无限采样/保持模拟输入电压,在D/A转换模式时,该引脚接地;
A4~A0:并行模式下端口地址,5个地址引脚选定32个通道。A4是通道地址的MSB,A0是通道地址的LSB。每个引脚均有内部上拉电阻,因此,这些引脚悬空时,默认为逻辑高电平;
CAL:并行模式下控制32个D/A转换单元同步向VIN采样,接内部下拉电阻,因此,该引脚悬空时,默认为逻辑低电平;
nCS/nSYNC:低电平时,在并行模式下,片选使能;在串行模式下为帧同步;
nWR:在并行模式下有效,写信号,低电平有效,配合nCS/nSYNC引脚可通过并口确定地址,内部下拉电阻,悬空时默认为逻辑低电平;
OFFSET_SEL:并行模式下有效,偏移选择,高电平有效,用于选择偏移通道,内部下拉电阻,悬空时默认为逻辑低电平;
SCLK:串行模式下的串行时钟输入,工作频率为14 MHz,20 MHz时工作在ISHA模式。
DIN:串行模式下的串行数字输入,在SCLK下降沿数据有效,内部上拉电阻,悬空时默认为逻辑高;
DOUT:串行模式下的串行数字输出,在SCLK上升沿数据输出;
SER/nPAR:允许用户选择串行接口或并行接口模式,当拉为低电平时,选择并行接口模式,当拉为高电平时,选择串行接口模式。内部下拉电阻悬空时默认为逻辑低;
OFFS_IN:偏移输入,改变其输入电压调节VOUT的输出范围;
OFFS_OUT:偏移输出,连接至OFFS_IN可调节VOUT的输出范围;
BUSY:使能采样输入电压,该引脚下降时,采样输入信号,上升时,采样完成;
nTRACK/nRESET:该引脚保持高电平时,一旦通道被选中,采样VIN;该引脚保持低电平时,直接切换至GAIN/OFFSET环节输入至VIN,选定通道在nTRACK的上升沿采样VIN。该引脚也可用于将器件复位至上电复位阶段。内部上拉电阻,悬空时默认为逻辑高电平。
3 工作原理
AD5532提供串并行两种控制方式,数字/模拟转换、无限采样/保持、回读以及采样回读四种工作模式,其中并行控制方式只在无限采样/保持模式下起作用。
图2的a、b分别是DAC模式和回读模式下的数据传输格式。这两种模式下的数据传输格式基本相同,只是MODE BIT不同。图b中DIN引脚上的数据在输入A0位后自动忽略,DOUT在第2个nCS/nSYNC下降沿后输出相应DAC寄存器中DB13~DB0位。
图3和图4所示分别为AD5532的串行读、写时序。在连续或非连续串行时钟下。在nCS/nSYNC的第一个下降沿复位计数串行时钟计数器,确保相应位移入或移出串行寄存器。一旦在所选的工作模式下移人或移出数据位后,SCLK信号被忽略。下一次串行数据传输时首先利用nCS/nSYNC的下降沿复位计数器。
4 典型应用
图5所示为AD5532在DAC工作模式下的典型应用原理图。其中VDD提供+15 V电压,VSS提供-15 V电压,AVCC提供+5 V电压,与三星公司S3C2440相连,DVCC提供+3.3 V电压。由于本系统仅需DAC功能,所以将SER/nPAR及nTRACK/nRESET引脚电压拉高,串行输入/输出引脚与S3C2440的相应SPI引脚相连。其余未涉及引脚如果是输入端最好接地或拉高。
系统采用Windows CE.NET4.2操作系统,程序运行空间分成内核态与用户态,且所有地址均为虚拟地址。由于应用程序无法访问I/O引脚的控制与数据寄存器,所以编写函数前需先按照WindowsCE.NET驱动程序方式编写:先申请某一内存地址空间,然后将该地址空间映射到I/O引脚的寄存器,最后对该地址相应位进行读写操作,模拟AD5532所需的串行传输方式控制器件。
申请地址空间:
将该地址空间映射到S3C2440的实际I/O地址空间中:
完成了上述步骤,可通过读写v_pIOPregs实际控制相应引脚。
SPICLK/GPE13,SPIMOSI/GPE12,SPIMISO/GPE11引脚输人/输出状态设置:
以上函数中channel取0~31,被移位到低14位时,表示选择的通道;value取低14位,表示输出的具体值。
将以上代码加入到应用程序源代码中,就可根据需要调用函数访问AD5532进行D/A输出。当然,在编译前,还需要找到pkfunc.h,ceddk.h,Winbase.h文件,并将其放置在源代码目录下,并申请内存空间及映射内存空间代码文件头include进去,否则应用程序最后无法编译,提示找不到相应函数。