zephyr/boards/shields/atmel_rf2xx/doc/index.rst

363 lines
16 KiB
ReStructuredText

.. _atmel_at86rf2xx_transceivers:
Atmel AT86RF2XX Transceivers
############################
Overview
********
The Atmel AT86RF2xx is a high performance radio transceiver targeted for IEEE
802.15.4, ZigBee, RF4CE, 6LoWPAN, and ISM applications. The AT86RF2xx is a
true SPI-to-antenna solution and can be operated by any external
microcontroller.
The current IEEE 802.15.4 AT86RF2xx Zephyr driver currently works with any
2.4 Ghz transceiver, except AT86RF230. The RF2xx driver allows use of
:ref:`ieee802154_interface` and :ref:`thread_protocol_interface` network
stacks.
This is a generic shield focused not only on Atmel Development Boards Kits.
There are compatible designations for `AT AVR-RZ600`_ and `AT REB233-XPRO`_.
This means, any Atmel board with 10-pin Xplained or 20-pin Xplained Pro
extension headers can be used. You can check
`Atmel Xplained Pro Hardware Development Kit User Guide`_ for more information.
Besides that, Arduino and MikroBus standard headers are available to complement
the shield module configurations. For any other project that doesn't fit on
the current available variations an overlay can be created. However, the
overlay is the last resource and is recommended use standard header always
possible.
RZ600 Module
============
The RZ600 Development Kit needs Atmel Xplained or Xplained-Pro header
connector. The modules from this kit are available without any transceiver
advanced features. For Xplained headers the `atmel_rf2xx_xplained`_ must be
selected. For Xplained-Pro header the `atmel_rf2xx_legacy`_ must be enabled.
.. image:: ./ATAVRRZ600.jpg
:width: 350px
:align: center
:alt: AVR-RZ600
Pins Assignment of the RZ600 Module
===================================
+---------+--------+-------------------------------------+
| Pin | Name | Function |
+=========+========+=====================================+
| 1 | RST | GPIO - Reset |
+---------+--------+-------------------------------------+
| 2 | MISC | DNU - Do Not Use |
+---------+--------+-------------------------------------+
| 3 | IRQ | GPIO - Interrupt |
+---------+--------+-------------------------------------+
| 4 | SLP_TR | GPIO - Multi purpose control signal |
+---------+--------+-------------------------------------+
| 5 | CS | SPI Chip Select |
+---------+--------+-------------------------------------+
| 6 | MOSI | SPI Master Out / Slave In |
+---------+--------+-------------------------------------+
| 7 | MISO | SPI Master In / Slave Out |
+---------+--------+-------------------------------------+
| 8 | SCLK | SPI Clock |
+---------+--------+-------------------------------------+
| 9 | GND | |
+---------+--------+-------------------------------------+
| 10 | VDD | POWER +3.3V |
+---------+--------+-------------------------------------+
REB233-XPRO Module
==================
The REB233-XPRO development kit uses Atmel Xplained Pro header. It is enabled
selecting `atmel_rf2xx_xpro`_ option.
.. image:: ./atreb233-xpro-top.jpg
:width: 300px
:align: center
:alt: REB233-XPRO Top
Pins Assignment of the REB233-XPRO Module
=========================================
+---------+--------+-------------------------------------+
| Pin | Name | Function |
+=========+========+=====================================+
| 1 | ID | DNU - Do Not Use |
+---------+--------+-------------------------------------+
| 2 | GND | |
+---------+--------+-------------------------------------+
| 3 | DIG1 | DNU - Do Not Use |
+---------+--------+-------------------------------------+
| 4 | DIG3 | DNU - Do Not Use |
+---------+--------+-------------------------------------+
| 5 | DIG2 | GPIO - RX Frame Time Stamping |
+---------+--------+-------------------------------------+
| 6 | CLKM | DNU - Do Not Use |
+---------+--------+-------------------------------------+
| 7 | RST | GPIO - Reset |
+---------+--------+-------------------------------------+
| 8 | | |
+---------+--------+-------------------------------------+
| 9 | IRQ | GPIO - Interrupt |
+---------+--------+-------------------------------------+
| 10 | SLP_TR | GPIO - Multi purpose control signal |
+---------+--------+-------------------------------------+
| 11 | SDA | EEPROM - AT24MAC602 |
+---------+--------+-------------------------------------+
| 12 | SCL | EEPROM - AT24MAC602 |
+---------+--------+-------------------------------------+
| 13 | | |
+---------+--------+-------------------------------------+
| 14 | | |
+---------+--------+-------------------------------------+
| 15 | CS | SPI Chip Select |
+---------+--------+-------------------------------------+
| 16 | MOSI | SPI Master Out / Slave In |
+---------+--------+-------------------------------------+
| 17 | MISO | SPI Master In / Slave Out |
+---------+--------+-------------------------------------+
| 18 | SCLK | SPI Clock |
+---------+--------+-------------------------------------+
| 19 | GND | |
+---------+--------+-------------------------------------+
| 20 | VDD | POWER +3.3V |
+---------+--------+-------------------------------------+
.. note:: DIG2 is not current implemented on RF2xx driver.
Arduino Shields
===============
Arduino Uno R3 header is available without advanced features. It is enabled
selecting `atmel_rf2xx_arduino`_ variant option.
Pins Assignment of the Arduino Shield Modules
=============================================
+---------+--------+-------------------------------------+
| Pin | Name | Function |
+=========+========+=====================================+
| D0 | | |
+---------+--------+-------------------------------------+
| D1 | | |
+---------+--------+-------------------------------------+
| D2 | IRQ | GPIO - Interrupt |
+---------+--------+-------------------------------------+
| D3 | | |
+---------+--------+-------------------------------------+
| D4 | | |
+---------+--------+-------------------------------------+
| D5 | | |
+---------+--------+-------------------------------------+
| D6 | | |
+---------+--------+-------------------------------------+
| D7 | | |
+---------+--------+-------------------------------------+
| D8 | RST | GPIO - Reset |
+---------+--------+-------------------------------------+
| D9 | SLP_TR | GPIO - Multi purpose control signal |
+---------+--------+-------------------------------------+
| D10 | CS | SPI Chip Select |
+---------+--------+-------------------------------------+
| D11 | MOSI | SPI Master Out / Slave In |
+---------+--------+-------------------------------------+
| D12 | MISO | SPI Master In / Slave Out |
+---------+--------+-------------------------------------+
| D13 | SCLK | SPI Clock |
+---------+--------+-------------------------------------+
| D14 | | |
+---------+--------+-------------------------------------+
| D15 | | |
+---------+--------+-------------------------------------+
| | GND | |
+---------+--------+-------------------------------------+
| | VDD | POWER +3.3V |
+---------+--------+-------------------------------------+
| | VCC | POWER +5.0V |
+---------+--------+-------------------------------------+
MikroBus Shields
================
MikroBus header is available available without advanced features. It is
enabled selecting `atmel_rf2xx_mikrobus`_ variant option.
Pins Assignment of the MikroBus Shield Modules
==============================================
+---------+--------+-------------------------------------+
| Pin | Name | Function |
+=========+========+=====================================+
| AN | RST | GPIO - Reset |
+---------+--------+-------------------------------------+
| RST | | |
+---------+--------+-------------------------------------+
| CS | CS | SPI Chip Select |
+---------+--------+-------------------------------------+
| SCK | SCLK | SPI Clock |
+---------+--------+-------------------------------------+
| MISO | MISO | SPI Master In / Slave Out |
+---------+--------+-------------------------------------+
| MOSI | MOSI | SPI Master Out / Slave In |
+---------+--------+-------------------------------------+
| VCC-3.3 | VDD | POWER +3.3V |
+---------+--------+-------------------------------------+
| GND | GND | |
+---------+--------+-------------------------------------+
| GND | GND | |
+---------+--------+-------------------------------------+
| VCC-5.0 | VCC | POWER +5.0V |
+---------+--------+-------------------------------------+
| SDA | | |
+---------+--------+-------------------------------------+
| SCL | | |
+---------+--------+-------------------------------------+
| TX | | |
+---------+--------+-------------------------------------+
| RX | | |
+---------+--------+-------------------------------------+
| INT | IRQ | GPIO - Interrupt |
+---------+--------+-------------------------------------+
| PWM | SLP_TR | GPIO - Multi purpose control signal |
+---------+--------+-------------------------------------+
Supported variations
====================
The below table suggests shield variation accordingly with end user
application. When a standard connector (arduino, mikrobus, xplained,
xplained-pro) is available on board, user should select the matching shield
configuration. When atmel_rf2xx shield is used with a board that doesn't
feature a standard connector, a dedicated <board>.overlay file should be
provided. The remaining configurations should be used based on the board
standard headers available.
+-----------------------------+------------------------------+-----------+
| Connector Standard | Shield Designation | Variation |
+=============================+==============================+===========+
| Without standard (overlay) | `atmel_rf2xx`_ | 1 |
+-----------------------------+------------------------------+-----------+
| Atmel Xplained header | `atmel_rf2xx_xplained`_ | 2 |
+-----------------------------+------------------------------+-----------+
| Atmel Xplained Pro header | `atmel_rf2xx_xpro`_ | 3 |
+-----------------------------+------------------------------+-----------+
| Atmel Xplained Pro header | `atmel_rf2xx_legacy`_ | 4 |
+-----------------------------+------------------------------+-----------+
| Arduino | `atmel_rf2xx_arduino`_ | 5 |
+-----------------------------+------------------------------+-----------+
| MikroBus | `atmel_rf2xx_mikrobus`_ | 6 |
+-----------------------------+------------------------------+-----------+
Requirements
************
This shield requires a board which provides a configuration that allows an
SPI interface, an interrupt signal and two GPIO. (see :ref:`shields` for more
details).
.. note::
Boards that already have a network interface: Check network
documentation to understand how properly configure both interfaces.
To keep simple, make sure IEEE 802.15.4 is the only interface enabled
at Networking -> Link Layer Options. This will avoid problems running
Zephyr samples.
Tested Boards
=============
+-----------------------------+------------------------------+-----------+
| Board | Disabled Interface | Variation |
+=============================+==============================+===========+
| ATMEL sam4s_xplained | | 2 |
+-----------------------------+------------------------------+-----------+
| ATMEL sam4e_xpro | Ethernet | 3 , 4 |
+-----------------------------+------------------------------+-----------+
| ATMEL sam_v71_xult | Ethernet | 3 , 4 , 5 |
+-----------------------------+------------------------------+-----------+
Sample usage
************
You can try use IEEE 802.15.4 and/or OpenThread with the Zephyr Echo server
and Echo client samples, which provide out-of-the-box configuration for
both IEEE 802.15.4 and OpenThread. To enable IEEE 802.15.4 support in the
samples, build them with ``overlay-802154.conf`` overlay config file. Same
way, to enable OpenThread support, build them with ``overlay-ot.conf`` overlay
config file. See :ref:`sockets-echo-server-sample` and
:ref:`sockets-echo-client-sample` for details.
Build and Programming
*********************
Set ``-DSHIELD=<shield designator>`` when you invoke ``west build``.
.. zephyr-app-commands::
:zephyr-app: samples/net/sockets/echo_server
:host-os: unix
:board: sam4s_xplained
:gen-args: -DOVERLAY_CONFIG=overlay-802154.conf
:shield: atmel_rf2xx_xplained
:goals: build flash
:compact:
.. zephyr-app-commands::
:zephyr-app: samples/net/sockets/echo_server
:host-os: unix
:board: [sam4e_xpro | sam_v71_xult]
:gen-args: -DOVERLAY_CONFIG=overlay-802154.conf
:shield: [atmel_rf2xx_xpro | atmel_rf2xx_legacy]
:goals: build flash
:compact:
.. zephyr-app-commands::
:zephyr-app: samples/net/sockets/echo_server
:host-os: unix
:board: [sam_v71_xult | frdm_k64f | nucleo_f767zi]
:gen-args: -DOVERLAY_CONFIG=overlay-802154.conf
:shield: atmel_rf2xx_arduino
:goals: build flash
:compact:
.. zephyr-app-commands::
:zephyr-app: samples/net/sockets/echo_server
:host-os: unix
:board: lpcxpresso55s69_ns
:gen-args: -DOVERLAY_CONFIG=overlay-802154.conf
:shield: atmel_rf2xx_microbus
:goals: build flash
:compact:
References
**********
.. target-notes::
.. _AT AVR-RZ600:
https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ATAVRRZ600
.. _AT REB233-XPRO:
https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ATREB233-XPRO
.. _Atmel Xplained Pro Hardware Development Kit User Guide:
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42091-Atmel-Xplained-Pro-Hardware-Development-Kit_User%20Guide.pdf
.. _atmel_rf2xx:
https://github.com/zephyrproject-rtos/zephyr/blob/master/boards/shields/atmel_rf2xx/atmel_rf2xx.overlay
.. _atmel_rf2xx_xplained:
https://github.com/zephyrproject-rtos/zephyr/blob/master/boards/shields/atmel_rf2xx/atmel_rf2xx_xplained.overlay
.. _atmel_rf2xx_xpro:
https://github.com/zephyrproject-rtos/zephyr/blob/master/boards/shields/atmel_rf2xx/atmel_rf2xx_xpro.overlay
.. _atmel_rf2xx_legacy:
https://github.com/zephyrproject-rtos/zephyr/blob/master/boards/shields/atmel_rf2xx/atmel_rf2xx_legacy.overlay
.. _atmel_rf2xx_arduino:
https://github.com/zephyrproject-rtos/zephyr/blob/master/boards/shields/atmel_rf2xx/atmel_rf2xx_arduino.overlay
.. _atmel_rf2xx_mikrobus:
https://github.com/zephyrproject-rtos/zephyr/blob/master/boards/shields/atmel_rf2xx/atmel_rf2xx_mikrobus.overlay