|
|
|
|
|
|
|
|
bool WS2812Serial::begin() |
|
|
bool WS2812Serial::begin() |
|
|
{ |
|
|
{ |
|
|
uint32_t divisor, portconfig, hwtrigger; |
|
|
uint32_t divisor, portconfig, hwtrigger; |
|
|
|
|
|
#if defined(KINETISK) |
|
|
KINETISK_UART_t *uart; |
|
|
KINETISK_UART_t *uart; |
|
|
|
|
|
#elif defined(KINETISL) |
|
|
|
|
|
KINETISL_UART_t *uart; |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
switch (pin) { |
|
|
switch (pin) { |
|
|
case 1: |
|
|
|
|
|
|
|
|
#if defined(KINETISK) |
|
|
|
|
|
case 1: // Serial1 |
|
|
|
|
|
case 5: |
|
|
|
|
|
#if defined(__MK64FX512__) || defined(__MK66FX1M0__) |
|
|
|
|
|
case 26: |
|
|
|
|
|
#endif |
|
|
uart = &KINETISK_UART0; |
|
|
uart = &KINETISK_UART0; |
|
|
divisor = BAUD2DIV(2400000); |
|
|
divisor = BAUD2DIV(2400000); |
|
|
portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); |
|
|
portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); |
|
|
hwtrigger = DMAMUX_SOURCE_UART0_TX; |
|
|
hwtrigger = DMAMUX_SOURCE_UART0_TX; |
|
|
SIM_SCGC4 |= SIM_SCGC4_UART0; |
|
|
SIM_SCGC4 |= SIM_SCGC4_UART0; |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case 10: // Serial2 |
|
|
|
|
|
#if defined(__MK20DX128__) || defined(__MK20DX256__) |
|
|
|
|
|
case 31: |
|
|
|
|
|
#elif defined(__MK64FX512__) || defined(__MK66FX1M0__) |
|
|
|
|
|
case 58: |
|
|
|
|
|
#endif |
|
|
|
|
|
uart = &KINETISK_UART1; |
|
|
|
|
|
divisor = BAUD2DIV2(2400000); |
|
|
|
|
|
portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); |
|
|
|
|
|
hwtrigger = DMAMUX_SOURCE_UART1_TX; |
|
|
|
|
|
SIM_SCGC4 |= SIM_SCGC4_UART1; |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case 8: // Serial3 |
|
|
|
|
|
case 20: |
|
|
|
|
|
uart = &KINETISK_UART2; |
|
|
|
|
|
divisor = BAUD2DIV3(2400000); |
|
|
|
|
|
portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); |
|
|
|
|
|
hwtrigger = DMAMUX_SOURCE_UART2_TX; |
|
|
|
|
|
SIM_SCGC4 |= SIM_SCGC4_UART2; |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
#if defined(__MK64FX512__) || defined(__MK66FX1M0__) |
|
|
|
|
|
case 32: // Serial4 |
|
|
|
|
|
case 62: |
|
|
|
|
|
uart = &KINETISK_UART3; |
|
|
|
|
|
divisor = BAUD2DIV3(2400000); |
|
|
|
|
|
portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); |
|
|
|
|
|
hwtrigger = DMAMUX_SOURCE_UART3_TX; |
|
|
|
|
|
SIM_SCGC4 |= SIM_SCGC4_UART3; |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case 33: // Serial5 |
|
|
|
|
|
uart = &KINETISK_UART4; |
|
|
|
|
|
divisor = BAUD2DIV3(2400000); |
|
|
|
|
|
portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); |
|
|
|
|
|
hwtrigger = DMAMUX_SOURCE_UART4_RXTX; |
|
|
|
|
|
SIM_SCGC1 |= SIM_SCGC1_UART4; |
|
|
|
|
|
break; |
|
|
|
|
|
#endif |
|
|
|
|
|
#if defined(__MK64FX512__) |
|
|
|
|
|
case 48: // Serial6 |
|
|
|
|
|
uart = &KINETISK_UART5; |
|
|
|
|
|
divisor = BAUD2DIV3(2400000); |
|
|
|
|
|
portconfig = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); |
|
|
|
|
|
hwtrigger = DMAMUX_SOURCE_UART5_RXTX; |
|
|
|
|
|
SIM_SCGC1 |= SIM_SCGC1_UART5; |
|
|
|
|
|
break; |
|
|
|
|
|
#endif |
|
|
|
|
|
#elif defined(KINETISL) |
|
|
|
|
|
// TODO: Teesny LC support.... |
|
|
|
|
|
#endif |
|
|
default: |
|
|
default: |
|
|
return false; // pin not supported |
|
|
return false; // pin not supported |
|
|
} |
|
|
} |