这一篇主要结合DAC81416的datasheet来进一步阐述如何配置DAC。先附上DAC81416的datasheet的链接。
1、datasheet概述
如果自己不做电路板,DAC81416的datasheet需要关注的方面并不多。该DAC一共16个输出通道,可以通过一系列的配置其内部寄存器的操作输出16个电压值。
该DAC有普通模式,同步模式,DRC模式,差分输出模式,toggle模式。
普通模式——16个通道都可以输出电压,读写寄存器操作以24位数据为单位。
同步模式——配置成同步模式的通道的输出电压可以在外部LDAC引脚为低时同步更新。
DRC模式——读写寄存器操作以32位数据为单位,相比24位的普通模式,多了8位的CRC校验位。
差分输出模式——两个普通通道合并成一个差分通道,这样子就只有8个差分通道输出。
toggle模式——切换模式,就是根据toggle信号线的高低或者toggle寄存器值,某一通道的输出可以在两个值之间进行切换,最多支持同时3个通道配置成切换模式。
这里只讲普通模式,其他模式如何配置请参考datasheet的寄存器映射表。其实只有toggle模式稍微复杂一些,toggle模式的配置方法参考datasheet的9.4.1。
2、如何进行寄存器的读写操作
标准读写操作的时序图在上一篇已经出现过了,这里继续补充说明。上图中所有的时序参数见datasheet中的7.6,这里说几个最重要的。
f(SCLK)——最快允许的时钟频率。
t(CSHIGH)——CS高电平时持续的最短时间,这个参数很重要是因为我们肯定不止一次读写数据,每次读写数据之间必须要有一定的时间间隔。
t(CSS)——CS有效期间,CS的下降沿到SCLK的第一个下降沿之间的最短时间,第一个下降沿已经需要对数据采样了。
t(SDIS)——SDI的setup time,建立时间,即时钟采样沿之前数据稳定的最短时间。
t(SDIH)——SDI的hold time,保持时间,即时钟采样沿之后数据稳定的最短时间。
t(CSH)——CS有效期间,SCLK的最后一个下降沿到CS的上升沿之间的最短时间,最后一个下降沿依然需要采样。
一般情况下,对DAC的操作都是低速时钟,只要时钟在f(SCLK)的一半以下,保证下降沿采样,就满足了所有时序要求,不需要刻意去调整时序。
在标准读写中,每次操作都是24位数据,这24位数据的含义在datasheet的9.5.1节,如下图所示。
最高位是读写命令位,次高位不关心,接着是6位的地址和16位的数据。除了标准读写外,还有一种流水模式的写操作,可以一次性写几个寄存器,流水模式主要是用于一次性配置地址连续的寄存器,例如一次性配置16个通道的输出电压,我们这里暂时不用流水模式,就用标准模式配置。
3、外部引脚
外部引脚表如下图所示,在原datasheet的第6章。
除了时序图中SPI接口的4根线以外,还有下面几根线需要注意下:
LDAC——同步输出控制信号,拉低时配置成同步模式的通道同时更新数据。
CLR——清除信号,低有效。
TOGGLE0~2——切换信号,配置成toggle模式的通道的输出电压值根据toggle信号的值在两个值之间进行切换。
ALMOUT——警告信号,低有效,在DRC模式时可以让这个信号在DRC错误时输出低电平。
4、配置步骤
另外还需要关注的就是Datasheet中的9.6节,该节是DAC81416内部寄存器的映射表,是我们配置DAC的指南。
配置DAC的过程就是编写Verilog代码通过SPI接口发送特定数据的过程。对于普通模式,分为以下4步。
1、配置SPICONFIG Register (offset = 03h,reset=0AA4h),设置DEV-PWDWN位为active就可以了,也就是将0A84h写入这个寄存器中。
2、配置DACRANGEn Register (offset = 0Ah - 0Dh,reset = 0000h),配置输出电压的取值范围,这里假设-5V~+5V输出,设置成9999h。
3、配置DACPWDWN Register (offset = 09h,reset = FFFFh),打开每一个通道,设置成0.
4、这时就可以往DACn Register (offset = 10h - 1Fh,reset = 0000h)中写入要进行数模转换的值(也就是输出电压的值,输出电压在第2步的取值范围内,根据这一步配置的16位的值的相对大小进行输出。),这里假设输出5V电压,设置成ffffh。
本篇介绍了DAC81416的时序、引脚和基本的配置步骤,下一篇我们使用Verilog代码配置该DAC。
本人水平有限,如有错误欢迎留言指正。