117 lines (106 sloc) 8.74 KB

Intel Edison {#edison}

Intel(R) Edison is a dual-core Silvermont Atom(TM) clocked at 500MHz. The Edison also features 4GB of storage, 1GB ram and on-board WiFi and Bluetooth.

Currently supported boards:

  • Intel Arduino board
  • Intel breakout board


On both the Arduino board and the breakout board, The available UART interface is on /dev/ttyMFD1

Intel Arduino board

The Edison used with the Arduino board has the following limitations in libmraa:

  • Do not use the 'reset' button on the arduino shields, there is a hardware bug and the platform will likely not come back up correctly
  • I2C is exposed on i2c-6, therefore you must use bus 6 and not bus 0
  • PWM available on default swizzler positions. (3,5,6,9)
  • SPI exposed is also used for the ADC. Try not to use your own CS.
  • Max SPI speed is 25Mhz/4 ~6.25Mhz
  • SPI PM can sometimes do weird things you can disable it with: echo on > /sys/devices/pci0000\:00/0000\:00\:07.1/power/control
  • ADC kernel module will return 16bit number but the ADC itself only has an accuracy of maximum 12bits and in MRAA it's limited to 10bits by default. Use mraa_aio_set_bit(12) to switch to the maximum resolution mode. This ADC is only included on the Arduino board.
  • AIO pins are treated as 0-5 in mraa_aio_init() but as 14-19 for everything else. Therefore use mraa_gpio_init(14) to use A0 as a GPIO
  • Arduino pin 7 can sometimes negatively impact the WiFi capability, if using WiFi avoid using this pin
  • Edison's i2c-1 can be used using for example the sparkfun i2c breakout ontop of the Arduino breakout board, this is not supported officially so asking for mraa_i2c_init(1) will result in getting i2c bus 6 (the default one). However using raw mode (mraa_i2c_init_raw(1)) this bus is fully usable
  • If you want to use /dev/ttyMFD2 you have to use the raw uart mode passing a std::string or char* argument of "/dev/ttyMFD2" to mraa:Uart() or mraa_uart_init_raw. By default there is a getty running on that interface so you will need to disable that first

Because of the way IO is setup with the tristate on the Arduino breakout board IO will be flipped as it is setup. It's recommended to setup IO pins & direction before using them in a setup() method or similar. It's impossible on this platform to avoid some GPIOs flipping on setup.

Intel(R) breakout board

  • Both I2C buses are available 1 & 6
  • IO on the miniboard is 1.8V
  • Requesting GPIO 4 will break your FTDI UART console, so bear in mind when trying to use it

Please see the following table on how the physical pins map to mraa pin numbers

MRAA Number Physical Pin Edison Pin Notes Pinmode0 Pinmode1 Pinmode2
0 J17-1 GP182 GPIO-182 PWM2
1 J17-2 NC Nothing from mraa
2 J17-3 NC Nothing from mraa
3 J17-4 VIN Nothing from mraa
4 J17-5 GP135 GPIO-135 UART
5 J17-6 RCVR_MODE Nothing from mraa
6 J17-7 GP27 GPIO-27 I2C-6-SCL
7 J17-8 GP20 GPIO-20 I2C-1-SDA
8 J17-9 GP28 GPIO-28 I2C-6-SDA
9 J17-10 GP111 GPIO-111 SPI-5-CS1
10 J17-11 GP109 GPIO-109 SPI-5-SCK
11 J17-12 GP115 GPIO-115 SPI-5-MOSI
12 J17-13 OSC_CLK_OUT_0 Nothing from mraa/check
13 J17-14 GP128 GPIO-128 UART-1-CTS
14 J18-1 GP13 GPIO-13 PWM1
15 J18-2 GP165 GPIO-165
16 J18-3 GPI_PWRBTN_N Nothing from mraa
17 J18-4 MSIC_SLP_CLK2 Nothing from mraa
18 J18-5 V_VBAT_BKUP Nothing from mraa
19 J18-6 GP19 GPIO-19 I2C-1-SCL
20 J18-7 GP12 PWM0 GPIO-12 PWM0
21 J18-8 GP183 PWM3 GPIO-183 PWM3
22 J18-9 NC Nothing from mraa
23 J18-10 GP110 GPIO-110 SPI-5-CS0
24 J18-11 GP114 GPIO-114 SPI-5-MISO
25 J18-12 GP129 GPIO-129 UART-1-RTS
26 J18-13 GP130 GPIO-130 UART-1-RX
27 J18-14 FW_RCVR Nothing from mraa
28 J19-1 NC Nothing from mraa
29 J19-2 V_V1P80 Nothing from mraa
30 J19-3 GND Nothing from mraa
31 J19-4 GP44 GPIO-44
32 J19-5 GP46 GPIO-46
33 J19-6 GP48 GPIO-48
34 J19-7 RESET_OUT Nothing from mraa
35 J19-8 GP131 GPIO-131 UART-1-TX
36 J19-9 GP14 GPIO-14
37 J19-10 GP40 GPIO-40 SSP2_CLK
38 J19-11 GP43 GPIO-43 SSP2_TXD
39 J19-12 GP77 GPIO-77 SD
40 J19-13 GP82 GPIO-82 SD
41 J19-14 GP83 GPIO-83 SD
42 J20-1 V_VSYS Nothing from mraa
43 J20-2 V_V3P30 Nothing from mraa
44 J20-3 GP134
45 J20-4 GP45 GPIO-45
46 J20-5 GP47 GPIO-47
47 J20-6 GP49 GPIO-49
48 J20-7 GP15 GPIO-15
49 J20-8 GP84 GPIO-84 SD
50 J20-9 GP42 GPIO-42 SSP2_RXD
51 J20-10 GP41 GPIO-41 SSP2_FS
52 J20-11 GP78 GPIO-78 SD
53 J20-12 GP79 GPIO-79 SD
54 J20-13 GP80 GPIO-80 SD
55 J20-14 GP81 GPIO-81 SD