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.

DAC63204EVM: DAC53204

Part Number: DAC63204EVM
Other Parts Discussed in Thread: DAC53204, , TPS7A57

Hi,

We have used the DAC53204 in our design.

We are trying to communicate with DAC using FT4222EV module & DAC6320EVM GUI. 

I am unable to success in reading device id in the front panel application (DAC6320EVM).

Please help to solve the issue.

Also please share the python packages available for this module or share the code base if its available.

Registers|DAC_0_MARGIN_HIGH FF00
Registers|DAC_0_MARGIN_LOW 0000
Registers|DAC_0_IOUT_MISC_CONFIG 1000
Registers|DAC_0_DATA 9990
Registers|COMMON_CONFIG 0FF6
Registers|COMMON_DAC_TRIGGER 0000

  • Hello, 

    The GUI is meant to be used with the DAC63204EVM. We have not tested it with the FT4222EV. Can you provide a higher resolution image of the FT422EV (or better, a picture of your FT4222EV) with the exact configuration it is in. I need to see if there are any jumpers or resistors populated/unpopulated. I would start with disconnecting the FT4222EV from your board. Connect the EV to the computer and measure the I2C pins with an oscilloscope. Do you see the I2C signals when you start a read or write in the GUI. Is the GUI operating in demo mode or does it say it's connected? 

    We do not have python libraries available at this time, but there are many I2C examples available online if you google FT4222 python. Here is one that I found: https://pypi.org/project/ft4222/

    Best,

    Katlynne Jones

  • HI Katlynne Jones,

    Thanks for your prompt responses.

    Its shows that its connected.

    Please find the below link the EV datasheet for your reference.

    UMFT4222EV - USB2.0 to QuadSPI/I2C Bridge Development Module (ftdichip.com)

    Operating in mode 3 

    Also, i am facing the below error code,

    Regards,

    Dhanabal.K

  • HI Katlynne Jones,

    Can we use the script in python?

    Do i need any conversion? 

    Snap from datasheet : 

  • Hi Dhanabal, 

    I believe the GUI is expecting DCNF0 and DCNF1 to be connected to GND. Can you try connecting these to GND? Then power cycle the EV, close and repoen the GUI, and try reading again. 

    The datasheet example is written in pseudo code. It is just telling you the registers and corresponding data you need to write. Once you have I2C working in python, you would just need to send I2C commands with 4 total bytes in the format of 1. I2C address, 2. Register address, 3. Register data (MSB), 4. Register data (LSB):

    Best,

    Katlynne 

  • Hi Katlynne,

    I have tried by connecting the FT4222EV.

    I am able to read the device ID  but unable do the margining.

     .

    I am not sure that whether the device id is correct or not.

     

    When i am trying to do the margining, the tool enable option was not working.

    Please support.

  • Hi Dhanabal, 

    I checked the low level page and the GUI is combining the device ID and version ID into one field. So a device ID of 8 is correct for the DAC53204. Bit 3 is set to 1 which is 0x8:

    I am not sure what you mean by this:

    the tool enable option was not working

    What are you trying to do in the GUI, and what exactly isn't working? 

    Best,

    Katlynne Jones 

  • HI Katlynne Jones,

    When i am trying to click the trigger button its not working.

    Unable to select the trigger button.

    Also i tried with DAC EV board facing this new issue.

  • Hi Dhanabal, 

    These triggers are self resetting. The check box is not meant to remain checked. Once the trigger has been sent, the device automatically clears the trigger:

    Are you not seeing the correct output from your circuit?

    There was a bug with trigger buttons that I fixed in the SAMRT-DAC-EVM-GUI. The bug only affected the trigger when there was a long slew time, because the GUI would clear the trigger before the device was ready for it to be cleared. I don't think this is your issue considering that you are not using the slew, but you can try using the new GUI instead just to be safe.

    https://www.ti.com/tool/download/SMART-DAC-EVM-GUI

    Best.

    Katlynne Jones

  • HI Katlynne Jones,

    Today i tried with EVM .

    I have removed the J3 jumper and applied the 1.8V external supply.

    Noted that device id is not read by the GUI application.

    Then i have increased the External supply voltage from 1.8v to 2.7V then found device id is getting detected.

    Please help to solve the issue.

    I understand that this device will work from the 1.8V as per the specification.

    Please solve this issue. 

  • Hi Dhanabal, 

    The I2C signals on the DAC63204EVM pass through a level translator before going to the FT4222 on board controller. I checked the datasheet for the level shifter and it looks like the minimum voltage for the VCCB pin is 2.3V. This is likely why the 1.8V supply is not working on the EVM. 

    It looks like you can connect an external VCCIO voltage on the FT4222EV board:

    You can try connecting this to 1.8V to get down to 1.8V IO voltages for the DAC. 

    Best,

    Katlynne Jones

  • HI Katlynne Jones,

    Thanks for the clarification!...

    We are trying to margin the LDO(TPS7A5701RTER) O/P using DAC53204RTER in current O/P mode.

    When we try to do the margining 1.8V +10%. Its not working.

    but We able to margin the  LDO O/P 1.8V - 10%.

    The VDD of the DAC Is supplied with 1.8V.

    We are using internal REF.

    Kindly advise whether this circuit will work or not?

  • Hi Dhanabal, 

    Thanks for confirming that you can margin to -10%. The issue here is your VDD voltage. The DAC current outputs have a required compliance voltage of 400mV from VDD. So if the voltage on the output pin is > 1.8V - 400mV then the DAC will not be able to regulate the current output. 

    You will need to raise VDD to the max TPS7A57 output voltage you want to margin to plus the compliance voltage. The compliance voltage for the 25uA range is likely closer to 100mV based on this datasheet figure, so you can try (desired max TPS7A57 output + 100mV). 

    Can you connect the DAC VDD to the 5V supply in the system? The digital IO voltages of the DAC can remain at 1.8V logic. 

    Best,

    Katlynne Jones

  • Hi Katlynne Jones,

    Thanks for the responses.

    Since our board is fabricated, we unable change the VDD voltage levels now. Its permanently connected to the 1.8V levels.

    Also, as per the LDO datasheet we just need to margin the current of +/- 1.25uA.

    Its not required to do +/-25uA. 

     

    Regarding the Python script,

    How do we send the comment using the Python.

     Can we get some examples? 

    We are writing in the below format
    slave = 0x70
    MuxChnEnb[0] = 0X06
    writedata = bytes(MuxChnEnb)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)

    Dac53204 = array('B', [ 0x00,0x00,0x00,0x00])
    slave = 0x49
    #DAC0_DATA====>0x93195540
    Dac53204[0] = 0X93
    Dac53204[1] = 0X19
    Dac53204[2] = 0X55
    Dac53204[3] = 0X40
    writedata = bytes(Dac53204)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)

  • Hi Dhanabal, 

    There will still be some headroom required from the IOUT pin to VDD. The pin will not output any more current while the headroom is not being met. You will not be able to go above 1.8V on the IOUT pin with a 1.8V VDD. 

    What is they byte 0x93 for in DAC53204[0]? The next three data bytes are correct to write data to the dac-0-data register. The first byte should be the I2C address 0x49, but it looks like this is already being included in this line:

    slave = 0x49

    I think you only need to be writing these three bytes in that case:

    Dac53204[1] = 0X19
    Dac53204[2] = 0X55
    Dac53204[3] = 0X40

    Have you been able to run this code and capture the output on an oscilloscope? That would be the best way for me to verify if the format is correct. 

    Best,

    Katlynne Jones

  • Hi Katlynne,

    This is the Waveform captured in Oscilloscope from above Python Code.

    And still we couldn't enable DAC.

  • Hi Sri, 

    The image did not come through. Can you try posting it again?

    Best,

    Katlynne Jones

  • Hi Katlynne,

    This is the Waveform captured in Oscilloscope from above Python Code.

    Python code,

    import sys, ftd2xx as ft

    '''
    Channel0=0x04
    Channel1=0x05
    Channel2=0x06
    Channel3=0x07
    '''

    def I2cDrv():
    import ft4222
    import ft4222.I2CMaster
    from array import array

    # list devices
    nbDev = ft4222.createDeviceInfoList()
    for i in range(nbDev):
    print(ft4222.getDeviceInfoDetail(i, False))

    # open device with default description 'FT4222 A'
    dev = ft4222.openByDescription('FT4222 A')

    # init i2c master, clock speed 100kHz
    dev.i2cMaster_Init(100000)

    MuxChnEnb = array('B', [ 0x00])

    slave = 0x70
    MuxChnEnb[0] = 0X06
    writedata = bytes(MuxChnEnb)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)

    Dac53204 = array('B', [ 0x00,0x00,0x00,0x00])
    slave = 0x49
    #DAC0_DATA====>0x93195540
    Dac53204[0] = 0X93
    Dac53204[1] = 0X19
    Dac53204[2] = 0X55
    Dac53204[3] = 0X40
    writedata = bytes(Dac53204)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)

    Dac53204 = array('B', [ 0x00,0x00,0x00,0x00])
    slave = 0x49
    #DAC0_VOUT_CMP====>0x93030800
    Dac53204[0] = 0X93
    Dac53204[1] = 0X03
    Dac53204[2] = 0X08
    Dac53204[3] = 0X00
    writedata = bytes(Dac53204)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)


    Dac53204 = array('B', [ 0x00,0x00,0x00,0x00])
    slave = 0x49
    #DAC0_FUN_CONFIG====>0x93060017
    Dac53204[0] = 0X93
    Dac53204[1] = 0X06
    Dac53204[2] = 0X00
    Dac53204[3] = 0X17
    writedata = bytes(Dac53204)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)

    Dac53204 = array('B', [ 0x00,0x00,0x00,0x00])
    slave = 0x49
    #DAC0_MARG_HIGH====>0x9301A540
    Dac53204[0] = 0X93
    Dac53204[1] = 0X01
    Dac53204[2] = 0XA5
    Dac53204[3] = 0X40
    writedata = bytes(Dac53204)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)

    Dac53204 = array('B', [ 0x00,0x00,0x00,0x00])
    slave = 0x49
    #DAC0_MARG_LOW====>0x93020500
    Dac53204[0] = 0X93
    Dac53204[1] = 0X02
    Dac53204[2] = 0X05
    Dac53204[3] = 0X00
    writedata = bytes(Dac53204)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)


    Dac53204 = array('B', [ 0x00,0x00,0x00,0x00])
    slave = 0x49
    #DAC0_CMN_TRI====>0x93200002
    Dac53204[0] = 0X93
    Dac53204[1] = 0X20
    Dac53204[2] = 0X00
    Dac53204[3] = 0X02
    writedata = bytes(Dac53204)
    print('data',writedata)
    dev.i2cMaster_Write(slave,writedata)

    I2cDrv()

    thanks & Regards,

    R SRI RAJA SUMAN

  • Hello, 

    Please zoom in so I can actually see what a single write command looks like. I should be able to see every SCL pulse. 

    I can't tell just from the python code you are sharing how the I2C is actually being written out to the device. 

    Best,

    Katlynne Jones