Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 38 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,41 @@
# NXP MCU Driver

This repository contains a copy of MCU peripheral library, original sources are obtained from `https://www.nxp.com`
This repository contains a trimmed-down version of NXP's MCUXpresso SDK peripheral drivers for use with MicroPython.

## Overview

This repository follows the structure of the official [NXP MCUX SDK](https://github.com/nxp-mcuxpresso/mcux-sdk) but includes only the driver files needed for supported target chips, reducing the size from approximately 1.6GB to under 100MB.

The repository is designed to be included as a Git submodule in projects like [MicroPython](https://github.com/micropython/micropython) that target i.MX RT and other NXP MCU families.

## Updating to Newer SDK Versions

The `update_sdk.py` script automates updating driver files from the official NXP MCUX SDK releases:

```bash
# Update to the latest SDK release
./update_sdk.py

# Update to a specific release tag
./update_sdk.py --release MCUX_2.16.0
```

The script downloads the specified SDK release, updates existing target chip drivers, and commits the changes to a new branch.

## Adding Support for New Chips

To add a new target chip:

1. Create an empty folder with the chip name in `sdk/devices/`
2. Run `./update_sdk.py` to populate it with drivers from the latest SDK

The automation tool will detect the new target and include it in future updates.

## Current SDK Version

The current SDK version is stored in `sdk/version.txt`.

## History

This repository was originally maintained at [hathach/nxp_driver](https://github.com/hathach/nxp_driver) as part of the TinyUSB project. When TinyUSB migrated to using the official NXP SDK directly, this trimmed version was forked to the MicroPython organization to continue serving projects requiring a smaller dependency footprint.

This repository is meant to be included as submodule and conveniently run [Tinyusb](https://github.com/hathach/tinyusb) examples.
166 changes: 166 additions & 0 deletions sdk/devices/LPC51U68/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# Copyright 2023 NXP
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause

config MCUX_USE_SOC_LPC51U68
bool
select MCUX_CPU_ARCH_ARM_CM0P
if MCUX_USE_SOC_LPC51U68

# Part Number
config MCUX_SOC_PART_LPC51U68
bool

config MCUX_DEVICE
default "LPC51U68"

config MCUX_DEVICE_ID
default "LPC51U68" if MCUX_SOC_PART_LPC51U68


# Select supported components
config MCUX_USE_SOC_LPC51U68
select MCUX_HAS_CMSIS_DSP_Include
select MCUX_HAS_CMSIS_DSP_Source
select MCUX_HAS_CMSIS_Device_API_OSTick
select MCUX_HAS_CMSIS_Device_API_RTOS2
select MCUX_HAS_CMSIS_Driver_Include_CAN
select MCUX_HAS_CMSIS_Driver_Include_Ethernet
select MCUX_HAS_CMSIS_Driver_Include_Ethernet_MAC
select MCUX_HAS_CMSIS_Driver_Include_Ethernet_PHY
select MCUX_HAS_CMSIS_Driver_Include_Flash
select MCUX_HAS_CMSIS_Driver_Include_I2C
select MCUX_HAS_CMSIS_Driver_Include_MCI
select MCUX_HAS_CMSIS_Driver_Include_NAND
select MCUX_HAS_CMSIS_Driver_Include_SAI
select MCUX_HAS_CMSIS_Driver_Include_SPI
select MCUX_HAS_CMSIS_Driver_Include_USART
select MCUX_HAS_CMSIS_Driver_Include_USB_Device
select MCUX_HAS_CMSIS_Driver_Include_USB_Host
select MCUX_HAS_CMSIS_Driver_Include_WiFi
select MCUX_HAS_CMSIS_Include_core_cm
select MCUX_HAS_CMSIS_NN_Source
select MCUX_HAS_CMSIS_RTOS2_NonSecure
select MCUX_HAS_CMSIS_RTOS2_Secure
select MCUX_HAS_component_ctimer_adapter
select MCUX_HAS_component_flexcomm_i2c_adapter
select MCUX_HAS_component_flexcomm_spi_adapter
select MCUX_HAS_component_gint_adapter
select MCUX_HAS_component_lists
select MCUX_HAS_component_lpc_gpio_adapter
select MCUX_HAS_component_mrt_adapter
select MCUX_HAS_component_serial_manager
select MCUX_HAS_component_serial_manager_spi
select MCUX_HAS_component_serial_manager_uart
select MCUX_HAS_component_usart_adapter
select MCUX_HAS_component_usart_dma_adapter
select MCUX_HAS_driver_cmsis_flexcomm_i2c
select MCUX_HAS_driver_cmsis_flexcomm_spi
select MCUX_HAS_driver_cmsis_flexcomm_usart
select MCUX_HAS_driver_common
select MCUX_HAS_driver_ctimer
select MCUX_HAS_driver_flashiap
select MCUX_HAS_driver_flexcomm
select MCUX_HAS_driver_flexcomm_i2c
select MCUX_HAS_driver_flexcomm_i2c_dma
select MCUX_HAS_driver_flexcomm_i2c_freertos
select MCUX_HAS_driver_flexcomm_i2s
select MCUX_HAS_driver_flexcomm_i2s_dma
select MCUX_HAS_driver_flexcomm_spi
select MCUX_HAS_driver_flexcomm_spi_dma
select MCUX_HAS_driver_flexcomm_spi_freertos
select MCUX_HAS_driver_flexcomm_usart
select MCUX_HAS_driver_flexcomm_usart_dma
select MCUX_HAS_driver_flexcomm_usart_freertos
select MCUX_HAS_driver_fmeas
select MCUX_HAS_driver_gint
select MCUX_HAS_driver_iap
select MCUX_HAS_driver_inputmux
select MCUX_HAS_driver_lpc_adc
select MCUX_HAS_driver_lpc_crc
select MCUX_HAS_driver_lpc_dma
select MCUX_HAS_driver_lpc_gpio
select MCUX_HAS_driver_lpc_iocon
select MCUX_HAS_driver_lpc_rtc
select MCUX_HAS_driver_mrt
select MCUX_HAS_driver_pint
select MCUX_HAS_driver_sctimer
select MCUX_HAS_driver_utick
select MCUX_HAS_driver_wwdt
select MCUX_HAS_utilities_misc_utilities
select MCUX_HAS_utility_assert
select MCUX_HAS_utility_assert_lite
select MCUX_HAS_utility_debug_console
select MCUX_HAS_utility_debug_console_lite
select MCUX_HAS_utility_notifier
select MCUX_HAS_utility_shell
select MCUX_HAS_utility_str

#### SOC specific dependency ####
config MCUX_USE_RTE_Device
bool
select MCUX_USE_driver_lpc_dma

config MCUX_USE_component_serial_manager_uart
bool
select MCUX_USE_component_usart_adapter

config MCUX_USE_driver_flexcomm_i2c_dma
bool
select MCUX_USE_driver_lpc_dma

config MCUX_USE_driver_flexcomm_i2s_dma
bool
select MCUX_USE_driver_lpc_dma

config MCUX_USE_driver_flexcomm_spi_dma
bool
select MCUX_USE_driver_lpc_dma

config MCUX_USE_driver_flexcomm_usart_dma
bool
select MCUX_USE_driver_lpc_dma

config MCUX_USE_utility_debug_console_lite
bool
select MCUX_USE_component_usart_adapter


#### SOC level drivers ####
# device_LPC51U68_CMSIS
config MCUX_USE_device_LPC51U68_CMSIS
bool "Device LPC51U68_cmsis"
select MCUX_USE_CMSIS_Include_core_cm
help
Device LPC51U68_cmsis

# device_LPC51U68_startup
config MCUX_USE_device_LPC51U68_startup
bool "Device LPC51U68_startup"
help
Device LPC51U68_startup

# device_LPC51U68_system
config MCUX_USE_device_LPC51U68_system
bool "Device LPC51U68_system"
help
Device LPC51U68_system

# driver_fro_calib
config MCUX_USE_driver_fro_calib
bool "Driver fro_calib"
select MCUX_USE_driver_common
help
FRO calibration Lib

# driver_power
config MCUX_USE_driver_power
bool "power"
select MCUX_USE_driver_common
help
Power driver

rsource "drivers/Kconfig"

endif # MCUX_USE_SOC_LPC51U68
79 changes: 48 additions & 31 deletions sdk/devices/LPC51U68/LPC51U68_features.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/*
** ###################################################################
** Version: rev. 1.0, 2017-12-15
** Build: b211029
** Build: b220714
**
** Abstract:
** Chip specific module features.
**
** Copyright 2016 Freescale Semiconductor, Inc.
** Copyright 2016-2021 NXP
** Copyright 2016-2022 NXP
** All rights reserved.
**
** SPDX-License-Identifier: BSD-3-Clause
Expand Down Expand Up @@ -77,7 +77,7 @@
/* ADC module features */

/* @brief Do not has input select (register INSEL). */
#define FSL_FEATURE_ADC_HAS_NO_INSEL (0)
#define FSL_FEATURE_ADC_HAS_NO_INSEL (0)
/* @brief Has ASYNMODE bitfile in CTRL reigster. */
#define FSL_FEATURE_ADC_HAS_CTRL_ASYNMODE (1)
/* @brief Has ASYNMODE bitfile in CTRL reigster. */
Expand All @@ -99,7 +99,18 @@

/* CTIMER module features */

/* No feature definitions */
/* @brief CTIMER has no capture channel. */
#define FSL_FEATURE_CTIMER_HAS_NO_INPUT_CAPTURE (0)
/* @brief CTIMER has no capture 2 interrupt. */
#define FSL_FEATURE_CTIMER_HAS_NO_IR_CR2INT (0)
/* @brief CTIMER capture 3 interrupt. */
#define FSL_FEATURE_CTIMER_HAS_IR_CR3INT (1)
/* @brief Has CTIMER CCR_CAP2 (register bits CCR[CAP2RE][CAP2FE][CAP2I]. */
#define FSL_FEATURE_CTIMER_HAS_NO_CCR_CAP2 (0)
/* @brief Has CTIMER CCR_CAP3 (register bits CCR[CAP3RE][CAP3FE][CAP3I]). */
#define FSL_FEATURE_CTIMER_HAS_CCR_CAP3 (1)
/* @brief CTIMER Has register MSR */
#define FSL_FEATURE_CTIMER_HAS_MSR (0)

/* DMA module features */

Expand All @@ -113,57 +124,57 @@
/* FLEXCOMM module features */

/* @brief FLEXCOMM0 USART INDEX 0 */
#define FSL_FEATURE_FLEXCOMM0_USART_INDEX (0)
#define FSL_FEATURE_FLEXCOMM0_USART_INDEX (0)
/* @brief FLEXCOMM0 SPI INDEX 0 */
#define FSL_FEATURE_FLEXCOMM0_SPI_INDEX (0)
#define FSL_FEATURE_FLEXCOMM0_SPI_INDEX (0)
/* @brief FLEXCOMM0 I2C INDEX 0 */
#define FSL_FEATURE_FLEXCOMM0_I2C_INDEX (0)
#define FSL_FEATURE_FLEXCOMM0_I2C_INDEX (0)
/* @brief FLEXCOMM1 USART INDEX 1 */
#define FSL_FEATURE_FLEXCOMM1_USART_INDEX (1)
#define FSL_FEATURE_FLEXCOMM1_USART_INDEX (1)
/* @brief FLEXCOMM1 SPI INDEX 1 */
#define FSL_FEATURE_FLEXCOMM1_SPI_INDEX (1)
#define FSL_FEATURE_FLEXCOMM1_SPI_INDEX (1)
/* @brief FLEXCOMM1 I2C INDEX 1 */
#define FSL_FEATURE_FLEXCOMM1_I2C_INDEX (1)
#define FSL_FEATURE_FLEXCOMM1_I2C_INDEX (1)
/* @brief FLEXCOMM2 USART INDEX 2 */
#define FSL_FEATURE_FLEXCOMM2_USART_INDEX (2)
#define FSL_FEATURE_FLEXCOMM2_USART_INDEX (2)
/* @brief FLEXCOMM2 SPI INDEX 2 */
#define FSL_FEATURE_FLEXCOMM2_SPI_INDEX (2)
#define FSL_FEATURE_FLEXCOMM2_SPI_INDEX (2)
/* @brief FLEXCOMM2 I2C INDEX 2 */
#define FSL_FEATURE_FLEXCOMM2_I2C_INDEX (2)
#define FSL_FEATURE_FLEXCOMM2_I2C_INDEX (2)
/* @brief FLEXCOMM3 USART INDEX 3 */
#define FSL_FEATURE_FLEXCOMM3_USART_INDEX (3)
#define FSL_FEATURE_FLEXCOMM3_USART_INDEX (3)
/* @brief FLEXCOMM3 SPI INDEX 3 */
#define FSL_FEATURE_FLEXCOMM3_SPI_INDEX (3)
#define FSL_FEATURE_FLEXCOMM3_SPI_INDEX (3)
/* @brief FLEXCOMM3 I2C INDEX 3 */
#define FSL_FEATURE_FLEXCOMM3_I2C_INDEX (3)
#define FSL_FEATURE_FLEXCOMM3_I2C_INDEX (3)
/* @brief FLEXCOMM4 USART INDEX 4 */
#define FSL_FEATURE_FLEXCOMM4_USART_INDEX (4)
#define FSL_FEATURE_FLEXCOMM4_USART_INDEX (4)
/* @brief FLEXCOMM4 SPI INDEX 4 */
#define FSL_FEATURE_FLEXCOMM4_SPI_INDEX (4)
#define FSL_FEATURE_FLEXCOMM4_SPI_INDEX (4)
/* @brief FLEXCOMM4 I2C INDEX 4 */
#define FSL_FEATURE_FLEXCOMM4_I2C_INDEX (4)
#define FSL_FEATURE_FLEXCOMM4_I2C_INDEX (4)
/* @brief FLEXCOMM5 USART INDEX 5 */
#define FSL_FEATURE_FLEXCOMM5_USART_INDEX (5)
#define FSL_FEATURE_FLEXCOMM5_USART_INDEX (5)
/* @brief FLEXCOMM5 SPI INDEX 5 */
#define FSL_FEATURE_FLEXCOMM5_SPI_INDEX (5)
#define FSL_FEATURE_FLEXCOMM5_SPI_INDEX (5)
/* @brief FLEXCOMM5 I2C INDEX 5 */
#define FSL_FEATURE_FLEXCOMM5_I2C_INDEX (5)
#define FSL_FEATURE_FLEXCOMM5_I2C_INDEX (5)
/* @brief FLEXCOMM6 USART INDEX 6 */
#define FSL_FEATURE_FLEXCOMM6_USART_INDEX (6)
#define FSL_FEATURE_FLEXCOMM6_USART_INDEX (6)
/* @brief FLEXCOMM6 SPI INDEX 6 */
#define FSL_FEATURE_FLEXCOMM6_SPI_INDEX (6)
#define FSL_FEATURE_FLEXCOMM6_SPI_INDEX (6)
/* @brief FLEXCOMM6 I2C INDEX 6 */
#define FSL_FEATURE_FLEXCOMM6_I2C_INDEX (6)
#define FSL_FEATURE_FLEXCOMM6_I2C_INDEX (6)
/* @brief FLEXCOMM7 I2S INDEX 0 */
#define FSL_FEATURE_FLEXCOMM6_I2S_INDEX (0)
#define FSL_FEATURE_FLEXCOMM6_I2S_INDEX (0)
/* @brief FLEXCOMM7 USART INDEX 7 */
#define FSL_FEATURE_FLEXCOMM7_USART_INDEX (7)
#define FSL_FEATURE_FLEXCOMM7_USART_INDEX (7)
/* @brief FLEXCOMM7 SPI INDEX 7 */
#define FSL_FEATURE_FLEXCOMM7_SPI_INDEX (7)
#define FSL_FEATURE_FLEXCOMM7_SPI_INDEX (7)
/* @brief FLEXCOMM7 I2C INDEX 7 */
#define FSL_FEATURE_FLEXCOMM7_I2C_INDEX (7)
#define FSL_FEATURE_FLEXCOMM7_I2C_INDEX (7)
/* @brief FLEXCOMM7 I2S INDEX 1 */
#define FSL_FEATURE_FLEXCOMM7_I2S_INDEX (1)
#define FSL_FEATURE_FLEXCOMM7_I2S_INDEX (1)
/* @brief I2S has DMIC interconnection */
#define FSL_FEATURE_FLEXCOMM_INSTANCE_I2S_HAS_DMIC_INTERCONNECTIONn(x) (0)

Expand All @@ -182,7 +193,7 @@
/* MRT module features */

/* @brief number of channels. */
#define FSL_FEATURE_MRT_NUMBER_OF_CHANNELS (4)
#define FSL_FEATURE_MRT_NUMBER_OF_CHANNELS (4)

/* interrupt module features */

Expand Down Expand Up @@ -212,6 +223,11 @@
/* @brief Number of outputs */
#define FSL_FEATURE_SCT_NUMBER_OF_OUTPUTS (8)

/* SPI module features */

/* @brief SSEL pin count. */
#define FSL_FEATURE_SPI_SSEL_COUNT (4)

/* SYSCON module features */

/* @brief Pointer to ROM IAP entry functions */
Expand Down Expand Up @@ -249,3 +265,4 @@
#define FSL_FEATURE_WWDT_HAS_NO_RESET (1)

#endif /* _LPC51U68_FEATURES_H_ */

Loading