Skip to content

Commit 5374892

Browse files
committed
tests: samples: drivers: adc: add support for L20 and L09
Based on zephyr. Signed-off-by: Piotr Kosycarz <piotr.kosycarz@nordicsemi.no>
1 parent b2ec18e commit 5374892

34 files changed

+500
-0
lines changed

.github/test-spec.yml

+2
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,7 @@
621621
- "include/drivers/gpio/**/*"
622622
- "include/event_manager_proxy.h"
623623
- "subsys/event_manager_proxy/**/*"
624+
- "samples/zephyr/drivers/adc/**/*"
624625
- "samples/zephyr/drivers/audio/**/*"
625626
- "samples/zephyr/drivers/i2c/**/*"
626627
- "samples/zephyr/drivers/watchdog/**/*"
@@ -641,6 +642,7 @@
641642
- "tests/drivers/spi/**/*"
642643
- "tests/drivers/uart/**/*"
643644
- "tests/subsys/event_manager_proxy/**/*"
645+
- "tests/zephyr/drivers/adc/**/*"
644646
- "tests/zephyr/drivers/comparator/**/*"
645647
- "tests/zephyr/drivers/gpio/**/*"
646648
- "tests/zephyr/drivers/flash/**/*"

CODEOWNERS

+2
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,7 @@
667667
/samples/zigbee/**/*.rst @nrfconnect/ncs-terahertz-doc
668668
/samples/zephyr/basic/blinky/ @nrfconnect/ncs-low-level-test @nrfconnect/ncs-ll-ursus
669669
/samples/zephyr/boards/nordic/system_off/ @nrfconnect/ncs-low-level-test
670+
/samples/zephyr/drivers/adc/ @nrfconnect/ncs-low-level-test
670671
/samples/zephyr/drivers/audio/dmic/ @nrfconnect/ncs-low-level-test
671672
/samples/zephyr/drivers/i2c/rtio_loopback/ @nrfconnect/ncs-low-level-test
672673
/samples/zephyr/drivers/watchdog/ @nrfconnect/ncs-low-level-test
@@ -919,6 +920,7 @@
919920
/tests/tfm/ @nrfconnect/ncs-aegir @stephen-nordic @magnev
920921
/tests/unity/ @nordic-krch
921922
/tests/subsys/zigbee/ @nrfconnect/ncs-zigbee
923+
/tests/zephyr/drivers/adc/ @nrfconnect/ncs-low-level-test
922924
/tests/zephyr/drivers/comparator/ @nrfconnect/ncs-low-level-test
923925
/tests/zephyr/drivers/flash/common/ @nrfconnect/ncs-low-level-test @nrfconnect/ncs-ll-ursus
924926
/tests/zephyr/drivers/gpio/ @nrfconnect/ncs-low-level-test
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
cmake_minimum_required(VERSION 3.20.0)
8+
9+
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
10+
project(ADC)
11+
12+
FILE(GLOB app_sources ${ZEPHYR_BASE}/samples/drivers/adc/adc_dt/src/*.c)
13+
target_sources(app PRIVATE ${app_sources})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
This sample extends the same-named Zephyr sample to verify it
2+
with Nordic development kits.
3+
4+
Source code and basic configuration files can be found in the corresponding folder structure in zephyr/samples/drivers/adc/adc_dt.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/ {
2+
zephyr,user {
3+
io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 7>;
4+
};
5+
};
6+
7+
&adc {
8+
#address-cells = <1>;
9+
#size-cells = <0>;
10+
status = "okay";
11+
12+
channel@0 {
13+
reg = <0>;
14+
zephyr,gain = "ADC_GAIN_1";
15+
zephyr,reference = "ADC_REF_INTERNAL";
16+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
17+
zephyr,input-positive = <NRF_SAADC_AIN4>; /* P1.11 */
18+
zephyr,resolution = <10>;
19+
};
20+
21+
channel@1 {
22+
reg = <1>;
23+
zephyr,gain = "ADC_GAIN_1";
24+
zephyr,reference = "ADC_REF_INTERNAL";
25+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
26+
zephyr,input-positive = <NRF_SAADC_AIN2>; /* P1.06 */
27+
zephyr,resolution = <12>;
28+
zephyr,oversampling = <8>;
29+
};
30+
31+
channel@2 {
32+
reg = <2>;
33+
zephyr,gain = "ADC_GAIN_1";
34+
zephyr,reference = "ADC_REF_INTERNAL";
35+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
36+
zephyr,input-positive = <NRF_SAADC_VDD>;
37+
zephyr,resolution = <12>;
38+
zephyr,oversampling = <8>;
39+
};
40+
41+
channel@7 {
42+
reg = <7>;
43+
zephyr,gain = "ADC_GAIN_1";
44+
zephyr,reference = "ADC_REF_INTERNAL";
45+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
46+
zephyr,input-positive = <NRF_SAADC_AIN6>; /* P1.13 */
47+
zephyr,input-negative = <NRF_SAADC_AIN7>; /* P1.14 */
48+
zephyr,resolution = <12>;
49+
};
50+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/ {
2+
zephyr,user {
3+
io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 7>;
4+
};
5+
};
6+
7+
&adc {
8+
#address-cells = <1>;
9+
#size-cells = <0>;
10+
status = "okay";
11+
12+
channel@0 {
13+
reg = <0>;
14+
zephyr,gain = "ADC_GAIN_1";
15+
zephyr,reference = "ADC_REF_INTERNAL";
16+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
17+
zephyr,input-positive = <NRF_SAADC_AIN4>; /* P1.11 */
18+
zephyr,resolution = <10>;
19+
};
20+
21+
channel@1 {
22+
reg = <1>;
23+
zephyr,gain = "ADC_GAIN_1";
24+
zephyr,reference = "ADC_REF_INTERNAL";
25+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
26+
zephyr,input-positive = <NRF_SAADC_AIN2>; /* P1.06 */
27+
zephyr,resolution = <12>;
28+
zephyr,oversampling = <8>;
29+
};
30+
31+
channel@2 {
32+
reg = <2>;
33+
zephyr,gain = "ADC_GAIN_1";
34+
zephyr,reference = "ADC_REF_INTERNAL";
35+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
36+
zephyr,input-positive = <NRF_SAADC_VDD>;
37+
zephyr,resolution = <12>;
38+
zephyr,oversampling = <8>;
39+
};
40+
41+
channel@7 {
42+
reg = <7>;
43+
zephyr,gain = "ADC_GAIN_1";
44+
zephyr,reference = "ADC_REF_INTERNAL";
45+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
46+
zephyr,input-positive = <NRF_SAADC_AIN6>; /* P1.13 */
47+
zephyr,input-negative = <NRF_SAADC_AIN7>; /* P1.14 */
48+
zephyr,resolution = <12>;
49+
};
50+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_ADC=y
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
sample:
2+
name: ADC devicetree driver sample
3+
tests:
4+
nrf.extended.sample.drivers.adc.adc_dt:
5+
tags:
6+
- adc
7+
- ci_samples_zephyr_drivers_adc
8+
# depends_on: adc
9+
integration_platforms:
10+
- nrf54l09pdk/nrf54l09/cpuapp
11+
- nrf54l20pdk/nrf54l20/cpuapp
12+
platform_allow:
13+
- nrf54l09pdk/nrf54l09/cpuapp
14+
- nrf54l20pdk/nrf54l20/cpuapp
15+
harness: console
16+
timeout: 10
17+
harness_config:
18+
type: multi_line
19+
regex:
20+
- "ADC reading\\[\\d+\\]:"
21+
- "- .+, channel \\d+: -?\\d+"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
cmake_minimum_required(VERSION 3.20.0)
8+
9+
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
10+
project(ADC)
11+
12+
FILE(GLOB app_sources ${ZEPHYR_BASE}/samples/drivers/adc/adc_sequence/src/*.c)
13+
target_sources(app PRIVATE ${app_sources})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
source "samples/drivers/adc/adc_sequence/Kconfig"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
This sample extends the same-named Zephyr sample to verify it
2+
with Nordic development kits.
3+
4+
Source code and basic configuration files can be found in the corresponding folder structure in zephyr/samples/drivers/adc/adc_sequence.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/ {
2+
zephyr,user {
3+
io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 7>;
4+
};
5+
};
6+
7+
/ {
8+
aliases {
9+
adc0 = &adc;
10+
};
11+
};
12+
13+
&adc {
14+
#address-cells = <1>;
15+
#size-cells = <0>;
16+
status = "okay";
17+
18+
channel@0 {
19+
reg = <0>;
20+
zephyr,gain = "ADC_GAIN_1";
21+
zephyr,reference = "ADC_REF_INTERNAL";
22+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
23+
zephyr,input-positive = <NRF_SAADC_AIN4>; /* P1.11 */
24+
zephyr,resolution = <10>;
25+
};
26+
27+
channel@1 {
28+
reg = <1>;
29+
zephyr,gain = "ADC_GAIN_1";
30+
zephyr,reference = "ADC_REF_INTERNAL";
31+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
32+
zephyr,input-positive = <NRF_SAADC_AIN2>; /* P1.06 */
33+
zephyr,resolution = <12>;
34+
zephyr,oversampling = <8>;
35+
};
36+
37+
channel@2 {
38+
reg = <2>;
39+
zephyr,gain = "ADC_GAIN_1";
40+
zephyr,reference = "ADC_REF_INTERNAL";
41+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
42+
zephyr,input-positive = <NRF_SAADC_DVDD>; /* 0.9 V internal */
43+
zephyr,resolution = <12>;
44+
zephyr,oversampling = <8>;
45+
};
46+
47+
channel@7 {
48+
reg = <7>;
49+
zephyr,gain = "ADC_GAIN_1";
50+
zephyr,reference = "ADC_REF_INTERNAL";
51+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
52+
zephyr,input-positive = <NRF_SAADC_AIN6>; /* P1.13 */
53+
zephyr,input-negative = <NRF_SAADC_AIN7>; /* P1.14 */
54+
zephyr,resolution = <12>;
55+
};
56+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/ {
2+
zephyr,user {
3+
io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 7>;
4+
};
5+
};
6+
7+
/ {
8+
aliases {
9+
adc0 = &adc;
10+
};
11+
};
12+
13+
&adc {
14+
#address-cells = <1>;
15+
#size-cells = <0>;
16+
status = "okay";
17+
18+
channel@0 {
19+
reg = <0>;
20+
zephyr,gain = "ADC_GAIN_1";
21+
zephyr,reference = "ADC_REF_INTERNAL";
22+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
23+
zephyr,input-positive = <NRF_SAADC_AIN4>; /* P1.11 */
24+
zephyr,resolution = <10>;
25+
};
26+
27+
channel@1 {
28+
reg = <1>;
29+
zephyr,gain = "ADC_GAIN_1";
30+
zephyr,reference = "ADC_REF_INTERNAL";
31+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
32+
zephyr,input-positive = <NRF_SAADC_AIN2>; /* P1.06 */
33+
zephyr,resolution = <12>;
34+
zephyr,oversampling = <8>;
35+
};
36+
37+
channel@2 {
38+
reg = <2>;
39+
zephyr,gain = "ADC_GAIN_1";
40+
zephyr,reference = "ADC_REF_INTERNAL";
41+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
42+
zephyr,input-positive = <NRF_SAADC_DVDD>; /* 0.9 V internal */
43+
zephyr,resolution = <12>;
44+
zephyr,oversampling = <8>;
45+
};
46+
47+
channel@7 {
48+
reg = <7>;
49+
zephyr,gain = "ADC_GAIN_1";
50+
zephyr,reference = "ADC_REF_INTERNAL";
51+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
52+
zephyr,input-positive = <NRF_SAADC_AIN6>; /* P1.13 */
53+
zephyr,input-negative = <NRF_SAADC_AIN7>; /* P1.14 */
54+
zephyr,resolution = <12>;
55+
};
56+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_ADC=y
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
sample:
2+
name: ADC driver sequence sample
3+
tests:
4+
nrf.extended.sample.drivers.adc.adc_sequence:
5+
tags:
6+
- adc
7+
- ci_samples_zephyr_drivers_adc
8+
# depends_on: adc
9+
integration_platforms:
10+
- nrf54l09pdk/nrf54l09/cpuapp
11+
- nrf54l20pdk/nrf54l20/cpuapp
12+
platform_allow:
13+
- nrf54l09pdk/nrf54l09/cpuapp
14+
- nrf54l20pdk/nrf54l20/cpuapp
15+
harness: console
16+
timeout: 10
17+
harness_config:
18+
type: multi_line
19+
regex:
20+
- "ADC sequence reading \\[\\d+\\]:"
21+
- "- .+, channel \\d+, \\d+ sequence samples:"
22+
- "- - \\d+ (= \\d+mV)|(\\(value in mV not available\\))"

scripts/ci/tags.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -1604,3 +1604,13 @@ ci_tests_zephyr_boards_nrf_qdec:
16041604
files:
16051605
- nrf/tests/zephyr/boards/nrf/qdec/
16061606
- zephyr/tests/boards/nrf/qdec/
1607+
1608+
ci_tests_zephyr_drivers_adc:
1609+
files:
1610+
- nrf/tests/zephyr/drivers/adc/
1611+
- zephyr/tests/drivers/adc/
1612+
1613+
ci_samples_zephyr_drivers_adc:
1614+
files:
1615+
- nrf/samples/zephyr/drivers/adc/
1616+
- zephyr/samples/drivers/adc/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
cmake_minimum_required(VERSION 3.20.0)
8+
9+
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
10+
project(adc_accuracy)
11+
12+
target_sources(app PRIVATE ${ZEPHYR_BASE}/tests/drivers/adc/adc_accuracy_test/src/main.c)
13+
target_sources_ifdef(CONFIG_REFERENCE_VOLTAGE_TEST app PRIVATE ${ZEPHYR_BASE}/tests/drivers/adc/adc_accuracy_test/src/ref_volt.c)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
source "tests/drivers/adc/adc_accuracy_test/Kconfig"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
This sample extends the same-named Zephyr sample to verify it
2+
with Nordic development kits.
3+
4+
Source code and basic configuration files can be found in the corresponding folder structure in zephyr/tests/drivers/adc/adc_accuracy_test.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/ {
2+
zephyr,user {
3+
io-channels = <&adc 0>;
4+
reference_mv = <1800>;
5+
expected_accuracy = <64>;
6+
};
7+
};
8+
9+
&adc {
10+
#address-cells = <1>;
11+
#size-cells = <0>;
12+
status = "okay";
13+
14+
channel@0 {
15+
reg = <0>;
16+
zephyr,gain = "ADC_GAIN_1_2";
17+
zephyr,reference = "ADC_REF_INTERNAL";
18+
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
19+
zephyr,input-positive = <NRF_SAADC_AIN2>;
20+
zephyr,resolution = <14>;
21+
};
22+
};

0 commit comments

Comments
 (0)