You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
339 lines
12 KiB
339 lines
12 KiB
.. _mr_canhubk3: |
|
|
|
NXP MR-CANHUBK3 |
|
############### |
|
|
|
Overview |
|
******** |
|
|
|
`NXP MR-CANHUBK3`_ is an evaluation board for mobile robotics applications such |
|
as autonomous mobile robots (AMR) and automated guided vehicles (AGV). It |
|
features an `NXP S32K344`_ general-purpose automotive microcontroller based on |
|
an Arm Cortex-M7 core (Lock-Step). |
|
|
|
.. image:: img/mr_canhubk3_top.jpg |
|
:align: center |
|
:alt: NXP MR-CANHUBK3 (TOP) |
|
|
|
Hardware |
|
******** |
|
|
|
- NXP S32K344 |
|
- Arm Cortex-M7 (Lock-Step), 160 MHz (Max.) |
|
- 4 MB of program flash, with ECC |
|
- 320 KB RAM, with ECC |
|
- Ethernet 100 Mbps, CAN FD, FlexIO, QSPI |
|
- 12-bit 1 Msps ADC, 16-bit eMIOS timer |
|
|
|
- `NXP FS26 Safety System Basis Chip`_ |
|
|
|
- Interfaces: |
|
- Console UART |
|
- 6x CAN FD |
|
- 100Base-T1 Ethernet |
|
- JST-GH connectors and I/O headers for I2C, SPI, GPIO, |
|
PWM, etc. |
|
|
|
More information about the hardware and design resources can be found at |
|
`NXP MR-CANHUBK3`_ website. |
|
|
|
Supported Features |
|
================== |
|
|
|
The ``mr_canhubk3`` board configuration supports the following hardware features: |
|
|
|
============ ========== ================================ |
|
Interface Controller Driver/Component |
|
============ ========== ================================ |
|
SIUL2 on-chip | pinctrl |
|
| gpio |
|
| external interrupt controller |
|
WKPU on-chip interrupt controller |
|
LPUART on-chip serial |
|
QSPI on-chip flash |
|
FLEXCAN on-chip can |
|
LPI2C on-chip i2c |
|
ADC SAR on-chip adc |
|
LPSPI on-chip spi |
|
WDT FS26 SBC watchdog |
|
EMAC on-chip ethernet |
|
mdio |
|
eMIOS on-chip pwm |
|
EDMA on-chip dma |
|
============ ========== ================================ |
|
|
|
The default configuration can be found in the Kconfig file |
|
:zephyr_file:`boards/nxp/mr_canhubk3/mr_canhubk3_defconfig`. |
|
|
|
Connections and IOs |
|
=================== |
|
|
|
Each GPIO port is divided into two banks: low bank, from pin 0 to 15, and high |
|
bank, from pin 16 to 31. For example, ``PTA2`` is the pin 2 of ``gpioa_l`` (low |
|
bank), and ``PTA20`` is the pin 4 of ``gpioa_h`` (high bank). |
|
|
|
The GPIO controller provides the option to route external input pad interrupts |
|
to either the SIUL2 EIRQ or WKPU interrupt controllers, as supported by the SoC. |
|
By default, GPIO interrupts are routed to SIUL2 EIRQ interrupt controller, |
|
unless they are explicity configured to be directed to the WKPU interrupt |
|
controller, as outlined in :zephyr_file:`dts/bindings/gpio/nxp,s32-gpio.yaml`. |
|
|
|
To find information about which GPIOs are compatible with each interrupt |
|
controller, refer to the device reference manual. |
|
|
|
.. note:: |
|
|
|
It is important to highlight that the current board configuration lacks |
|
support for wake-up events and power-management features. WKPU functionality |
|
is restricted solely to serving as an interrupt controller. |
|
|
|
LEDs |
|
---- |
|
|
|
The MR-CANHUBK3 board has one user RGB LED: |
|
|
|
======================= ===== ===== =================================== |
|
Devicetree node Color Pin Pin Functions |
|
======================= ===== ===== =================================== |
|
led0 / user_led1_red Red PTE14 FXIO D7 / EMIOS0 CH19 |
|
led1 / user_led1_green Green PTA27 FXIO D5 / EMIOS1 CH10 / EMIOS2 CH10 |
|
led2 / user_led1_blue Blue PTE12 FXIO D8 / EMIOS1 CH5 |
|
======================= ===== ===== =================================== |
|
|
|
The user can control the LEDs in any way. An output of ``0`` illuminates the LED. |
|
|
|
Buttons |
|
------- |
|
|
|
The MR-CANHUBK3 board has two user buttons: |
|
|
|
======================= ===== ===== ============== |
|
Devicetree node Label Pin Pin Functions |
|
======================= ===== ===== ============== |
|
sw0 / user_button_1 SW1 PTD15 EIRQ31 |
|
sw0 / user_button_2 SW2 PTA25 EIRQ5 / WKPU34 |
|
======================= ===== ===== ============== |
|
|
|
System Clock |
|
============ |
|
|
|
The Arm Cortex-M7 (Lock-Step) are configured to run at 160 MHz. |
|
|
|
Serial Console |
|
============== |
|
|
|
By default, the serial console is provided through ``lpuart2`` on the 7-pin |
|
DCD-LZ debug connector ``P6``. |
|
|
|
========= ===== ============ |
|
Connector Pin Pin Function |
|
========= ===== ============ |
|
P6.2 PTA9 LPUART2_TX |
|
P6.3 PTA8 LPUART2_RX |
|
========= ===== ============ |
|
|
|
CAN |
|
=== |
|
|
|
CAN is provided through FLEXCAN interface with 6 instances. |
|
|
|
=============== ======= =============== ============= |
|
Devicetree node Pin Pin Function Bus Connector |
|
=============== ======= =============== ============= |
|
flexcan0 | PTA6 | PTA6_CAN0_RX P12/P13 |
|
| PTA7 | PTA7_CAN0_TX |
|
flexcan1 | PTC9 | PTC9_CAN0_RX P14/P15 |
|
| PTC8 | PTC8_CAN0_TX |
|
flexcan2 | PTE25 | PTE25_CAN0_RX P16/P17 |
|
| PTE24 | PTE24_CAN0_TX |
|
flexcan3 | PTC29 | PTC29_CAN0_RX P18/019 |
|
| PTC28 | PTC28_CAN0_TX |
|
flexcan4 | PTC31 | PTC31_CAN0_RX P20/P21 |
|
| PTC30 | PTC30_CAN0_TX |
|
flexcan5 | PTC11 | PTC11_CAN0_RX P22/P23 |
|
| PTC10 | PTC10_CAN0_TX |
|
=============== ======= =============== ============= |
|
|
|
.. note:: |
|
There is limitation by HAL SDK, so CAN only has support maximum 64 message buffers (MBs) |
|
and support maximum 32 message buffers for concurrent active instances with 8 bytes |
|
payload. We need to pay attention to configuration options: |
|
|
|
1. :kconfig:option:`CONFIG_CAN_MAX_MB` must be less or equal than the |
|
maximum number of message buffers that is according to the table below. |
|
|
|
2. :kconfig:option:`CONFIG_CAN_MAX_FILTER` must be less or equal than |
|
:kconfig:option:`CONFIG_CAN_MAX_MB`. |
|
|
|
=============== ========== ================ ================ |
|
Devicetree node Payload Hardware support Software support |
|
=============== ========== ================ ================ |
|
flexcan0 | 8 bytes | 96 MBs | 64 MBs |
|
| 16 bytes | 63 MBs | 42 MBs |
|
| 32 bytes | 36 MBs | 24 MBs |
|
| 64 bytes | 21 MBs | 14 MBs |
|
flexcan1 | 8 bytes | 64 MBs | 64 MBs |
|
| 16 bytes | 42 MBs | 42 MBs |
|
| 32 bytes | 24 MBs | 24 MBs |
|
| 64 bytes | 14 MBs | 14 MBs |
|
flexcan2 | 8 bytes | 64 MBs | 64 MBs |
|
| 16 bytes | 42 MBs | 42 MBs |
|
| 32 bytes | 24 MBs | 24 MBs |
|
| 64 bytes | 14 MBs | 14 MBs |
|
flexcan3 | 8 bytes | 32 MBs | 32 MBs |
|
| 16 bytes | 21 MBs | 21 MBs |
|
| 32 bytes | 12 MBs | 12 MBs |
|
| 64 bytes | 7 MBs | 7 MBs |
|
flexcan4 | 8 bytes | 32 MBs | 32 MBs |
|
| 16 bytes | 21 MBs | 21 MBs |
|
| 32 bytes | 12 MBs | 12 MBs |
|
| 64 bytes | 7 MBs | 7 MBs |
|
flexcan5 | 8 bytes | 32 MBs | 32 MBs |
|
| 16 bytes | 21 MBs | 21 MBs |
|
| 32 bytes | 12 MBs | 12 MBs |
|
| 64 bytes | 7 MBs | 7 MBs |
|
=============== ========== ================ ================ |
|
|
|
.. note:: |
|
A CAN bus usually requires 60 Ohm termination at both ends of the bus. This may be |
|
accomplished using one of the included CAN termination boards. For more details, refer |
|
to the section ``6.3 CAN Connectors`` in the Hardware User Manual of `NXP MR-CANHUBK3`_. |
|
|
|
I2C |
|
=== |
|
|
|
I2C is provided through LPI2C interface with 2 instances ``lpi2c0`` and ``lpi2c1`` |
|
on corresponding connectors ``P4``, ``P3``. |
|
|
|
========= ===== ============ |
|
Connector Pin Pin Function |
|
========= ===== ============ |
|
P3.2 PTD9 LPI2C1_SCL |
|
P3.3 PTD8 LPI2C1_SDA |
|
P4.3 PTD14 LPI2C0_SCL |
|
P4.4 PTD13 LPI2C0_SDA |
|
========= ===== ============ |
|
|
|
ADC |
|
=== |
|
|
|
ADC is provided through ADC SAR controller with 3 instances. ADC channels are divided into |
|
3 groups (precision, standard and external). |
|
|
|
.. note:: |
|
All channels of an instance only run on 1 group channel at the same time. |
|
|
|
FS26 SBC Watchdog |
|
================= |
|
|
|
On normal operation after the board is powered on, there is a window of 256 ms |
|
on which the FS26 watchdog must be serviced with a good token refresh, otherwise |
|
the watchdog will signal a reset to the MCU. This board configuration enables |
|
the FS26 watchdog driver that handles this initialization. |
|
|
|
.. note:: |
|
|
|
The FS26 can also be started in debug mode (watchdog disabled) following |
|
these steps: |
|
|
|
1. Power off the board. |
|
2. Remove the jumper ``JP1`` (pins 1-2 open), which is connected by default. |
|
3. Power on the board. |
|
4. Reconnect the jumper ``JP1`` (pins 1-2 shorted). |
|
|
|
External Flash |
|
============== |
|
|
|
The on-board MX25L6433F 64M-bit multi-I/O Serial NOR Flash memory is connected |
|
to the QSPI controller port A1. This board configuration selects it as the |
|
default flash controller. |
|
|
|
Ethernet |
|
======== |
|
|
|
This board has a single instance of Ethernet Media Access Controller (EMAC) |
|
interfacing with a `NXP TJA1103`_ 100Base-T1 Ethernet PHY. Currently, there is |
|
limited driver for this PHY that allows for overiding the default pin strapping configuration for |
|
the PHY (RMII, master, autonomous mode enabled, polarity correction enabled) |
|
to slave mode. |
|
|
|
The 100Base-T1 signals are available in connector ``P9`` and can be converted to |
|
100Base-T using a Ethernet media converter such as `RDDRONE-T1ADAPT`_. |
|
|
|
Programming and Debugging |
|
************************* |
|
|
|
Applications for the ``mr_canhubk3`` board can be built in the usual way as |
|
documented in :ref:`build_an_application`. |
|
|
|
This board configuration supports `Lauterbach TRACE32`_ and `SEGGER J-Link`_ |
|
West runners for flashing and debugging applications. Follow the steps described |
|
in :ref:`lauterbach-trace32-debug-host-tools` and :ref:`jlink-debug-host-tools`, |
|
to setup the flash and debug host tools for these runners, respectively. The |
|
default runner is J-Link. |
|
|
|
Flashing |
|
======== |
|
|
|
Run the ``west flash`` command to flash the application using SEGGER J-Link. |
|
Alternatively, run ``west flash -r trace32`` to use Lauterbach TRACE32. |
|
|
|
The Lauterbach TRACE32 runner supports additional options that can be passed |
|
through command line: |
|
|
|
.. code-block:: console |
|
|
|
west flash -r trace32 --startup-args elfFile=<elf_path> loadTo=<flash/sram> |
|
eraseFlash=<yes/no> verifyFlash=<yes/no> |
|
|
|
Where: |
|
|
|
- ``<elf_path>`` is the path to the Zephyr application ELF in the output |
|
directory |
|
- ``loadTo=flash`` loads the application to the SoC internal program flash |
|
(:kconfig:option:`CONFIG_XIP` must be set), and ``loadTo=sram`` load the |
|
application to SRAM. Default is ``flash``. |
|
- ``eraseFlash=yes`` erases the whole content of SoC internal flash before the |
|
application is downloaded to either Flash or SRAM. This routine takes time to |
|
execute. Default is ``no``. |
|
- ``verifyFlash=yes`` verify the SoC internal flash content after programming |
|
(use together with ``loadTo=flash``). Default is ``no``. |
|
|
|
For example, to erase and verify flash content: |
|
|
|
.. code-block:: console |
|
|
|
west flash -r trace32 --startup-args elfFile=build/zephyr/zephyr.elf loadTo=flash eraseFlash=yes verifyFlash=yes |
|
|
|
Debugging |
|
========= |
|
|
|
Run the ``west debug`` command to start a GDB session using SEGGER J-Link. |
|
Alternatively, run ``west debug -r trace32`` to launch the Lauterbach TRACE32 |
|
software debugging interface. |
|
|
|
References |
|
********** |
|
|
|
.. target-notes:: |
|
|
|
.. _NXP MR-CANHUBK3: |
|
https://www.nxp.com/design/development-boards/automotive-development-platforms/s32k-mcu-platforms/s32k344-evaluation-board-for-mobile-robotics-incorporating-100baset1-and-six-can-fd:MR-CANHUBK344 |
|
|
|
.. _NXP S32K344: |
|
https://www.nxp.com/products/processors-and-microcontrollers/s32-automotive-platform/s32k-auto-general-purpose-mcus/s32k3-microcontrollers-for-automotive-general-purpose:S32K3 |
|
|
|
.. _NXP FS26 Safety System Basis Chip: |
|
https://www.nxp.com/products/power-management/pmics-and-sbcs/safety-sbcs/safety-system-basis-chip-with-low-power-fit-for-asil-d:FS26 |
|
|
|
.. _NXP TJA1103: |
|
https://www.nxp.com/products/interfaces/ethernet-/automotive-ethernet-phys/asil-b-compliant-100base-t1-ethernet-phy:TJA1103 |
|
|
|
.. _RDDRONE-T1ADAPT: |
|
https://www.nxp.com/products/interfaces/ethernet-/automotive-ethernet-phys/ethernet-media-converter-for-drones-rovers-mobile-robotics-and-automotive:RDDRONE-T1ADAPT |
|
|
|
.. _Lauterbach TRACE32: |
|
https://www.lauterbach.com |
|
|
|
.. _SEGGER J-Link: |
|
https://wiki.segger.com/NXP_S32K3xx
|
|
|