.. _beagleboneblack-capes:
Cape Board Support
######################
The BeagleBone Black has the ability to accept up to four expansion
boards or capes that can be stacked onto the expansion headers. The word
cape comes from the shape of the board as it is fitted around the
Ethernet connector on the main board. This notch acts as a key to ensure
proper orientation of the cape.
This section describes the rules for creating capes to ensure proper
operation with the BeagleBone Black and proper interoperability with
other capes that are intended to coexist with each other. Co-existence
is not a requirement and is in itself, something that is impossible to
control or administer. But, people will be able to create capes that
operate with other capes that are already available based on public
information as it pertains to what pins and features each cape uses.
This information will be able to be read from the EEPROM on each cape.
This section is intended as a guideline for those wanting to create
their own capes. Its intent is not to put limits on the creation of
capes and what they can do, but to set a few basic rules that will allow
the SW to administer their operation with the BeagleBone Black. For this
reason there is a lot of flexibility in the specification that we hope
most people will find liberating and in the spirit of Open Source
Hardware. I am sure there are others that would like to see tighter
control, more details, more rules and much more order to the way capes
are handled.
Over time, this specification will change and be updated, so please
refer to the latest version of this manual prior to designing your own
capes to get the latest information.
*DO NOT APPLY VOLTAGE TO ANY I/O PIN WHEN*
*POWER IS NOT SUPPLIED TO THE BOARD. IT WILL DAMAGE THE PROCESSOR AND
VOID THE WARRANTY.*
*NO PINS ARE TO BE DRIVEN UNTIL AFTER THE SYS_RESET LINE GOES HIGH.*
BeagleBone Black Cape Compatibility
************************************
The main expansion headers are the same between the BeagleBone and
BeagleBone Black. While the pins are the same, some of these pins are
now used on the BeagleBone Black. The following sections discuss these
pins.
The Power Expansion header was removed from the BeagleBone Black and is not available.
**PAY VERY CLOSE ATTENTION TO THIS SECTION AND READ CAREFULLY!!**
LCD Pins
=========
The LCD pins are used on the BeagleBone Black to drive the HDMI framer.
These signals are listed in *Table 15* below.
.. list-table:: P8 LCD Conflict Pins
:header-rows: 1
:class: longtable
:align: center
* - PIN
- PROC
- NAME
- MODE0
* - 27
- U5
- GPIO2_22
- lcd_vsync
* - 28
- V5
- GPIO2_24
- lcd_pclk
* - 29
- R5
- GPIO2_23
- lcd_hsync
* - 30
- R6
- GPIO2_25
- lcd_ac_bias_en
* - 31
- V4
- UART5_CTSN
- lcd_data14
* - 32
- T5
- UART5_RTSN
- lcd_data15
* - 33
- V3
- UART4_RTSN
- lcd_data13
* - 34
- U4
- UART3_RTSN
- lcd_data11
* - 35
- V2
- UART4_CTSN
- lcd_data12
* - 36
- U3
- UART3_CTSN
- lcd_data10
* - 37
- U1
- UART5_TXD
- lcd_data8
* - 38
- U2
- UART5_RXD
- lcd_data9
* - 39
- T3
- GPIO2_12
- lcd_data6
* - 40
- T4
- GPIO2_13
- lcd_data7
* - 41
- T1
- GPIO2_10
- lcd_data4
* - 42
- T2
- GPIO2_11
- lcd_data5
* - 43
- R3
- GPIO2_8
- lcd_data2
* - 44
- R4
- GPIO2_9
- lcd_data3
* - 45
- R1
- GPIO2_6
- lcd_data0
* - 46
- R2
- GPIO2_7
- lcd_data1
If you are using these pins for other functions, there are a few things
to keep in mind:
* On the HDMI Framer, these signals are all inputs so the framer will not be driving these pins.
* The HDMI framer will add a load onto these pins.
* There are small filter caps on these signals which could also change the operation of these pins if used for other functions.
* When used for other functions, the HDMI framer cannot be used.
* There is no way to power off the framer as this would result in the framer being powered through these input pins which would not a be a good idea.
* These pins are also the *SYSBOOT* pins. DO NOT drive them before the **SYS_RESETN** signal goes high. If you do, the board may not boot because you would be changing the boot order of the processor.
In order to use these pins, the SW will need to reconfigure them to
whatever function you need the pins to do. To keep power low, the HDMI
framer should be put in a low power mode via the SW using the *I2C0*
interface.
eMMC Pins
==========
The BeagleBone Black uses 10 pins to connect to the processor that also
connect to the P8 expansion connector. These signals are listed below in *Table 16*.
The proper mode is MODE2.
.. list-table:: P8 eMMC Conflict Pins
:header-rows: 1
:align: center
:class: longtable
* - PIN
- PROC
- SIGNAL
- MODE
* - 22
- V8
- MMC1_DAT5
- 1
* - 23
- U8
- MMC1_DAT4
- 1
* - 24
- V7
- MMC1_DAT1
- 1
* - 5
- R8
- MMC1_DAT2
- 1
* - 4
- T9
- MMC1_DAT7
- 1
* - 3
- R9
- MMC1_DAT6
- 1
* - 6
- T8
- MMC1_DAT3
- 1
* - 25
- U7
- MMC1_DAT0
- 1
* - 20
- V9
- MMC1_CMD
- 2
* - 21
- U9
- MMC1_CLK
- 2
If using these pins, several things need to be kept in mind when doing
so:
* On the eMMC device, these signals are inputs and outputs.
* The eMMC device will add a load onto these pins.
* When used for other functions, the eMMC cannot be used. This means you must boot from the microSD slot.
* If using these pins, you need to put the eMMC into reset. This requires that the eMMC be accessible from the processor in order to set the eMMC to accept the eMMC pins.
* DO NOT drive the eMMC pins until the eMMC has been put into reset. This means that if you choose to use these pins, they must not drive any signal until enabled via Software. This requires a buffer or some other form of hold off function enabled by a GPIO pin on the expansion header.
On power up, the eMMC is NOT reset. If you hold the Boot button down,
this will force a boot from the microSD. This is not convenient when a
cape is plugged into the board. There are two solutions to this issue:
1. Wipe the eMMC clean. This will cause the board to default to microSD
boot. If you want to use the eMMC later, it can be reprogrammed.
2. You can also tie LCD_DATA2 low on the cape during boot. This will be the same as if you were holding the boot button. However, in order to prevent unforeseen issues, you need to gate this signal with RESET, when
the data is sampled. After set goes high, the signal should be removed from the pin.
**BEFORE** the SW reinitializes the pins, it **MUST** put the eMMC in reset.
This is done by taking eMMC_RSTn (GPIO1_20) LOW **after** the eMMC has
been put into a mode to enable the reset line. This pin does not connect
to the expansion header and is accessible only on the board.
*DO NOT* automatically drive any conflicting pins until the SW enables
it. This puts the SW in control to ensure that the eMMC is in reset
before the signals are used from the cape. You can use a GPIO pin for
this. No, we will not designate a pin for this function. It will be
determined on a cape by cape basis by the designer of the respective
cape.
EEPROM
=======
Each cape must have its own EEPROM containing information that will
allow the SW to identify the board and to configure the expansion
headers pins as needed. The one exception is proto boards intended for
prototyping. They may or may not have an EEPROM on them. An EEPROM is
required for all capes sold in order for them operate correctly when
plugged into the BeagleBone Black.
The address of the EEPROM will be set via either jumpers or a dipswitch
on each expansion board. *Figure 61* below is the design of the EEPROM
circuit.
The EEPROM used is the same one as is used on the BeagleBone and the
BeagleBone Black, a CAT24C256. The CAT24C256 is a 256 kb Serial CMOS
EEPROM, internally organized as 32,768 words of 8 bits each. It features
a 64-byte page write buffer and supports the Standard (100 kHz), Fast
(400 kHz) and Fast-Plus (1 MHz) I2C protocol.
.. figure:: images/image78.png
:width: 509px
:height: 228px
:align: center
:alt: Expansion Board EEPROM Without Write Protect
Expansion Board EEPROM Without Write Protect
The addressing of this device requires two bytes for the address which
is not used on smaller size EEPROMs, which only require only one byte.
Other compatible devices may be used as well. Make sure the device you
select supports 16 bit addressing. The part package used is at the
discretion of the cape designer.
EEPROM Address
==============
In order for each cape to have a unique address, a board ID scheme is
used that sets the address to be different depending on the setting of
the dipswitch or jumpers on the capes. A two position dipswitch or
jumpers is used to set the address pins of the EEPROM.
It is the responsibility of the user to set the proper address for each
board and the position in the stack that the board occupies has nothing
to do with which board gets first choice on the usage of the expansion
bus signals. The process for making that determination and resolving
conflicts is left up to the SW and, as of this moment in time, this
method is a something of a mystery due to the new Device Tree
methodology introduced in the 3.8 kernel.
Address line A2 is always tied high. This sets the allowable address
range for the expansion cards to *0x54* to**0x57**. All other I2C
addresses can be used by the user in the design of their capes. But,
these addresses must not be used other than for the board EEPROM
information. This also allows for the inclusion of EEPROM devices on the
cape if needed without interfering with this EEPROM. It requires that A2
be grounded on the EEPROM not used for cape identification.
I2C Bus
========
The EEPROMs on each expansion board are connected to I2C2 on connector
P9 pins 19 and 20. For this reason I2C2 must always be left connected
and should not be changed by SW to remove it from the expansion header
pin mux settings. If this is done, the system will be unable to detect
the capes.
The I2C signals require pullup resistors. Each board must have a 5.6K
resistor on these signals. With four capes installed this will result in
an effective resistance of 1.4K if all capes were installed and all the
resistors used were exactly 5.6K. As more capes are added the resistance
is reduced to overcome capacitance added to the signals. When no capes
are installed the internal pullup resistors must be activated inside the
processor to prevent I2C timeouts on the I2C bus.
The I2C2 bus may also be used by capes for other functions such as I/O
expansion or other I2C compatible devices that do not share the same
address as the cape EEPROM.
EEPROM **************************
The design in *Figure 62* has the write protect disabled. If the write
protect is not enabled, this does expose the EEPROM to being corrupted
if the I2C2 bus is used on the cape and the wrong address written to. It
is recommended that a write protection function be implemented and a
Test Point be added that when grounded, will allow the EEPROM to be
written to. To enable write operation, Pin 7 of the EEPROM must be tied
to ground.
When not grounded, the pin is HI via pullup resistor R210 and therefore
write protected. Whether or not Write Protect is provided is at the
discretion of the cape designer.
*Variable & MAC Memory*
VDD_3V3B
.. figure:: images/image79.png
:width: 567px
:height: 189px
:align: center
:alt: Expansion Board EEPROM Write Protect
Expansion Board EEPROM Write Protect
EEPROM Data Format
===================
Table below shows the format of the contents of the expansion board
EEPROM. Data is stored in Big Endian with the least significant value on
the right. All addresses read as a single byte data from the EEPROM, but
two byte addressing is used. ASCII values are intended to be easily read
by the user when the EEPROM contents are dumped.
.. list-table:: Expansion Board EEPROM
:header-rows: 1
:class: longtable
:align: center
* - Name
- Offset
- Size (bytes)
- Contents
* - Header
- 0
- 4
- 0xAA, 0x55, 0x33, 0xEE
* - EEPROM Revision
- 4
- 2
- Revision number of the overall format of this EEPROM in ASCII =A1
* - Board Name
- 6
- 32
- Name of board in ASCII so user can read it when the EEPROM is dumped. Up to developer of the board as to what they call the board..
* - Version
- 38
- 4
- Hardware version code for board in ASCII.Version format is up to the developer.i.e. 02.1…00A1....10A0
* - Manufacturer
- 42
- 16
- ASCII name of the manufacturer. Company or individual’s name.
* - Part Number
- 58
- 16
- ASCII Characters for the part number. Up to maker of the board.
* - Number of Pins
- 74
- 2
- Number of pins used by the daughter board including the power pins used. Decimal value of total pins 92 max, stored in HEX.
* - Serial Number
- 76
- 12
- Serial number of the board. This is a 12 character string which is: **WWYY&&&&nnnn** where, WW = 2 digit week of the year of production, YY = 2 digit year of production , &&&&=Assembly code to let the manufacturer document the assembly number or product. A way to quickly tell from reading the serial number what the board is. Up to the developer to determine. nnnn = incrementing board number for that week of production
* - Pin Usage
- 88
- 148
- Two bytes for each configurable pins of the 74 pins on the expansion connectors, MSB LSB Bit order: 15..14 ..... 1..0 Bit 15....Pin is used or not...0=Unused by cape 1=Used by cape Bit 14-13...Pin Direction.....1 0=Output 01=Input 11=BDIR Bits 12-7...Reserved........should be all zeros Bit 6....Slew Rate .......0=Fast 1=Slow Bit 5....Rx Enable.......0=Disabled 1=Enabled Bit 4....Pull Up/Dn Select....0=Pulldown 1=PullUp Bit 3....Pull Up/DN enabled...0=Enabled 1=Disabled Bits 2-0 ...Mux Mode Selection...Mode 0-7
* - VDD_3V3B Current
- 236
- 2
- Maximum current in milliamps. This is HEX value of the current in decimal 1500mA=0x05 0xDC 325mA=0x01 0x45
* - VDD_5V Current
- 238
- 2
- Maximum current in milliamps. This is HEX value of the current in decimal 1500mA=0x05 0xDC 325mA=0x01 0x45
* - SYS_5V Current
- 240
- 2
- Maximum current in milliamps. This is HEX value of the current in decimal 1500mA=0x05 0xDC 325mA=0x01 0x45
* - DC Supplied
- 242
- 2
- Indicates whether or not the board is supplying voltage on the VDD_5V rail and the current rating 000=No 1-0xFFFF is the current supplied storing the decimal equivalent in HEX format
* - Available
- 244
- 32543
- Available space for other non-volatile codes/data to be used as needed by the manufacturer or SW driver. Could also store presets for use by SW.
Pin Usage
=========
*Table 18* is the locations in the EEPROM to set the I/O pin usage for
the cape. It contains the value to be written to the Pad Control
Registers. Details on this can be found in section **9.2.2** of the
*AM3358 Technical Reference Manual*, The table is left blank as a
convenience and can be printed out and used as a template for creating a
custom setting for each cape. The 16 bit integers and all 16 bit fields
are to be stored in Big Endian format.
**Bit 15 PIN USAGE** is an indicator and should be a 1 if the pin is
used or 0 if it is unused.
**Bits 14-7 RESERVED** is not to be used and left as 0.
**Bit 6 SLEW CONTROL** 0=Fast 1=Slow
**Bit 5 RX Enabled** 0=Disabled 1=Enabled
**Bit 4 PU/PD** 0=Pulldown 1=Pullup.
**Bit 3 PULLUP/DN** 0=Pullup/pulldown enabled 1= Pullup/pulldown disabled
**Bit 2-0 MUX MODE SELECT** Mode 0-7. (refer to TRM)
Refer to the TRM for proper settings of the pin MUX mode based on the
signal selection to be used.
The *AIN0-6* pins do not have a pin mux setting, but they need to be set
to indicate if each of the pins is used on the cape. Only bit 15 is used
for the AIN signals.
.. raw:: latex
\begin{landscape}
\scriptsize
.. list-table:: EEPROM Pin Usage
:header-rows: 1
:class: longtable
:align: center
* - `+`
- `+`
- `+`
- **15**
- **14**
- **13**
- **12**
- **11**
- **10**
- **9**
- **8**
- **7**
- **6**
- **5**
* - **Off set**
- **Conn**
- **Name**
- **Pin Usage**
- **Type**
- `+`
- **Reserved**
- `+`
- `+`
- **S L E W**
- **R X**
- **P U - P D**
- **P U / D E N**
- **Mux Mode**
* - **88**
- **P9-22**
- **UART2_RXD**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **90**
- **P9-21**
- **UART2_TXD**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **92**
- **P9-18**
- **I2C1_SDA**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **94**
- **P9-17**
- **I2C1_SCL**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **96**
- **P9-42**
- **GPIO0_7**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **98**
- **P8-35**
- **UART4_CTSN**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **100**
- **P8-33**
- **UART4_RTSN**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **102**
- **P8-31**
- **UART5_CTSN**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **104**
- **P8-32**
- **UART5_RTSN**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **106**
- **P9-19**
- **I2C2_SCL**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **108**
- **P9-20**
- **I2C2_SDA**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **110**
- **P9-26**
- **UAR*T1_RXD**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **112**
- **P9-24**
- **UART1_TXD**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **114**
- **P9-41**
- **CLKOUT2**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **116**
- **P8-19**
- **EHRPWM2A**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **118**
- **P8-13**
- **EHRPWM2B**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **120**
- **P8-14**
- **GPIO0_26**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **122**
- **P8-17**
- **GPIO0_27**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **124**
- **P9-11**
- **UART4_RXD**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **126**
- **P9-13**
- **UART4_TXD**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **128**
- **P8-25**
- **GPIO1_0**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **130**
- **P8-24**
- **GPIO1_1**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **132**
- **P8-5**
- **GPIO1_2**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **134**
- **P8-6**
- **GPIO1_3**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **136**
- **P8-23**
- **GPIO1_4**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **138**
- **P8-22**
- **GPIO1_5**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **140**
- **P8-3**
- **GPIO1_6**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **142**
- **P8-4**
- **GPIO1_7**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **144**
- **P8-12**
- **GPIO1_12**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **146**
- **P8-11**
- **GPIO1_13**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **148**
- **P8-16**
- **GPIO1_14**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **150**
- **P8-15**
- **GPIO1_15**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - **152**
- **P9-15**
- **GPIO1_16**
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
.. raw:: latex
\end{landscape}
.. raw:: latex
\begin{landscape}
\scriptsize
.. list-table::
:header-rows: 1
* -
-
-
- 15
- 14
- 13
- 12
- 11
- 10
- 9
- 8
- 7
- 6
- 5
* - Off set
- Conn
- Name
- Pin Usage
- Type
- `+`
- Reserve
- `+`
- `+`
- S L E W
- R X
- P U - P D
- P U / DE N
- Mux Mode
* - 154
- P9-23
- GPIO1_17
-
-
-
-
-
-
-
-
-
-
-
* - 156
- P9-14
- EHRPWM1A
-
-
-
-
-
-
-
-
-
-
-
* - 158
- P9-16
- EHRPWM1B
-
-
-
-
-
-
-
-
-
-
-
* - 160
- P9-12
- GPIO1_28
-
-
-
-
-
-
-
-
-
-
-
* - 162
- P8-26
- GPIO1_29
-
-
-
-
-
-
-
-
-
-
-
* - 164
- P8-21
- GPIO1_30
-
-
-
-
-
-
-
-
-
-
-
* - 166
- P8-20
- GPIO1_31
-
-
-
-
-
-
-
-
-
-
-
* - 168
- P8-18
- GPIO2_1
-
-
-
-
-
-
-
-
-
-
-
* - 170
- P8-7
- TIMER4
-
-
-
-
-
-
-
-
-
-
-
* - 172
- P8-9
- TIMER5
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 174
- P8-10
- TIMER6
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 176
- P8-8
- TIMER7
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 178
- P8-45
- GPIO2_6
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 180
- P8-46
- GPIO2_7
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 182
- P8-43
- GPIO2_8
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 184
- P8-44
- GPIO2_9
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 186
- P8-41
- GPIO2_10
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 188
- P8-42
- GPIO2_11
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 190
- P8-39
- GPIO2_12
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 192
- P8-40
- GPIO2_13
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 194
- P8-37
- UART5_TX`+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 196
- P8-38
- UART5_RX`+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 198
- P8-36
- UART3_CTSN
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 200
- P8-34
- UART3_RTSN
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 202
- P8-27
- GPIO2_22
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 204
- P8-29
- GPIO2_23
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 206
- P8-28
- GPIO2_24
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 208
- P8-30
- GPIO2_25
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 210
- P9-29
- SPI1_D0
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 212
- P9-30
- SPI1_D1
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 214
- P9-28
- SPI1_CS0
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 216
- P9-27
- GPIO3_19
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 218
- P9-31
- SPI1_SCLK
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 220
- P9-25
- GPIO3_21
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - `+`
- `+`
- `+`
- 15
- 14
- 13
- 12
- 11
- 10
- 9
- 8
- 7
- 6
- 5
* - Off set
- Conn
- Name
- Pin Usage
- Type
-
- Reserve
-
-
- S L E W
- R X
- P U - P D
- P U / DE N
- Mux Mode
* - `+`
- `+`
- `+`
- `+`
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
* - 222
- P9-39
- AIN0
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 224
- P9-40
- AIN1
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 226
- P9-37
- AIN2
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 228
- P9-38
- AIN3
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 230
- P9-33
- AIN4
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 232
- P9-36
- AIN5
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
* - 234
- P9-35
- AIN6
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
- `+`
.. raw:: latex
\end{landscape}
Pin Usage Consideration
*************************
This section covers things to watch for when hooking up to certain pins
on the expansion headers.
Boot PIN
========
There are 16 pins that control the boot mode of the processor that are
exposed on the expansion headers. *Figure 63* below shows those signals
as they appear on the BeagleBone Black.:
.. figure:: images/image80.png
:width: 530px
:height: 468px
:align: center
:alt: Boot signals
Boot signals
If you plan to use any of these signals, then on power up, these pins
should not be driven. If you do, it can affect the boot mode of the
processor and could keep the processor from booting or working
correctly.
If you are designing a cape that is intended to be used as a boot
source, such as a NAND board, then you should drive the pins to
reconfigure the boot mode, but only at reset. After the reset phase, the
signals should not be driven to allow them to be used for the other
functions found on those pins. You will need to override the resistor
values in order to change the settings. The DC pull-up requirement
should be based on the AM3358 Vih min voltage of 2 volts and AM3358
maximum input leakage current of 18uA. Also take into account any other
current leakage paths on these signals which could be caused by your
specific cape design.
The DC pull-down requirement should be based on the AM3358 Vil max
voltage of 0.8 volts and AM3358 maximum input leakage current of 18uA
plus any other current leakage paths on these signals.
Expansion Connectors
=====================
A combination of male and female headers is used for access to the
expansion headers on the main board. There are three possible mounting
configurations for the expansion headers:
* *Single* no board stacking but can be used on the top of the stack.
* *Stacking-up* to four boards can be stacked on top of each other.
* *Stacking* with signal *stealing-up* to three boards can be stacked on top of each other, but certain boards will not pass on the signals they are using to prevent signal loading or use by other cards in the stack.
The following sections describe how the connectors are to be implemented
and used for each of the different configurations.
Non-Stacking Headers-Single Cape
=================================
For non-stacking capes single configurations or where the cape can be
the last board on the stack, the two 46 pin expansion headers use the
same connectors. *Figure 64* is a picture of the connector. These are
dual row 23 position 2.54mm x 2.54mm connectors.
.. figure:: images/image81.jpg
:width: 65px
:height: 90px
:align: center
:alt: Single Expansion Connector
Single Expansion Connector
The connector is typically mounted on the bottom side of the board as
shown in *Figure 65*. These are very common connectors and should be
easily located. You can also use two single row 23 pin headers for each
of the dual row headers.
.. figure:: images/image82.jpg
:width: 575px
:height: 54px
:align: center
:alt: Single Cape Expansion Connector
Single Cape Expansion Connector
It is allowed to only populate the pins you need. As this is a
non-stacking configuration, there is no need for all headers to be
populated. This can also reduce the overall cost of the cape. This
decision is up to the cape designer.
For convenience listed in *Table 19* are some possible choices for part
numbers on this connector. They have varying pin lengths and some may be
more suitable than others for your use. It should be noted, that the
longer the pin and the further it is inserted into the BeagleBone Black
connector, the harder it will be to remove due to the tension on 92
pins. This can be minimized by using shorter pins or removing those pins
that are not used by your particular design. The first item in**Table
18** is on the edge and may not be the best solution. Overhang is the
amount of the pin that goes past the contact point of the connector on
the BeagleBone Black
.. list-table:: Single Cape Connectors
:header-rows: 1
:class: longtable
:align: center
* - SUPPLIER
- PARTNUMBER
- LENGTH(in)
- OVERHANG(in)
* - `Major League `_
- TSHC-123-D-03-145-G-LF
- .145
- .004
* - `Major League `_
- TSHC-123-D-03-240-G-LF
- .240
- .099
* - `Major League `_
- TSHC-123-D-03-255-G-LF
- .255
- .114
The G in the part number is a plating option. Other options may be used
as well as long as the contact area is gold. Other possible sources are
Sullins and Samtec for these connectors. You will need to ensure the
depth into the connector is sufficient
Main Expansion Headers-Stacking
================================
For stacking configuration, the two 46 pin expansion headers use the
same connectors. *Figure 66* is a picture of the connector. These are
dual row 23 position 2.54mm x 2.54mm connectors.
.. figure:: images/image83.jpg
:width: 69px
:height: 90px
:align: center
:alt: Expansion Connector
Expansion Connector
The connector is mounted on the top side of the board with longer tails
to allow insertion into the BeagleBone Black. *Figure 67* is the
connector configuration for the connector.
.. figure:: images/image84.jpg
:width: 575px
:height: 65px
:align: center
:alt: Stacked Cape Expansion Connector
Stacked Cape Expansion Connector
For convenience listed in *Table 18* are some possible choices for part
numbers on this connector. They have varying pin lengths and some may be
more suitable than others for your use. It should be noted, that the
longer the pin and the further it is inserted into the BeagleBone Black
connector, the harder it will be to remove due to the tension on 92
pins. This can be minimized by using shorter pins. There are most likely
other suppliers out there that will work for this connector as well. If
anyone finds other suppliers of compatible connectors that work, let us
know and they will be added to this document. The first item in**Table
19** is on the edge and may not be the best solution. Overhang is the
amount of the pin that goes past the contact point of the connector on
the BeagleBone Black.
The third part listed in *Table 20* will have insertion force issues.
.. list-table:: Stacked Cape Connectors
:header-rows: 1
:class: longtable
:align: center
* - SUPPLIER
- PARTNUMBER
- TAIL LENGTH(in)
- OVERHANG(in)
* - `Major League `_
- SSHQ-123-D-06-G-LF
- .190
- 0.049
* - `Major League `_
- SSHQ-123-D-08-G-LF
- .390
- 0.249
* - `Major League `_
- SSHQ-123-D-10-G-LF
- .560
- 0.419
There are also different plating options on each of the connectors
above. Gold plating on the contacts is the minimum requirement. If you
choose to use a different part number for plating or availability
purposes, make sure you do not select the “LT” option.
Other possible sources are Sullins and Samtec but make sure you select
one that has the correct mating depth.
StackedStealing
================
*Figure 68* is the connector configuration for stackable capes that does
not provide all of the signals upwards for use by other boards. This is
useful if there is an expectation that other boards could interfere with
the operation of your board by exposing those signals for expansion.
This configuration consists of a combination of the stacking and
nonstacking style connectors.
.. figure:: images/image85.jpg
:width: 575px
:height: 71px
:align: center
:alt: Stacked w/Signal Stealing Expansion Connector
Stacked w/Signal Stealing Expansion Connector
Retention Force
===============
The length of the pins on the expansion header has a direct relationship
to the amount of force that is used to remove a cape from the BeagleBone
Black. The longer the pins extend into the connector the harder it is to
remove. There is no rule that says that if longer pins are used, that
the connector pins have to extend all the way into the mating connector
on the BeagleBone Black, but this is controlled by the user and
therefore is hard to control. We have also found that if you use gold
pins, while more expensive, it makes for a smoother finish which reduces
the friction.
This section will attempt to describe the tradeoffs and things to
consider when selecting a connector and its pin length.
*Figure 69* shows the key measurements used in calculating how much the
pin extends past the contact point on the connector, what we call
overhang.
.. figure:: images/image86.jpg
:width: 552px
:height: 314px
:align: center
:alt: Connector Pin Insertion Depth
Connector Pin Insertion Depth
To calculate the amount of the pin that extends past the Point of
Contact, use the following formula:
Overhang=Total Pin Length- PCB thickness (.062) - contact point (.079)
The longer the pin extends past the contact point, the more force it
will take to insert and remove the board. Removal is a greater issue
than the insertion.
Signal Usage
**************
Based on the pin muxing capabilities of the processor, each expansion
pin can be configured for different functions. When in the stacking
mode, it will be up to the user to ensure that any conflicts are
resolved between multiple stacked cards. When stacked, the first card
detected will be used to set the pin muxing of each pin. This will
prevent other modes from being supported on stacked cards and may result
in them being inoperative.
In <> of this document, the functions of the pins are defined
as well as the pin muxing options. Refer to this section for more
information on what each pin is. To simplify things, if you use the
default name as the function for each pin and use those functions, it
will simplify board design and reduce conflicts with other boards.
Interoperability is up to the board suppliers and the user. This
specification does not specify a fixed function on any pin and any pin
can be used to the full extent of the functionality of that pin as
enabled by the processor.
*DO NOT APPLY VOLTAGE TO ANY I/O PIN WHEN POWER IS NOT SUPPLIED TO THE
BOARD. IT WILL DAMAGE THE PROCESSOR AND VOID THE WARRANTY.*
*NO PINS ARE TO BE DRIVEN UNTIL AFTER THE SYS_RESET LINE GOES HIGH.*
Cape Power
************
This section describes the power rails for the capes and their usage.
Main Board Power
=================
The *Table 1* describes the voltages from the main board that are
available on the expansion connectors and their ratings. All voltages
are supplied by connector**P9**. The current ratings listed are per pin.
.. list-table:: Expansion Voltages
:header-rows: 1
:class: longtable
:align: center
* - Current
- Name
- P9
- P9
- Name
- Current
* - 250mA
- VDD_3V3B
- 3
- 4
- VDD_3V3B
- 250mA
* - 1000mA
- VDD_5V
- 5
- 6
- VDD_5V
- 1000mA
* - 250mA
- SYS_5V
- 7
- 8
- SYS_5V
- 250mA
The *VDD_3V3B* rail is supplied by the LDO on the BeagleBone Black and
is the primary power rail for expansion boards. If the power requirement
for the capes exceeds the current rating, then locally generated voltage
rail can be used. It is recommended that this rail be used to power any
buffers or level translators that may be used.
*VDD_5V* is the main power supply from the DC input jack. This voltage
is not present when the board is powered via USB. The amount of current
supplied by this rail is dependent upon the amount of current available.
Based on the board design, this rail is limited to 1A per pin from the
main board.
The *SYS_5V* rail is the main rail for the regulators on the main board.
When powered from a DC supply or USB, this rail will be 5V. The
available current from this rail depends on the current available from
the USB and DC external supplies.
Power
=====
A cape can have a jack or terminals to bring in whatever voltages may be
needed by that board. Care should be taken not to let this voltage be
fed back into any of the expansion header pins.
It is possible to provide 5V to the main board from an expansion board.
By supplying a 5V signal into the *VDD_5V* rail, the main board can be
supplied. This voltage must not exceed 5V. You should not supply any
voltage into any other pin of the expansion connectors. Based on the
board design, this rail is limited to 1A per pin to the BeagleBone
Black.
*There are several precautions that need to be taken when working with
the expansion headers to prevent damage to the board.*
1. *Do not apply any voltages to any I/O pins when the board is not
powered on.*
2. *Do not drive any external signals into the I/O pins until after the
VDD_3V3B rail is up.*
3. *Do not apply any voltages that are generated from external
sources.*
4. *If voltages are generated from the VDD_5V signal, those supplies
must not become active until after the VDD_3V3B rail is up.*
5. *If you are applying signals from other boards into the expansion
headers, make sure you power the board up after you power up the
BeagleBone Black or make the connections after power is applied on both
boards.*
*Powering the processor via its I/O pins can cause damage to the
processor.*
Mechanical
***********
This section provides the guidelines for the creation of expansion
boards from a mechanical standpoint. Defined is a standard board size
that is the same profile as the BeagleBone Black. It is expected that
the majority of expansion boards created will be of standard size. It is
possible to create boards of other sizes and in some cases this is
required, as in the case of an LCD larger than the BeagleBone Black
board.
Standard Cape Size
===================
.. figure:: images/image87.jpg
:width: 575px
:height: 369px
:align: center
:alt: Cape Board Dimensions
Cape Board Dimensions
A slot is provided for the Ethernet connector to stick up higher than
the cape when mounted. This also acts as a key function to ensure that
the cape is oriented correctly. Space is also provided to allow access
to the user LEDs and reset button on the main board.
Some people have inquired as to the difference in the radius of the
corners of the BeagleBone Black and why they are different. This is a
result of having the BeagleBone fit into the Altoids style tin.
It is not required that the cape be exactly like the BeagleBone Black
board in this respect.
Extended Cape Size
===================
Capes larger than the standard board size are also allowed. A good
example would be an LCD panel. There is no practical limit to the sizes
of these types of boards. The notch for the key is also not required,
but it is up to the supplier of these boards to ensure that the
BeagleBone Black is not plugged in incorrectly in such a manner that
damage would be caused to the BeagleBone Black or any other capes that
may be installed. Any such damage will be the responsibility of the
supplier of such a cape to repair.
As with all capes, the EEPROM is required and compliance with the power
requirements must be adhered to.
Enclosures
===========
There are numerous enclosures being created in all different sizes and
styles. The mechanical design of these enclosures is not being defined
by this specification.
The ability of these designs to handle all shapes and sizes of capes,
especially when you consider up to four can be mounted with all sorts of
interface connectors, it is difficult to define a standard enclosure
that will handle all capes already made and those yet to be defined.
If cape designers want to work together and align with one enclosure and
work around it that is certainly acceptable. But we will not pick
winners and we will not do anything that impedes the openness of the
platform and the ability of enclosure designers and cape designers to
innovate and create new concepts.