This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Starterware/DS90UB914A-Q1: Aliasing multiple DES chips on same I2C bus

Part Number: DS90UB914A-Q1

Tool/software: Starterware

Hello, 

I have a board that holds 5 DS90UB914A-Q1 Serializers that are all connected to the same I2C address (set up by resistor values). So, currently I can only access one of those at a time (by enabling PDB pin), and then I can access that particular piece of hardware (at the default address of all SER's - 0x59).

While reading trough the datasheet I have found option for aliasing addresses of the chip, so I guess there is an option for all 5 of my deserializers to be accessible at any time (DATA buses are not a problem, they are all separate wires). I have tried changing the address of (I2C Device ID) register on address 0x00. When I try to access my SER on the new address I give it, it all works as it should, but as soon as I try to enable second SER with the same method, I can no longer access the first one, only the last one.

I can't see why this is happening because I always keep PDB pin enabled, so I never turn off previous SERs, but they don't show up in the list of available I2C peripherals.

Can somebody provide me with the solution, or give me a hint please?

Thanks in advance,

Mirko

  • Hi Mirko,

    I would suggest changing the resistors to set the 914A i2c address if possible, but you can try doing it with software. The process would be something like this
    1. Power up DES5. Default i2c address will be 0x60. Change default i2c address to something else, say 0x65 if that is available on the bus. SER ID should be set in register 0x06 automatically to 913A default address upon LOCK.
    2. Program DES5 register 0x07, SER_ALIAS, to a free i2c address (for example, 0x25).
    3. You should now be able to talk to SER from i2c host by sending i2c commands to 0x25 (commands that are valid for 913A based on register map)

    repeat for remaining parts.
    4. Power up DES4. Default i2c address will be 0x60. Change to 0x64. Register 0x06 will be SER ID. Should be same as 0x06 in DES5. Now write 0x07 to unique i2c address, say 0x24.

    Now you can talk to DES5 at 0x65, SER5 at 0x25, DES4 at 0x64, SER4 at 0x24. Do you follow? Repeat this for all five. SER ID can be the same for all, but SER ALIAS must be unique to the bus, as well as the DES address. The DES address comes up at 0x60, and you change it each time. So you will have 0x60 available on the bus each time you power up a new DES.


    This app note has some more details about this DES-SER aliasing between 913A-914A
    www.ti.com/.../snla222.pdf


    Chris

  • Hi Chris, thank you for your reply!

    I have managed to get all of my deserializers to appear on I2C bus at once, which is great! Thanks again!
    Next step in my design is creating a link between my DES's and my cameras (each DES will be connected to one camera). Now, my camera has this same chip (SER) in it, so I think it is possible to configure it (as a remote slave device), I just didn't get that to work yet.

    Can you please provide me with steps on how to create a link? Or, I guess it is the same thing that you call LOCK in your reply.

    DES pin config:
    1. PDB, OEN, BISTEN pins are high
    2. OSS_SEL pin is LOW

    DES register config:
    1. Reset it (self clearing bit)
    2. General (0x03 register address) : bit 2 (pass trough), I have also set top 4 bits to high (error checking and Remote write ACK)
    3. Set SER ID, and SER alias for remote serializer (in camera)

    As I understand it (maybe I'm wrong), when pin 0 in 0x0C: LINK Detect is set to high then we have a successful connection and we can start configuring camera, or something similar).

    So far, I never managed to get that LINK Detect pin to '1'.

    Is there something I'm missing?

    Thanks in advance,
    Mirko