Freerunner Navigation Board v2

From Openmoko

(Difference between revisions)
Jump to: navigation, search
m (Test Status)
(Issues: -> Either a Linux or Samsung SoC bug causes bus lockup when programming the LTC9604.)
Line 66: Line 66:
  
 
Reading exactly two bytes from the LTC9604 causes the I2C bus to lock up. The stop condition is not sent correctly and the master does not stop generating a clock.
 
Reading exactly two bytes from the LTC9604 causes the I2C bus to lock up. The stop condition is not sent correctly and the master does not stop generating a clock.
 +
The chip works fine when programmed with a MSP430 microcontroller. Therefore either the Linux driver or the Samsung SoC (or both) are causing the bug. I'll try to resolve this, but I'm quite busy with other stuff. If someone wants to help, please contact me.
  
 
=Availability=
 
=Availability=

Revision as of 22:10, 26 August 2010

The second version of the Freerunner Navigation Board includes lots of new stuff to play with, while still providing the same feature set as the first version.

Contents

Features

The FRNBv2 realizes all features from the first version on the top side of the PCB. The bottom side is all about further expansion. Most of these chips are not very usable without connecting additional electronics to them. I'll add detailed descriptions of what I did with them to this page.

Top side

3D Gyroscope ITG-3200

The new ITG-3200 digital gyroscope detects rotations and measures their angular velocity. This enables the FR to be used as game controller or to improve navigation capabilities without GPS.

3D Magnetometer HMC5843

A magnetometer senses magnetic fields. It can be used as compass for navigation purposes or to sense fields from other magnetic sources.

Air pressure/temperature sensor: BMP085

A pressure sensor can be used for weather forecast or to measure the height above sea level if the pressure at sea level is known. If the height is known from other sources (e.g. GPS), the change in ambient pressure can be used to detect weather changes. This may be useful for gliding.

Bottom side

4ch Programmable LED Controller PCA9632

This chip can source or sink current for up to four LEDs with a maximum of 25mA per LED. In addition to simple on/off states it can be programmed to blink or dim individual channels or a group of channels. Since the chip does everything on its own, it will continue to work even if the host cpu suspends. This allows the often requested feature to drain the battery even faster to notify users of incoming SMS or missed phone calls by blinking a LED even if the phone is suspended. A blink frequency down to once every 10 seconds and a widely adjustable duty cycle allows for very short flashes to save battery power.

1kHz – 68MHz Programmable oscillator LTC6904

This is, well, a programmable oscillator from which one frequency output and the output enable pin are available at testpoints. My intention was to use it as 38kHz oscillator to generate the carrier frequency of common infrared remote controls. The output enable can be connected to a GPIO. After implementing a small driver, this should work as a generic remote control solution using lirc.

12 bit Analog to Digital Converter ADS1015

This is similar to the chip which was used on the FRNBv1 to digitize analog gyroscope outputs. It provides only 12 instead of 16 bits of resolution, but this should be enough for most applications. The FRNBv2 does not use it for own purposes, so it is completely under user's control.

Touch Sensor MPR121

The MPR121 from Freescale Semiconductor is a multi channel proximity capacitive touch sensor controller. Up to twelve sensor areas could be connected, but due to space restrictions, only eight channels are accessible at solder pads. It is not guaranteed that the chip will work as intended, but I think it's worth to test it.

Documentation

Schematic and board layout files are available from http://chonyota.net/freerunner/FRNBv2/

Pictures of the assembled boards and more documentation (pinout, ...) will be added here.

Top side with the BMP085
Bottom side with PCA9632 and LTC9604

Test Status

The first PCBs arrived and allows to test single features. The progress will be documented here.

Chip I²C address Test Result Notes
ITG3200 0x69 ok driver usable but still incomplete
HMC5843 0x1E ok driver should to degauss sensor to ensure proper operation
BMP085 0x77 ok
PCA9632 0x60 ok
LTC9604 0x17 ok, bug works, but not with the I²C controller from the Freerunner
ADS1015 0x42 ok kernel driver incomplete. Userspace driver incomplete
MPR121 0x5A  ?? responds on i2cdetect; driver missing

Issues

Known HW or SW Issues

The frequency generator LTC9604 consumes about 0.5mA even if the outputs are turned off. This is not a real bug but it would be nice to turn the chip off while unused. A small modification should make it possible to use one output from the LED controller to control the power.

Use *50V* 2.2nF capacitor for C5. fixed.

Reading exactly two bytes from the LTC9604 causes the I2C bus to lock up. The stop condition is not sent correctly and the master does not stop generating a clock. The chip works fine when programmed with a MSP430 microcontroller. Therefore either the Linux driver or the Samsung SoC (or both) are causing the bug. I'll try to resolve this, but I'm quite busy with other stuff. If someone wants to help, please contact me.

Availability

The board will be availabe to purchase starting from the middle of august. It comes in three tastes:

  • CAB: Completely assembled board. Just add some wires and you're ready
  • DIY: Do it yourself! the PCB and all components needed to get your hands dirty
  • PCB: The bare PCB. You are free to buy only what you need.

The CAB and DIY packages miss the programmable oscillator and the analog to digital converter chips because they are rather expensive (about 6€ each, depending on order quantity) and can't be used without additional electronics. If you need their functionality it's possible to add them later on because they come in leaded packages and are hand solderable.

If people want boards containing these chips in addition to everything else I will try to add another assembly option.

Update: The PCBs arrived a few days ago. They should get assembled during the next week.


Pricing (estimates)

  • CAB: probably in the Range of 75€ to 80€
  • DIY: about 50€
  • PCB: about 7€

