
{| align=right
|-
|<categorytree style="float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;" mode=pages>Autopilots </categorytree>
|}
<div style="float: right; width: 65%">
[[Image:Tawaki_v100_top_hand.JPG|400px|Tawaki v1.00 top side]]<br><br>
[[Image:Tawaki_v100_top_bottom_1E.JPG|400px|Tawaki v1.00 1€ size comparison]]
</div>
__TOC__

== Hardware Revision History ==
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="6"
!''Version #''!!''Release Date''!!''Release Notes''
|-
|v1.00||07/2019||Initial release of Tawaki
|}

== Overview ==

=== Pictures ===
<gallery>
Tawaki_v100_top_pers.JPG
Tawaki_v100_bottom_pers.JPG
Tawaki_v100_bottom_hand.JPG
Tawaki_v100_top_SD_beside.JPG
Tawaki_v100_top_x4.JPG
</gallery>

=== Key Features ===
*STMicro [https://www.st.com/en/microcontrollers-microprocessors/stm32f777vi.html STM32F777VI] Micro Controller Unit
**ARM Cortex-M7, 216 MHz CPU, FPU & DSP instructions, 2 Mbytes Flash, 512 Kbytes SRAM, General-purpose DMA, HW Crypto,etc.
*On-board Sensors
**6 DOF Accelerometers & Gyrometers TDK-Invensense [https://www.invensense.com/products/motion-tracking/6-axis/icm-20600/ ICM-20600]
**3 DOF Magnetometer STMicro [https://www.st.com/en/microcontrollers-microprocessors/stm32f777vi.html LIS3MDL]
**Baro-Altimeter Bosch [https://www.bosch-sensortec.com/bst/products/all_products/bmp388 BMP388]
*8x Servos or ESC outputs (PWM/OneShot/DShot) + D-Shot Telemetry serial input
*2x RC Receiver Inputs (S.BUS, PPM & Spektrum Satellite compatible, including receiver binding)
*Communication Buses
**3x UARTs (including one with hardware flow control signals)
**1x I2C bus (3.3V and 5V logic level)
**1x SPI bus (with Slave Select, Master or Slave)
**1x CAN bus
**1x USB (Micro-B & remote) : DFU mode (download) or USB storage (direct access to MicroSD card) or FullSpeed Mode
*8x Auxiliary Inputs/Outputs spread over 2 connectors (8x ADC, 8x Timers different from servos, x1 UART, etc.)
*MicroSD card (+ dedicated power supply for emergency files closing system)
*Debug Connector (Serial Wire Debug)
*Power
**source 2 to 4 Lipo cells (6 to 17v)
**5V/4A (max total for Tawaki + Servos + Payload)
**3.3V/3A Low Noise (max total for payload)
**Controlled PowerSwitch 5V/2A supply on AUX A connector
*x4 Status Leds
*Connectors fully compatible with Apogee autopilot
*Mechanical
** 53 x 25mm (2.1" x 0.98"), including 4x &Phi;2mm mounting holes (shares the same external dimensions and mounting points as Apogee)
** 4x &Phi;3mm extra mounting slotted holes, 30 to 31mm spacing (30.5mm standard from Racers ESC, GPS modules, etc. )
** 11g (0.4 oz) (including Micro-SD card)

=== Pinout ===

==== Simplified Pinout Diagram (Paparazzi use) ====
''Pins Name and Type are specified with respect to the Autopilot Board''<br>

[[Image:Tawaki_v100_simplified_pinout.png|1200px|Tawaki v1.00 simplified pinout (Paparazzi use)]]

==== Simplified Pinout Tables (Paparazzi use) ====
<small>

'''Servos a1 / a2 / a3 / a4'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!width="15%"|''MCU Resource''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||-||common ground
|-
|2||style="background:orange; color:black"|+5V||PWR||-||-||5V Rail from autopilot
|-
|3||style="background:cyan; color:black"|SRVa1<br>SRVa2<br>SRVa3<br>SRVa4||OUT||PE9<br>PE11<br>PE13<br>PE14||Tim1.Ch1<br>Tim1.Ch2<br>Tim1.Ch3<br>Tim1.Ch4||Servo signal (PWM)
|}
<br>

'''Servos b'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!width="15%"|''MCU Resource''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||-||common ground
|-
|2||style="background:orangered; color:black"|VBAT||PWR<sub>IN/OUT</sub>||-||-||Battery Rail (if solder bridge JP1 ON)
|-
|3||style="background:cyan; color:black"|SRVb1||OUT||PB6||Tim4.Ch1||Servo signal (PWM)
|-
|4||style="background:cyan; color:black"|SRVb2||OUT||PB7||Tim4.Ch2||Servo signal (PWM)
|-
|5||style="background:cyan; color:black"|SRVb3||OUT||PB8||Tim4.Ch3||Servo signal (PWM)
|-
|6||style="background:cyan; color:black"|SRVb4||OUT||PB9||Tim4.Ch4||Servo signal (PWM)
|-
|7||style="background:green; color:black"|DSHTin||IN||PB5||UART5.Rx|| DShot Telemetry serial input
|}
<br>

'''R/C'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!width="15%"|''MCU Resource''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||-||common ground
|-
|2||style="background:Orange; color:black"|+5V||PWR||-||-||5V Rail from autopilot
|-
|3||style="background:Red; color:black"|+3.3V||PWR||-||-||3.3V Rail from autopilot
|-
|4||style="background:LightYellow; color:black"|RC1||IN||PE0||UART8.Rx||(5V Tolerant) Serial (SBUS, Spektrum, etc.)
|-
|5||style="background:LightYellow; color:black"|RC2||IN||PC6||UART6.Tx (use software swap to use it as Rx)<br>Tim3.Ch1<br>Tim8.Ch1||(5V Tolerant) Serial (SBUS, Spektrum, etc.) or PPM Stream RC receiver signal
|}
<br>

'''UART2'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||common ground
|-
|2||style="background:Orange; color:black"|+5V||PWR||-||5V Rail from autopilot
|-
|3||style="background:Red; color:black"|+3.3V||PWR||-||3.3V Rail from autopilot
|-
|4||style="background:green; color:white"|RX2||IN||PD6||UART2 Serial Input (3.3V level)
|-
|5||style="background:blue; color:white"|TX2||OUT||PD5||UART2 Serial Output (3.3V level)
|}
<br>

'''UART3'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||common ground
|-
|2||style="background:Orange; color:black"|+5V||PWR||-||5V Rail from autopilot
|-
|3||style="background:Red; color:black"|+3.3V||PWR||-||3.3V Rail from autopilot
|-
|4||style="background:green; color:white"|RX2||IN||PD9||UART3 Serial Input (3.3V level)
|-
|5||style="background:blue; color:white"|TX2||OUT||PD8||UART3 Serial Output (3.3V level)
|}
<br>

'''UART7'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||common ground
|-
|2||style="background:Orange; color:black"|+5V||PWR||-||5V Rail from autopilot
|-
|3||style="background:Red; color:black"|+3.3V||PWR||-||3.3V Rail from autopilot
|-
|4||style="background:green; color:white"|RX2||IN||PB3||UART7 Serial Input (3.3V level)
|-
|5||style="background:blue; color:white"|TX2||OUT||PA15||UART7 Serial Output (3.3V level)
|}
<br>

'''I2C2 (3V3)'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||common ground
|-
|2||style="background:Orange; color:black"|+5V||PWR||-||5V Rail from autopilot
|-
|3||style="background:red; color:black"|+3.3V||PWR||-||3.3V Rail from autopilot
|-
|4||style="background:sienna; color:white"|SDA2<sub> 3.3V</sub>||Open Drain I/O||PB11||I2C2 bus Serial DAta ('''3.3V level''', 2.2k&Omega; pull-up)
|-
|5||style="background:blue; color:white"|SCL2<sub> 3.3V</sub>||Open Drain I/O||PB10||I2C12 bus Serial CLock ('''3.3V level''', 2.2k&Omega; pull-up)
|}
<br>

'''I2C2 (5V)'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||common ground
|-
|2||style="background:Orange; color:black"|+5V||PWR||-||5V Rail from autopilot
|-
|3||style="background:red; color:black"|+3.3V||PWR||-||3.3V Rail from autopilot
|-
|4||style="background:sienna; color:white"|SDA2<sub> 5V</sub>||Open Drain I/O||PB11||I2C2 bus Serial DAta ('''5V level''', 2.2k&Omega; pull-up)
|-
|5||style="background:blue; color:white"|SCL2<sub> 5V</sub>||Open Drain I/O||PB10||I2C12 bus Serial CLock ('''5V level''', 2.2k&Omega; pull-up)
|}
<br>

