Post Go back to editing

AD9528: which registers are buffered? (and need io_update)

Thread Summary

The user asked if most or all serial port registers in the AD9528 are buffered and if any configuration registers do not require an IO_UPDATE. The engineer confirmed that only registers 0x0000 and 0x0001 are live, while all others are buffered and require an IO_UPDATE. The engineer provided a method to verify if a register is buffered using the eval software and register debug window.
AI Generated Content
Category: Datasheet/Specs
Product Number: AD9528

According to the AD9528 datasheet "Most of the serial port registers are buffered and data written into these buffered registers does not take effect immediately."

Most or (almost) all? Can we have a list of them?

I know that IO_UPDATE must be used, but is there some configuration registers that do not need IO_UPDATE? (e.g. fine analog delay)

Thank you

  • HI,

    I believe only the registers 0x0000 and 0x0001 are live registers. All the other registers are buffered. 

    "is there some configuration registers that do not need IO_UPDATE?"

    All configuration registers require IO Update. See the initialization procedure from page 42 in rev G data sheet. One writes all the registers and then executes IO Update.

    You can do the following to verify if a register is buffered or not:

    - let's consider register 0x300.

    - in the eval software, read the register with register debug window(View, Debug). In my case, the value is 0x00.

    - I'm writing it with value 0x38. I can read it back as 0x38.

    -I'm setting register 0x0001 with value 0x20, so when you execute a read operation, you read the buffer.

    -I'm reading register 0x300, which means I read the buffer of the register 0x300. I read 0x38, so the register is buffered.

    Petre

  • Thank you  

    I would say that register IO_UPDATE (0x000F) is also live.

  • By the way, your sequence of reads and writes is not so clear to me. Using the debug window,

    • write reg0x001 with 0x00 (default value) "reads values currently applied to the internal logic of the device."
    • read reg0x300: 0x40 (in my case)
    • write reg0x300 with 0x00
    • read reg0x300: 0x40 because the value previously written is not yet applied
    • write reg0x001 with 0x20 "reads buffered values that take effect on the next assertion of IO_UPDATE"
    • read reg0x300: 0x00
    • write reg0x001 with 0x00
    • read reg0x300: 0x40
    • write ref0x00f with 0x01 IO_UPDATE
    • now reg0x300 always read 0x00 whatever the value of reg0x001

    Anyway, would have been nice to have in the datasheet the list of buffered registers.