Skip to content

Commit 6a7b119

Browse files
committed
Merge pull request #254 from 0xc0170/master
K64F - ADC mbed HAL - channels definition correction
2 parents 05c1628 + a7236a8 commit 6a7b119

File tree

1 file changed

+18
-19
lines changed
  • libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F

1 file changed

+18
-19
lines changed

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogin_api.c

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727
static const PinMap PinMap_ADC[] = {
2828
{PTC2, ADC0_SE4b, 0},
2929
{PTC8, ADC1_SE4b, 0},
30-
{PTC9, ADC0_SE5b, 0},
30+
{PTC9, ADC1_SE5b, 0},
3131
{PTD1, ADC0_SE5b, 0},
32-
{PTC10, ADC0_SE6b, 0},
32+
{PTC10, ADC1_SE6b, 0},
3333
{PTD5, ADC0_SE6b, 0},
34-
{PTC11, ADC0_SE7b, 0},
35-
{PTD7, ADC0_SE7b, 0},
34+
{PTC11, ADC1_SE7b, 0},
35+
{PTD6, ADC0_SE7b, 0},
3636
{PTB0 , ADC0_SE8 , 0},
3737
{PTB1 , ADC0_SE9 , 0},
3838
{PTB2 , ADC0_SE12, 0},
@@ -41,9 +41,9 @@ static const PinMap PinMap_ADC[] = {
4141
{PTB10, ADC1_SE14, 0},
4242
{PTB11, ADC1_SE15, 0},
4343
{PTC1 , ADC0_SE15, 0},
44-
{PTE24, ADC0_SE17, 0},
4544
{PTA17, ADC1_SE17, 0},
46-
{PTE25, ADC0_SE18, 0},
45+
//{PTE24, ADC0_SE17, 0}, //I2C pull up
46+
//{PTE25, ADC0_SE18, 0}, //I2C pull up
4747
{NC , NC , 0}
4848
};
4949

@@ -63,30 +63,29 @@ void analogin_init(analogin_t *obj, PinName pin) {
6363
if ((bus_clock >> clkdiv) <= MAX_FADC)
6464
break;
6565
}
66-
if (clkdiv == 4) {//Set max div
67-
clkdiv = 0x7;
66+
if (clkdiv == 4) {
67+
clkdiv = 0x7; //Set max div
6868
}
69-
69+
/* adc is enabled/triggered when reading. */
7070
adc_hal_set_clock_source_mode(instance, (adc_clock_source_mode_t)(clkdiv >> 2));
7171
adc_hal_set_clock_divider_mode(instance, (adc_clock_divider_mode_t)(clkdiv & 0x3));
7272
adc_hal_set_reference_voltage_mode(instance, kAdcVoltageVref);
7373
adc_hal_set_resolution_mode(instance, kAdcSingleDiff16);
7474
adc_hal_configure_continuous_conversion(instance, false);
75+
adc_hal_configure_hw_trigger(instance, false); /* sw trigger */
76+
adc_hal_configure_hw_average(instance, true);
77+
adc_hal_set_hw_average_mode(instance, kAdcHwAverageCount4);
78+
adc_hal_set_group_mux(instance, kAdcChannelMuxB); /* only B channels are avail */
7579

76-
adc_group_mux_mode_t mode = (obj->adc & (1 << ADC_B_CHANNEL_SHIFT)) ?
77-
kAdcChannelMuxB : kAdcChannelMuxA;
78-
adc_hal_disable(instance, mode);
79-
adc_hal_set_group_mux(instance, mode);
80-
adc_hal_enable(instance, mode, (adc_channel_mode_t)(obj->adc & 0xF), false);
80+
pinmap_pinout(pin, PinMap_ADC);
8181
}
8282

8383
uint16_t analogin_read_u16(analogin_t *obj) {
8484
uint32_t instance = obj->adc >> ADC_INSTANCE_SHIFT;
85-
adc_group_mux_mode_t mode = (obj->adc & (1 << ADC_B_CHANNEL_SHIFT)) ?
86-
kAdcChannelMuxB : kAdcChannelMuxA;
87-
adc_hal_enable(instance, mode, (adc_channel_mode_t)(obj->adc & 0xF), false);
88-
while (!adc_hal_is_conversion_completed(instance, mode));
89-
return adc_hal_get_conversion_value(instance, mode);
85+
/* sw trigger (SC1A) */
86+
adc_hal_enable(instance, 0, (adc_channel_mode_t)(obj->adc & 0xF), false);
87+
while (!adc_hal_is_conversion_completed(instance, 0));
88+
return adc_hal_get_conversion_value(instance, 0);
9089
}
9190

9291
float analogin_read(analogin_t *obj) {

0 commit comments

Comments
 (0)