Skip to main content
Associate
January 26, 2026
Solved

TSC1641 The values of the current and power registers appear to be swapped.

  • January 26, 2026
  • 1 reply
  • 218 views

I am having an issue where, when I read the values of the registers continuously, it seems as if the values of the current and power registers have been swapped.

After startup, I send the following configuration via i2c:
Configuration register write 0x8000 -> to reset the IC
Configuration register write: 0x0037 To continuously measure all values with a period of 1024 ms.
Shunt register write: 0x080b -> 0.03 Ohm
Mask register write: 0x0200 -> To enable conversion ready interrupt.

jozseftari_0-1769436618297.png

Then, when the conversion ready interrupt comes, I read the registers from 1 to 5 at once.

jozseftari_1-1769436698835.png

From the values read, it appears that the value of register 3 is the current and the value of register 4 is the power. (It looks like they position swapped.)
Another interesting fact is that the data read from the power register is exactly half of the actual value.

Has anyone else encountered this problem?
What could be the cause? Am I overlooking something?

Thank you for the support!

Best answer by jozseftari

Thanks for your help.

I had a problem interpreting the data sheet, but now I have the solution.

I'll write it down here in case it helps someone else.

So, I would expect the following:
I would like to receive the current and power register values along with others from TSC1641 chip.

You can see the communication shown in the figures in the original question.

I would like to continuously read back the registers from 1 (shunt voltage register) to 5 (temperature register).

The result obtained:
1. register (shunt voltage): raw value 0x02f5;

converted to microvolts:
According to the data sheet, LSB=2.5uV, therefore,
Shunt voltage = 0x02f5*2.5uV = 1892.5 uV 
2. register (load voltage): raw value 0x2E45;

According to the datasheet, LSB=2mV, therefore:
Load voltage = 0x2e45*2mV = 23690 mV

3. register (power register): raw value 0x00 0x3b

According to the datasheet, DC power LSB = 25mW, therefore, 

Power = 0x003b*25mW = 1475mW 

4. register (current register): raw 0x02f5

According to the datasheet, I_LSB = Vshunt_LSB/Rshunt.

I have a 0.030Ohm shunt resistor, therefore,

Current = 0x003b*(2.5uV/0.030Ohm) = 63mA

5. Temperature reading is not relevant for me.




 

1 reply

TDK
Super User
January 26, 2026

It may help you get an answer if you make this a little more digestible for the casual observer.

Why do you think the values are swapped? What values are you getting from the registers, including conversion from from register values to EUs, and what values are you expecting instead?

"If you feel a post has answered your question, please click ""Accept as Solution""."
jozseftariAuthorBest answer
Associate
February 1, 2026

Thanks for your help.

I had a problem interpreting the data sheet, but now I have the solution.

I'll write it down here in case it helps someone else.

So, I would expect the following:
I would like to receive the current and power register values along with others from TSC1641 chip.

You can see the communication shown in the figures in the original question.

I would like to continuously read back the registers from 1 (shunt voltage register) to 5 (temperature register).

The result obtained:
1. register (shunt voltage): raw value 0x02f5;

converted to microvolts:
According to the data sheet, LSB=2.5uV, therefore,
Shunt voltage = 0x02f5*2.5uV = 1892.5 uV 
2. register (load voltage): raw value 0x2E45;

According to the datasheet, LSB=2mV, therefore:
Load voltage = 0x2e45*2mV = 23690 mV

3. register (power register): raw value 0x00 0x3b

According to the datasheet, DC power LSB = 25mW, therefore, 

Power = 0x003b*25mW = 1475mW 

4. register (current register): raw 0x02f5

According to the datasheet, I_LSB = Vshunt_LSB/Rshunt.

I have a 0.030Ohm shunt resistor, therefore,

Current = 0x003b*(2.5uV/0.030Ohm) = 63mA

5. Temperature reading is not relevant for me.