1.. _lpcxpresso55s16:
2
3NXP LPCXpresso55S16
4###################
5
6Overview
7********
8
9The LPCXpresso55S16 board provides the ideal platform for evaluation
10of the LPC55S1x/LPC551x MCU family, based on the Arm® Cortex®-M33
11architecture. Arduino® UNO compatible shield connectors are included,
12with additional expansion ports around the Arduino footprint, along
13with a PMod/host interface port and MikroElektronika Click module
14site.
15
16.. image:: lpcxpresso55S16.jpg
17   :align: center
18   :alt: LPCXpresso55S16
19
20Hardware
21********
22
23- LPC55S16 Arm® Cortex®-M33 microcontroller running at up to 150 MHz
24- 256 KB flash and 96 KB SRAM on-chip
25- LPC-Link2 debug high speed USB probe with VCOM port
26- I2C and SPI USB bridging to the LPC device via LPC-Link2 probe
27- MikroElektronika Click expansion option
28- LPCXpresso expansion connectors compatible with Arduino UNO
29- PMod compatible expansion / host connector
30- Reset, ISP, wake, and user buttons for easy testing of software functionality
31- Tri-color LED
32- Full-speed USB device / host port
33- High-speed USB device / host port
34- UART header for external serial to USB cable
35- CAN Transceiver
36- Stereo audio codec with in/out line
37- NXP FXOS8700CQ accelerometer
38
39For more information about the LPC55S16 SoC and LPCXPresso55S16 board, see:
40
41- `LPC55S16 SoC Website`_
42- `LPC55S16 Datasheet`_
43- `LPC55S16 User Manual`_
44- `LPCXpresso55S16 Website`_
45- `LPCXpresso55S16 User Manual`_
46- `LPCXpresso55S16 Development Board Design Files`_
47
48Supported Features
49==================
50
51The lpcxpresso55s16 board configuration supports the hardware features listed
52below.  For additional features not yet supported, please also refer to the
53:ref:`lpcxpresso55s69` , which is the superset board in NXP's LPC55xx series.
54NXP prioritizes enabling the superset board with NXP's Full Platform Support for
55Zephyr.  Therefore, the lpcxpresso55s69 board may have additional features
56already supported, which can also be re-used on this lpcxpresso55s16 board:
57
58+-----------+------------+-------------------------------------+
59| Interface | Controller | Driver/Component                    |
60+===========+============+=====================================+
61| NVIC      | on-chip    | nested vector interrupt controller  |
62+-----------+------------+-------------------------------------+
63| SYSTICK   | on-chip    | systick                             |
64+-----------+------------+-------------------------------------+
65| IOCON     | on-chip    | pinmux                              |
66+-----------+------------+-------------------------------------+
67| GPIO      | on-chip    | gpio                                |
68+-----------+------------+-------------------------------------+
69| I2C       | on-chip    | i2c                                 |
70+-----------+------------+-------------------------------------+
71| SPI       | on-chip    | spi                                 |
72+-----------+------------+-------------------------------------+
73| USART     | on-chip    | serial port-polling;                |
74|           |            | serial port-interrupt               |
75+-----------+------------+-------------------------------------+
76| SENSOR    | off-chip   | fxos8700 trigger                    |
77+-----------+------------+-------------------------------------+
78| CLOCK     | on-chip    | clock_control                       |
79+-----------+------------+-------------------------------------+
80| CAN       | on-chip    | canbus                              |
81+-----------+------------+-------------------------------------+
82| RNG       | on-chip    | entropy;                            |
83|           |            | random                              |
84+-----------+------------+-------------------------------------+
85| IAP       | on-chip    | flash programming                   |
86+-----------+------------+-------------------------------------+
87
88Other hardware features are not currently enabled.
89
90Currently available targets for this board are:
91
92- *lpcxpresso55s16*
93
94Connections and IOs
95===================
96
97The LPC55S16 SoC has IOCON registers, which can be used to configure
98the functionality of a pin.
99
100+---------+-----------------+----------------------------+
101| Name    | Function        | Usage                      |
102+=========+=================+============================+
103| PIO0_5  | GPIO            | ISP SW4                    |
104+---------+-----------------+----------------------------+
105| PIO0_26 | SPI             | SPI MOSI                   |
106+---------+-----------------+----------------------------+
107| PIO0_29 | USART           | USART RX                   |
108+---------+-----------------+----------------------------+
109| PIO0_30 | USART           | USART TX                   |
110+---------+-----------------+----------------------------+
111| PIO1_1  | SPI             | SPI SSEL1                  |
112+---------+-----------------+----------------------------+
113| PIO1_2  | SPI             | SPI SCK                    |
114+---------+-----------------+----------------------------+
115| PIO1_3  | SPI             | SPI MISO                   |
116+---------+-----------------+----------------------------+
117| PIO1_4  | GPIO            | RED LED                    |
118+---------+-----------------+----------------------------+
119| PIO1_6  | GPIO            | BLUE_LED                   |
120+---------+-----------------+----------------------------+
121| PIO1_7  | GPIO            | GREEN LED                  |
122+---------+-----------------+----------------------------+
123| PIO1_9  | GPIO            | USR SW3                    |
124+---------+-----------------+----------------------------+
125| PIO1_18 | GPIO            | Wakeup SW1                 |
126+---------+-----------------+----------------------------+
127| PIO1_20 | I2C             | I2C SCL                    |
128+---------+-----------------+----------------------------+
129| PIO1_21 | I2C             | I2C SDA                    |
130+---------+-----------------+----------------------------+
131| PIO1_26 | GPIO            | FXOS8700 INT1              |
132+---------+-----------------+----------------------------+
133| PIO1_22 | CAN             | CAN RXD                    |
134+---------+-----------------+----------------------------+
135| PIO1_27 | CAN             | CAN TXD                    |
136+---------+-----------------+----------------------------+
137
138System Clock
139============
140
141The LPC55S16 SoC is configured to use PLL1 clocked from the external 24MHz
142crystal, running at 144MHz as a source for the system clock. When the flash
143controller is enabled, the core clock will be reduced to 96MHz. The application
144may reconfigure clocks after initialization, provided that the core clock is
145always set to 96MHz when flash programming operations are performed.
146
147Serial Port
148===========
149
150The LPC55S16 SoC has 8 FLEXCOMM interfaces for serial
151communication. One is configured as USART for the console, one is
152configured for I2C, and the remaining are not used.
153
154Programming and Debugging
155*************************
156
157Build and flash applications as usual (see :ref:`build_an_application`
158and :ref:`application_run` for more details).
159
160Configuring a Debug Probe
161=========================
162
163A debug probe is used for both flashing and debugging the board. This
164board is configured by default to use the LPC-Link2 CMSIS-DAP Onboard
165Debug Probe, however the :ref:`pyocd-debug-host-tools` does not yet
166support the LPC55S16 so you must reconfigure the board for one of the
167J-Link debug probe instead.
168
169First install the :ref:`jlink-debug-host-tools` and make sure they are
170in your search path.
171
172Then follow the instructions in
173:ref:`lpclink2-jlink-onboard-debug-probe` to program the J-Link
174firmware. Please make sure you have the latest firmware for this
175board.
176
177Configuring a Console
178=====================
179
180Connect a USB cable from your PC to J1 (LINK2), and use the serial
181terminal of your choice (minicom, putty, etc.) with the following
182settings:
183
184- Speed: 115200
185- Data: 8 bits
186- Parity: None
187- Stop bits: 1
188
189Flashing
190========
191
192Here is an example for the :ref:`hello_world` application.
193
194.. zephyr-app-commands::
195   :zephyr-app: samples/hello_world
196   :board: lpcxpresso55s16
197   :goals: flash
198
199Open a serial terminal, reset the board (press the RESET button), and you should
200see the following message in the terminal:
201
202.. code-block:: console
203
204   ***** Booting Zephyr OS v2.2.0 *****
205   Hello World! lpcxpresso55s16
206
207Debugging
208=========
209
210Here is an example for the :ref:`hello_world` application.
211
212.. zephyr-app-commands::
213   :zephyr-app: samples/hello_world
214   :board: lpcxpresso55s16
215   :goals: debug
216
217Open a serial terminal, step through the application in your debugger, and you
218should see the following message in the terminal:
219
220.. code-block:: console
221
222   ***** Booting Zephyr OS zephyr-v2.2.0 *****
223   Hello World! lpcxpresso55s16
224
225.. _LPC55S16 SoC Website:
226   https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc5500-cortex-m33/lpc551x-s1x-baseline-arm-cortex-m33-based-microcontroller-family:LPC551X-S1X
227
228.. _LPC55S16 Datasheet:
229    https://www.nxp.com/docs/en/nxp/data-sheets/LPC55S1x_LPC551x_DS.pdf
230
231.. _LPC55S16 User Manual:
232   https://www.nxp.com/webapp/Download?colCode=UM11295
233
234.. _LPCxpresso55S16 Website:
235   https://www.nxp.com/design/development-boards/lpcxpresso-boards/lpcxpresso55s16-development-board:LPC55S16-EVK
236
237.. _LPCXpresso55S16 User Manual:
238   https://www.nxp.com/webapp/Download?colCode=UMLPCXPRESSO55S16
239
240.. _LPCXpresso55S16 Development Board Design Files:
241   https://www.nxp.com/webapp/Download?colCode=LPCXPRESSSO55S16-DESIGN-FILES
242