TMP468: TMP468

Part Number: TMP468


Tool/software:

Hi Team,

We're using TMP468 9-Channel temperature sensor interfaced in I2C(I2C bus 0) with Amston lake X7405 as main SoC. The end prodcut is a switch running on top of ubuntu 24 with kernel version 6.8.

  • We could observe 3.3V is being fed to the IC but when we try detecting TMP468 with i2cget -y 0 0x49 0x00 command we're getting error output also we could'nt see the IC's address being listed down in i2cdetect -l as attached in below log. (slave address is 49 as Pin:9 ADD is pulled to V+ ).

O/P Logs:

ubuntu@ubuntu:/sys/class/hwmon$ sudo i2cdetect -l

[sudo] password for ubuntu:

i2c-0   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-1   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-2   i2c             igb BB                                  I2C adapter
i2c-3   i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-4   i2c             igb BB                                  I2C adapter
i2c-5   i2c             igb BB                                  I2C adapter
i2c-6   i2c             igb BB                                  I2C adapter
i2c-7   smbus           SMBus I801 adapter at efa0              SMBus adapter
ubuntu@ubuntu:/sys/class/hwmon$ sudo i2cdetect -y 0
Warning: Can't use SMBus Quick Write command, will skip some addresses
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                                                
10:                                                
20:                                                
30: -- -- -- -- -- -- -- --                        
40:                                                
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60:                                                
70:


ubuntu@ubuntu:/sys/class/hwmon$ sudo i2cget -y 0 0x48 0x00
Error: Read failed

  • When we try loading the module manually (TMP468). We are not getting any dmesg logs while loading & also Hwmon file is not created in /sys/class/hwmon. 

O/P Logs:

ubuntu@ubuntu:/sys/class/hwmon$ ls
hwmon0  hwmon1
ubuntu@ubuntu:/sys/class/hwmon$ cd hwmon0/
ubuntu@ubuntu:/sys/class/hwmon/hwmon0$ cat name
i350bb
ubuntu@ubuntu:/sys/class/hwmon/hwmon0$ cd ../hwmon1/
ubuntu@ubuntu:/sys/class/hwmon/hwmon1$ cat name
coretemp
ubuntu@ubuntu:/sys/class/hwmon/hwmon1$

Kindly help us resolving the issue as soon as possible.

  • TMP468 should respond to i2cdetect. Are you sure 0 is the right bus for your hardware?

    Please share schematic.

    Please share logic analyzer/oscilloscope capture of the bus activity.

    Here is TMP468 responding to my i2cdetect and i2cget:

    ren@raspberrypi:~ $ i2cdetect -y 0
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    ren@raspberrypi:~ $ i2cget -y 0 0x48 0 w
    0x700b
    

    Here the SMBus Word is byte-swapped, such that 0x700b reported was transmitted 0x0B first, and should be interpreted as 0x0B70 = 22.875C

    thanks,

    ren

    • TMP468 should respond to i2cdetect. Are you sure 0 is the right bus for your hardware?
    Response:

    As per schematics, We physically connected the TMP468 to I2C bus 0. please find the schematics below

    We could observe TMP468 salve address appears wherever the SMBus driver is being mapped irrespective of I2c bus connection
    Though TPM468 is physically connected to bus-0, when SMBus driver is mapped to i2c-6 the slave address appears there, below log is FYR

    , the adapter appears as i2c-6 in i2cdetect -l
    ubuntu@ubuntu:~$ sudo i2cdetect -l
    [sudo] password for ubuntu:
    i2c-0   i2c             Synopsys DesignWare I2C adapter         I2C adapter
    i2c-1   i2c             Synopsys DesignWare I2C adapter         I2C adapter
    i2c-2   i2c             igb BB                                  I2C adapter
    i2c-3   i2c             igb BB                                  I2C adapter
    i2c-4   i2c             igb BB                                  I2C adapter
    i2c-5   i2c             igb BB                                  I2C adapter
    i2c-6   smbus           SMBus I801 adapter at efa0              SMBus adapter

    Scanning i2c-6, we see a device at address 0x48
    ubuntu@ubuntu:~$ sudo i2cdetect -y 6
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:                         08 -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- 44 -- -- -- 48 -- -- -- -- -- -- --
    50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --    

    However, reading the temperature register
    ubuntu@ubuntu:/sys/bus/i2c/devices$ sudo i2cget -y 6 0x48 0x00
    0x00

    returns 0x00, indicating the device is not providing valid temperature data.

    At this point, we are not able to confirm whether the device at 0x48 is actually TMP468 or some another chip on the bus.

    • oscilloscope capture of the bus activity during

      ubuntu@ubuntu:~$ sudo i2cget -y 0 0x48 0 w
      Error: Read failed

    • Schematics


  • There's no activity on your oscilloscope. The time scale is not appropriate for typical I2C activity; you will need a finer time scale. 

    I also recommend using 0ohm to tie ADD pin to GND. The sensor may not reliably detect the pin state if the resistance is too high.

    ren