Skip to content

Commit 9c07c58

Browse files
committed
K64F ADC - initial commit
- ADC using KPSDK driver
1 parent 88e03ef commit 9c07c58

File tree

5 files changed

+50
-15
lines changed

5 files changed

+50
-15
lines changed

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/PeripheralNames.h

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,28 @@ typedef enum {
5050
PWM_10 = (1 << TPM_SHIFT) | (1), // FTM1 CH1
5151
} PWMName;
5252

53+
#define ADC_SHIFT 8
5354
typedef enum {
54-
ADC0_SE4b = 4,
55-
ADC0_SE5b = 5,
56-
ADC0_SE6b = 6,
57-
ADC0_SE7b = 7,
58-
ADC0_SE8 = 8,
59-
ADC0_SE9 = 9,
60-
ADC0_SE12 = 12,
61-
ADC0_SE13 = 13,
62-
ADC0_SE14 = 14,
63-
ADC0_SE15 = 15
55+
ADC0_SE4b = (0 << ADC_SHIFT) | 4,
56+
ADC0_SE5b = (0 << ADC_SHIFT) | 5,
57+
ADC0_SE6b = (0 << ADC_SHIFT) | 6,
58+
ADC0_SE7b = (0 << ADC_SHIFT) | 7,
59+
ADC0_SE8 = (0 << ADC_SHIFT) | 8,
60+
ADC0_SE9 = (0 << ADC_SHIFT) | 9,
61+
ADC0_SE12 = (0 << ADC_SHIFT) | 12,
62+
ADC0_SE13 = (0 << ADC_SHIFT) | 13,
63+
ADC0_SE14 = (0 << ADC_SHIFT) | 14,
64+
ADC0_SE15 = (0 << ADC_SHIFT) | 15,
65+
ADC1_SE4b = (1 << ADC_SHIFT) | 4,
66+
ADC1_SE5b = (1 << ADC_SHIFT) | 5,
67+
ADC1_SE6b = (1 << ADC_SHIFT) | 6,
68+
ADC1_SE7b = (1 << ADC_SHIFT) | 7,
69+
ADC1_SE8 = (1 << ADC_SHIFT) | 8,
70+
ADC1_SE9 = (1 << ADC_SHIFT) | 9,
71+
ADC1_SE12 = (1 << ADC_SHIFT) | 12,
72+
ADC1_SE13 = (1 << ADC_SHIFT) | 13,
73+
ADC1_SE14 = (1 << ADC_SHIFT) | 14,
74+
ADC1_SE15 = (1 << ADC_SHIFT) | 15
6475
} ADCName;
6576

6677
typedef enum {

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

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,42 @@
1818
#include "cmsis.h"
1919
#include "pinmap.h"
2020
#include "error.h"
21+
#include "fsl_adc_driver.h"
2122

2223
static const PinMap PinMap_ADC[] = {
23-
24+
{PTC0, ADC0_SE14, 0},
2425
{NC, NC, 0}
2526
};
2627

2728
void analogin_init(analogin_t *obj, PinName pin) {
29+
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
30+
adc_config_t module_config;
31+
uint32_t instance = obj->adc >> ADC_SHIFT;
32+
33+
module_config.clockSourceMode = kAdcClockSourceBusClk;
34+
module_config.clockSourceDividerMode = kAdcClockDivider8;
35+
module_config.resolutionMode = kAdcSingleDiff16;
36+
module_config.referenceVoltageMode = kAdcVoltageVref;
37+
module_config.isContinuousEnabled = true;
38+
module_config.calibrationParam = NULL;
39+
40+
adc_init(instance, &module_config);
41+
42+
obj->channel_cfg.channelId =(adc_channel_mode_t)(obj->adc & 0x7F);
43+
obj->channel_cfg.isDifferentialEnabled = false;
44+
obj->channel_cfg.isInterruptEnabled = false;
45+
obj->channel_cfg.muxSelect = kAdcChannelMuxB;
46+
adc_start_conversion(instance, &obj->channel_cfg);
47+
2848
}
2949

3050
uint16_t analogin_read_u16(analogin_t *obj) {
31-
return 1;
51+
adc_start_conversion(obj->adc >> ADC_SHIFT, &obj->channel_cfg);
52+
return (uint16_t)adc_get_conversion_value(obj->adc >> ADC_SHIFT, &obj->channel_cfg);
3253
}
3354

3455
float analogin_read(analogin_t *obj) {
35-
return 1;
56+
uint16_t value = analogin_read_u16(obj);
57+
return (float)value * (1.0f / (float)0xFFFF);
3658
}
3759

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/objects.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "PortNames.h"
2121
#include "PeripheralNames.h"
2222
#include "PinNames.h"
23+
#include "fsl_adc_driver.h"
2324

2425
#ifdef __cplusplus
2526
extern "C" {
@@ -49,6 +50,7 @@ struct serial_s {
4950

5051
struct analogin_s {
5152
ADCName adc;
53+
adc_channel_config_t channel_cfg;
5254
};
5355

5456
struct i2c_s {

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/drivers/adc/fsl_adc_driver.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ uint32_t adc_get_conversion_value(uint32_t instance, adc_channel_config_t *chann
265265
void adc_register_user_callback_isr(uint32_t instance, adc_isr_callback_t func);
266266

267267
#if defined(__cplusplus)
268-
extern }
268+
}
269269
#endif
270270

271271
/*! @}*/

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_KPSDK_CODE/hal/adc/fsl_adc_features.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#ifndef __FSL_ADC_FEATURES_H__
3232
#define __FSL_ADC_FEATURES_H__
3333

34-
#include "device/fsl_device_registers.h"
34+
#include "fsl_device_registers.h"
3535

3636
#if defined(CPU_MK70FN1M0VMJ12)
3737
/*! @brief Define if there is Programmable Gain Amplifier in ADC. */

0 commit comments

Comments
 (0)