'''SPI2'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||common ground
|-
|2||style="background:Orange; color:black"|+5V||PWR||-||5V Rail from autopilot
|-
|3||style="background:red; color:black"|+3.3V||PWR||-||3.3V Rail from autopilot
|-
|4||style="background:sienna; color:white"|NSS2||OUT||PB12||Slave Select. Selects the SPI slave
|-
|5||style="background:Grey; color:white"|MOSI2||I/O||PB15||SPI2 Master Out Slave In. Data output from master / data input to slave
|-
|6||style="background:Green; color:white"|MISO2||I/O||PB14||SPI2 Master In Slave Out. Data input to master / data output from slave
|-
|7||style="background:Yellow; color:black"|SCK2||I/O||PD3||SPI2 Serial clock. Clock output from master or input to slave
|}
<br>

'''CAN'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:Green; color:white"|CANL||I/O||-||CAN bidirectional - line
|-
|2||style="background:Yellow; color:black"|CANH||I/O||-||CAN bidirectional + line
|}
''Note: Embedded 120&Omega; terminator resistor.''<br>
<br>

'''AUX a'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!width="15%"|''MCU Resource''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||-||common ground
|-
|2||style="background:Orange; color:black"|+5V Aux||PWR||(Controlled by) PC13||-||5V from autopilot through Power Switch<br>(PC13 = Low => OFF / PC13 = High => ON)
|-
|3||style="background:Red; color:white"|+3.3V||PWR||-||-||3.3V Rail from autopilot
|-
|4||style="background:#EFEFEF; color:black"|AUXa1||I/O||PA0||ADC1+2+3.In0<br>Tim2.Ch1<br>Tim5.Ch1<br>UART4.Tx<br>UART2.CTS||General Purpose I/O
|-
|5||style="background:#EFEFEF; color:black"|AUXa2||I/O||PA1||ADC1+2+3.In1<br>Tim2.Ch2<br>Tim5.Ch2<br>UART4.Rx<br>UART2.RTS||General Purpose I/O
|-
|6||style="background:#EFEFEF; color:black"|AUXa3||I/O||PA2||ADC1+2+3.In2<br>Tim2.Ch3<br>Tim5.Ch3<br>Tim9.Ch1<br>||General Purpose I/O
|-
|7||style="background:#EFEFEF; color:black"|AUXa4||I/O||PA6||ADC1+2.In6<br>Tim3.Ch1<br>Tim13.Ch1||General Purpose I/O
|}
<br>

'''AUX b'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!width="15%"|''MCU Resource''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||-||common ground
|-
|2||style="background:Orange; color:black"|+5V||PWR||-||-||5V Rail from autopilot
|-
|3||style="background:Red; color:white"|+3.3V||PWR||-||-||3.3V Rail from autopilot
|-
|4||style="background:#EFEFEF; color:black"|AUXb1||I/O||PA3||ADC1+2+3.In3<br>Tim2.Ch4<br>Tim5.Ch4<br>Tim9.Ch2||General Purpose I/O
|-
|5||style="background:#EFEFEF; color:black"|AUXb2||I/O||PA7||ADC1+2+3.In7<br>Tim3.Ch2<br>Tim14.Ch1||General Purpose I/O
|-
|6||style="background:#EFEFEF; color:black"|AUXb3||I/O||PB0||ADC1+2.In8<br>Tim3.Ch3||General Purpose I/O
|-
|7||style="background:#EFEFEF; color:black"|AUXb4||I/O||PB1||ADC1+2.In9<br>Tim3.Ch4||General Purpose I/O
|}
<br>

