2019-05-07 20:24:03 +02:00
|
|
|
.. _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
|
2019-05-07 20:24:03 +02:00
|
|
|
: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 |
|
|
|
|
+-----------+------------+-------------------------------------+
|
2019-05-16 22:16:38 +02:00
|
|
|
| RTC | on-chip | rtc |
|
|
|
|
+-----------+------------+-------------------------------------+
|
2019-05-14 17:06:13 +02:00
|
|
|
| I2C(M) | on-chip | i2c |
|
|
|
|
+-----------+------------+-------------------------------------+
|
|
|
|
| SENSOR | off-chip | fxos8700 polling; |
|
|
|
|
| | | trigger supported with H/W mods |
|
|
|
|
| | | explained below; |
|
|
|
|
+-----------+------------+-------------------------------------+
|
2019-05-16 11:51:26 +02:00
|
|
|
| SPI(M) | on-chip | spi |
|
|
|
|
+-----------+------------+-------------------------------------+
|
2019-05-16 08:21:25 +02:00
|
|
|
| ADC | on-chip | adc |
|
2019-06-06 20:45:12 +02:00
|
|
|
+-----------+------------+-------------------------------------+
|
|
|
|
| CAN | on-chip | can |
|
2019-06-20 09:08:46 +02:00
|
|
|
+-----------+------------+-------------------------------------+
|
|
|
|
| WDT | on-chip | watchdog |
|
2019-05-19 16:06:06 +02:00
|
|
|
+-----------+------------+-------------------------------------+
|
|
|
|
| PWM | on-chip | pwm |
|
2019-05-16 08:21:25 +02:00
|
|
|
+-----------+------------+-------------------------------------+
|
2020-02-16 14:02:53 +01:00
|
|
|
| DAC | on-chip | dac |
|
|
|
|
+-----------+------------+-------------------------------------+
|
2020-09-25 14:47:46 +02:00
|
|
|
| ACMP | on-chip | analog comparator |
|
|
|
|
+-----------+------------+-------------------------------------+
|
2019-05-07 20:24:03 +02:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2019-05-14 17:06:13 +02:00
|
|
|
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
|
2019-10-07 10:37:09 -07:00
|
|
|
devicetree must also be modified to describe the FXOS8700 interrupt
|
2019-05-14 17:06:13 +02:00
|
|
|
GPIOs:
|
|
|
|
|
2023-10-17 21:05:08 -04:00
|
|
|
.. code-block:: devicetree
|
2019-05-14 17:06:13 +02:00
|
|
|
|
|
|
|
/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``).
|
|
|
|
|
2019-05-07 20:24:03 +02:00
|
|
|
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`_.
|
|
|
|
|
2020-07-07 10:03:42 -05:00
|
|
|
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:
|
2019-05-07 20:24:03 +02:00
|
|
|
|
|
|
|
.. zephyr-app-commands::
|
|
|
|
:zephyr-app: samples/hello_world
|
|
|
|
:board: twr_ke18f
|
2020-07-07 10:03:42 -05:00
|
|
|
:gen-args: -DBOARD_FLASH_RUNNER=jlink -DBOARD_DEBUG_RUNNER=jlink
|
2019-05-07 20:24:03 +02:00
|
|
|
: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
|