diff --git a/boards/arm/mimxrt1050_evk/doc/index.rst b/boards/arm/mimxrt1050_evk/doc/index.rst index 7979796d709..30971f84b7c 100644 --- a/boards/arm/mimxrt1050_evk/doc/index.rst +++ b/boards/arm/mimxrt1050_evk/doc/index.rst @@ -116,6 +116,8 @@ features: +-----------+------------+-------------------------------------+ | USB | on-chip | USB device | +-----------+------------+-------------------------------------+ +| ADC | on-chip | adc | ++-----------+------------+-------------------------------------+ The default configuration can be found in the defconfig file: @@ -159,6 +161,8 @@ The MIMXRT1050 SoC has five pairs of pinmux/gpio controllers. +---------------+-----------------+---------------------------+ | GPIO_AD_B1_07 | LPUART3_RX | UART BT HCI | +---------------+-----------------+---------------------------+ +| GPIO_AD_B1_11 | ADC | ADC1 channel 0 | ++---------------+-----------------+---------------------------+ | WAKEUP | GPIO | SW0 | +---------------+-----------------+---------------------------+ | GPIO_B0_00 | LCD_CLK | LCD Display | diff --git a/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts b/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts index f010c6e5e5f..28f4db919f5 100644 --- a/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts +++ b/boards/arm/mimxrt1050_evk/mimxrt1050_evk.dts @@ -93,6 +93,10 @@ arduino_serial: &lpuart3 {}; +&adc1 { + status = "okay"; +}; + &flexspi { status = "okay"; ahb-prefetch; diff --git a/boards/arm/mimxrt1050_evk/mimxrt1050_evk.yaml b/boards/arm/mimxrt1050_evk/mimxrt1050_evk.yaml index 375a0d963c1..86b48065630 100644 --- a/boards/arm/mimxrt1050_evk/mimxrt1050_evk.yaml +++ b/boards/arm/mimxrt1050_evk/mimxrt1050_evk.yaml @@ -27,3 +27,4 @@ supported: - usb_device - kscan:touch - watchdog + - adc diff --git a/boards/arm/mimxrt1050_evk/mimxrt1050_evk_qspi.yaml b/boards/arm/mimxrt1050_evk/mimxrt1050_evk_qspi.yaml index 0173a02f32e..5e87fbd8905 100644 --- a/boards/arm/mimxrt1050_evk/mimxrt1050_evk_qspi.yaml +++ b/boards/arm/mimxrt1050_evk/mimxrt1050_evk_qspi.yaml @@ -26,3 +26,4 @@ supported: - spi - usb_device - watchdog + - adc diff --git a/boards/arm/mimxrt1050_evk/pinmux.c b/boards/arm/mimxrt1050_evk/pinmux.c index 4bf141a07d3..ce40626e908 100644 --- a/boards/arm/mimxrt1050_evk/pinmux.c +++ b/boards/arm/mimxrt1050_evk/pinmux.c @@ -377,6 +377,15 @@ static int mimxrt1050_evk_init(const struct device *dev) imxrt_usdhc_pinmux_cb_register(mimxrt1050_evk_usdhc_pinmux); #endif +#if DT_NODE_HAS_STATUS(DT_NODELABEL(adc1), okay) && CONFIG_ADC + /* ADC1 Input 0 */ + IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_11_GPIO1_IO27, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_11_GPIO1_IO27, 0xB0u); + /* ADC1 Input 15 */ + IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_10_GPIO1_IO26, 0U); + IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_10_GPIO1_IO26, 0xB0u); +#endif + return 0; } diff --git a/samples/drivers/adc/boards/mimxrt1050_evk.overlay b/samples/drivers/adc/boards/mimxrt1050_evk.overlay new file mode 100644 index 00000000000..bc0e6f67856 --- /dev/null +++ b/samples/drivers/adc/boards/mimxrt1050_evk.overlay @@ -0,0 +1,12 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2020 Linaro Limited + */ + +/ { + zephyr,user { + /* adjust channel number according to pinmux in board.dts */ + io-channels = <&adc1 0>; + }; +}; diff --git a/tests/drivers/adc/adc_api/src/test_adc.c b/tests/drivers/adc/adc_api/src/test_adc.c index 7e5291988a2..271e4d0ada5 100644 --- a/tests/drivers/adc/adc_api/src/test_adc.c +++ b/tests/drivers/adc/adc_api/src/test_adc.c @@ -295,6 +295,16 @@ #define ADC_1ST_CHANNEL_ID 0 #define ADC_2ND_CHANNEL_ID 1 +#elif defined(CONFIG_BOARD_MIMXRT1050_EVK) || \ + defined(CONFIG_BOARD_MIMXRT1050_EVK_QSPI) +#define ADC_DEVICE_NAME DT_LABEL(DT_INST(0, nxp_mcux_12b1msps_sar)) +#define ADC_RESOLUTION 12 +#define ADC_GAIN ADC_GAIN_1 +#define ADC_REFERENCE ADC_REF_INTERNAL +#define ADC_ACQUISITION_TIME ADC_ACQ_TIME_DEFAULT +#define ADC_1ST_CHANNEL_ID 0 +#define ADC_2ND_CHANNEL_ID 1 + #elif defined(CONFIG_BOARD_NATIVE_POSIX) #define ADC_DEVICE_NAME DT_LABEL(DT_INST(0, zephyr_adc_emul)) #define ADC_RESOLUTION 10