'''USB'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||common ground
|-
|2||style="background:green; color:white"|USB+||I/O||PA12||USB bidirectional D+ line
|-
|3||style="background:white; color:black"|USB-||I/O||PA11||USB bidirectional D- line
|-
|4||style="background:orange; color:black"|VBUS||IN||PA9||USB bus power (5V)
|-
|5||style="background:#E0FFFF; color:black"|BOOT||IN||BOOT0||DFU or USB Mode selection (BOOT0 MCU pin)
|}
''Note: USB Micro-B and Molex Picoblade connectors are in parallel, only one should be connected at a time.''
<br>


'''SWD'''
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="50%"
!width="3%"|''Pin #''!!width="8%"|''Name''!!width="10%"|''Type''!!width="10%"|''MCU Port''!!''Description''
|-
|1||style="background:black; color:white"|GND||PWR||-||common ground
|-
|2||style="background:red; color:black"|+3.3V||PWR||-||3.3V Rail from autopilot
|-
|3||style="background:white; color:black"|nRST||IN||NRST||MCU Reset (active low)
|-
|4||style="background:blue; color:white"|SWCLK||IN||PA14||Serial Wire Clock
|-
|5||style="background:sienna; color:white"|SWDIO||I/O||PA13||Serial Wire Data Input/Output
|}
<br>

</small>

== Detailed Features ==

=== Power Supply ===
There are several ways to power the Tawaki board. '''CAUTION!''' use only one of these sources at a time:
*with a battery or any power source that delivers between 6 and 17V 
*by connecting it to a USB port
*with a power source that delivers a regulated, stable 5V
Each of these methods is detailed below.

==== Powering using battery/external source soldered onto battery pads ====

[[Image:Tawaki_v100_battery_pads_powering.png|600px|Tawaki v1.00 External source onto GND & VBAT pads]]<br><br>
This is the basic setup: the Tawaki then generates all the internal power sources needed by its components. Additionally, the board provides +5V and +3.3V power sources through dedicated ports for external payload.<br>
Limitations:
*input power source range: 6-17V (2-4 Lipo cells)
*maximum current usable by both Tawaki and payload on the +5V: I(5V)<4A
*maximum current usable for payload on the +3.3V: I(3.3V)<3A
*maximum total current usable: 4A
[[Image:Tawaki_v100_servo_b_vbat_source.png|400px|Tawaki v1.00 Servos b header Vbat source for payload]]<br><br>
With this setup, the external power source is available on the “VBAT” pin of the “Servos B” header - but only if solder bridge JP1 is jumped (turned ON) with a small blob of solder.<br>
Limitation:
*maximum current used on the “VBAT” pin must be less than 1A (because of the header’s specifications)

==== Powering using battery/external source connected on "Servos B" header ====

[[Image:Tawaki_v100_servo_b_header_powering.png|500px|Tawaki v1.00 External source on Servo b header]]<br><br>
With this setup, the “GND”(-) and “VBAT”(+) pins of the “Servos B” header are used as the main entry ports for the external power source - but only if solder bridge JP1 is jumped (turned ON) with a small blob of solder. This can be interesting when the ESC already delivers the external power source voltage through its command and control signals (as is frequently the case on multi-rotors).<br>
Limitations: <br>
*input power source range: 6-17V (2-4 Lipo cells)
*maximum total current usable: 1A (because of the header’s specifications)

==== Powering using USB Micro-B only ====

[[Image:Tawaki_v100_Micro-B_USB_powering.png|1000px|Tawaki v1.00 USB Micro-B powering]]<br><br>
It is possible to power the Tawaki with only a host computer, through the USB Micro-B port. This setup allows to power the board and all its components, while at the same time flashing it.<br>
In this case, the "VBUS" pin of the "USB" header must be connected to the "+5V" pin of any header that is equipped with one - with the exception of the "5Vaux" pin of the "AUX a" header.<br>
Limitation:<br>
*the host computer must be capable of providing the current needed for: powering the board, and any potential external payload. With a maximum limit of 1A (because of the header’s specifications)<br>
''Note: with this setup, the voltage of the external power source (VBAT) obviously cannot be measured by the micro-controller (MCU).''

==== Powering using external 5V source ====

[[Image:Tawaki_v100_external_5V_powering.png|800px|Tawaki v1.00 External 5V Source]]<br><br>
In some cases the external power source is out of range and cannot be used, but an external 5V power source is available (for example provided by the ESC). In this case, the external 5V power source must be connected to the "+5V" and "GND" pins of any header that are equipped with them - with the exception of the "5Vaux" pin of the "AUX a" header.<br>
Limitations:<br>
*voltage range: 4-6V
*the external 5V power source must be capable of providing the current needed for: powering the board, and any potential external payload. With a maximum limit of 1A (because of the headers' specifications)
* the "VBUS" pin of the "USB" header must not be connected to the "+5V" pin of any header
''Note: with this setup, the voltage of the external power source (VBAT) obviously cannot be measured by the micro-controller (MCU).''

=== USB Modes ===

==== Flash (DFU) mode ====

In this configuration, ''BOOT'' pin is connected to ''VBUS'' pin (#4 & #5 "USB" header).<br>
If USB cable is plugged and autopilot is not powered or USB cable plugged before autopilot is powered, board enter DFU mode and is ready to be flashed.<br>

[[Image:Tawaki_v100_USB_mode_DFU.png|600px|Tawaki v1.00 USB DFU/Flash mode]]<br>

==== USB Storage mode ====

In this configuration, ''BOOT'' pin is connected to ''VBUS'' pin (#4 & #5 "USB" header).<br>
If USB cable is plugged after autopilot is powered, autopilot task is stopped and board enters in USB storage mode to make SDcard content easily available by host as for an USB Pendrive. When unmounted and unplugged, autopilot task restart.

[[Image:Tawaki_v100_USB_mode_storage.png|600px|Tawaki v1.00 USB Storage mode]]<br>

==== Full Speed USB mode ====

=== General Pinout ===

''Pins Name and Type are specified with respect to the Autopilot Board''<br>

[[Image:Tawaki_v100_general_pinout.png|1200px|Tawaki v1.00 general pinout (development board use)]]

=== Schematic ===

=== Mechanical ===

==== Mechanical Dimensions ====

[[Image:Tawaki_v100_top_mechanical_dimensions.png|800px|Tawaki v1.00 top mechanical dimensions]]

==== CAD Files / 3D Model ====

[[Image:Tawaki_v100_step_file_logo.PNG|150px|link=Tawaki_v100_CAD.zip]][[Media:Tawaki_v100_CAD.zip|''   Download Tawaki v1.00 CAD File (zipped STEP file)'']]<br>

== Example of Airborne Equipment Electrical Connections ==

== Board production  ==

=== Gerber & Drill for PCB ===

=== Bill Of Material ===

=== Components Layout ===

[[Image:Tawaki_v100_bottom_components_layout.png|200px|link=https://wiki.paparazziuav.org/w/images/3/31/Tawaki_v100_bottom_components_layout.png]][[Media:Tawaki_v100_bottom_components_layout.pdf|Bottom components layout (pdf)]]<br>
[[Image:Tawaki_v100_top_components_layout.png|200px|link=https://wiki.paparazziuav.org/w/images/c/ca/Tawaki_v100_bottom_components_layout.png]][[Media:Tawaki_v100_top_components_layout.pdf|Top components layout (pdf)]]

=== Pick-and-Place ===

== Programming ==

== Debugging ==

=== Debugging with STM Discovery ST-LINK/V2 embedded debug tool ===

=== Debugging with BlackMagic probe ===

=== Debugging with [[CricketProbe/v1.00 | CricketProbe]] ===

== Source code ==
Available in latest git master branch.

== Where to Buy ==
Check availability on [[Get_Hardware|Get Hardware]] page

[[Category:Autopilots]]