Skip to content

Commit a5957f8

Browse files
rzrhs0225
authored andcommitted
stm32f7nucleo: Add ADC support (#1894)
Aligned to configuration of NuttX: GPIO_ADC1_IN3 nuttx/configs/nucleo-144/src/stm32_adc.c (nuttx-7.21-298-gc67b807f43) More pins/channels may be configured later. Also handle difference per processors (this could be aligned in NuttX codebase). Change-Id: I5407e6b9b91eaa8570713d0331f786441ce0c649 Relate-to: rzr/webthing-iotjs#3 Forwarded: #1894 IoT.js-DCO-1.0-Signed-off-by: Philippe Coval p.coval@samsung.com
1 parent 4c3c1ad commit a5957f8

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
ENABLE_MODULE_IOTJS_BASIC_MODULES
22
ENABLE_MODULE_IOTJS_CORE_MODULES
3+
ENABLE_MODULE_ADC
34
ENABLE_MODULE_GPIO
45
ENABLE_MODULE_PWM
56
ENABLE_MODULE_STM32F7NUCLEO

src/modules/nuttx/iotjs_module_stm32f7nucleo-nuttx.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,26 @@
2121
#include "iotjs_def.h"
2222
#include "modules/iotjs_module_stm32f7nucleo.h"
2323

24+
#if ENABLE_MODULE_ADC
25+
static void iotjs_pin_initialize_adc(jerry_value_t jobj) {
26+
unsigned int number_bit;
27+
28+
// ADC pin name is "ADC(number)_(timer)".
29+
#define SET_ADC_CONSTANT(number, timer) \
30+
number_bit = (GPIO_ADC##number##_IN##timer); \
31+
number_bit |= (ADC_NUMBER(number)); \
32+
number_bit |= (SYSIO_TIMER_NUMBER(timer)); \
33+
iotjs_jval_set_property_number(jobj, "ADC" #number "_" #timer, number_bit);
34+
35+
#define SET_ADC_CONSTANT_NUMBER(number) SET_ADC_CONSTANT(number, 3);
36+
37+
SET_ADC_CONSTANT_NUMBER(1);
38+
39+
#undef SET_ADC_CONSTANT_NUMBER
40+
#undef SET_ADC_CONSTANT
41+
}
42+
#endif /* ENABLE_MODULE_ADC */
43+
2444
#if ENABLE_MODULE_GPIO
2545

2646
static void iotjs_pin_initialize_gpio(jerry_value_t jobj) {
@@ -115,6 +135,10 @@ void iotjs_stm32f7nucleo_pin_initialize(jerry_value_t jobj) {
115135
jerry_value_t jpin = jerry_create_object();
116136
iotjs_jval_set_property_jval(jobj, "pin", jpin);
117137

138+
#if ENABLE_MODULE_ADC
139+
iotjs_pin_initialize_adc(jpin);
140+
#endif /* ENABLE_MODULE_ADC */
141+
118142
#if ENABLE_MODULE_GPIO
119143
iotjs_pin_initialize_gpio(jpin);
120144
#endif /* ENABLE_MODULE_GPIO */

src/platform/nuttx/iotjs_systemio-nuttx.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ struct adc_dev_s* iotjs_adc_config_nuttx(int number, int timer, uint32_t pin) {
4545
stm32_configgpio(pin);
4646

4747
uint8_t channel_list[1] = { timer };
48+
#if defined(TARGET_BOARD_STM32F4DIS)
4849
return stm32_adcinitialize(number, channel_list, 1);
50+
#elif defined(TARGET_BOARD_STM32F7NUCLEO)
51+
return stm32_adc_initialize(number, channel_list, 1);
52+
#endif
4953
}
5054

5155
#endif /* ENABLE_MODULE_ADC */

0 commit comments

Comments
 (0)