TS-7970 Silabs
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.
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 |