Skip to content

Commit 0d50234

Browse files
thinkbergtheotherjimmy
authored andcommitted
add usense support
add usense support add usense support
1 parent 2a66588 commit 0d50234

File tree

9 files changed

+76
-68
lines changed

9 files changed

+76
-68
lines changed

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/TARGET_UBRIDGE/PeripheralNames.h renamed to targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/TARGET_USENSE/PeripheralNames.h

Lines changed: 26 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -26,86 +26,75 @@ typedef enum {
2626
OSC32KCLK = 0,
2727
} RTCName;
2828

29+
/* LPUART */
2930
typedef enum {
3031
LPUART_0 = 0,
3132
LPUART_1 = 1,
3233
LPUART_2 = 2,
33-
LPUART_3 = 3,
34-
LPUART_4 = 4,
3534
} UARTName;
3635

3736
#define STDIO_UART_TX USBTX
3837
#define STDIO_UART_RX USBRX
3938
#define STDIO_UART LPUART_0
4039

41-
/* LPTMR interrupt is defined differently in K82F */
42-
#define LPTMR0_IRQn LPTMR0_LPTMR1_IRQn
43-
4440
typedef enum {
4541
I2C_0 = 0,
4642
I2C_1 = 1,
47-
I2C_2 = 2,
48-
I2C_3 = 3,
4943
} I2CName;
5044

5145
#define TPM_SHIFT 8
5246
typedef enum {
53-
PWM_1 = (0 << TPM_SHIFT) | (0), // FTM0 CH0
54-
PWM_2 = (0 << TPM_SHIFT) | (1), // FTM0 CH1
55-
PWM_3 = (0 << TPM_SHIFT) | (2), // FTM0 CH2
56-
PWM_4 = (0 << TPM_SHIFT) | (3), // FTM0 CH3
57-
PWM_5 = (0 << TPM_SHIFT) | (4), // FTM0 CH4
58-
PWM_6 = (0 << TPM_SHIFT) | (5), // FTM0 CH5
59-
PWM_7 = (0 << TPM_SHIFT) | (6), // FTM0 CH6
60-
PWM_8 = (0 << TPM_SHIFT) | (7), // FTM0 CH7
61-
PWM_9 = (1 << TPM_SHIFT) | (0), // FTM1 CH0
62-
PWM_10 = (1 << TPM_SHIFT) | (1), // FTM1 CH1
63-
PWM_11 = (2 << TPM_SHIFT) | (0), // FTM2 CH0
64-
PWM_12 = (2 << TPM_SHIFT) | (1), // FTM2 CH1
65-
PWM_13 = (3 << TPM_SHIFT) | (0), // FTM3 CH0
66-
PWM_14 = (3 << TPM_SHIFT) | (1), // FTM3 CH1
67-
PWM_15 = (3 << TPM_SHIFT) | (2), // FTM3 CH2
68-
PWM_16 = (3 << TPM_SHIFT) | (3), // FTM3 CH3
69-
PWM_17 = (3 << TPM_SHIFT) | (4), // FTM3 CH4
70-
PWM_18 = (3 << TPM_SHIFT) | (5), // FTM3 CH5
71-
PWM_19 = (3 << TPM_SHIFT) | (6), // FTM3 CH6
72-
PWM_20 = (3 << TPM_SHIFT) | (7), // FTM3 CH7
47+
PWM_1 = (0 << TPM_SHIFT) | (0), // TPM0 CH0
48+
PWM_2 = (0 << TPM_SHIFT) | (1), // TPM0 CH1
49+
PWM_3 = (0 << TPM_SHIFT) | (2), // TPM0 CH2
50+
PWM_4 = (0 << TPM_SHIFT) | (3), // TPM0 CH3
51+
PWM_5 = (0 << TPM_SHIFT) | (4), // TPM0 CH4
52+
PWM_6 = (0 << TPM_SHIFT) | (5), // TPM0 CH5
53+
PWM_7 = (1 << TPM_SHIFT) | (0), // TPM1 CH0
54+
PWM_8 = (1 << TPM_SHIFT) | (1), // TPM1 CH1
55+
PWM_9 = (2 << TPM_SHIFT) | (0), // TPM2 CH0
56+
PWM_10 = (2 << TPM_SHIFT) | (1), // TPM2 CH1
7357
} PWMName;
7458

