2026-01-26 6:17 AM - last edited on 2026-01-26 6:44 AM by Peter BENSCH
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.
Then, when the conversion ready interrupt comes, I read the registers from 1 to 5 at once.
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!
Solved! Go to Solution.
2026-02-01 11:14 AM
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.
2026-01-26 3:15 PM
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?
2026-02-01 11:14 AM
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.