Preorders

If you are interested, please tell me which package you'd like to purchase.

  • Example: 1x CAB including oscillator and A/D Cmair
  • 3x CAB including oscillator and A/D --Glenn 04:24, 18 July 2010 (UTC)
  • 1x CAB --PWerken 17:20, 4 Aug 2010 (UTC)

Assembly variants

If you don't like the current package proposals, please specify which components you'd like to have. Depending on the response I might consider to offer two assembly variants.

Personal tools

The second version of the Freerunner Navigation Board includes lots of new stuff to play with, while still providing the same feature set as the first version.

Features

The FRNBv2 realizes all features from the first version on the top side of the PCB. The bottom side is all about further expansion. Most of these chips are not very usable without connecting additional electronics to them. I'll add detailed descriptions of what I did with them to this page.

Top side

3D Gyroscope ITG-3200

The new ITG-3200 digital gyroscope detects rotations and measures their angular velocity. This enables the FR to be used as game controller or to improve navigation capabilities without GPS.

3D Magnetometer HMC5843

A magnetometer senses magnetic fields. It can be used as compass for navigation purposes or to sense fields from other magnetic sources.

Air pressure/temperature sensor: BMP085

A pressure sensor can be used for weather forecast or to measure the height above sea level if the pressure at sea level is known. If the height is known from other sources (e.g. GPS), the change in ambient pressure can be used to detect weather changes. This may be useful for gliding.

Bottom side

4ch Programmable LED Controller PCA9632

This chip can source or sink current for up to four LEDs with a maximum of 25mA per LED. In addition to simple on/off states it can be programmed to blink or dim individual channels or a group of channels. Since the chip does everything on its own, it will continue to work even if the host cpu suspends. This allows the often requested feature to drain the battery even faster to notify users of incoming SMS or missed phone calls by blinking a LED even if the phone is suspended. A blink frequency down to once every 10 seconds and a widely adjustable duty cycle allows for very short flashes to save battery power.

1kHz – 68MHz Programmable oscillator LTC6904

This is, well, a programmable oscillator from which one frequency output and the output enable pin are available at testpoints. My intention was to use it as 38kHz oscillator to generate the carrier frequency of common infrared remote controls. The output enable can be connected to a GPIO. After implementing a small driver, this should work as a generic remote control solution using lirc.

12 bit Analog to Digital Converter ADS1015

This is similar to the chip which was used on the FRNBv1 to digitize analog gyroscope outputs. It provides only 12 instead of 16 bits of resolution, but this should be enough for most applications. The FRNBv2 does not use it for own purposes, so it is completely under user's control.

Touch Sensor MPR121

The MPR121 from Freescale Semiconductor is a multi channel proximity capacitive touch sensor controller. Up to twelve sensor areas could be connected, but due to space restrictions, only eight channels are accessible at solder pads. It is not guaranteed that the chip will work as intended, but I think it's worth to test it.

Documentation

Schematic and board layout files are available from http://chonyota.net/freerunner/FRNBv2/

Pictures of the assembled boards and more documentation (pinout, ...) will be added here.

Top side with the BMP085
Bottom side with PCA9632 and LTC9604

Test Status

The first PCBs arrived and allows to test single features. The progress will be documented here.

Chip I²C address Test Result Notes
ITG3200 0x69 ok driver usable but still incomplete
HMC5843 0x1E ok driver should to degauss sensor to ensure proper operation
BMP085 0x77 ok
PCA9632 0x60 ok
LTC9604 0x17 ok, bug works, but not with the I²C controller from the Freerunner
ADS1015 0x42 ok kernel driver incomplete. Userspace driver incomplete
MPR121 0x5A  ?? responds on i2cdetect; driver missing

Issues

Known HW or SW Issues

The frequency generator LTC9604 consumes about 0.5mA even if the outputs are turned off. This is not a real bug but it would be nice to turn the chip off while unused. A small modification should make it possible to use one output from the LED controller to control the power.

Use *50V* 2.2nF capacitor for C5. fixed.

Reading exactly two bytes from the LTC9604 causes the I2C bus to lock up. The stop condition is not sent correctly and the master does not stop generating a clock. The chip works fine when programmed with a MSP430 microcontroller. Therefore either the Linux driver or the Samsung SoC (or both) are causing the bug. I'll try to resolve this, but I'm quite busy with other stuff. If someone wants to help, please contact me.

Availability

The board will be availabe to purchase starting from the middle of august. It comes in three tastes:

  • CAB: Completely assembled board. Just add some wires and you're ready
  • DIY: Do it yourself! the PCB and all components needed to get your hands dirty
  • PCB: The bare PCB. You are free to buy only what you need.

The CAB and DIY packages miss the programmable oscillator and the analog to digital converter chips because they are rather expensive (about 6€ each, depending on order quantity) and can't be used without additional electronics. If you need their functionality it's possible to add them later on because they come in leaded packages and are hand solderable.

If people want boards containing these chips in addition to everything else I will try to add another assembly option.

Update: The PCBs arrived a few days ago. They should get assembled during the next week.


Pricing (estimates)

  • CAB: probably in the Range of 75€ to 80€
  • DIY: about 50€
  • PCB: about 7€

Preorders

If you are interested, please tell me which package you'd like to purchase.

  • Example: 1x CAB including oscillator and A/D Cmair
  • 3x CAB including oscillator and A/D --Glenn 04:24, 18 July 2010 (UTC)
  • 1x CAB --PWerken 17:20, 4 Aug 2010 (UTC)

Assembly variants

If you don't like the current package proposals, please specify which components you'd like to have. Depending on the response I might consider to offer two assembly variants.