7559
#define ADC_INSTANCE_SHIFT 8
7660
#define ADC_B_CHANNEL_SHIFT 5
7761
typedef enum {
62+
ADC0_SE0 = (0 << ADC_INSTANCE_SHIFT) | 0,
63+
ADC0_SE1 = (0 << ADC_INSTANCE_SHIFT) | 1,
64+
ADC0_SE2 = (0 << ADC_INSTANCE_SHIFT) | 2,
65+
ADC0_SE3 = (0 << ADC_INSTANCE_SHIFT) | 3,
7866
ADC0_SE4a = (0 << ADC_INSTANCE_SHIFT) | 4,
79-
ADC0_SE4b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
8067
ADC0_SE5a = (0 << ADC_INSTANCE_SHIFT) | 5,
81-
ADC0_SE5b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
8268
ADC0_SE6a = (0 << ADC_INSTANCE_SHIFT) | 6,
83-
ADC0_SE6b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
8469
ADC0_SE7a = (0 << ADC_INSTANCE_SHIFT) | 7,
70+
ADC0_SE4b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
71+
ADC0_SE5b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
72+
ADC0_SE6b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
8573
ADC0_SE7b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
8674
ADC0_SE8 = (0 << ADC_INSTANCE_SHIFT) | 8,
8775
ADC0_SE9 = (0 << ADC_INSTANCE_SHIFT) | 9,
88-
ADC0_SE10 = (0 << ADC_INSTANCE_SHIFT) | 10,
8976
ADC0_SE11 = (0 << ADC_INSTANCE_SHIFT) | 11,
9077
ADC0_SE12 = (0 << ADC_INSTANCE_SHIFT) | 12,
9178
ADC0_SE13 = (0 << ADC_INSTANCE_SHIFT) | 13,
9279
ADC0_SE14 = (0 << ADC_INSTANCE_SHIFT) | 14,
9380
ADC0_SE15 = (0 << ADC_INSTANCE_SHIFT) | 15,
81+
ADC0_SE16 = (0 << ADC_INSTANCE_SHIFT) | 16,
82+
ADC0_SE17 = (0 << ADC_INSTANCE_SHIFT) | 17,
83+
ADC0_SE18 = (0 << ADC_INSTANCE_SHIFT) | 18,
84+
ADC0_SE21 = (0 << ADC_INSTANCE_SHIFT) | 21,
9485
ADC0_SE22 = (0 << ADC_INSTANCE_SHIFT) | 22,
9586
ADC0_SE23 = (0 << ADC_INSTANCE_SHIFT) | 23,
9687
} ADCName;
9788

98-
typedef enum {
99-
DAC_0 = 0
100-
} DACName;
101-
102-
10389
typedef enum {
10490
SPI_0 = 0,
10591
SPI_1 = 1,
106-
SPI_2 = 2,
10792
} SPIName;
10893

