TS-7970 Silabs

From embeddedTS Manuals

The on-board Silabs supervisory microcontroller includes 3 primary functions:

  • ADC channels
  • Sleep Mode
  • USB Console

The USB console passes through the CPU's "ttymxc0" port using a CP201x driver. This is present on most Linux distributions. On Windows this is available with a WHQL signed driver from Silabs.

The microcontroller exists at address 0x10 on I2C bus 0 using 8-bit address and data. It can be read for up to 32 bytes to get the ADC values, and firmware revision. Our example code 'tsmicroctl -i' includes reading all the ADC channels in millivolts and the firmware revision. For example:

 # tsmicroctl -i
 VDD_ARM_CAP=1026
 VDD_HIGH_CAP=2603
 VDD_SOC_CAP=1239
 VDD_ARM=1451
 SILAB_P10=0x0
 SILAB_P11=0x0
 SILAB_P12=0x0
 VIN=4779
 V5_A=5189
 V3P1=3230
 DDR_1P5V=1559
 V1P8=1904
 V1P2=1259
 RAM_VREF=778
 V3P3=3522
 SILABREV=1

In U-Boot, the 'tsmicroctl' command can be used (with no arguments) to read the same values.

The sleep mode is accessible from U-Boot with 'tsmicroctl <seconds>' and in Linux with 'tsmicroctl -s <seconds>'. This will power off everything on the board except the microcontroller. The blue LED will blink while it is in this mode.

The microcontroller samples all ADC channels in a scale of 0-2.5 V. The schematic shows the voltage dividers to bring the higher voltages it samples into this range.

Silabs Read Registers
Register Description
0 VDD_ARM_CAP MSB
1 VDD_ARM_CAP LSB
2 VDD_HIGH_CAP MSB
3 VDD_HIGH_CAP LSB
4 VDD_SOC_CAP MSB
5 VDD_SOC_CAP LSB
6 VDD_ARM MSB
7 VDD_ARM LSB
8 SILAB_P10 MSB
9 SILAB_P10 LSB
10 SILAB_P11 MSB
11 SILAB_P11 LSB
12 SILAB_P12 MSB
13 SILAB_P12 LSB
14 VIN MSB
15 VIN LSB
16 V5_A MSB
17 V5_A LSB
18 V3P1 MSB
19 V3P1 LSB
20 DDR_1P5V MSB
21 DDR_1P5V LSB
22 V1P8 MSB
23 V1P8 LSB
24 V1P2 MSB
25 V1P2 LSB
26 RAM_VREF MSB
27 RAM_VREF LSB
28 V3P3 MSB
29 V3P3 LSB
30 Firmware Revision