mirror of https://github.com/ARMmbed/mbed-os.git
Nuvoton: Enable extending sampling time for ADC/EADC
For all Nuvoton targets, enable extending sampling time in ADC/EADC clocks on per-pin basis.pull/15422/head
parent
cc39261968
commit
91a1b59c95
|
@ -25,6 +25,7 @@
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
#include "gpio_api.h"
|
#include "gpio_api.h"
|
||||||
#include "nu_modutil.h"
|
#include "nu_modutil.h"
|
||||||
|
#include "hal/PinNameAliases.h"
|
||||||
|
|
||||||
static uint32_t eadc_modinit_mask = 0;
|
static uint32_t eadc_modinit_mask = 0;
|
||||||
|
|
||||||
|
@ -47,6 +48,18 @@ static const struct nu_modinit_s adc_modinit_tab[] = {
|
||||||
{ADC_0_15, EADC_MODULE, 0, CLK_CLKDIV0_EADC(8), EADC_RST, EADC0_IRQn, NULL},
|
{ADC_0_15, EADC_MODULE, 0, CLK_CLKDIV0_EADC(8), EADC_RST, EADC0_IRQn, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
/* Structure for extending sampling time on per-pin basis */
|
||||||
|
struct nu_eadc_extsmpt {
|
||||||
|
PinName pin;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct nu_eadc_extsmpt eadc_extsmpt_arr[] = {
|
||||||
|
MBED_CONF_TARGET_EADC_EXTSMPT_LIST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void analogin_init(analogin_t *obj, PinName pin)
|
void analogin_init(analogin_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
||||||
|
@ -92,6 +105,18 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
||||||
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
// Extend sampling time in EADC clocks on per-pin basis
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_pos = eadc_extsmpt_arr;
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_end = eadc_extsmpt_arr + sizeof (eadc_extsmpt_arr) / sizeof (eadc_extsmpt_arr[0]);
|
||||||
|
for (; eadc_extsmpt_pos != eadc_extsmpt_end; eadc_extsmpt_pos ++) {
|
||||||
|
if (eadc_extsmpt_pos->pin == pin) {
|
||||||
|
EADC_SetExtendSampleTime(eadc_base, chn, eadc_extsmpt_pos->value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
eadc_modinit_mask |= 1 << chn;
|
eadc_modinit_mask |= 1 << chn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
#include "nu_modutil.h"
|
#include "nu_modutil.h"
|
||||||
|
#include "hal/PinNameAliases.h"
|
||||||
|
|
||||||
static uint32_t eadc_modinit_mask = 0;
|
static uint32_t eadc_modinit_mask = 0;
|
||||||
|
|
||||||
|
@ -46,6 +47,18 @@ static const struct nu_modinit_s adc_modinit_tab[] = {
|
||||||
{ADC_0_15, EADC_MODULE, 0, CLK_CLKDIV0_EADC(8), EADC_RST, EADC_INT0_IRQn, NULL},
|
{ADC_0_15, EADC_MODULE, 0, CLK_CLKDIV0_EADC(8), EADC_RST, EADC_INT0_IRQn, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
/* Structure for extending sampling time on per-pin basis */
|
||||||
|
struct nu_eadc_extsmpt {
|
||||||
|
PinName pin;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct nu_eadc_extsmpt eadc_extsmpt_arr[] = {
|
||||||
|
MBED_CONF_TARGET_EADC_EXTSMPT_LIST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void analogin_init(analogin_t *obj, PinName pin)
|
void analogin_init(analogin_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
||||||
|
@ -90,6 +103,18 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
*/
|
*/
|
||||||
EADC_SetExtendSampleTime(eadc_base, chn, 10);
|
EADC_SetExtendSampleTime(eadc_base, chn, 10);
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
// Extend sampling time in EADC clocks on per-pin basis
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_pos = eadc_extsmpt_arr;
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_end = eadc_extsmpt_arr + sizeof (eadc_extsmpt_arr) / sizeof (eadc_extsmpt_arr[0]);
|
||||||
|
for (; eadc_extsmpt_pos != eadc_extsmpt_end; eadc_extsmpt_pos ++) {
|
||||||
|
if (eadc_extsmpt_pos->pin == pin) {
|
||||||
|
EADC_SetExtendSampleTime(eadc_base, chn, eadc_extsmpt_pos->value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
eadc_modinit_mask |= 1 << chn;
|
eadc_modinit_mask |= 1 << chn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
#include "nu_modutil.h"
|
#include "nu_modutil.h"
|
||||||
|
#include "hal/PinNameAliases.h"
|
||||||
|
|
||||||
static uint32_t eadc_modinit_mask = 0;
|
static uint32_t eadc_modinit_mask = 0;
|
||||||
|
|
||||||
|
@ -45,6 +46,18 @@ static const struct nu_modinit_s adc_modinit_tab[] = {
|
||||||
{ADC_0_15, EADC_MODULE, 0, CLK_CLKDIV0_EADC(8), EADC_RST, EADC0_IRQn, NULL},
|
{ADC_0_15, EADC_MODULE, 0, CLK_CLKDIV0_EADC(8), EADC_RST, EADC0_IRQn, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
/* Structure for extending sampling time on per-pin basis */
|
||||||
|
struct nu_eadc_extsmpt {
|
||||||
|
PinName pin;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct nu_eadc_extsmpt eadc_extsmpt_arr[] = {
|
||||||
|
MBED_CONF_TARGET_EADC_EXTSMPT_LIST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void analogin_init(analogin_t *obj, PinName pin)
|
void analogin_init(analogin_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
||||||
|
@ -81,6 +94,18 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
||||||
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
// Extend sampling time in EADC clocks on per-pin basis
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_pos = eadc_extsmpt_arr;
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_end = eadc_extsmpt_arr + sizeof (eadc_extsmpt_arr) / sizeof (eadc_extsmpt_arr[0]);
|
||||||
|
for (; eadc_extsmpt_pos != eadc_extsmpt_end; eadc_extsmpt_pos ++) {
|
||||||
|
if (eadc_extsmpt_pos->pin == pin) {
|
||||||
|
EADC_SetExtendSampleTime(eadc_base, chn, eadc_extsmpt_pos->value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
eadc_modinit_mask |= 1 << chn;
|
eadc_modinit_mask |= 1 << chn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
#include "nu_modutil.h"
|
#include "nu_modutil.h"
|
||||||
|
#include "hal/PinNameAliases.h"
|
||||||
|
|
||||||
static uint32_t eadc_modinit_mask = 0;
|
static uint32_t eadc_modinit_mask = 0;
|
||||||
|
|
||||||
|
@ -44,6 +45,18 @@ static const struct nu_modinit_s adc_modinit_tab[] = {
|
||||||
{ADC_0_15, EADC_MODULE, 0, CLK_CLKDIV0_EADC(8), EADC_RST, ADC00_IRQn, NULL},
|
{ADC_0_15, EADC_MODULE, 0, CLK_CLKDIV0_EADC(8), EADC_RST, ADC00_IRQn, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
/* Structure for extending sampling time on per-pin basis */
|
||||||
|
struct nu_eadc_extsmpt {
|
||||||
|
PinName pin;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct nu_eadc_extsmpt eadc_extsmpt_arr[] = {
|
||||||
|
MBED_CONF_TARGET_EADC_EXTSMPT_LIST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void analogin_init(analogin_t *obj, PinName pin)
|
void analogin_init(analogin_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
||||||
|
@ -80,7 +93,19 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
|
|
||||||
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
||||||
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
// Extend sampling time in EADC clocks on per-pin basis
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_pos = eadc_extsmpt_arr;
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_end = eadc_extsmpt_arr + sizeof (eadc_extsmpt_arr) / sizeof (eadc_extsmpt_arr[0]);
|
||||||
|
for (; eadc_extsmpt_pos != eadc_extsmpt_end; eadc_extsmpt_pos ++) {
|
||||||
|
if (eadc_extsmpt_pos->pin == pin) {
|
||||||
|
EADC_SetExtendSampleTime(eadc_base, chn, eadc_extsmpt_pos->value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
eadc_modinit_mask |= 1 << chn;
|
eadc_modinit_mask |= 1 << chn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
#include "gpio_api.h"
|
#include "gpio_api.h"
|
||||||
#include "nu_modutil.h"
|
#include "nu_modutil.h"
|
||||||
|
#include "hal/PinNameAliases.h"
|
||||||
|
|
||||||
static uint32_t eadc_modinit_mask = 0;
|
static uint32_t eadc_modinit_mask = 0;
|
||||||
|
|
||||||
|
@ -84,6 +85,18 @@ static const struct nu_modinit_s adc_modinit_tab[] = {
|
||||||
{ADC_2_15, EADC2_MODULE, CLK_CLKSEL0_EADC2SEL_HCLK, CLK_CLKDIV5_EADC2(8), EADC2_RST, EADC20_IRQn, NULL},
|
{ADC_2_15, EADC2_MODULE, CLK_CLKSEL0_EADC2SEL_HCLK, CLK_CLKDIV5_EADC2(8), EADC2_RST, EADC20_IRQn, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
/* Structure for extending sampling time on per-pin basis */
|
||||||
|
struct nu_eadc_extsmpt {
|
||||||
|
PinName pin;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct nu_eadc_extsmpt eadc_extsmpt_arr[] = {
|
||||||
|
MBED_CONF_TARGET_EADC_EXTSMPT_LIST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void analogin_init(analogin_t *obj, PinName pin)
|
void analogin_init(analogin_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
||||||
|
@ -126,6 +139,18 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
||||||
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
// Extend sampling time in EADC clocks on per-pin basis
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_pos = eadc_extsmpt_arr;
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_end = eadc_extsmpt_arr + sizeof (eadc_extsmpt_arr) / sizeof (eadc_extsmpt_arr[0]);
|
||||||
|
for (; eadc_extsmpt_pos != eadc_extsmpt_end; eadc_extsmpt_pos ++) {
|
||||||
|
if (eadc_extsmpt_pos->pin == pin) {
|
||||||
|
EADC_SetExtendSampleTime(eadc_base, chn, eadc_extsmpt_pos->value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
eadc_modinit_mask |= 1 << chn;
|
eadc_modinit_mask |= 1 << chn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
#include "gpio_api.h"
|
#include "gpio_api.h"
|
||||||
#include "nu_modutil.h"
|
#include "nu_modutil.h"
|
||||||
|
#include "hal/PinNameAliases.h"
|
||||||
|
|
||||||
static uint32_t eadc_modinit_mask = 0;
|
static uint32_t eadc_modinit_mask = 0;
|
||||||
|
|
||||||
|
@ -66,6 +67,18 @@ static const struct nu_modinit_s adc_modinit_tab[] = {
|
||||||
{ADC_1_15, EADC1_MODULE, 0, CLK_CLKDIV2_EADC1(8), EADC1_RST, EADC10_IRQn, NULL},
|
{ADC_1_15, EADC1_MODULE, 0, CLK_CLKDIV2_EADC1(8), EADC1_RST, EADC10_IRQn, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
/* Structure for extending sampling time on per-pin basis */
|
||||||
|
struct nu_eadc_extsmpt {
|
||||||
|
PinName pin;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct nu_eadc_extsmpt eadc_extsmpt_arr[] = {
|
||||||
|
MBED_CONF_TARGET_EADC_EXTSMPT_LIST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void analogin_init(analogin_t *obj, PinName pin)
|
void analogin_init(analogin_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
||||||
|
@ -102,6 +115,18 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
||||||
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
EADC_ConfigSampleModule(eadc_base, chn, EADC_SOFTWARE_TRIGGER, chn);
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
// Extend sampling time in EADC clocks on per-pin basis
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_pos = eadc_extsmpt_arr;
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_end = eadc_extsmpt_arr + sizeof (eadc_extsmpt_arr) / sizeof (eadc_extsmpt_arr[0]);
|
||||||
|
for (; eadc_extsmpt_pos != eadc_extsmpt_end; eadc_extsmpt_pos ++) {
|
||||||
|
if (eadc_extsmpt_pos->pin == pin) {
|
||||||
|
EADC_SetExtendSampleTime(eadc_base, chn, eadc_extsmpt_pos->value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
eadc_modinit_mask |= 1 << chn;
|
eadc_modinit_mask |= 1 << chn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
#include "nu_modutil.h"
|
#include "nu_modutil.h"
|
||||||
|
#include "hal/PinNameAliases.h"
|
||||||
|
|
||||||
static uint32_t adc_modinit_mask = 0;
|
static uint32_t adc_modinit_mask = 0;
|
||||||
|
|
||||||
|
@ -41,6 +42,18 @@ static const struct nu_modinit_s adc_modinit_tab[] = {
|
||||||
{ADC_0_11, ADC_MODULE, CLK_CLKSEL1_ADC_S_HIRC, CLK_ADC_CLK_DIVIDER(1), ADC_RST, ADC_IRQn, NULL},
|
{ADC_0_11, ADC_MODULE, CLK_CLKSEL1_ADC_S_HIRC, CLK_ADC_CLK_DIVIDER(1), ADC_RST, ADC_IRQn, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_ADC_SMPLCNT_LIST)
|
||||||
|
/* Structure for extending sampling time on per-pin basis */
|
||||||
|
struct nu_eadc_smplcnt {
|
||||||
|
PinName pin;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct nu_eadc_smplcnt eadc_smplcnt_arr[] = {
|
||||||
|
MBED_CONF_TARGET_ADC_SMPLCNT_LIST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void analogin_init(analogin_t *obj, PinName pin)
|
void analogin_init(analogin_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
||||||
|
@ -82,6 +95,18 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
adc_base->CHEN |= 1 << chn;
|
adc_base->CHEN |= 1 << chn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_ADC_SMPLCNT_LIST)
|
||||||
|
// Extend sampling time in EADC clocks on per-pin basis
|
||||||
|
struct nu_eadc_smplcnt *eadc_extsmpt_pos = eadc_smplcnt_arr;
|
||||||
|
struct nu_eadc_smplcnt *eadc_extsmpt_end = eadc_smplcnt_arr + sizeof (eadc_smplcnt_arr) / sizeof (eadc_smplcnt_arr[0]);
|
||||||
|
for (; eadc_extsmpt_pos != eadc_extsmpt_end; eadc_extsmpt_pos ++) {
|
||||||
|
if (eadc_extsmpt_pos->pin == pin) {
|
||||||
|
ADC_SetExtraSampleTime(adc_base, chn, eadc_extsmpt_pos->value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
adc_modinit_mask |= 1 << chn;
|
adc_modinit_mask |= 1 << chn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "pinmap.h"
|
#include "pinmap.h"
|
||||||
#include "PeripheralPins.h"
|
#include "PeripheralPins.h"
|
||||||
#include "nu_modutil.h"
|
#include "nu_modutil.h"
|
||||||
|
#include "hal/PinNameAliases.h"
|
||||||
|
|
||||||
static uint32_t eadc_modinit_mask = 0;
|
static uint32_t eadc_modinit_mask = 0;
|
||||||
|
|
||||||
|
@ -45,6 +46,18 @@ static const struct nu_modinit_s adc_modinit_tab[] = {
|
||||||
{ADC_1_7, EADC_MODULE, CLK_CLKSEL1_ADCSEL_PLL, CLK_CLKDIV0_ADC(5), ADC_RST, EADC0_IRQn, NULL}
|
{ADC_1_7, EADC_MODULE, CLK_CLKSEL1_ADCSEL_PLL, CLK_CLKDIV0_ADC(5), ADC_RST, EADC0_IRQn, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
/* Structure for extending sampling time on per-pin basis */
|
||||||
|
struct nu_eadc_extsmpt {
|
||||||
|
PinName pin;
|
||||||
|
uint32_t value;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct nu_eadc_extsmpt eadc_extsmpt_arr[] = {
|
||||||
|
MBED_CONF_TARGET_EADC_EXTSMPT_LIST
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void analogin_init(analogin_t *obj, PinName pin)
|
void analogin_init(analogin_t *obj, PinName pin)
|
||||||
{
|
{
|
||||||
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
obj->adc = (ADCName) pinmap_peripheral(pin, PinMap_ADC);
|
||||||
|
@ -82,6 +95,18 @@ void analogin_init(analogin_t *obj, PinName pin)
|
||||||
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
// Configure the sample module Nmod for analog input channel Nch and software trigger source
|
||||||
EADC_ConfigSampleModule(eadc_base, smp_mod, EADC_SOFTWARE_TRIGGER, smp_chn);
|
EADC_ConfigSampleModule(eadc_base, smp_mod, EADC_SOFTWARE_TRIGGER, smp_chn);
|
||||||
|
|
||||||
|
#if defined(MBED_CONF_TARGET_EADC_EXTSMPT_LIST)
|
||||||
|
// Extend sampling time in EADC clocks on per-pin basis
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_pos = eadc_extsmpt_arr;
|
||||||
|
struct nu_eadc_extsmpt *eadc_extsmpt_end = eadc_extsmpt_arr + sizeof (eadc_extsmpt_arr) / sizeof (eadc_extsmpt_arr[0]);
|
||||||
|
for (; eadc_extsmpt_pos != eadc_extsmpt_end; eadc_extsmpt_pos ++) {
|
||||||
|
if (eadc_extsmpt_pos->pin == pin) {
|
||||||
|
EADC_SetExtendSampleTime(eadc_base, smp_mod, eadc_extsmpt_pos->value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
eadc_modinit_mask |= 1 << smp_mod;
|
eadc_modinit_mask |= 1 << smp_mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7179,6 +7179,9 @@
|
||||||
"gpio-irq-debounce-sample-rate": {
|
"gpio-irq-debounce-sample-rate": {
|
||||||
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
||||||
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
||||||
|
},
|
||||||
|
"eadc-extsmpt-list": {
|
||||||
|
"help": "For EADC, comma separated {pin, value} list to extend sampling time in EADC clocks on per-pin basis. Value must be in the range [0, 255]."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"inherits": [
|
"inherits": [
|
||||||
|
@ -7293,6 +7296,9 @@
|
||||||
"gpio-irq-debounce-sample-rate": {
|
"gpio-irq-debounce-sample-rate": {
|
||||||
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
||||||
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
||||||
|
},
|
||||||
|
"eadc-extsmpt-list": {
|
||||||
|
"help": "For EADC, comma separated {pin, value} list to extend sampling time in EADC clocks on per-pin basis. Value must be in the range [0, 255]."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"inherits": [
|
"inherits": [
|
||||||
|
@ -7415,6 +7421,9 @@
|
||||||
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCLKSEL_1, GPIO_DBCLKSEL_2, GPIO_DBCLKSEL_4, ..., or GPIO_DBCLKSEL_32768",
|
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCLKSEL_1, GPIO_DBCLKSEL_2, GPIO_DBCLKSEL_4, ..., or GPIO_DBCLKSEL_32768",
|
||||||
"value": "GPIO_DBCLKSEL_16"
|
"value": "GPIO_DBCLKSEL_16"
|
||||||
},
|
},
|
||||||
|
"adc-smplcnt-list": {
|
||||||
|
"help": "For ADC, comma separated {pin, value} list to extend sampling time in ADC clocks on per-pin basis. Value must be in the range [0, 15]."
|
||||||
|
},
|
||||||
"clock-pll": {
|
"clock-pll": {
|
||||||
"help": "Choose clock source to clock PLL: NU_HXT_PLL or NU_HIRC_PLL",
|
"help": "Choose clock source to clock PLL: NU_HXT_PLL or NU_HIRC_PLL",
|
||||||
"macro_name": "NU_CLOCK_PLL",
|
"macro_name": "NU_CLOCK_PLL",
|
||||||
|
@ -7554,6 +7563,9 @@
|
||||||
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
||||||
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
||||||
},
|
},
|
||||||
|
"eadc-extsmpt-list": {
|
||||||
|
"help": "For EADC, comma separated {pin, value} list to extend sampling time in EADC clocks on per-pin basis. Value must be in the range [0, 255]."
|
||||||
|
},
|
||||||
"exclude-uno-spi-from-fpga-ci-test-shield-test": {
|
"exclude-uno-spi-from-fpga-ci-test-shield-test": {
|
||||||
"help": "Exclude UNO SPI pins (D8/D9/D10/D11/D12/D13) from FPGA CI Test Shield test for wiring to on-board SPI flash",
|
"help": "Exclude UNO SPI pins (D8/D9/D10/D11/D12/D13) from FPGA CI Test Shield test for wiring to on-board SPI flash",
|
||||||
"options": [false, true],
|
"options": [false, true],
|
||||||
|
@ -7746,6 +7758,9 @@
|
||||||
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
||||||
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
||||||
},
|
},
|
||||||
|
"eadc-extsmpt-list": {
|
||||||
|
"help": "For EADC, comma separated {pin, value} list to extend sampling time in EADC clocks on per-pin basis. Value must be in the range [0, 255]."
|
||||||
|
},
|
||||||
"usb-device-hsusbd": {
|
"usb-device-hsusbd": {
|
||||||
"help": "Select high-speed USB device or not",
|
"help": "Select high-speed USB device or not",
|
||||||
"value": 0
|
"value": 0
|
||||||
|
@ -8109,6 +8124,9 @@
|
||||||
"gpio-irq-debounce-sample-rate": {
|
"gpio-irq-debounce-sample-rate": {
|
||||||
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
||||||
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
||||||
|
},
|
||||||
|
"eadc-extsmpt-list": {
|
||||||
|
"help": "For EADC, comma separated {pin, value} list to extend sampling time in EADC clocks on per-pin basis. Value must be in the range [0, 255]."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
|
@ -8256,6 +8274,9 @@
|
||||||
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
||||||
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
||||||
},
|
},
|
||||||
|
"eadc-extsmpt-list": {
|
||||||
|
"help": "For EADC, comma separated {pin, value} list to extend sampling time in EADC clocks on per-pin basis. Value must be in the range [0, 255]."
|
||||||
|
},
|
||||||
"hxt-enable": {
|
"hxt-enable": {
|
||||||
"help": "Enable external high-speed crystal (HXT)",
|
"help": "Enable external high-speed crystal (HXT)",
|
||||||
"value": 0,
|
"value": 0,
|
||||||
|
@ -9201,6 +9222,9 @@
|
||||||
"gpio-irq-debounce-sample-rate": {
|
"gpio-irq-debounce-sample-rate": {
|
||||||
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
"help": "Select GPIO IRQ debounce sample rate: GPIO_DBCTL_DBCLKSEL_1, GPIO_DBCTL_DBCLKSEL_2, GPIO_DBCTL_DBCLKSEL_4, ..., or GPIO_DBCTL_DBCLKSEL_32768",
|
||||||
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
"value": "GPIO_DBCTL_DBCLKSEL_16"
|
||||||
|
},
|
||||||
|
"eadc-extsmpt-list": {
|
||||||
|
"help": "For EADC, comma separated {pin, value} list to extend sampling time in EADC clocks on per-pin basis. Value must be in the range [0, 255]."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"inherits": [
|
"inherits": [
|
||||||
|
|
Loading…
Reference in New Issue