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.

Do we have any memory address to save 3 byte i2c data in serializer DS90UB925Q

Other Parts Discussed in Thread: ALP

Hi, 

I am using serializer DS90UB925Q and i need to send some i2c commands from serializer to my target hardware( which has deserializer in it ) through LVDS cable.

So i am in need to send those i2c commands from PC to my serializer board . In ALP software( tool interfaced with serializer), they have mentioned the syntax for i2c write as WriteI2C( device_address, memory_address, data).

I just want to know in which register these i2c datas are getting stored. If those i2c datas not stored in the register means, i want to know how to send those datas to serializer .

Please help me on this and its urgent to complete my task . 

Anyone please do reply for my question as soon as possible.

Thanks,

Jaisshri.C

  • Hi Jaisshri,

    Don’t quite follow the question. In the ALP GUI, there is a ‘Scripting’ tab that provides a Python scripting environment for running scripts. You can use temp variable to save the register data. The two main I2C commands are:

    board.WriteI2C(devAddr, regIndex, regVal)

    board.ReadI2C(devAddr, regIndex, regLength=1)

    Notes values are returned in decimal; the hex() to convert to hexadecimal formats.

    Once the I2C r/w commands are excluded in scripting window to the target 925 device, then the values are directly written to device (for write operations) and readback from device (for read operations).

    For example, assuming 925 IDX=0x18:

    >board.ReadI2C(0x18,0x00,1)

    24

    >hex(board.ReadI2C(0x18,0x00,1))

    '0x18'

    >board.WriteI2C(0x18,0x01,0x01)

    >temp=hex(board.ReadI2C(0x18,0x00,1))

    >temp

    '0x18'

    >print temp

    0x18

     

    Dac Tran

    SVA APPS

     

  • Thanks a lot for your reply. its is really useful . 

    Still i have few doubts:

    In registers tab and also in datasheet of DS90UB925Q , they didnt mention about i2c data registers. Only i2C control registers are there. 

    I am confused which register should i use to send( write/read) the i2c datas in serializer ( which in turn send/receive those data to/from deseializer through LVDS )

    Can you please let me know which register should i use to send ( write/read) the i2c commands/data.

    Thanks,

    Jaisshri.C

  • Hi Jaisshri,

    Any I2C access to a remote device (not on local I2C bus) is transmitted via the LVDS link. Please see appnote for more details -- http://www.ti.com/lit/an/snla131a/snla131a.pdf

    Dac Tran

    SVA APPS

  • Hi,

    Can you please explain with an example.

    I need to send 3 bytes of i2c commands from serializer DS90UB925Q Eval board( Using Analog launch pad) to deserializer ( through LVDS cable) then to my host controller( i2c communication).

    I know the i2c commands which is understandable by my host controller ( say 02 FF 03) which performs some function when host controller receives those i2c commands from deserializer .

    I want to know how to send those i2c commands from serializer eval board( Using Analog launch pad) to deserializer. So that deserializer should send i2c command ( say 02 FF 03 ) to my host controller .

    Can you please help on this .

    A quick reply in this regard is highly appreciable.

    Thanks,
    Jaisshri.C
  • Hi Jaisshri,

    If I follow your description correctly, you want burst 3 bytes of I2C data. Is this similar to 16-bit addressing of I2C registers? If so, the ALP GUI and onboard controller does not natively support these I2C function/commands. However the 925/6 chipsets will support this I2C protocol; just not the ALP software. You can try a third party controller such as a TotalPhase Aardvark I2C Host Adapter.

    Dac Tran

    SVA APPS

  • Hi,

    We thought of simulating those i2c commands from serializer end to ensure that the commands has been transmitted correctly from serializer to deserializer and then to host controller. If we use Aardvark I2C host adapter , it will directly send commands to host controller .

    We thought of utilizing ALP for those purpose 

    Can you please give any solution for it .

    Thanks,

    Jaisshri.C

  • Hi,

    As mentioned in the previous response, the ALP does not support the I2C protocol you are trying to implement. Using Aardvark as an alternative controller will address it.

    Dac Tran

    SVA APPS

  • Hi,

    Thank you .

    As you mentioned, the purpose of ALP tool is to set and monitor the registers in serializer and deserializer and we cannot able to send any functional commands from serializer. Am i right ?

    Because in my case i need to monitor or set the serializer/deserializer register and based on the register status , i have to send the functional commands.
    Instead of using two tools( ALP and aardvark) at same time , Can you suggest any better solution for achieving my requirement with a single tool.

    Thanks,
    Jaisshri.C
  • Hi Jaisshri,

    To clarify, the ALP GUI interacts with the EVM’s onboard uC to access device registers on both serializer and deserializer. The GUI functions support standard I2C read/write operations to interface with the devices. The GUI code uses I2C single byte write commands protocols. What you are trying to implement is sequential byte writes; which is not supported by the GUI. However, you can write your own python code to do so.

    From what I’m aware of, the Aardvark tool and GUI does support sequential writes commands.

    Dac Tran

    SVA APPS

  • Hi,

    As you mentioned , Is it possible to write the python code to send 3 bytes of commands to deserializer( in target hardware ) through ALP GUI ( by using scripting tab) . Since i am new to this, i am unclear to proceed my task .

    Kindly help me

    Thanks,
    Jaisshri.C
  • Hi Jaisshri,

    Unfortunately implementing the code is non-trivial task and beyond the scope of this discussion.

    Dac Tran

    SVA APPS

  • Hi,

    1. Can you please tell me how to transmit one byte of i2c data from 925 to 926( present in target prototype).

    2. What are all the basic configuration settings need to be done in 925 and 926 to read/ write i2c data.

    3. In which register we need to store the i2c data inorder to transmit that data from 925 to 926( present in target prototype). Since we have board.WriteI2C(devAddr, regIndex, regVal), So please tell me which "regindex " we need to use to store i2c data, which should be sent to 926 through LVDS cable .

    4.And also help me to send SCL( clock frequency ) from 925 to 926 . because pin no 8 and 9 in 925 are specifically used to send/receive SCL and SDA respectively. Similarly pin no 2 and 3 in 926 are used to receive/send SDA and SCL

    5. Main intention is to send SCL(pin no 8) and SDA(pin no 9) from 925 to SCL(pin no 3) and SDA (pin no 2) in 926 using ALP.
    Can you please explain how to send/ receive data from 925 to 926 .

    Thanks,
    Jaisshri.C
  • 1 ) If using ALP GUI, go to the ‘Remote Registers’ and register map of the partner device will load. Accessing any register will bridge the I2C communication between local device and remote device.

    2 ) If host is connected to 925, to access 926 remotely: set I2C Pass-through on 925 reg0x03[3]=1

    3 ) There is no storing/buffering of I2C data. The controller will clock stretch if accessing 926 remotely.

    4 ) Each device has an integrated I2C master/slave controller and automatically regenerates the SCL clock on the target bus. The SCL bus rate can be configured SCL High/Low time registers.

    5 ) See also #1. If you want to pass I2C bus activity across the link you need to use SlaveID/SlaveAlias for a remote slave device.

    Dac Tran

    SVA APPS

  • Thank you . 

    But still i am unclear of the i2c data transmission from 925 to 926 .

    1.Can you please explain with the example to send i2c data " 0x02" from 925 to 926

    2. I believe clock will be already provided by the 925 controller.

    3. If we cant send i2c data from 925 to 926 through ALP means, how to send i2c data from 925 to 926.

    please let me know the tool which can be used to transmit i2c data from 925 to 926

    4.i hope aardvark will not be utilized to send data to 925 which in turn send those i2c data to target hardware( includes 926 and host controller ) through LVDS cable.

    5.What is the use of GPIO pins?

    6.Can we use GPIO pins to transmit i2c data?

    Thanks,

    Jaisshri.C

  • A quick response for the above queries are highly appreciable
  • 7. Can we write a command like this " board.WriteI2C(0xA0,0xB0,0x04) " to send the value 04 to my slave device connected with the deserializer, where 0xA0 is the slave address and 0xB0 is the slave alias and 0x04 is the value to be sent to slave.

    8. since we use only slave address and data to communicate with the slave device connected to the deserializer through aardvark. whether above command provide the same communication through ALP or do we need to change any command set.

    Kindly answer all 8 questions mentioned above.

    Thanks,
    Jaisshri.C
  • Can anyone please respond for the above queries ASAP

    Thanks,

    Jaisshri.C

  • 1 ) Can you explain what you are trying to do? Write to reg0x02 to 926?

    2 ) If there is not valid PCLK input on 925, the 925->926 link will operate off the internal oscillator.

    3 ) Any I2C controller that supports clock stretching will transmit I2C commands.

    4 ) Don’t follow the question.

    5 ) GPIOs are used to send low speed control signals.

    6 ) No, since I2C is protocol based.

    7 ) The board.WriteI2C(devAddr, regIndex, regVal) takes 3 variables; where devAddr is target slave device, regIndex is register offset, and regVal is data value.

    8 ) All single I2C transactions can be executed using board.WriteI2C() and board.ReadI2C().

    Dac Tran

    SVA APPS

  • I have a remote slave device connected to 926 which inturn connected with the 925 through LVDS. I need to communicate with remote slave from 925 through LVDS using ALP.

    Message format for my remote slave is : Start bit +Slave address+ subaddress( identifier) +Data( maximum 2 bytes) + stop bit.

    How should i send the above message to my remote slave using ALP [ Assumed that message should transmitted through serializer and deserializer ]

    Do i need to do any jumper/switch/register settings to achieve the above?

    A quick response is more appreciable.

    Thanks,

    Jaisshri.C

  • As I mentioned before, the ALP s/w only performs a single I2C write byte using the board.WriteI2C(devAddr, regIndex, regVal) command in 8-bit WRITE formated in: [Start][Slave ID][W][ACK][Register Addr][ACK][Data Byte][ACK][Stop]

    What you are trying to implement can be executed using the Aardvark GUI; which allows 2 byte operations.

    Dac Tran

    SVA APPS