mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #254 from 0xc0170/master
K64F - ADC mbed HAL - channels definition correctionpull/299/head
commit
6a7b119b46
|
|
@ -27,12 +27,12 @@
|
||||||
static const PinMap PinMap_ADC[] = {
|
static const PinMap PinMap_ADC[] = {
|
||||||
{PTC2, ADC0_SE4b, 0},
|
{PTC2, ADC0_SE4b, 0},
|
||||||
{PTC8, ADC1_SE4b, 0},
|
{PTC8, ADC1_SE4b, 0},
|
||||||
{PTC9, ADC0_SE5b, 0},
|
{PTC9, ADC1_SE5b, 0},
|
||||||
{PTD1, ADC0_SE5b, 0},
|
{PTD1, ADC0_SE5b, 0},
|
||||||
{PTC10, ADC0_SE6b, 0},
|
{PTC10, ADC1_SE6b, 0},
|
||||||
{PTD5, ADC0_SE6b, 0},
|
{PTD5, ADC0_SE6b, 0},
|
||||||
{PTC11, ADC0_SE7b, 0},
|
{PTC11, ADC1_SE7b, 0},
|
||||||
{PTD7, ADC0_SE7b, 0},
|
{PTD6, ADC0_SE7b, 0},
|
||||||
{PTB0 , ADC0_SE8 , 0},
|
{PTB0 , ADC0_SE8 , 0},
|
||||||
{PTB1 , ADC0_SE9 , 0},
|
{PTB1 , ADC0_SE9 , 0},
|
||||||
{PTB2 , ADC0_SE12, 0},
|
{PTB2 , ADC0_SE12, 0},
|
||||||
|
|
@ -41,9 +41,9 @@ static const PinMap PinMap_ADC[] = {
|
||||||
{PTB10, ADC1_SE14, 0},
|
{PTB10, ADC1_SE14, 0},
|
||||||
{PTB11, ADC1_SE15, 0},
|
{PTB11, ADC1_SE15, 0},
|
||||||
{PTC1 , ADC0_SE15, 0},
|
{PTC1 , ADC0_SE15, 0},
|
||||||
{PTE24, ADC0_SE17, 0},
|
|
||||||
{PTA17, ADC1_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}
|
{NC , NC , 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -63,30 +63,29 @@ void analogin_init(analogin_t *obj, PinName pin) {
|
||||||
if ((bus_clock >> clkdiv) <= MAX_FADC)
|
if ((bus_clock >> clkdiv) <= MAX_FADC)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (clkdiv == 4) {//Set max div
|
if (clkdiv == 4) {
|
||||||
clkdiv = 0x7;
|
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_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_clock_divider_mode(instance, (adc_clock_divider_mode_t)(clkdiv & 0x3));
|
||||||
adc_hal_set_reference_voltage_mode(instance, kAdcVoltageVref);
|
adc_hal_set_reference_voltage_mode(instance, kAdcVoltageVref);
|
||||||
adc_hal_set_resolution_mode(instance, kAdcSingleDiff16);
|
adc_hal_set_resolution_mode(instance, kAdcSingleDiff16);
|
||||||
adc_hal_configure_continuous_conversion(instance, false);
|
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)) ?
|
pinmap_pinout(pin, PinMap_ADC);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t analogin_read_u16(analogin_t *obj) {
|
uint16_t analogin_read_u16(analogin_t *obj) {
|
||||||
uint32_t instance = obj->adc >> ADC_INSTANCE_SHIFT;
|
uint32_t instance = obj->adc >> ADC_INSTANCE_SHIFT;
|
||||||
adc_group_mux_mode_t mode = (obj->adc & (1 << ADC_B_CHANNEL_SHIFT)) ?
|
/* sw trigger (SC1A) */
|
||||||
kAdcChannelMuxB : kAdcChannelMuxA;
|
adc_hal_enable(instance, 0, (adc_channel_mode_t)(obj->adc & 0xF), false);
|
||||||
adc_hal_enable(instance, mode, (adc_channel_mode_t)(obj->adc & 0xF), false);
|
while (!adc_hal_is_conversion_completed(instance, 0));
|
||||||
while (!adc_hal_is_conversion_completed(instance, mode));
|
return adc_hal_get_conversion_value(instance, 0);
|
||||||
return adc_hal_get_conversion_value(instance, mode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float analogin_read(analogin_t *obj) {
|
float analogin_read(analogin_t *obj) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue