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.

CCS/ADS1000-Q1: Read ads1000-q1 chip register through I2C command to obtain display screen temperature

Part Number: ADS1000-Q1
Other Parts Discussed in Thread: ADS1000

Tool/software: Code Composer Studio

Hello,

In our project, ads1000-q1 chip is used

The usage is shown in the attachment. When the display screen is connected to ads1000-q1, the display temperature is converted by ADC, and the screen temperature value is transmitted to ads1000-q1. The SOC terminal now wants to read the ads1000-q1 chip register to obtain the display screen temperature through I2C command.

It is better to read the temperature value with i2cget or i2ctools commands at the terminal.

For example: i2cget - F - Y 7 0x48 0x00.

thank you.

  • Zongshu,

    Is your question about the difference between using i2cget or i2ctools commands? I'm trying to understand if this is a question about the ADS1000 or about Code Composer Studio. 

    Maybe you could clarify the exact question to help us understand. 

    Joseph Wu

  • Hi Joseph,,

    this question is not related to CCS software. 

    Customer now use ADS1000-Q1 to sample temperature value and change it to digital value.

    Customer want to know the I2C commands about read the register in ADS1000 so as to know the temperature.

    For example: i2cget - F - Y 7 0x48 0x00? 

  • Amelie,

    Reading the conversion of the ADS1000 is given in Figure 7 on page 10 of the datasheet. I've clipped it out to show it below:

    To read the device, send the read bit to the I2C address. Then you can read 2 or 3 bytes. The first two bytes are the conversion data, and the last byte is the conversion register, which is an optional read. 

    To just read two bytes, I've redrawn the figure so the transaction looks like this:

      

    The problem is the device does not use an addressable data register. Because if this, I'm not sure how you would set the i2cget to read from the device because you don't need to send the data register address after the I2C address.

    Joseph Wu

  • HI

    What we ask is how to read the register to get the temperature value?

    If you want to read the temperature value, according to your reply, there are two questions:

    1: In Figure 7. Output register, what are the values of d0 ~ D10?

    2: In Figure 7 timing diagram for reading from the ads1000 i2cf, what should be filled in for the a1a1 A0 R / W?

    What's your phone number? Can you contact me by phone?

  • I can use the terminal command to detect that the I2C address of ads1000 is 0x48, but I don't know which register to read?

    gordon_peak:/ # i2cdetect -r 0xa
    WARNING! This program can confuse your I2C bus, cause data loss and worse!
    I will probe file /dev/i2c-10 using receive byte commands.
    I will probe address range 0x03-0x77.
    Continue? [Y/n] y
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: 40 -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- 6a -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    gordon_peak:/ #

  • Hi zong shu,

    As for reading operation,

    1. Need to confirm your I2C address is 1001000 or 1001001.

    If the chip has package marked BD0, it is 1001000

    If the chip has package marked BD1, it is 1001001

    2. Only need to focus on 3 byte.

    – First byte: 0b1001 0001 or 1001 0011 (first 7-bit I 2C address followed by a high R/W bit)

    – Second byte: the ADS1000 response with the upper of the Conversion register

    – Third byte: the ADS1000 response with the lower of the Conversion register

  • Zongshu,


    Just to be clear, the ADS1000-Q1 is just an ADC, it does not have an internal temperature sensor. It only measures the input voltage and compares it to the VDD voltage.

    Here are answers to your questions.

    1. For the output register, the D11-D0 are the output data for the ADC, this value is 12-bits stored in a two's complement notation. D15 to D12 are the sign extension.

    Normally you would take this data and convert this to a voltage with:

    Voltage = (Output code * VDD) / (2^11 * Gain)

    - For example, you read the full 16-bit data from the device running with VDD=3.3V and Gain=2. You get:
    0000 0011 0101 0000 = 0350h = 848d

    Voltage = (848*3.3V)/(2^11*2) = 0.6832V

    - Second example, you read the full 16-bit data with VDD=3.3V and Gain=4, you get:
    1111 1110 1100 0000 = FEC0h = -320d (this is negative in two's complement notation)

    Voltage = (-320*3.3V)/(2^11*4) = -0.1289V

    2. I think Amelie has already answered this question. There are only two address options for the ADS1000-Q1 and it depends on the marking on the device.
    If the chip has package marked BD0, it is 1001000
    If the chip has package marked BD1, it is 1001001

    Because, you I2C senses it, I think the device is the BD0 and is responding to 48h

    Joseph Wu

  • The task has been suspended. Turn it off first. If you have any questions in the future.