zephyr/boards/arm/twr_ke18f/doc/index.rst

255 lines
8.5 KiB
ReStructuredText
Raw Normal View History

.. _twr_ke18f:
NXP TWR-KE18F
#############
Overview
********
The TWR-KE18F is a development board for NXP Kinetis KE1xF 32-bit
MCU-based platforms. The onboard OpenSDAv2 serial and debug adapter,
running an open source bootloader, offers options for serial
communication, flash programming, and run-control debugging.
boards: convert images to JPEG and reduce image size The boards folder uses ~142.8 MB, being the largest in the repository. This is due mostly to board images, which are in most cases not optimized for web content. This patch tries to address this problem by converting all pictures to JPEG (quality 75) and by adjusting its size up to 750 px (the width of the documentation content). Images that specified a fixed width in rst files are converted down to that value instead. With this patch, folder goes down to ~53.5 MB from 142.8 MB (-~63%). Note that this patch introduces a new set of binary files to git history, though (bad). The process has been automated using this quickly crafted Python script: ```python from pathlib import Path import re import subprocess def process(doc, image, image_jpeg, size): subprocess.run( ( f"convert {image}" "-background white -alpha remove -alpha off -quality 75" f"-resize {size}\> {image_jpeg}" ), shell=True, check=True, cwd=doc.parent, ) if image != image_jpeg: (doc.parent / image).unlink() for doc in Path(".").glob("boards/**/*.rst"): with open(doc) as f: content = "" image = None for line in f: m = re.match(r"^(\s*)\.\. (image|figure):: (.*)$", line) if m: if image: process(doc, image, image_jpeg, size) image = Path(m.group(3)) if image.suffix not in (".jpg", ".jpeg", ".png"): content += line image = None continue image_jpeg = image.parent / (image.stem + ".jpg") size = 750 content += ( f"{m.group(1)}.. {m.group(2)}:: {image_jpeg}\n" ) elif image: m = re.match(r"\s*:height:\s*[0-9]+.*$", line) if m: continue m = re.match(r"\s*:width:\s*([0-9]+).*$", line) if m: size = min(int(m.group(1)), size) continue content += line if line == "\n": process(doc, image, image_jpeg, size) image = None else: content += line with open(doc, "w") as f: f.write(content) ``` Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-08-16 13:05:36 +02:00
.. figure:: TWR-KE18F-DEVICE.jpg
:align: center
:alt: TWR-KE18F
TWR-KE18F (Credit: NXP)
Hardware
********
- MKE18F512VLL16 MCU (up to 168 MHz, 512 KB flash memory, 64 KB RAM,
and 100 Low profile Quad Flat Package (LQFP))
- 3.3 V or 5 V MCU operation
- 6-axis FXOS8700CQ digital accelerometer and magnetometer
- RGB LED
- Four user LEDs
- Two user push-buttons
- Potentiometer
- Thermistor
- Infrared port (IrDA)
- CAN pin header
- Flex I/O pin header
For more information about the KE1xF SoC and the TWR-KE18F board, see
these NXP reference documents:
- `KE1xF Website`_
- `KE1xF Datasheet`_
- `KE1xF Reference Manual`_
- `TWR-KE18F Website`_
- `TWR-KE18F User Guide`_
- `TWR-KE18F Schematics`_
Supported Features
==================
The twr_ke18f board configuration supports the following hardware
features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| NVIC | on-chip | nested vector interrupt controller |
+-----------+------------+-------------------------------------+
| SYSTICK | on-chip | systick |
+-----------+------------+-------------------------------------+
| PINMUX | on-chip | pinmux |
+-----------+------------+-------------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial port-polling; |
| | | serial port-interrupt |
+-----------+------------+-------------------------------------+
| FLASH | on-chip | soc flash |
+-----------+------------+-------------------------------------+
| RTC | on-chip | rtc |
+-----------+------------+-------------------------------------+
| I2C(M) | on-chip | i2c |
+-----------+------------+-------------------------------------+
| SENSOR | off-chip | fxos8700 polling; |
| | | trigger supported with H/W mods |
| | | explained below; |
+-----------+------------+-------------------------------------+
| SPI(M) | on-chip | spi |
+-----------+------------+-------------------------------------+
| ADC | on-chip | adc |
+-----------+------------+-------------------------------------+
| CAN | on-chip | can |
+-----------+------------+-------------------------------------+
| WDT | on-chip | watchdog |
+-----------+------------+-------------------------------------+
| PWM | on-chip | pwm |
+-----------+------------+-------------------------------------+
| DAC | on-chip | dac |
+-----------+------------+-------------------------------------+
| ACMP | on-chip | analog comparator |
+-----------+------------+-------------------------------------+
The default configuration can be found in the defconfig file:
``boards/arm/twr_ke18f/twr_ke18f_defconfig``.
Other hardware features are not currently supported by the port.
System Clock
============
The KE18 SoC is configured to use the 8 MHz external oscillator on the
board with the on-chip PLL to generate a 120 MHz system clock.
Serial Port
===========
The KE18 SoC has three UARTs. UART0 is configured for the console. The
remaining UARTs are not used.
Accelerometer and magnetometer
==============================
The TWR-KE18F board by default only supports polling the FXOS8700
accelerometer and magnetometer for sensor values
(``CONFIG_FXOS8700_TRIGGER_NONE=y``).
In order to support FXOS8700 triggers (interrupts) the 0 ohm resistors
``R47`` and and ``R57`` must be mounted on the TWR-KE18F board. The
devicetree must also be modified to describe the FXOS8700 interrupt
GPIOs:
.. code-block:: devicetree
/dts-v1/;
&fxos8700 {
int1-gpios = <&gpioa 14 0>;
int2-gpios = <&gpioc 17 0>;
};
Finally, a trigger option must be enabled in Kconfig (either
``FXOS8700_TRIGGER_GLOBAL_THREAD=y`` or
``FXOS8700_TRIGGER_OWN_THREAD=y``).
Programming and Debugging
*************************
Build and flash applications as usual (see :ref:`build_an_application` and
:ref:`application_run` for more details).
Configuring a Debug Probe
=========================
A debug probe is used for both flashing and debugging the board. This board is
configured by default to use the :ref:`opensda-daplink-onboard-debug-probe`.
Early versions of this board have an outdated version of the OpenSDA bootloader
and require an update. Please see the `DAPLink Bootloader Update`_ page for
instructions to update from the CMSIS-DAP bootloader to the DAPLink bootloader.
Option 1: :ref:`opensda-daplink-onboard-debug-probe` (Recommended)
------------------------------------------------------------------
Install the :ref:`pyocd-debug-host-tools` and make sure they are in your search
path.
Follow the instructions in :ref:`opensda-daplink-onboard-debug-probe` to program
the `OpenSDA DAPLink TWR-KE18F Firmware`_.
Option 2: :ref:`opensda-jlink-onboard-debug-probe`
--------------------------------------------------
Install the :ref:`jlink-debug-host-tools` and make sure they are in your search
path.
Follow the instructions in :ref:`opensda-jlink-onboard-debug-probe` to program
the `OpenSDA J-Link Firmware for TWR-KE18F`_.
Add the arguments ``-DBOARD_FLASH_RUNNER=jlink`` and
``-DBOARD_DEBUG_RUNNER=jlink`` when you invoke ``west build`` to override the
default runner from pyOCD to J-Link:
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: twr_ke18f
:gen-args: -DBOARD_FLASH_RUNNER=jlink -DBOARD_DEBUG_RUNNER=jlink
:goals: build
Configuring a Console
=====================
Regardless of your choice in debug probe, we will use the OpenSDA
microcontroller as a usb-to-serial adapter for the serial console.
Connect a USB cable from your PC to J2.
Use the following settings with your serial terminal of choice (minicom, putty,
etc.):
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
Flashing
========
Here is an example for the :ref:`hello_world` application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: twr_ke18f
:goals: flash
Open a serial terminal, reset the board (press the SW1 button), and you should
see the following message in the terminal:
.. code-block:: console
***** Booting Zephyr OS v1.14.0-xxx-gxxxxxxxxxxxx *****
Hello World! twr_ke18f
Debugging
=========
Here is an example for the :ref:`hello_world` application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: twr_ke18f
:goals: debug
Open a serial terminal, step through the application in your debugger, and you
should see the following message in the terminal:
.. code-block:: console
***** Booting Zephyr OS v1.14.0-xxx-gxxxxxxxxxxxx *****
Hello World! twr_ke18f
.. _TWR-KE18F Website:
https://www.nxp.com/TWR-KE18F
.. _TWR-KE18F User Guide:
https://www.nxp.com/docs/en/user-guide/TWRKE18FUG.pdf
.. _TWR-KE18F Schematics:
https://www.nxp.com/webapp/Download?colCode=TWR-KE18F-SCH-DESIGNFILES
.. _KE1xF Website:
https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/kinetis-cortex-m-mcus/e-series5v-robustm0-plus-m4/kinetis-ke1xf-168mhz-performance-with-can-5v-microcontrollers-based-on-arm-cortex-m4:KE1xF
.. _KE1xF Datasheet:
https://www.nxp.com/docs/en/data-sheet/KE1xFP100M168SF0.pdf
.. _KE1xF Reference Manual:
https://www.nxp.com/docs/en/reference-manual/KE1xFP100M168SF0RM.pdf
.. _DAPLink Bootloader Update:
https://os.mbed.com/blog/entry/DAPLink-bootloader-update/
.. _OpenSDA DAPLink TWR-KE18F Firmware:
https://www.nxp.com/support/developer-resources/run-time-software/kinetis-developer-resources/ides-for-kinetis-mcus/opensda-serial-and-debug-adapter:OPENSDA#TWR-KE18F
.. _OpenSDA J-Link Firmware for TWR-KE18F:
https://www.segger.com/downloads/jlink/OpenSDA_TWR-KE18F