diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/PinNames.h b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/PinNames.h index 10ec9a2622..d4450f7bc2 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/PinNames.h +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/PinNames.h @@ -193,13 +193,10 @@ typedef enum { LED_RED = PTE29, LED_GREEN = PTD5, - LED_BLUE = PTD5, // mbed original LED naming LED1 = LED_GREEN, LED2 = LED_RED, - LED3 = LED_GREEN, - LED4 = LED_RED, // USB Pins USBTX = PTA2, @@ -223,18 +220,18 @@ typedef enum { D14 = PTE0, D15 = PTE1, - A0 = PTC1, - A1 = PTC2, - A2 = PTB3, - A3 = PTB2, - A4 = PTB1, - A5 = PTB0, + A0 = PTB0, + A1 = PTB1, + A2 = PTB2, + A3 = PTB3, + A4 = PTC2, + A5 = PTC1, // Not connected NC = (int)0xFFFFFFFF } PinName; -/* PullDown not available for KL25 */ +/* PullDown not available for KL46 */ typedef enum { PullNone = 0, PullUp = 2, diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/pwmout_api.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/pwmout_api.c index 4265c8e5bc..722bc43f9c 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/pwmout_api.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/pwmout_api.c @@ -20,29 +20,29 @@ #include "error.h" static const PinMap PinMap_PWM[] = { - // LEDs - {LED_RED , PWM_9 , 3}, // PTB18, TPM2 CH0 - {LED_GREEN, PWM_10, 3}, // PTB19, TPM2 CH1 - {LED_BLUE , PWM_2 , 4}, // PTD1 , TPM0 CH1 + // LEDs - only RED pin is PWM capable + {LED_RED, PWM_3, 3}, // PTE29, TPM0 CH2 // Arduino digital pinout {D0, PWM_9 , 3}, // PTA1 , TPM2 CH0 {D1, PWM_10, 3}, // PTA2 , TPM2 CH1 - {D2, PWM_5 , 4}, // PTD4 , TPM0 CH4 + {D2, PWM_4 , 4}, // PTD3 , TPM0 CH3 {D3, PWM_7 , 3}, // PTA12, TPM1 CH0 {D4, PWM_2 , 3}, // PTA4 , TPM0 CH1 {D5, PWM_3 , 3}, // PTA5 , TPM0 CH2 {D6, PWM_5 , 3}, // PTC8 , TPM0 CH4 {D7, PWM_6 , 3}, // PTC9 , TPM0 CH5 {D8, PWM_8 , 3}, // PTA13, TPM1 CH1 - {D9, PWM_6 , 4}, // PTD5 , TPM0 CH5 - {D10, PWM_1 , 4}, // PTD0 , TPM0 CH0 - {D11, PWM_3 , 4}, // PTD2 , TPM0 CH2 - {D12, PWM_4 , 4}, // PTD3 , TPM0 CH3 - {D13, PWM_2 , 4}, // PTD1 , TPM0 CH1, + {D9, PWM_3 , 4}, // PTD2 , TPM0 CH2 + {D10, PWM_5 , 4}, // PTD4 , TPM0 CH4 + //PWM on D11 not available + //PWM on D12 not available + {D13, PWM_2 , 4}, // PTD5 , TPM0 CH1, {PTA0, PWM_6, 3}, {PTA3, PWM_1, 3}, + {PTA6, PWM_4, 3}, + {PTA7, PWM_5, 3}, {PTB0, PWM_7, 3}, {PTB1, PWM_8, 3}, {PTB2, PWM_9, 3}, @@ -57,6 +57,7 @@ static const PinMap PinMap_PWM[] = { {PTE23, PWM_10, 3}, {PTE24, PWM_1, 3}, {PTE25, PWM_2, 3}, + {PTE26, PWM_6, 3}, {PTE29, PWM_3, 3}, {PTE30, PWM_4, 3}, {PTE31, PWM_5, 3}, diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/rtc_api.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/rtc_api.c index 0402f585bd..90765ac118 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/rtc_api.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/rtc_api.c @@ -24,7 +24,7 @@ static void init(void) { /* * configure PTC1 with alternate function 1: RTC_CLKIN - * As the kl25z board does not have a 32kHz osc, + * As the KL46Z board does not have a 32kHz osc, * we use an external clock generated by the * interface chip */ diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/serial_api.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/serial_api.c index 0d360060be..a942af1caa 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/serial_api.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/serial_api.c @@ -28,26 +28,30 @@ * INITIALIZATION ******************************************************************************/ static const PinMap PinMap_UART_TX[] = { - {PTC4, UART_1, 3}, {PTA2, UART_0, 2}, - {PTD5, UART_2, 3}, + {PTA14, UART_0, 3} + {PTC4, UART_1, 3}, {PTD3, UART_2, 3}, + {PTD5, UART_2, 3}, {PTD7, UART_0, 3}, + {PTE0, UART_1, 3}, + {PTE16, UART_2, 3}, {PTE20, UART_0, 4}, {PTE22, UART_2, 4}, - {PTE0, UART_1, 3}, {NC , NC , 0} }; static const PinMap PinMap_UART_RX[] = { - {PTC3, UART_1, 3}, {PTA1, UART_0, 2}, - {PTD4, UART_2, 3}, + {PTA15, UART_0, 3}, + {PTC3, UART_1, 3}, {PTD2, UART_2, 3}, + {PTD4, UART_2, 3}, {PTD6, UART_0, 3}, - {PTE23, UART_2, 4}, - {PTE21, UART_0, 4}, {PTE1, UART_1, 3}, + {PTE17, UART_2, 3}, + {PTE21, UART_0, 4}, + {PTE23, UART_2, 4}, {NC , NC , 0} }; @@ -77,7 +81,7 @@ void serial_init(serial_t *obj, PinName tx, PinName rx) { } // Disable UART before changing registers obj->uart->C2 &= ~(UART_C2_RE_MASK | UART_C2_TE_MASK); - + switch (uart) { case UART_0: obj->index = 0; break; case UART_1: obj->index = 1; break; @@ -122,13 +126,13 @@ void serial_free(serial_t *obj) { // DivAddVal < MulVal // void serial_baud(serial_t *obj, int baudrate) { - + // save C2 state uint8_t c2_state = (obj->uart->C2 & (UART_C2_RE_MASK | UART_C2_TE_MASK)); - + // Disable UART before changing registers obj->uart->C2 &= ~(UART_C2_RE_MASK | UART_C2_TE_MASK); - + // [TODO] not hardcode this value uint32_t PCLK = (obj->uart == UART0) ? 48000000u : 24000000u; @@ -143,20 +147,20 @@ void serial_baud(serial_t *obj, int baudrate) { // set BDH and BDL obj->uart->BDH = (obj->uart->BDH & ~(0x1f)) | ((DL >> 8) & 0x1f); obj->uart->BDL = (obj->uart->BDL & ~(0xff)) | ((DL >> 0) & 0xff); - + // restore C2 state obj->uart->C2 |= c2_state; } void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) { uint8_t m10 = 0; - + // save C2 state uint8_t c2_state = (obj->uart->C2 & (UART_C2_RE_MASK | UART_C2_TE_MASK)); - + // Disable UART before changing registers obj->uart->C2 &= ~(UART_C2_RE_MASK | UART_C2_TE_MASK); - + // 8 data bits = 0 ... 9 data bits = 1 if ((data_bits < 8) || (data_bits > 9)) { error("Invalid number of bits (%d) in serial format, should be 8..9\r\n", data_bits); @@ -178,7 +182,7 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b error("Invalid stop bits specified\r\n"); } stop_bits -= 1; - + // 9 data bits + parity if (data_bits == 2) { // only uart0 supports 10 bit communication @@ -193,17 +197,17 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b obj->uart->C1 = ((data_bits << 4) | (parity_enable << 1) | (parity_select << 0)); - + // enable 10bit mode if needed if (obj->index == 0) { obj->uart->C4 &= ~UARTLP_C4_M10_MASK; obj->uart->C4 |= (m10 << UARTLP_C4_M10_SHIFT); } - + // stop bits obj->uart->BDH &= ~UART_BDH_SBNS_MASK; obj->uart->BDH |= (stop_bits << UART_BDH_SBNS_SHIFT); - + // restore C2 state obj->uart->C2 |= c2_state; } @@ -304,7 +308,7 @@ void serial_pinout_tx(PinName tx) { } void serial_break_set(serial_t *obj) { - obj->uart->C2 |= UART_C2_SBK_MASK; + obj->uart->C2 |= UART_C2_SBK_MASK; } void serial_break_clear(serial_t *obj) { diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/spi_api.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/spi_api.c index 20a953aec7..e76c5aa137 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/spi_api.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL46Z/spi_api.c @@ -23,11 +23,13 @@ static const PinMap PinMap_SPI_SCLK[] = { {PTA15, SPI_0, 2}, + {PTB9, SPI_1, 2}, {PTB11, SPI_1, 2}, {PTC5, SPI_0, 2}, {PTD1, SPI_0, 2}, {PTD5, SPI_1, 2}, {PTE2, SPI_1, 2}, + {PTE17, SPI_0, 2}, {NC , NC , 0} }; @@ -44,6 +46,8 @@ static const PinMap PinMap_SPI_MOSI[] = { {PTD7, SPI_1, 5}, {PTE1, SPI_1, 2}, {PTE3, SPI_1, 5}, + {PTE18, SPI_0, 2}, + {PTE19, SPI_0, 5}, {NC , NC , 0} }; @@ -60,6 +64,8 @@ static const PinMap PinMap_SPI_MISO[] = { {PTD7, SPI_1, 2}, {PTE1, SPI_1, 5}, {PTE3, SPI_1, 2}, + {PTE18, SPI_0, 5}, + {PTE19, SPI_0, 2}, {NC , NC , 0} }; @@ -70,6 +76,7 @@ static const PinMap PinMap_SPI_SSEL[] = { {PTD0, SPI_0, 2}, {PTD4, SPI_1, 2}, {PTE4, SPI_1, 2}, + {PTE16, SPI_0, 2}, {NC , NC , 0} };