diff --git a/boards/arduino/due/arduino_due-pinctrl.dtsi b/boards/arduino/due/arduino_due-pinctrl.dtsi index 49f92815da4..410df4f7eea 100644 --- a/boards/arduino/due/arduino_due-pinctrl.dtsi +++ b/boards/arduino/due/arduino_due-pinctrl.dtsi @@ -67,4 +67,11 @@ ; }; }; + + adc0_default: adc0_default { + group1 { + pinmux = , + ; + }; + }; }; diff --git a/boards/arduino/due/arduino_due.yaml b/boards/arduino/due/arduino_due.yaml index b8beeac60c9..12f9ba82ad4 100644 --- a/boards/arduino/due/arduino_due.yaml +++ b/boards/arduino/due/arduino_due.yaml @@ -8,6 +8,7 @@ toolchain: flash: 512 ram: 96 supported: + - adc - arduino_i2c - gpio - watchdog diff --git a/dts/arm/atmel/sam3x.dtsi b/dts/arm/atmel/sam3x.dtsi index a429e84eab1..981b5548da3 100644 --- a/dts/arm/atmel/sam3x.dtsi +++ b/dts/arm/atmel/sam3x.dtsi @@ -5,6 +5,7 @@ */ #include +#include #include #include #include @@ -258,6 +259,17 @@ status = "disabled"; }; + adc0: adc@400c0000 { + compatible = "atmel,sam-adc"; + reg = <0x400c0000 0x4000>; + interrupts = <37 1>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 37>; + #address-cells = <1>; + #size-cells = <0>; + #io-channel-cells = <1>; + status = "disabled"; + }; + pwm0: pwm@40094000 { compatible = "atmel,sam-pwm"; reg = <0x40094000 0x4000>; diff --git a/samples/drivers/adc/adc_sequence/boards/arduino_due.overlay b/samples/drivers/adc/adc_sequence/boards/arduino_due.overlay new file mode 100644 index 00000000000..ca34d9d18ad --- /dev/null +++ b/samples/drivers/adc/adc_sequence/boards/arduino_due.overlay @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2024 Centro de Inovacao EDGE + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + aliases { + adc0 = &adc0; + }; +}; + +&adc0 { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + pinctrl-0 = <&adc0_default>; + pinctrl-names = "default"; + + prescaler = <9>; + startup-time = <64>; + settling-time = <3>; + tracking-time = <2>; + + /* External ADC(+) */ + channel@6 { // Connector A1 + reg = <6>; + zephyr,gain = "ADC_GAIN_1"; + zephyr,reference = "ADC_REF_EXTERNAL0"; + zephyr,acquisition-time = ; + zephyr,input-positive = <6>; + zephyr,vref-mv = <3300>; + }; + channel@7 { // Connector A0 + reg = <7>; + zephyr,gain = "ADC_GAIN_1"; + zephyr,reference = "ADC_REF_EXTERNAL0"; + zephyr,acquisition-time = ; + zephyr,input-positive = <7>; + zephyr,vref-mv = <3300>; + }; +}; diff --git a/tests/drivers/adc/adc_api/boards/arduino_due.overlay b/tests/drivers/adc/adc_api/boards/arduino_due.overlay new file mode 100644 index 00000000000..b14564e8940 --- /dev/null +++ b/tests/drivers/adc/adc_api/boards/arduino_due.overlay @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2024 Centro de Inovacao EDGE + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + zephyr,user { + io-channels = <&adc0 0>, <&adc0 1>; + }; +}; + +&adc0 { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + pinctrl-0 = <&adc0_default>; + pinctrl-names = "default"; + + prescaler = <9>; + startup-time = <64>; + settling-time = <3>; + tracking-time = <2>; + + /* External ADC(+) */ + channel@6 { // Connector A1 + reg = <6>; + zephyr,gain = "ADC_GAIN_1"; + zephyr,reference = "ADC_REF_EXTERNAL0"; + zephyr,acquisition-time = ; + zephyr,input-positive = <6>; + zephyr,vref-mv = <3300>; + }; + channel@7 { // Connector A0 + reg = <7>; + zephyr,gain = "ADC_GAIN_1"; + zephyr,reference = "ADC_REF_EXTERNAL0"; + zephyr,acquisition-time = ; + zephyr,input-positive = <7>; + zephyr,vref-mv = <3300>; + }; +};