AN-1108: AD9832/AD9835编程示例

简介

本应用笔记介绍如何在 AD9832/AD9835 器件的输出上载入正弦波形,包括上电时设置 AD9832/AD9835、设置FSELECT控制位,并在使用FSELECT控制位时将新数据载入器件。

AD9832/AD9835的编程

AD9832/AD9835上电时,器件应复位。这样可使相应的内部寄存器复位至0,以提供满量程的模拟输出。为了避免AD9832初始化时产生杂散DAC输出,RESET位应置1,直至器件准备好开始产生输出。RESET位不对相位寄存器、频率寄存器或控制寄存器进行复位。这些寄存器包含无效数据,因此应由用户将其设为已知值。然后,RESET位应置0,以开始产生输出。在RESET置0后的7到8个MCLK周期,DAC输出端会出现数据。

Figure 1. AD9832 Functional Block Diagram.

图1. AD9832功能框图

AD9832/AD9835的编程

要解释如何对AD9832/AD9835进行编程,最好的方法便是举一个简单的示例。进一步详情,请参考应用笔记AN-621和AD9832或AD9835数据手册。


示例1:上电后器件设置


目标:使用一个25 MHz MCLK,产生两个输出频率,将3 kHz载入到FREQ0寄存器,并将10 kHz载入到FREQ1寄存器。

Equation a.

注意,ADIsimDDS工具提供轻松便捷地产生所需16进制、10进制或2进制代码的方法。

所需初始化序列如表1所示。

表1. 初始化序列
十六进制 二进制
0xD000 1101 0000 0000 0000
0x3044 0011 0000 0100 0100
0x21DD 0010 0001 1101 1101
0x3207 0011 0010 0000 0111
0x2300 0010 0011 0000 0000
0x343E 0011 0100 0011 1110
0x2536 0010 0101 0011 0110
0x361A 0011 0110 0001 1010
0x2700 0010 0111 0000 0000
0x9000 1001 0000 0000 0000
0XC000 1100 0000 0000 0000

命令序列说明


请参考AD9832或AD9835数据手册中的寄存器表。

0xD000—复位AD9832

RESET位DB12置1。这样做可将内部寄存器复位至0,对应于满量程的模拟输出(见图2)。Ch1为复位的杂散输出。Ch2为FSYNC,Ch3为SDATA, Ch4为SCLK。注意,数据在SCLK的下降沿有效。在8个SCLK周期后忽略SDATA高电平;这是特定SPI驱动器的固有特性,不会影响器件。

Figure 2. Put AD9832/AD9835 in Reset–0xD000.

图2. 将AD9832/AD9835复位–0xD000

0x3044

  • 欲迟延的8位。
  • 频率寄存器0,L LSB数据。
  • 8位数据 = 0x44。

0x21DD

  • 将8位和迟延8位提供给选择频率寄存器。
  • 频率寄存器0,H LSB数据。
  • 8位数据- (0xDD) + 迟延数据 = 0xDD44。

Figure 3. Load 0x21DD.

图3.载入 0x21DD

0x3207—频率寄存器0,L MSB数据

0x2300—频率寄存器0,H MSB数据

0x343E—频率寄存器1,L LSB数据

0x2536—频率寄存器1,H LSB数据

0x361A—频率寄存器1,L MSB数据

0x2700—频率寄存器1,H MSB数据

0x9000—使用命令位1:0 将C15至C14的SELSRC置1。

  • 将SELSRC置1—FSELECT由数据位控制。迟延增加两个 MCLK周期。

0xC000—频率寄存器1,L LSB数据。

  • 退出复位模式。从FREQ0寄存器输出的一个3 kHz信号,在RESET位置0后经过 8个MCLK周期出现在DAC输出端。

Figure 4. Take Part Out of Reset–0xC000.

图4.使器件脱离复位模式–0xC000

示例2:修改FSELECT位


该器件现在利用输出端的一个3 kHz信号来设置,并由FSELECT位而不是FSELECT引脚来控制。只需写入控制寄存器来修改FSELECT位,便可将此频率更改为10 kHz。

0x5800—选择FREQ1寄存器。

  • 即,将0x5写入命令位C3:C0。
  • 将1写入位D11,以选择FREQ1寄存器(见图5)。

FSELECT位复位至0,可返回3 kHz FREQ0输出。

0x5800—选择FREQ0寄存器

Figure 5. Change FSELECT Bit–0x5800.

图5. .使器件脱离复位模式–0x5800.

示例3:根据需要更新输出


下一步,不用进入RESET模式将FREQ1寄存器从10 kHz改为40 kHz。

Equation b.

载入下列命令序列:

  • 0x348C—频率寄存器1,L LSB数据
  • 0x25DB—频率寄存器1,H LSB数据
  • 0x3668—频率寄存器1,L MSB数据
  • 0x2700—频率寄存器1,H MSB数据
  • 0x9000—通过数据同步锁存到输出。此时,使用命令位[1:0]再次将C15和C14的SELSRC位置1。该器件只需一个FSYNC下降沿即可进行数据锁存(见图6)。

Figure 6. Changing FREQ1 Output from 10 kHz to 40 kHz.

图6. 将FREQ1输出从10 kHz改为40 kHz

作者

Liam Riordan

Liam Riordan

Liam Riordan 于 2004年加入ADI公司,任职于爱尔兰利默里克的精密转换器应用部门,他拥有科克大学电子工程学士学位。