AN-621 APPLICATION NOTE One Technology Way • P.O. Box 9106 • Norwood, MA 02062-9106 • Tel: 781/329-4700 • Fax: 781/326-8703 • www.analog.com Programming the AD9832/AD9835 By Colm Slattery INTRODUCTION This application note details how to program 5 MHz on the output of the AD9832/AD9835 parts. The frequency register, defer register, and command sequence are explained in detail. THE FREQUENCY REGISTER The AD9832 contains a 32-bit frequency register. The register is shown below and is broken up into four bytes. Since the AD9832 accepts only eight bits of data in any one command, in order to fully program the 32-bit register the user must input four commands, each delivering only eight bits of data. For addressing purposes, the 32-bit register is broken up as follows: The 16 MSBs are defined as having eight higher bits (H) and eight lower bits (L). Similarly, the 16 LSBs have the same addressing scheme, eight higher (H) bits and eight lower (L) bits. 32-BIT FREQUENCY REGISTER 8 H MSBs 8 L MSBs 8 H LSBs MSB 8 L LSBs LSB THE FREQUENCY WORD The frequency word is the 32-bit word which the user inputs into the frequency register. This determines the output frequency and is based on the ratio of the required output frequency to the reference clock frequency. In the example below, the reference clock is 25 MHz. The required output needs to be 5 MHz, so the frequency word is calculated as: (5/25) (0xFFFFFFFF) = 0x33333333 REV. 0 THE DEFER REGISTER The defer register (16 bits wide) acts as a buffer register to the last register written to. The defer register is written to in two writes. The first eight bits will be held (deferred) in the register until the next eight bits are written in. When all 16 bits have been written into the defer register, the frequency register will be updated. The defer register always points to the last address that was written to. FREQ REG 0 16 BITS FREQ REG 1 16 BITS 16 BITS 16 BITS DEFER REGISTER POINTS TO LAST FREQUENCY REGISTER WRITTEN TO. 8 BITS 8 BITS DEFER REGISTER Since the defer register has stored the last 16 bits written to it and is still pointing to the frequency register previously addressed, it is possible to update either the lower eight bits or the upper eight bits of that frequency register with one write. This is called a direct write and is actually the last part of a normal write sequence. Note that if users want to write to any other register, they will have to do a full write sequence as shown above. ENTIRE COMMAND SEQUENCE FOR 5 MHz PROGRAM 0xF800 Binary (1111 1000 0000 0000) 0x3333 Binary (0011 0011 0011 0011) 0x2233 Binary (0010 0010 0011 0011) E03543–0–2/03(0) 0x3133 Binary (0011 0001 0011 0011) 0x2033 Binary (0010 0000 0011 0011) 0xC000 Binary (1100 0000 0000 0000) COMMAND SEQUENCE EXPLAINED For the purpose of this explanation, the 16-bit SPI word will be addressed as follows: D15, D14, D13, ..., D2, D1, D0 0xF800 Binary (1111 1000 0000 0000) D15, D14 = 1,1. This means that bits D13, D12, and D11 are active. In this case: D13 = 1, SLEEP bit. This puts the part into sleep mode. D12 = 1, RESET bit. This sets the part into reset, i.e., output of the DAC will be midscale. D11 = 1, CLR bit. When CLR = 1, SYNC and SELSRC are set to 1. This sets control of choosing which register is selected to external pins, not through software. CLR will automatically reset to 0. D10...D0 = 0. (These are Don’t Care bits, X.) The part is now ready to be programmed. 0x3333 Binary (0011 0011 0011 0011) Command broken down as follows: 0011 /* Write eight frequency bits to defer register */ 0011 /* Write to Frequency 0 Reg, H MSBs */ 0011 0011 /* Eight bits of data to write */ 0x2233 Binary (0010 0010 0011 0011) 0010 /* Write eight frequency bits to defer register */ 0010 /* Write to Frequency 0 Reg, L MSBs */ 0011 0011 /* Eight bits of data to write */ 16 bits are now loaded to the upper 16 bits of Frequency Register 0. 0x3133 Binary (0011 0001 0011 0011) 0011 0001 0011 0011 /* Write eight frequency bits to defer register */ /* Write to Frequency 0 Reg, H LSBs */ /* Eight bits of data to write */ 0x2033 Binary (0010 0000 0011 0011) 0xC000 PRINTED IN U.S.A. 0010 /* Write eight frequency bits to defer register */ 0000 /* Write to Frequency 0 Reg, L LSBs */ 0011 0011 /* Eight bits of data to write */ 16 bits are now loaded to the lower 16 bits of Frequency Register 0. Binary (1100 0000 0000 0000) D15, D14 = 1,1. This means that bits D13, D12, and D11 are active. In this case: D13 = 0, SLEEP bit. Takes the part out of sleep mode. D12 = 0, RESET bit. Takes the part out of reset mode. D11 = 0, CLR bit. D10...D0 = 0 (Don’t Care bits for this command.) 5 MHz will now appear on the output pin. The FSELECT pin must be pulled to GND to choose Frequency Reg 0. © 2003 Analog Devices, Inc. All rights reserved. Trademarks and registered trademarks are the property of their respective companies. –2– REV. 0