diff --git a/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/analogin_api.c b/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/analogin_api.c index 2d64a187e0..e7d89bb6f2 100644 --- a/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/analogin_api.c +++ b/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/analogin_api.c @@ -38,11 +38,11 @@ #include "afe_regs.h" #include "PeripheralPins.h" -#define PGA_TRK_CNT 0x8 +#define PGA_TRK_CNT 0x1F #define ADC_ACT_CNT 0x1 #define ADC_PGA_CNT 0x1 #define ADC_ACQ_CNT 0x1 -#define ADC_SLP_CNT 0x0 +#define ADC_SLP_CNT 0x1 //****************************************************************************** void analogin_init(analogin_t *obj, PinName pin) @@ -100,6 +100,12 @@ uint16_t analogin_read_u16(analogin_t *obj) mux_pos = (obj->adc_pin & 0xF) + 8; } + // Reset the ADC + obj->adc->ctrl0 |= MXC_F_ADC_CTRL0_CPU_ADC_RST; + + // Enable the ADC + obj->adc->ctrl0 |= MXC_F_ADC_CTRL0_CPU_ADC_EN; + // Setup the ADC clock MXC_SET_FIELD(&obj->adc->ctrl0, (MXC_F_ADC_CTRL0_ADC_MODE | MXC_F_ADC_CTRL0_AVG_MODE | MXC_F_ADC_CTRL0_ADC_CLK_MODE | MXC_F_ADC_CTRL0_ADC_BI_POL), @@ -119,9 +125,6 @@ uint16_t analogin_read_u16(analogin_t *obj) (MXC_F_AFE_CTRL1_REF_ADC_POWERUP | MXC_F_AFE_CTRL1_REF_BLK_POWERUP | (MXC_E_AFE_REF_VOLT_SEL_1500 << MXC_F_AFE_CTRL1_REF_ADC_VOLT_SEL_POS))); - // Enable the ADC - obj->adc->ctrl0 |= MXC_F_ADC_CTRL0_CPU_ADC_EN; - // Clear the done bit obj->adc->intr = MXC_F_ADC_INTR_DONE_IF; diff --git a/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/analogout_api.c b/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/analogout_api.c index 00ca4e9936..c17b06e8b5 100644 --- a/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/analogout_api.c +++ b/libraries/mbed/targets/hal/TARGET_Maxim/TARGET_MAX32610/analogout_api.c @@ -183,8 +183,7 @@ void analogout_write_u16(dac_t *obj, uint16_t value) MXC_F_DAC_CTRL0_CLOCK_GATE_EN | MXC_F_DAC_CTRL0_CPU_START); if(obj->index < 2) { - // Convert 16 bits to 12 bits - obj->out = (value >> 4); + obj->out = (value); obj->dac_fifo->output_16 = (obj->out); } else {