فهرست منبع

Add UART support for Kinetis boards (#18370)

* Add UART support for Kinetis boards

* Default PAL mode for GPIOV1
Ryan 2 سال پیش
والد
کامیت
33c47fe010
2فایلهای تغییر یافته به همراه41 افزوده شده و 17 حذف شده
  1. 9 3
      platforms/chibios/drivers/uart.c
  2. 32 14
      platforms/chibios/drivers/uart.h

+ 9 - 3
platforms/chibios/drivers/uart.c

@@ -18,7 +18,9 @@
 
 #include "quantum.h"
 
-#if defined(WB32F3G71xx) || defined(WB32FQ95xx)
+#if defined(MCU_KINETIS)
+static SerialConfig serialConfig = {SERIAL_DEFAULT_BITRATE};
+#elif defined(WB32F3G71xx) || defined(WB32FQ95xx)
 static SerialConfig serialConfig = {SERIAL_DEFAULT_BITRATE, SD1_WRDLEN, SD1_STPBIT, SD1_PARITY, SD1_ATFLCT};
 #else
 static SerialConfig serialConfig = {SERIAL_DEFAULT_BITRATE, SD1_CR1, SD1_CR2, SD1_CR3};
@@ -30,11 +32,15 @@ void uart_init(uint32_t baud) {
     if (!is_initialised) {
         is_initialised = true;
 
+#if defined(MCU_KINETIS)
+        serialConfig.sc_speed = baud;
+#else
         serialConfig.speed = baud;
+#endif
 
 #if defined(USE_GPIOV1)
-        palSetLineMode(SD1_TX_PIN, PAL_MODE_ALTERNATE_OPENDRAIN);
-        palSetLineMode(SD1_RX_PIN, PAL_MODE_ALTERNATE_OPENDRAIN);
+        palSetLineMode(SD1_TX_PIN, SD1_TX_PAL_MODE);
+        palSetLineMode(SD1_RX_PIN, SD1_RX_PAL_MODE);
 #else
         palSetLineMode(SD1_TX_PIN, PAL_MODE_ALTERNATE(SD1_TX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);
         palSetLineMode(SD1_RX_PIN, PAL_MODE_ALTERNATE(SD1_RX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);

+ 32 - 14
platforms/chibios/drivers/uart.h

@@ -28,32 +28,50 @@
 #    define SD1_TX_PIN A9
 #endif
 
-#ifndef SD1_TX_PAL_MODE
-#    define SD1_TX_PAL_MODE 7
-#endif
-
 #ifndef SD1_RX_PIN
 #    define SD1_RX_PIN A10
 #endif
 
-#ifndef SD1_RX_PAL_MODE
-#    define SD1_RX_PAL_MODE 7
-#endif
-
 #ifndef SD1_CTS_PIN
 #    define SD1_CTS_PIN A11
 #endif
 
-#ifndef SD1_CTS_PAL_MODE
-#    define SD1_CTS_PAL_MODE 7
-#endif
-
 #ifndef SD1_RTS_PIN
 #    define SD1_RTS_PIN A12
 #endif
 
-#ifndef SD1_RTS_PAL_MODE
-#    define SD1_RTS_PAL_MODE 7
+#ifdef USE_GPIOV1
+#    ifndef SD1_TX_PAL_MODE
+#        define SD1_TX_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN
+#    endif
+
+#    ifndef SD1_RX_PAL_MODE
+#        define SD1_RX_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN
+#    endif
+
+#    ifndef SD1_CTS_PAL_MODE
+#        define SD1_CTS_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN
+#    endif
+
+#    ifndef SD1_RTS_PAL_MODE
+#        define SD1_RTS_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN
+#    endif
+#else
+#    ifndef SD1_TX_PAL_MODE
+#        define SD1_TX_PAL_MODE 7
+#    endif
+
+#    ifndef SD1_RX_PAL_MODE
+#        define SD1_RX_PAL_MODE 7
+#    endif
+
+#    ifndef SD1_CTS_PAL_MODE
+#        define SD1_CTS_PAL_MODE 7
+#    endif
+
+#    ifndef SD1_RTS_PAL_MODE
+#        define SD1_RTS_PAL_MODE 7
+#    endif
 #endif
 
 #ifndef SD1_CR1