From the previous section, we can summarize the V3s power supply
requirements to:

 - SMPS for +3.3V / 1.2A for the I/O power supply
 - LDO for +3.3V_AO / 30 mA for the Always-On power supply (RTC timer)
 - LDO for +3.0V / 200 mA for the analog power supply
 - SMPS for +1.8V / 1A for the DDR2 DRAM power supply
 - SMPS for +1.25V / 1.6 A for the core power supply

On the [LicheePi Zero board][1] used in our **[FunKey Zero][2]**
prototype, a triple SMPS [EA3036][3] is used for generating these
+3.3V, +1.8V and +1.2V voltages, with an additional [XC6206][4] LDO
for the +3.0V (the +3.3V Always On is connected directly to
+3.3V). Although compact (the EA3036 is a tiny 3 mm x 3 mm QFN20
package), this solution is not ideal as it does not provide a battery
charger and monitoring capability, which is a requirement for the
**FunKey S** device.

## PMICs

As it is generally the case with such a complex SoC requiring multiple
voltages, high current and proper voltage sequencing, all major
manufacturers provide dedicated companion chips called PMICs (Power
Management Integrated Circuits), in charge of these tasks. Allwinner
is not an exception through its sister company [X-Powers][5].

Their AXP20x products are highly-integrated PMICs that are optimized
for applications requiring single-cell Li-battery (Li-Ion/Polymer),
multiple output DC-DC converters and LDOs. Here is a block diagram:

![PMIC Block Diagram](/assets/images/AXP20x_Block_Diagram.png){: .lightbox}

The AXP20x features:

 - A wide choice of input power source, the best source is output as
   IPSOUT inside the IPS (Intelligent Power Select) block:

    - USB VBUS

    - Battery BAT

    - ACIN wall plug (not used in the **FunKey S**)

    - BACKUP battery (not used in the **FunKey S**)

 - A 1.8A fast PWM battery charger (also called DC/DC1) with battery
  voltage / current sense and programmable charge indication LED

 - A soft key power-on/off logic with timer (just as in smartphones!)

 - An I2C interface with interrupt signal to communicate with the CPU

 - An optional battery temperature monitoring if the battery is
   equipped with an NTC resistor (not used in the **FunKey S**)

 - A reference voltage

 - A built-in 12-channel 12 bit ADC that measures various voltages and
   currents data, as well as feeding an internal Coulomb counter and
   fuel gauge system (more on this later)

 - A "power OK" output used to generate the global RESET signal for the
   **FunKey S**

 - 5x GPIOs (not used in the **FunKey S**), GPIO0 can be programmed as
   LDO5 output

 - 2x DC/DC SMPS DC-DC2 and DC-DC3

 - 5x LDOs (only 2 are used in the **FunKey S**, LDO5 is optionnaly
   output to GPIO0)

Looking at their datasheets, it is difficult to tell the difference
between the [AXP202][6], [AXP203][7] and [AXP209][8] (any hint
welcome!). In the **FunKey S** design, we use an AXP209 because it is
the one that comes along with the V3s when you buy it on AliExpress.

## AXP20x Application Diagram

For complex dedicated chips like this, the best option is to follow as
much as possible the application diagram and reference design given by
the manufacturer, as the internals of the chips are seldom fully
disclosed, so you need to take their word on some of the external
component values to use.

The [Allwinner V3s Reference Design][9] contains on page 6 the
schematics for using an AXP203 to supply the power to a V3s-based
dashboard camera design. It follows closely the application diagram
provided in the AXP20x datasheets:

![AXP20x Application Diagram](/assets/images/AXP20x_Application_Diagram.png){: .lightbox}

More hints are provided in our self-translated [V3s Hardware Design
Guide][10] (page 7) too.

## PMIC Schematics

The **FunKey S** device uses all of the **U5** AXP209 integrated SMPS:

 - the PWM charger DC-DC1 for the battery
 - the DC-DC2 for providing the +1.25 V / 1.6A to the core
 - the DC-DC3 for providing the +3.3V / 1.2A to the I/Os

