mirror of https://github.com/ARMmbed/mbed-os.git
K64F - ADC mbed HAL - channels definition correction
- only b channels are available - SC1A triggers the measurement - ADC1 channels corrections in the pinmap (PTCx), PTD6pull/254/head
parent
05c1628caa
commit
a7236a8783
|
|
@ -27,12 +27,12 @@
|
|||
static const PinMap PinMap_ADC[] = {
|
||||
{PTC2, ADC0_SE4b, 0},
|
||||
{PTC8, ADC1_SE4b, 0},
|
||||
{PTC9, ADC0_SE5b, 0},
|
||||
{PTC9, ADC1_SE5b, 0},
|
||||
{PTD1, ADC0_SE5b, 0},
|
||||
{PTC10, ADC0_SE6b, 0},
|
||||
{PTC10, ADC1_SE6b, 0},
|
||||
{PTD5, ADC0_SE6b, 0},
|
||||
{PTC11, ADC0_SE7b, 0},
|
||||
{PTD7, ADC0_SE7b, 0},
|
||||
{PTC11, ADC1_SE7b, 0},
|
||||
{PTD6, ADC0_SE7b, 0},
|
||||
{PTB0 , ADC0_SE8 , 0},
|
||||
{PTB1 , ADC0_SE9 , 0},
|
||||
{PTB2 , ADC0_SE12, 0},
|
||||
|
|
@ -41,9 +41,9 @@ static const PinMap PinMap_ADC[] = {
|
|||
{PTB10, ADC1_SE14, 0},
|
||||
{PTB11, ADC1_SE15, 0},
|
||||
{PTC1 , ADC0_SE15, 0},
|
||||
{PTE24, ADC0_SE17, 0},
|
||||
{PTA17, ADC1_SE17, 0},
|
||||
{PTE25, ADC0_SE18, 0},
|
||||
//{PTE24, ADC0_SE17, 0}, //I2C pull up
|
||||
//{PTE25, ADC0_SE18, 0}, //I2C pull up
|
||||
{NC , NC , 0}
|
||||
};
|
||||
|
||||
|
|
@ -63,30 +63,29 @@ void analogin_init(analogin_t *obj, PinName pin) {
|
|||
if ((bus_clock >> clkdiv) <= MAX_FADC)
|
||||
break;
|
||||
}
|
||||
if (clkdiv == 4) {//Set max div
|
||||
clkdiv = 0x7;
|
||||
if (clkdiv == 4) {
|
||||
clkdiv = 0x7; //Set max div
|
||||
}
|
||||
|
||||
/* adc is enabled/triggered when reading. */
|
||||
adc_hal_set_clock_source_mode(instance, (adc_clock_source_mode_t)(clkdiv >> 2));
|
||||
adc_hal_set_clock_divider_mode(instance, (adc_clock_divider_mode_t)(clkdiv & 0x3));
|
||||
adc_hal_set_reference_voltage_mode(instance, kAdcVoltageVref);
|
||||
adc_hal_set_resolution_mode(instance, kAdcSingleDiff16);
|
||||
adc_hal_configure_continuous_conversion(instance, false);
|
||||
adc_hal_configure_hw_trigger(instance, false); /* sw trigger */
|
||||
adc_hal_configure_hw_average(instance, true);
|
||||
adc_hal_set_hw_average_mode(instance, kAdcHwAverageCount4);
|
||||
adc_hal_set_group_mux(instance, kAdcChannelMuxB); /* only B channels are avail */
|
||||
|
||||
adc_group_mux_mode_t mode = (obj->adc & (1 << ADC_B_CHANNEL_SHIFT)) ?
|
||||
kAdcChannelMuxB : kAdcChannelMuxA;
|
||||
adc_hal_disable(instance, mode);
|
||||
adc_hal_set_group_mux(instance, mode);
|
||||
adc_hal_enable(instance, mode, (adc_channel_mode_t)(obj->adc & 0xF), false);
|
||||
pinmap_pinout(pin, PinMap_ADC);
|
||||
}
|
||||
|
||||
uint16_t analogin_read_u16(analogin_t *obj) {
|
||||
uint32_t instance = obj->adc >> ADC_INSTANCE_SHIFT;
|
||||
adc_group_mux_mode_t mode = (obj->adc & (1 << ADC_B_CHANNEL_SHIFT)) ?
|
||||
kAdcChannelMuxB : kAdcChannelMuxA;
|
||||
adc_hal_enable(instance, mode, (adc_channel_mode_t)(obj->adc & 0xF), false);
|
||||
while (!adc_hal_is_conversion_completed(instance, mode));
|
||||
return adc_hal_get_conversion_value(instance, mode);
|
||||
/* sw trigger (SC1A) */
|
||||
adc_hal_enable(instance, 0, (adc_channel_mode_t)(obj->adc & 0xF), false);
|
||||
while (!adc_hal_is_conversion_completed(instance, 0));
|
||||
return adc_hal_get_conversion_value(instance, 0);
|
||||
}
|
||||
|
||||
float analogin_read(analogin_t *obj) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue