Post Go back to editing

AD5423 not Working with any Address Other than 0

Category: Software
Product Number: AD5423

Hi, my implementation of this chip requires two AD5423's on the same board with addresses 0 and 1 (configured using the AD0 and AD1 pins), but I cannot get the chip to work when configuring its address to 1. To test, I have gone back to using the evaluation board (EVAL-AD54x3SDZ), and am changing its address from 0 to 1 using the JP12 jumper, which selects the level for AD0 (the JP14 jumper which controls AD1 is always tied to ground).

My code is configured so that the first 3 bits are the slip bit (inverse of AD1) followed by AD1 and AD0.

So in the case where address is 0 (AD1 = 0, AD0 = 0), the first 3 bits are [ 1, 0, 0 ].

When the address is 1 (AD1 = 0, AD0 = 1), the first 3 bits are [ 1, 0, 1].

I have verified that these 3 bits are being sent correctly using an oscilloscope.

My MCU is an STM32F205, with its SPI configured as Full-Duplex _Master and its SPI set to 1 (CPOL = 0, CPHA = 1).

When the address is set to 0, I can read and write to registers fine. To initialise the device and set the DAC output I do the following:

1. Disable CRC by sending [ 90, 00, 5C, 3A ]. The FAULT LED is on at this point.

2. Perform a calibration memory refresh by writing [ A8, FC, BA ] and waiting 1ms.

3. Clear the RESET_OCCURED bit in DIGITAL_DIAG_RESULTS by writing [ 94, 20, 10 ]. The FAULT LED is now off (no fault).

4. Enable internal buffers by setting INT_EN in AD5423_DAC_CONFIG, SPI sends [ 86, 08, 60 ].

5. Set the DAC_INPUT to 0 by writing 0 to AD5423_DAC_INPUT, SPI sends [ 81, 00, 00 ].

6. Perform software LDAC command by writing 0x1DAC to the KEY register, SPI sends [ 87, 1D, AC ].

7. Enable VI_OUT by setting OUT_EN in AD5423_DAC_CONFIG, SPI sends [ 86, 30, 61 ].

8. Set the input to the DAC by writing to the DAC_INPUT register, I am using a value of 60000, SPI sends [ 81, EA, 60 ].

This process works perfectly when the address is set to 0 in code and hardware, but does not seem to be able to communicate with the chip at all when its address is set to 1 in both hardware and code. I noticed that the FAULT LED does not go off in step 3 like it does when the address is 0. Attempting to read from any register just gives me [ FF, FF, FF ].

Is there anything I am missing here? From the datasheet it seems that the only things you need to change to change the address is the AD1 and AD0 pins, and the first 3 bits of each SPI message. Any help would be appreciated.

Thanks.



Changed step 1 data packet.
[edited by: JRob17 at 9:25 AM (GMT -5) on 7 Dec 2022]
Parents Reply
  • Hi got it working now so thought I may as well update, I tried the ACE software and noticed that it worked fine with address = 1 (The ACE software worked remarkably well btw), I then used the record macro function to view the data that was being transmitted over SPI, and saw my problem. I had been sending precalculated CRC values in my step 1 (0x3A) to both chips, when in fact the chip with address 1 will of course need a different CRC value (0x79) since its address bits are different. Thanks for your reply!

Children
No Data