-
Jason Kridner authored1acdc0ed
.. _beaglebone-cape-interface-spec:
BeagleBone cape interface spec
###############################
.. |I2C| replace:: I\ :sup:`2`\ C
This page is a fork of `BeagleBone cape interface spec `_ page on elinux. This is the new official home.
Background and overview
***********************
.. important::
Resources
* See `Device Tree: Supporting Similar Boards - The BeagleBone Example blog post `_ on BeagleBoard.org
* See `spreadsheet with pin header details `_
* See `elinux.org Cape Expansion Headers for BeagleBone page `_
* See :ref:`BeagleBone Black System Reference Manual Connectors section `
* See :ref:`BeagleBone AI System Reference Manual Connectors section `
* See :ref:`BeagleBone AI-64 System Reference Manual Connectors section `
.. note:: Below, when mentioning "Black", this is true for all AM3358-based BeagleBone boards. "AI" is AM5729-based. "AI-64" is TDA4VM-based.
The device tree symbols for the BeagleBone Cape Compatibility Layer are provided in `BeagleBoard-DeviceTrees `_ at:
* Black: `bbb-bone-buses.dtsi `_
* AI: `bbai-bone-buses.dtsi `_
* AI-64: `k3-j721e-beagleboneai-64-bone-buses.dtsi `_
The udev rules used to create the userspace symlinks for the BeagleBone Cape Compatibility Layer are provided in `usr-customizations `_ at:
More details can be found in :ref:`bone-methodology`.
.. table:: Overall
+-----------------------------------------------+-----+--------------------------------------+
| .. centered:: P9 | | .. centered:: P8 |
+===============+=====+======+==================+=====+============+=====+======+============+
| Functions | odd | even | Functions | | Functions | odd | even | Functions |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| USB D+ | E1 | E2 | USB D- | | | | | |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| 5V OUT | E3 | E4 | GND | | | | | |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| GND | 1 | 2 | GND | | GND | 1 | 2 | GND |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| 3V3 OUT | 3 | 4 | 3V3 OUT | | D M | 3 | 4 | D M |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| 5V IN | 5 | 6 | 5V IN | | D M C4t | 5 | 6 | D M C4r |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| 5V OUT | 7 | 8 | 5V OUT | | D C2r | 7 | 8 | D C2t |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| PWR BUT | 9 | 10 | RESET | | D C3r | 9 | 10 | D C3t |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D U4r | 11 | 12 | D | | D P0o | 11 | 12 | D Q2a P0o |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D U4t | 13 | 14 | D E1a | | D E2b | 13 | 14 | D |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D | 15 | 16 | D E1b | | D P0i | 15 | 16 | D P0i |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D I1c S00 | 17 | 18 | D I1d S0o | | D | 17 | 18 | D |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| C0r D I2c | 19 | 20 | C0t D I2d | | D E2a | 19 | 20 | D M P1 |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D E0b S0i U2t | 21 | 22 | D E0a S0c U2r | | D M P1 | 21 | 22 | D M Q2b |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D S01 | 23 | 24 | C1r D I3c U1t | | D M | 23 | 24 | D M |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D P0 | 25 | 26 | C1t D I3d U1r | | D M | 25 | 26 | D |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D P0 Q0b | 27 | 28 | D P0 S10 | | D L P1 | 27 | 28 | D L P1 U6r |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D E S1i P0 | 29 | 30 | D P0 S1o | | D L P1 U6t | 29 | 30 | D L P1 |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D E S1c P0 | 31 | 32 | ADC VDD | | D L | 31 | 32 | D L |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| A4 | 33 | 34 | ADC GND | | D L Q1b | 33 | 34 | D E L |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| A6 | 35 | 36 | A5 | | D L Q1a | 35 | 36 | D E L |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| A2 | 37 | 38 | A3 | | D L U5t | 37 | 38 | D L U5r |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| A0 | 39 | 40 | A1 | | D L P1 | 39 | 40 | D L P1 |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| D P0 | 41 | 42 | D Q0a S11 U3t P0 | | D L P1 | 41 | 42 | D L P1 |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| GND | 43 | 44 | GND | | D L P1 | 43 | 44 | D L P1 |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
| GND | 45 | 46 | GND | | D E L P1 | 45 | 46 | D E L P1 |
+---------------+-----+------+------------------+-----+------------+-----+------+------------+
.. note::
Legend
* A: :ref:`bone-analog`
* B: :ref:`bone-i2s`
* C: :ref:`bone-can`
* D: :ref:`bone-gpio`
* E: :ref:`bone-pwm`
* I: :ref:`bone-i2c`
* L: :ref:`bone-lcd`
* M: :ref:`bone-mmc`
* P: :ref:`bone-pru`
* Q: :ref:`bone-capture`
* S: :ref:`bone-spi`
* U: :ref:`bone-uart`
* Y: :ref:`bone-ecap`
.. _bone-gpio:
Digital GPIO
************
The compatibility layer comes with simple reference nodes for attaching the Linux gpio-leds or gpio-keys to any cape header GPIO pin. This provides simple userspace general purpose input or output with various trigger modes.
The format followed for the gpio-leds nodes is **bone_led_P8_## / bone_led_P9_##**. The **gpio-leds** driver is used by these reference nodes internally and allows users to easily create compatible led nodes in overlays for Black, AI and AI-64.
.. code-block:: c
:linenos:
:caption: Example device tree overlay to enable LED driver on header P8 pin 3
:name: bone_cape_spec_led_example
/dts-v1/;
/plugin/;
&bone_led_P8_03 {
status = "okay";
}
In :ref:`bone_cape_spec_led_example`, it is possible to redefine the default label
and other properties defined in the
`gpio-leds schema `_.
.. table:: Bone GPIO LEDs interface
+------------------------+-------------+----------+-----------+-----------+
| LED SYSFS | Header pin | Black | AI | AI-64 |
+========================+=============+==========+===========+===========+
| /sys/class/leds/P8_03 | P8_03 | gpio1_6 | gpio1_24 | gpio0_20 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_04 | P8_04 | gpio1_7 | gpio1_25 | gpio0_48 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_05 | P8_05 | gpio1_2 | gpio7_1 | gpio0_33 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_06 | P8_06 | gpio1_3 | gpio7_2 | gpio0_34 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_07 | P8_07 | gpio2_2 | gpio6_5 | gpio0_15 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_08 | P8_08 | gpio2_3 | gpio6_6 | gpio0_14 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_09 | P8_09 | gpio2_5 | gpio6_18 | gpio0_17 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_10 | P8_10 | gpio2_4 | gpio6_4 | gpio0_16 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_11 | P8_11 | gpio1_13 | gpio3_11 | gpio0_60 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_12 | P8_12 | gpio1_12 | gpio3_10 | gpio0_59 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_13 | P8_13 | gpio0_23 | gpio4_11 | gpio0_89 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_14 | P8_14 | gpio0_26 | gpio4_13 | gpio0_75 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_15 | P8_15 | gpio1_15 | gpio4_3 | gpio0_61 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_16 | P8_16 | gpio1_14 | gpio4_29 | gpio0_62 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_17 | P8_17 | gpio0_27 | gpio8_18 | gpio0_3 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_18 | P8_18 | gpio2_1 | gpio4_9 | gpio0_4 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_19 | P8_19 | gpio0_22 | gpio4_10 | gpio0_88 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_20 | P8_20 | gpio1_31 | gpio6_30 | gpio0_76 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_21 | P8_21 | gpio1_30 | gpio6_29 | gpio0_30 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_22 | P8_22 | gpio1_5 | gpio1_23 | gpio0_5 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_23 | P8_23 | gpio1_4 | gpio1_22 | gpio0_31 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_24 | P8_24 | gpio1_1 | gpio7_0 | gpio0_6 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_25 | P8_25 | gpio1_0 | gpio6_31 | gpio0_35 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_26 | P8_26 | gpio1_29 | gpio4_28 | gpio0_51 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_27 | P8_27 | gpio2_22 | gpio4_23 | gpio0_71 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_28 | P8_28 | gpio2_24 | gpio4_19 | gpio0_72 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_29 | P8_29 | gpio2_23 | gpio4_22 | gpio0_73 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_30 | P8_30 | gpio2_25 | gpio4_20 | gpio0_74 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_31 | P8_31 | gpio0_10 | gpio8_14 | gpio0_32 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_32 | P8_32 | gpio0_11 | gpio8_15 | gpio0_26 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_33 | P8_33 | gpio0_9 | gpio8_13 | gpio0_25 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_34 | P8_34 | gpio2_17 | gpio8_11 | gpio0_7 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_35 | P8_35 | gpio0_8 | gpio8_12 | gpio0_24 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_36 | P8_36 | gpio2_16 | gpio8_10 | gpio0_8 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_37 | P8_37 | gpio2_14 | gpio8_8 | gpio0_106 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_38 | P8_38 | gpio2_15 | gpio8_9 | gpio0_105 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_39 | P8_39 | gpio2_12 | gpio8_6 | gpio0_69 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_40 | P8_40 | gpio2_13 | gpio8_7 | gpio0_70 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_41 | P8_41 | gpio2_10 | gpio8_4 | gpio0_67 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_42 | P8_42 | gpio2_11 | gpio8_5 | gpio0_68 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_43 | P8_43 | gpio2_8 | gpio8_2 | gpio0_65 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_44 | P8_44 | gpio2_9 | gpio8_3 | gpio0_66 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_45 | P8_45 | gpio2_6 | gpio8_0 | gpio0_79 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P8_46 | P8_46 | gpio2_7 | gpio8_1 | gpio0_80 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_11 | P9_11 | gpio0_30 | gpio8_17 | gpio0_1 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_12 | P9_12 | gpio1_28 | gpio5_0 | gpio0_45 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_13 | P9_13 | gpio0_31 | gpio6_12 | gpio0_2 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_14 | P9_14 | gpio1_18 | gpio4_25 | gpio0_93 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_15 | P9_15 | gpio1_16 | gpio3_12 | gpio0_47 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_16 | P9_16 | gpio1_19 | gpio4_26 | gpio0_94 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_17 | P9_17 | gpio0_5 | gpio7_17 | gpio0_28 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_18 | P9_18 | gpio0_4 | gpio7_16 | gpio0_40 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_19 | P9_19 | gpio0_13 | gpio7_3 | gpio0_78 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_20 | P9_20 | gpio0_12 | gpio7_4 | gpio0_77 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_21 | P9_21 | gpio0_3 | gpio3_3 | gpio0_39 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_22 | P9_22 | gpio0_2 | gpio6_19 | gpio0_38 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_23 | P9_23 | gpio1_17 | gpio7_11 | gpio0_10 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_24 | P9_24 | gpio0_15 | gpio6_15 | gpio0_13 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_25 | P9_25 | gpio3_21 | gpio6_17 | gpio0_127 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_26 | P9_26 | gpio0_14 | gpio6_14 | gpio0_12 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_27 | P9_27 | gpio3_19 | gpio4_15 | gpio0_46 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_28 | P9_28 | gpio3_17 | gpio4_17 | gpio1_11 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_29 | P9_29 | gpio3_15 | gpio5_11 | gpio0_53 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_30 | P9_30 | gpio3_16 | gpio5_12 | gpio0_44 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_31 | P9_31 | gpio3_14 | gpio5_10 | gpio0_52 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_33 | P9_33 | *n/a* | *n/a* | gpio0_50 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_35 | P9_35 | *n/a* | *n/a* | gpio0_55 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_36 | P9_36 | *n/a* | *n/a* | gpio0_56 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_37 | P9_37 | *n/a* | *n/a* | gpio0_57 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_38 | P9_38 | *n/a* | *n/a* | gpio0_58 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_39 | P9_39 | *n/a* | *n/a* | gpio0_54 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_40 | P9_40 | *n/a* | *n/a* | gpio0_81 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_41 | P9_41 | gpio0_20 | gpio6_20 | gpio1_0 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/P9_42 | P9_42 | gpio0_7 | gpio4_18 | gpio0_123 |
+------------------------+-------------+----------+-----------+-----------+
| /sys/class/leds/A15 | A15 | gpio0_19 | NA | NA |
+------------------------+-------------+----------+-----------+-----------+
.. _bone-i2c:
|I2C|
*****
Compatibility layer provides simple I2C bone bus nodes for creating compatible overlays for Black, AI and AI-64. The format followed for these nodes is **bone_i2c_#**.
.. table:: Bone I2C
+------------------+--------------+--------+-------+------------+-----------------+--------+-----------+
| SYSFS | DT symbol | Black | AI | AI-64 | SCL | SDA | Overlay |
+==================+==============+========+=======+============+=================+========+===========+
| /dev/bone/i2c/0 | bone_i2c_0 | I2C0 | I2C1 | TBD | .. centered:: N/A (On-board) |
+------------------+--------------+--------+-------+------------+-----------------+--------+-----------+
| /dev/bone/i2c/1 | bone_i2c_1 | I2C1 | I2C5 | MAIN_I2C6 | P9.17 | P9.18 | BONE-I2C1 |
+------------------+--------------+--------+-------+------------+-----------------+--------+-----------+
| /dev/bone/i2c/2 | bone_i2c_2 | I2C2 | I2C4 | MAIN_I2C3 | P9.19 | P9.20 | BONE-I2C2 |
+------------------+--------------+--------+-------+------------+-----------------+--------+-----------+
| /dev/bone/i2c/3 | bone_i2c_3 | I2C1 | I2C3 | MAIN_I2C4 | P9.24 | P9.26 | BONE-I2C3 |
+------------------+--------------+--------+-------+------------+-----------------+--------+-----------+
| /dev/bone/i2c/4 | bone_i2c_4 | I2C2 | - | MAIN_I2C3 | P9.21 | P9.22 | BONE-I2C4 |
+------------------+--------------+--------+-------+------------+-----------------+--------+-----------+
.. important::
In the case the same controller is used for 2 different bone bus nodes, usage of those nodes is mutually-exclusive.
.. code-block:: c
:linenos:
:caption: Example device tree overlay to enable I2C driver
:name: bone_cape_spec_i2c_example
/dts-v1/;
/plugin/;
&bone_i2c_1 {
status = "okay";
accel@1c {
compatible = "fsl,mma8453";
reg = <0x1c>;
};
}
In :ref:`bone_cape_spec_i2c_example`, you can specify what driver you want to load and provide any properties it might need.
* https://www.kernel.org/doc/html/v5.10/i2c/summary.html
* https://www.kernel.org/doc/html/v5.10/i2c/instantiating-devices.html#method-1-declare-the-i2c-devices-statically
* https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/
.. _bone-spi:
SPI
***
SPI bone bus nodes allow creating compatible overlays for Black, AI and AI-64.
.. table:: Bone bus SPI
+--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+---------------+
| Bone bus | DT symbol | Black | AI | AI-64 | SDO | SDI | CLK | CS | Overlays |
+====================+============+========+=======+============+========+========+========+=======================================+===============+
| /dev/bone/spi/0.x | bone_spi_0 | SPI0 | SPI2 | MAIN_SPI6 | P9.18 | P9.21 | P9.22 | - P9.17 (CS0) | - BONE-SPI0_0 |
| | | | | | | | | - P9.23 (CS1 - BBAI and BBAI64 only) | - BONE-SPI0_1 |
+--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+---------------+
| /dev/bone/spi/1.x | bone_spi_1 | SPI1 | SPI3 | MAIN_SPI7 | P9.30 | P9.29 | P9.31 | - P9.28 (CS0) | - BONE-SPI1_0 |
| | | | | | | | | - P9.42 (CS1) | - BONE-SPI1_1 |
+--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+---------------+
.. code-block:: c
:linenos:
:caption: Example device tree overlay to enable SPI driver
:name: bone_cape_spec_spi_example
/dts-v1/;
/plugin/;
&bone_spi_0 {
status = "okay";
pressure@0 {
compatible = "bosch,bmp280";
reg = <0>; /* CS0 */
spi-max-frequency = <5000000>;
};
}
In :ref:`bone_cape_spec_spi_example`, you can specify what driver you want to load and provide any properties it might need.
* https://www.kernel.org/doc/html/v5.10/spi/spi-summary.html
* https://www.kernel.org/doc/Documentation/devicetree/bindings/spi/
.. _bone-uart:
UART
*****
UART bone bus nodes allow creating compatible overlays for Black, AI and AI-64.
.. table:: Bone bus UART
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
| Bone bus | DT symbol | Black | AI | AI-64 | TX | RX | RTSn | CTSn | Overlays |
+===================+==============+========+========+=======================+========+========+=============================================+=============================================+============+
| /dev/bone/uart/0 | bone_uart_0 | UART0 | UART1 | MAIN_UART0 | .. centered:: NA (console debug header pins) |
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
| /dev/bone/uart/1 | bone_uart_1 | UART1 | UART10 | MAIN_UART2 | P9.24 | P9.26 | P9.19 P8.4 (N/A on AM3358) | P9.20 P8.3 (N/A on AM3358) | BONE-UART1 |
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
| /dev/bone/uart/2 | bone_uart_2 | UART2 | UART3 | *n/a* | P9.21 | P9.22 | P8.38 (N/A on AM5729) | P8.37 (N/A on AM5729) | BONE-UART2 |
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
| /dev/bone/uart/3 | bone_uart_3 | UART3 | *n/a* | *n/a* | P9.42 | *n/a* | *n/a* | *n/a* | BONE-UART3 |
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
| /dev/bone/uart/4 | bone_uart_4 | UART4 | UART5 | MAIN_UART0 (console) | P9.13 | P9.11 | P8.33 (N/A on AM5729) P8.6 (N/A on AM3358) | P8.35 (N/A on AM5729) P8.5 (N/A on AM3358) | BONE-UART4 |
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
| /dev/bone/uart/5 | bone_uart_5 | UART5 | UART8 | MAIN_UART5 | P8.37 | P8.38 | P8.32 | P8.31 | BONE-UART5 |
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
| /dev/bone/uart/6 | bone_uart_6 | *n/a* | *n/a* | MAIN_UART8 | P8.29 | P8.28 | *n/a* | *n/a* | BONE-UART6 |
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
| /dev/bone/uart/7 | bone_uart_7 | *n/a* | *n/a* | MAIN_UART2 | P8.34 | P8.22 | *n/a* | *n/a* | BONE-UART7 |
+-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+
.. _bone-can:
CAN
*****
CAN bone bus nodes allow creating compatible overlays for Black, AI and AI-64.
.. table:: Bone bus CAN
+------------------+--------+--------------------------+------------+--------+--------+-----------+
| Bone bus | Black | AI | AI-64 | TX | RX | Overlays |
+==================+========+==========================+============+========+========+===========+
| /dev/bone/can/0 | CAN0 | - | MAIN_MCAN0 | P9.20 | P9.19 | BONE-CAN0 |
+------------------+--------+--------------------------+------------+--------+--------+-----------+
| /dev/bone/can/1 | CAN1 | CAN2 | MAIN_MCAN4 | P9.26 | P9.24 | BONE-CAN1 |
+------------------+--------+--------------------------+------------+--------+--------+-----------+
| /dev/bone/can/2 | - | CAN1 (rev A2 and later) | MAIN_MCAN5 | P8.08 | P8.07 | BONE-CAN2 |
+------------------+--------+--------------------------+------------+--------+--------+-----------+
| /dev/bone/can/3 | - | - | MAIN_MCAN6 | P8.10 | P8.09 | BONE-CAN3 |
+------------------+--------+--------------------------+------------+--------+--------+-----------+
| /dev/bone/can/4 | - | - | MAIN_MCAN7 | P8.05 | P8.06 | BONE-CAN4 |
+------------------+--------+--------------------------+------------+--------+--------+-----------+
.. _bone-analog:
ADC
*******
* TODO: We need a udev rule to make sure the ADC shows up at /dev/bone/adc! There's nothing for sure that IIO devices will show up in the same place.
* TODO: I think we can also create symlinks for each channel based on which device is there, such that we can do /dev/bone/adc/Px_y
.. table:: Bone ADC
+--------+-------------+------------------+------------------+
| Index | Header pin | Black/AI-64 | AI |
+========+=============+==================+==================+
| 0 | P9_39 | in_voltage0_raw | in_voltage0_raw |
+--------+-------------+------------------+------------------+
| 1 | P9_40 | in_voltage1_raw | in_voltage1_raw |
+--------+-------------+------------------+------------------+
| 2 | P9_37 | in_voltage2_raw | in_voltage3_raw |
+--------+-------------+------------------+------------------+
| 3 | P9_38 | in_voltage3_raw | in_voltage2_raw |
+--------+-------------+------------------+------------------+
| 4 | P9_33 | in_voltage4_raw | in_voltage7_raw |
+--------+-------------+------------------+------------------+
| 5 | P9_36 | in_voltage5_raw | in_voltage6_raw |
+--------+-------------+------------------+------------------+
| 6 | P9_35 | in_voltage6_raw | in_voltage4_raw |
+--------+-------------+------------------+------------------+
.. table:: Bone ADC Overlay
+-----------+----------------------+--------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Black | AI | AI-64 | overlay |
+===========+======================+========+===========================================================================================================================================+
| Internal | External (STMPE811) | TBD | `BONE-ADC.dts `_ |
+-----------+----------------------+--------+-------------------------------------------------------------------------------------------------------------------------------------------+
PWM
-------
PWM bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see `bbai-bone-buses.dtsi#L415 `_ & `bbb-bone-buses.dtsi#L432 `_
.. table:: Bone bus PWM
+------------------+--------+-------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+
| Bone bus | Black | AI | AI-64 | A | B | Overlay |
+==================+========+=======+========+========+========+========================================================================================================+
| /dev/bone/pwm/0 | PWM0 | - | PWM1 | P9.22 | P9.21 | `BONE-PWM0.dts `_ |
+------------------+--------+-------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+
| /dev/bone/pwm/1 | PWM1 | PWM3 | PWM2 | P9.14 | P9.16 | `BONE-PWM1.dts `_ |
+------------------+--------+-------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+
| /dev/bone/pwm/2 | PWM2 | PWM2 | PWM0 | P8.19 | P8.13 | `BONE-PWM2.dts `_ |
+------------------+--------+-------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+