But compared to the sophisticated reference design above, the **FunKey
S** device only uses 2 out of the 5 integrated LDOs:

 - LDO1 supplies the +3.3V / 30 mA Always On for the RTC
 - LDO2 provides the +3.0V / 200 mA for the analog power supply
 - LDO3 / LDO4 / LDO5 are not used in the **FunKey S**
 
Here are the PMIC schematics:

![PMIC Schematics](/assets/images/PMIC_Schematics.png){: .lightbox}

These schematics may look intimidating and complex, but they are in
fact just a collection of simple basic elements, and it is actually
very close to the manufacturer-recommended design.

Here are the details for each PMIC functions, one by one:

### Power Inputs (East side)

A wall-plug AC adapter input is not used in the **FunKey S** device,
so +VIN is just filtered using C75 on pins 32 and 33.

The USB power input +VUSB on pin 31 is filtered using **C70**, and the
best (between +VUSB and +VBAT) available voltage is output to +VOUT on
pins 34 and 35 and filtered using **C78**.

The BACKUP supply on pin 30 is not used and is left unconnected.

### Internal Connections (All sides)

Some AXP20x signals are externally available and should be connected
to external components:

 - The BIAS connection on pin 23 is connected to a precision 200k 1%
   resistor **R22**, as recommended

 - The reference voltage VREF on pin 24 is decoupled with **C64**

 - The +2.5V internal logic voltage VINT on pin 26 is filtered using
   the recommended value for **C67**

Additionally, the AXP20x is actually made up of separate flexible
blocks that require external interconnections to set their desired
operation:

 - All DC/DC inputs (VIN1 on pin 44, VIN2 on pin 7 and VIN3 on pin
   14), as well as LDO3IN input on pin 40 are connected to the best
   available voltage +VOUT with filter capacitors **C59**, **C23**,
   **C30**, and **C69**, respectively

 - LDO1SET on pin 27 is used to set the initial voltage of LDO1, and
   according to the datasheets, setting it to VINT sets its voltage to
   the desired +3.3V for the +3.3V Always On power supply

 - OTOH, combined LDO 2 and 4 input LDOIN24 on pin 13 is instead
   connected to +3.3V in order to minimize the voltage drop for LDO2
   to generate the +3.0V. Here too, there is a filter capacitor
   **C34**

 - It is not clear what is the exact function of APS on pin 21 (it is
   described as "Internal Power Input"), but it must be connected to
   +VOUT, too

### DC-DC1 PWM Battery Charger (North East side)

The battery is connected to J5 (a [2-pin JST 1.0 mm pitch
receptacle][11]) and uses **R21** as a precision current sense
resistor, with **C53**/**C56**/**C60** filter capacitors and **L5** (a
low-profile ferrite-core power inductor rated with a saturation
current of 1.2A and low < 0.1 Ω resistance).

!!! Warning
    The battery is not protected on the board against reversing
    polarity, as the model used already contains a built-in
    protection.

**R24** is mounted to simulate a battery NTC resistor for measuring
temperature, as the chosen LiPo battery does not feature this
temperature sensor.

A user-programmable (through the I2C interface) charge [LED][12]
**D30** is provided, with its current-limiting resistor **R26**, as
well as a TVS diode **d31** to prevent ESD, as the LED body will be
indirectly accessible to user.

### DC-DC2 +1.25V / 1.6A (West side)

This SMPS is built around the ferrite core power inductor **L3** and
filter capacitors **C26** and **C29**.

### DC-DC3 +3.3V / 1.2A (South side)

This SMPS is built around the ferrite core power inductor **L4** and
filter capacitors **C39** and **C43**.

### LDO1 +3.3V Always On 30mA (South East side)

The LDO output on pin 28 is filtered with capacitor **C72**.

### LDO2 +3.0V / 200mA (South West side)

The LDO output on pin 12 is filtered with capacitor **C33**.

### LDO3 (North side)

This LDO is not used and its output on pin 41 is nevertheless filtered
with a capacitor **C63**.

