Difference between revisions of "Dev/LisaL"

From PaparazziUAV
Jump to navigation Jump to search
 
Line 1: Line 1:
This page describes the whereabouts of Lisa/L from a developer point of view
This page describes the whereabouts of Lisa/L from a developer point of view
=== Hardware ===
Lisa/L is based on the 64 pins STM32F103RE processor featuring 64k of RAM and 512k of FLASH. All the pins are exposed, providing access to the complete set of the STM32 peripherals.
*Power Supply
The board features a pair of two amps switching power supply module, one on 5V for external peripherals ( like modems, servos, USB webcams or wifi sticks) and one on 3V3 for the rest of the avionics. A third linear supply is available for providing clean power to inertial sensors.
The Lisa/L v0.99 and 0.101  (1.0-r1) has an input range of 8V to 18V. Upper limit due to PTH08080WAH switcher, and lower limit is due to LM317MDTXFS linear reg for intermediate voltage for analog components. (source Piotr)
*MCU
In brief, the STM32 features 3 USARTS, 2 SPI, 2 I2C, 1 CAN, a plethora of timers, ADCs and a generic DMA able to serve all of them.
On the board, a number of the communication interfaces are level shifted with user selectable voltage to allow interfacing with all kind of peripherals.
*Pressure sensors
The board is equipped with a pair of pressure sensors, one absolute to measure altitude and one differential to measure airspeed. The sensors are amplified and low passed before being sampled by a pair of 16 bits ADCs.
The absolute pressure sensor is the freescale [http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPXx6115&fsrch=1 MPXh6115] and the differential one is the [http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPXx5004&fsrch=1 MPXV5004DP]
The following plots displays the output of the sensors versus altitude or airspeed
[[Image:absolute_pressure.png|360px]]
[[Image:differential_pressure.png|360px]]
*FT2232H*
This chip is heart of the communications with the board while developing. It provides JTAG on the STM32 and SERIAL/USB conversion for the Overo console. It is powered by the USB bus and hence unpowered while in flight.
datasheet: [http://www.ftdichip.com/Documents/DataSheets/DS_FT2232H_V206.pdf URL]
mini module used for dev : [http://www.ftdichip.com/Products/EvaluationKits/FT2232H_MiniModule.htm URL]
*Gumstix Overo COM
[http://pubs.gumstix.com/boards/COMS/Overo/PF3503-R2410_DWG.pdf] mechanical drawings
The gumstix Overo is a single board computer module featuring a 600Mhz  OMAP35 processor. It communicates with the STM32 through SPI, offering throughput up to 48Mbps and served by DMA on both sides.
Exposed peripherals comprise two level shifted UARTs and two USB controllers ( one Host and one OTG )
*CAN
There are several passives around the CAN transceiver that are responsable for the bus configuration and termination.
For termination there are three options:
* Option 1 (Standard Termination):
R57: 120 Ohm
R59: DNP
R58: DNP
C42: DNP
R60: DNP
R61: DNP
* Option 2 (Split Termination):
R57: DNP
R59: 60 Ohm
R58: 60 Ohm
C42: 4.7 nF
R60: DNP
R61: DNP
* Option 3 (Biased Split Termination):
R57: DNP
R59: 60 Ohm
R58: 60 Ohm
C42: 4.7 nF
R60: 4.7k Ohm
R61: 4.7k Ohm
For more detailed description refer to [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en012057 Microchip Application Note 228]
For the waveform (maximal speed/range) there are also few options:
* High speed mode, 1Mbit maximal speed:
R55: 0 Ohm
R56: DNP
* Slope control, decreases EMI and decreases the maximal speed but increases theoretical length of wiring:
R55: 10k Ohm - 120k Ohm
R56: DNP
* Sleep mode, disable the transceiver and make it sleep:
R55: DNP
R56: 0Ohm
For more detailed description refer to [http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010405 MCP2551 Datasheet]
== Software ==
Airframe in the svn currently running on lisa/L
- Poine/booz2_a6 : this is an hexarotor with mikrokopter motor controllers and running booz2 code in the stm32
- Poine/booz2_a7 : this is an asctec quadrotor with astec motor controllers and running booz2 code in the stm32
- Poine/booz2_a8 : this is a biplan with asctec motor controllers and using stm32 only as io processor - this one is in progress
- esden/lisa_asctec : this is an asctec quadrotor with asctec motor controllers and running booz2 code in the stm32 using xtend based rc remote control.
=== STM32 toolchain ===
Install paparazzi-stm32 package available in the ENAC karmic and lucid repository. This toolchains contains gcc, newlib, libstm32, gdb and openocd
apt-get install paparazzi-stm32
Don't forget the udev rule to get the correct permission for JTAG
in pprz2svn/conf/system/udev/rules/10-paparazzi.rules add :
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010",
MODE="0666", GROUP="plugdev"
and folow Setting access rights for USB download on this page: http://paparazzi.enac.fr/wiki/Installation
Bug in package paparazzi-stm32, will be fixed in the next version, change ft2232_device_desc to "Lisa/L" in /opt/paparazzi/stm32/share/openocd/scripts/interface/openocd-lisa-jtag.cfg
replace:
ft2232_device_desc "Dual RS232 A"
by
ft2232_device_desc "Lisa/L"
=== STM32 programs ===
Booz code now runs in the stm32. booz2_a6.xml is an airframe for an hexarotor using mikrokopter controller and booz2_a7 is an airframe for an asctec using asctec controllers.
make AIRCRAFT=BOOZ2_A7 ap.upload
will compile and upload the booz autopilot on the stm32 through jtag
There are a number of test programs ( see targets in conf/autopilot/lisa_test_progs.makefile )
make AIRCRAFT=BOOZ2_A7 test_led.upload
will compile and upload a simple led blinking program in the stm32
=== Open Embedded ===
Open Embedded is the linux distribution used on the overo.
[[LisaOveroImage]] summarizes the instructions for building the development tree.
[[http://www.gumstix.net/Documentation/view/Overo-Setup-and-Programming/Creating-a-bootable-microSD-card/109.html]]
obsolete, left for reference : [[Setting_up_a_build_environment_for_overo-oe]]
=== OMAP programs ===
There are a couple of demo programs ( at the top of conf/autopilot/lisa_test_progs.makefile )
overo_test_periodic : shows how to use the high precision timers
overo_test_telemetry : shows how to send telemetry through UDP
overo_test_link_stm32 : shows how to exchange data through SPI with the stm32
make AICRAFT=BOOZ2_A7 overo_test_telemetry.upload
will compile and copy the demo program to the gumstix ( using scp ) . You need to configure the variable HOST in the airframe file for the hostname of your overo, and you might want to have ssh keys to avoid typing your password ( man ssh-copy-id )
=== BLAAAA ===
Running booz on stm32: see http://paparazzi.enac.fr/wiki/Lisa_Asctec_Bringup
testing spi link between overo and stm32:
  make AIRCRAFT=BETH clean_ac stm_test_spi_link.upload
  make AIRCRAFT=BETH clean_ac overo_test_spi_link.upload
 
=== Software TODO ===
* upload schematics and bloc diagram
* make stm32 able to interrupt overo ( spi link ) to implement data_ready functionality, possibly use that as source o timing for overo program
* add a checksum to the spi link between overo and stm32 (Tobi is working on it)
* make asctec v2 code able to send settings ( address, direction ) to controllers
* <strike>move sign of IMU calibration coef to a the board/hardware header</strike>
* write ppm decoder for the stm32
* improve spektrum protocol decoder to automatically handle the different models and modes of transmitters
=== Hardware TODO ===
* add termination on adg3308 ( [http://www.dizziness-and-balance.com/practice/images/oculomotor/saccades/cerebellar%20(bg)%20saccades.jpg Saccade-Horizontal]  [http://www.nu9n.com/images/overshoot.gif Overshoot 1] [http://www.eas.slu.edu/Earthquake_Center/NM/INSTRUMENT/Q330/Q330.png Overshoot 2] ) - maybe not, our PCB tracks are short enough not to need them
* <strike>add missing bypass capacitors to: STM32 (4.7uF), PCA levelshifters (100nF), CAN Transceiver (100nF)</strike>
* <strike>change i2c pullups to 1k Ohm</strike>
* Add breakout pads for another SPI interface to Overo
* Brekout Overo memory bus for optional peripherals

Revision as of 05:55, 6 August 2010

This page describes the whereabouts of Lisa/L from a developer point of view


Hardware

Lisa/L is based on the 64 pins STM32F103RE processor featuring 64k of RAM and 512k of FLASH. All the pins are exposed, providing access to the complete set of the STM32 peripherals.

  • Power Supply

The board features a pair of two amps switching power supply module, one on 5V for external peripherals ( like modems, servos, USB webcams or wifi sticks) and one on 3V3 for the rest of the avionics. A third linear supply is available for providing clean power to inertial sensors.

The Lisa/L v0.99 and 0.101 (1.0-r1) has an input range of 8V to 18V. Upper limit due to PTH08080WAH switcher, and lower limit is due to LM317MDTXFS linear reg for intermediate voltage for analog components. (source Piotr)

  • MCU

In brief, the STM32 features 3 USARTS, 2 SPI, 2 I2C, 1 CAN, a plethora of timers, ADCs and a generic DMA able to serve all of them. On the board, a number of the communication interfaces are level shifted with user selectable voltage to allow interfacing with all kind of peripherals.

  • Pressure sensors

The board is equipped with a pair of pressure sensors, one absolute to measure altitude and one differential to measure airspeed. The sensors are amplified and low passed before being sampled by a pair of 16 bits ADCs.

The absolute pressure sensor is the freescale MPXh6115 and the differential one is the MPXV5004DP The following plots displays the output of the sensors versus altitude or airspeed

Absolute pressure.png Differential pressure.png


  • FT2232H*

This chip is heart of the communications with the board while developing. It provides JTAG on the STM32 and SERIAL/USB conversion for the Overo console. It is powered by the USB bus and hence unpowered while in flight.

datasheet: URL

mini module used for dev : URL


  • Gumstix Overo COM

[1] mechanical drawings

The gumstix Overo is a single board computer module featuring a 600Mhz OMAP35 processor. It communicates with the STM32 through SPI, offering throughput up to 48Mbps and served by DMA on both sides. Exposed peripherals comprise two level shifted UARTs and two USB controllers ( one Host and one OTG )

  • CAN

There are several passives around the CAN transceiver that are responsable for the bus configuration and termination.

For termination there are three options:

  • Option 1 (Standard Termination):
R57: 120 Ohm
R59: DNP
R58: DNP
C42: DNP
R60: DNP
R61: DNP
  • Option 2 (Split Termination):
R57: DNP
R59: 60 Ohm
R58: 60 Ohm
C42: 4.7 nF
R60: DNP
R61: DNP
  • Option 3 (Biased Split Termination):
R57: DNP
R59: 60 Ohm
R58: 60 Ohm
C42: 4.7 nF
R60: 4.7k Ohm
R61: 4.7k Ohm

For more detailed description refer to Microchip Application Note 228

For the waveform (maximal speed/range) there are also few options:

  • High speed mode, 1Mbit maximal speed:
R55: 0 Ohm
R56: DNP
  • Slope control, decreases EMI and decreases the maximal speed but increases theoretical length of wiring:
R55: 10k Ohm - 120k Ohm
R56: DNP
  • Sleep mode, disable the transceiver and make it sleep:
R55: DNP
R56: 0Ohm

For more detailed description refer to MCP2551 Datasheet

Software

Airframe in the svn currently running on lisa/L

- Poine/booz2_a6 : this is an hexarotor with mikrokopter motor controllers and running booz2 code in the stm32
- Poine/booz2_a7 : this is an asctec quadrotor with astec motor controllers and running booz2 code in the stm32
- Poine/booz2_a8 : this is a biplan with asctec motor controllers and using stm32 only as io processor - this one is in progress
- esden/lisa_asctec : this is an asctec quadrotor with asctec motor controllers and running booz2 code in the stm32 using xtend based rc remote control.

STM32 toolchain

Install paparazzi-stm32 package available in the ENAC karmic and lucid repository. This toolchains contains gcc, newlib, libstm32, gdb and openocd apt-get install paparazzi-stm32

Don't forget the udev rule to get the correct permission for JTAG

in pprz2svn/conf/system/udev/rules/10-paparazzi.rules add :

SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0666", GROUP="plugdev"

and folow Setting access rights for USB download on this page: http://paparazzi.enac.fr/wiki/Installation

Bug in package paparazzi-stm32, will be fixed in the next version, change ft2232_device_desc to "Lisa/L" in /opt/paparazzi/stm32/share/openocd/scripts/interface/openocd-lisa-jtag.cfg

replace:

ft2232_device_desc "Dual RS232 A"

by

ft2232_device_desc "Lisa/L"


STM32 programs

Booz code now runs in the stm32. booz2_a6.xml is an airframe for an hexarotor using mikrokopter controller and booz2_a7 is an airframe for an asctec using asctec controllers.

make AIRCRAFT=BOOZ2_A7 ap.upload

will compile and upload the booz autopilot on the stm32 through jtag

There are a number of test programs ( see targets in conf/autopilot/lisa_test_progs.makefile )

make AIRCRAFT=BOOZ2_A7 test_led.upload

will compile and upload a simple led blinking program in the stm32

Open Embedded

Open Embedded is the linux distribution used on the overo. LisaOveroImage summarizes the instructions for building the development tree.

[[2]]

obsolete, left for reference : Setting_up_a_build_environment_for_overo-oe

OMAP programs

There are a couple of demo programs ( at the top of conf/autopilot/lisa_test_progs.makefile )

overo_test_periodic : shows how to use the high precision timers

overo_test_telemetry : shows how to send telemetry through UDP

overo_test_link_stm32 : shows how to exchange data through SPI with the stm32

make AICRAFT=BOOZ2_A7 overo_test_telemetry.upload

will compile and copy the demo program to the gumstix ( using scp ) . You need to configure the variable HOST in the airframe file for the hostname of your overo, and you might want to have ssh keys to avoid typing your password ( man ssh-copy-id )

BLAAAA

Running booz on stm32: see http://paparazzi.enac.fr/wiki/Lisa_Asctec_Bringup

testing spi link between overo and stm32:

  make AIRCRAFT=BETH clean_ac stm_test_spi_link.upload
  make AIRCRAFT=BETH clean_ac overo_test_spi_link.upload



Software TODO

  • upload schematics and bloc diagram
  • make stm32 able to interrupt overo ( spi link ) to implement data_ready functionality, possibly use that as source o timing for overo program
  • add a checksum to the spi link between overo and stm32 (Tobi is working on it)
  • make asctec v2 code able to send settings ( address, direction ) to controllers
  • move sign of IMU calibration coef to a the board/hardware header
  • write ppm decoder for the stm32
  • improve spektrum protocol decoder to automatically handle the different models and modes of transmitters

Hardware TODO

  • add termination on adg3308 ( Saccade-Horizontal Overshoot 1 Overshoot 2 ) - maybe not, our PCB tracks are short enough not to need them
  • add missing bypass capacitors to: STM32 (4.7uF), PCA levelshifters (100nF), CAN Transceiver (100nF)
  • change i2c pullups to 1k Ohm
  • Add breakout pads for another SPI interface to Overo
  • Brekout Overo memory bus for optional peripherals