94+
typedef enum {
95+
DAC_0 = 0
96+
} DACName;
97+
10998
#ifdef __cplusplus
11099
}
111100
#endif

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/TARGET_UBRIDGE/PinNames.h renamed to targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/TARGET_USENSE/PinNames.h

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,7 @@ typedef enum {
104104
PTE10 = (4 << GPIO_PORT_SHIFT | 10),
105105
PTE11 = (4 << GPIO_PORT_SHIFT | 11),
106106

107-
LED_RED = PTD4,
108-
LED_RGB = PTA14,
107+
LED_RED = PTE1,
109108

110109
// mbed original LED naming
111110
LED1 = LED_RED,
@@ -114,16 +113,15 @@ typedef enum {
114113
LED4 = LED_RED,
115114

116115
//Push buttons
117-
SW0 = PTD0,
118-
119-
UART_TX = PTA1,
120-
UART_RX = PTC1,
121-
122-
UART1_RTS = PTC1,
123-
UART1_CTS = PTC2,
124-
UART1_RX = PTC3,
125-
UART1_TX = PTC4,
126-
116+
SW0 = PTE2,
117+
118+
USBTX = PTA1,
119+
USBRX = PTA2,
120+
121+
UART_RTS = PTC1,
122+
UART_CTS = PTC2,
123+
UART_RX = PTC3,
124+
UART_TX = PTC4,
127125

128126
I2C_SCL = PTC10,
129127
I2C_SDA = PTC11,

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/TARGET_UBRIDGE/mbed_overrides.c renamed to targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/TARGET_USENSE/mbed_overrides.c

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,24 @@
1919
#include "fsl_pmc.h"
2020
#include "fsl_clock_config.h"
2121

22-
rcm_reset_source_t wakeupSource;
22+
//!< this contains the wakeup source
23+
rcm_reset_source_t kinetisResetSource;
2324

2425
// called before main
2526
void mbed_sdk_init() {
26-
// check the power mode source
2727
SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
28-
wakeupSource = (rcm_reset_source_t) (kRCM_SourceWakeup & RCM_GetPreviousResetSources(RCM));
29-
if (wakeupSource == kRCM_SourceWakeup) /* Wakeup from VLLS. */
30-
{
28+
29+
// check the power mode source
30+
kinetisResetSource = (rcm_reset_source_t) (RCM_GetPreviousResetSources(RCM));
31+
// if waking up from VLLS, do some cleanup
32+
if (kinetisResetSource & kRCM_SourceWakeup) {
3133
PMC_ClearPeriphIOIsolationFlag(PMC);
3234
NVIC_ClearPendingIRQ(LLWU_IRQn);
33-
34-
/* Wait for PLL lock. */
35-
while (!(kMCG_Pll0LockFlag & CLOCK_GetStatusFlags())) {}
36-
CLOCK_SetPeeMode();
3735
}
3836

3937
BOARD_BootClockRUN();
4038
}
4139

42-
// Enable the RTC oscillator if available on the board
43-
void rtc_setup_oscillator(RTC_Type *base)
44-
{
45-
/* Enable the RTC oscillator */
46-
RTC->CR |= RTC_CR_OSCE_MASK;
47-
}
48-
4940
// Change the NMI pin to an input. This allows NMI pin to
5041
// be used as a low power mode wakeup. The application will
5142
// need to change the pin back to NMI_b or wakeup only occurs once!
@@ -55,3 +46,11 @@ void NMI_Handler(void)
5546
gpio_init_in(&gpio, PTA4);
5647
}
5748

49+
#ifdef DEVICE_RTC
50+
// Enable the RTC oscillator if available on the board
51+
void rtc_setup_oscillator(RTC_Type *base)
52+
{
53+
/* Enable the RTC oscillator */
54+
RTC->CR |= RTC_CR_OSCE_MASK;
55+
}
56+
#endif

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KL82Z/serial_api.c

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,38 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
4747
obj->index = pinmap_merge(uart_tx, uart_rx);
4848
MBED_ASSERT((int)obj->index != NC);
4949

50+
// since the LPuart initialization depends very much on the source clock and its
51+
// frequency, we do a check here and retrieve the frequency accordingly
52+
// The CLOCK_SetLpuartSrc() is already done during clock init.
53+
uint32_t lpuart_src_freq;
54+
switch (SIM->SOPT2 & SIM_SOPT2_LPUARTSRC_MASK) {
55+
case SIM_SOPT2_LPUARTSRC(3U): {
56+
lpuart_src_freq = CLOCK_GetInternalRefClkFreq();
57+
break;
58+
}
59+
case SIM_SOPT2_LPUARTSRC(2U): {
60+
lpuart_src_freq = CLOCK_GetOsc0ErClkFreq();
61+
break;
62+
}
63+
case SIM_SOPT2_LPUARTSRC(1U): {
64+
lpuart_src_freq = CLOCK_GetPllFllSelClkFreq();
65+
break;
66+
}
67+
default: {
5068
/* Set the LPUART clock source */
51-
CLOCK_SetLpuartClock(2U);
69+
CLOCK_SetLpuartClock(1U);
70+
lpuart_src_freq = CLOCK_GetFreq(uart_clocks[obj->index]);
71+
break;
72+
}
73+
}
5274

5375
lpuart_config_t config;
5476
LPUART_GetDefaultConfig(&config);
5577
config.baudRate_Bps = 9600;
5678
config.enableTx = false;
5779
config.enableRx = false;
5880

59-
LPUART_Init(uart_addrs[obj->index], &config, CLOCK_GetFreq(uart_clocks[obj->index]));
81+
LPUART_Init(uart_addrs[obj->index], &config, lpuart_src_freq);
6082

6183
pinmap_pinout(tx, PinMap_UART_TX);
6284
pinmap_pinout(rx, PinMap_UART_RX);

targets/targets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@
545545
"macros": ["CPU_MKL82Z128VLK7", "FSL_RTOS_MBED"],
546546
"is_disk_virtual": true,
547547
"inherits": ["Target"],
548-
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES", "TRNG"],
548+
"device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES", "TRNG"],
549549
"release_versions": ["5"],
550550
"device_name" : "MKL82Z128xxx7"
551551
},

0 commit comments

Comments
 (0)