### LDO4 (South West side)

This LDO is not used and its output on pin 11 is nevertheless filtered
with a capacitor **C38**.

### Power Key (North West side)

The AXP20x features a soft power key with internal short and
long-press detection with user-programmable time settings, which
enables turning power ON or OFF much like the way it is done in
cellular phones.

Only a few external components are required: the tactile switch
**S13**, its ESD protection TVS **D29**, and a low-pass filter **R18**
and **C42** for debouncing the switch.

### I2C Bus (North West side)

The AXP20x can be externally controlled by the main CPU using the I2C
bus on pins 1 and 2. This bus has pull-up resistors to +3.3V **R14**
and **R16**, and the IRQ/WAKEUP signal on pin 48 enables warning or
waking up the CPU on a selection of AXP20x-generated events, with a
pull-up resistor **R13** to +3.3V.

### GPIOs (South and West sides)

GPIO0-3 on pins 19, 18, 5 and 3 are not used in the **FunKey S** and
are left unconnected.

### PWROK (South West side)

The PWROK signal on pin 25 is used to generate the global RESET signal
for the whole board, with a pull-up resistor **R15** to the +3.3V
Always On power supply and a filter capacitor **C18**.

### Enable Signals (West side)

The global chip enable signal N_OE on pin 4 is activated by default
through a 47kΩ resistor **R17** to GND, but a magnetic Reed switch
**S14** can disable it by forcing its level to +VOUT, with a filter
capacitor **C83**. This circuit will be disscused later in the
[Magnetic Switch section][13].

The USB enable signal N_VBUSEN on pin 6 is directly tied to GND to
always enable power from the USB bus.

### Monitoring

Through the I2C bus and the numerous internal available registers, the
AXP20x provides a very fine control of its operation, including many
threshold and timing settings, but also many voltage and curent
monitoring values.

### Coulomb Counters / Fuel Gauge

It is well known that battery discharge voltage curve over time is
very flat, making it very difficult to estimate the real
charge/discharge state of the battery. Moreover, this state will vary
with temperature, load, and aging.

The only accurate way to monitor the battery status is to actually
count the energy that is stored when charging, and the one that is
consumed. This particularly important feature is achieved in the
AXP20x using a dual Coulomb counter which continuously sums the
current intensity over time for monitoring the battery accurate charge
and discharge status, with user-defined alert thresholds.

This fuel gauge is providing the ability to precisely report the
remaining battery capacity, just like people are used to with cellular
phones.

[1]: https://licheepizero.us/
[2]: https://hackaday.io/project/134065-funkey-zero
[3]: http://club.szlcsc.com/article/downFile_D72C44885C60F9F1.html
[4]: https://www.torexsemi.com/file/xc6206/XC6206.pdf
[5]: http://www.x-powers.com/en.php
[6]: http://www.x-powers.com/en.php/Info/down/id/55
[7]: https://github.com/Squonk42/V3s_Documentation/raw/master/AXP203_Datasheet_V1.0.pdf
[8]: https://github.com/Squonk42/V3s_Documentation/raw/master/AXP209_Datasheet_v1.0en.pdf
[9]: https://github.com/Squonk42/V3s_Documentation/blob/master/V3S_CDR_STD_V1_0_20150514.pdf
[10]: https://github.com/Squonk42/V3s_Documentation/raw/master/V3s%20hardware%20design%20guide%20V1.0_20150519%20EN%20Non%20Official.pdf
[11]: https://github.com/FunKey-Project/FunKey-S-Hardware/blob/master/Datasheets/1811151533_JST-Sales-America-SM02B-SRSS-TB-LF-SN_C160402.pdf
[12]: https://github.com/FunKey-Project/FunKey-S-Hardware/blob/master/Datasheets/C165977_%E8%B4%B4%E7%89%87LED%E8%93%9D%E8%89%B2_2018-01-26.PDF
[13]: /developers/hardware/magnetic_switch
--8<--
includes/glossary.md
--8<--
