فهرست منبع

rp2040 move uart id to board specific

hathach 5 سال پیش
والد
کامیت
4fef2ddb4c

+ 0 - 4
examples/device/board_test/src/main.c

@@ -55,10 +55,6 @@ int main(void)
   {
     uint32_t interval_ms = board_button_read() ? BLINK_PRESSED : BLINK_UNPRESSED;
 
-    // uart echo
-//    uint8_t ch;
-//    if ( board_uart_read(&ch, 1) ) board_uart_write(&ch, 1);
-
     // Blink every interval ms
     if ( !(board_millis() - start_ms < interval_ms) )
     {

+ 4 - 1
hw/bsp/rp2040/boards/adafruit_feather_rp2040/board.h

@@ -35,10 +35,13 @@
 #define LED_STATE_ON          1
 
 // Button pin is BOOTSEL which is flash CS pin
-
 #define BUTTON_BOOTSEL
 #define BUTTON_STATE_ACTIVE   0
 
+#define UART_DEV              uart0
+#define UART_TX_PIN           0
+#define UART_RX_PIN           1
+
 #ifdef __cplusplus
  }
 #endif

+ 4 - 1
hw/bsp/rp2040/boards/adafruit_itsybitsy_rp2040/board.h

@@ -35,10 +35,13 @@
 #define LED_STATE_ON          1
 
 // Button pin is BOOTSEL which is flash CS pin
-
 #define BUTTON_BOOTSEL
 #define BUTTON_STATE_ACTIVE   0
 
+#define UART_DEV              uart0
+#define UART_TX_PIN           0
+#define UART_RX_PIN           1
+
 #ifdef __cplusplus
  }
 #endif

+ 5 - 1
hw/bsp/rp2040/boards/adafruit_qt_rp2040/board.h

@@ -36,10 +36,14 @@
 #define LED_STATE_ON          1
 
 // Button pin is BOOTSEL which is flash CS pin
-
 #define BUTTON_BOOTSEL
 #define BUTTON_STATE_ACTIVE   0
 
+
+#define UART_DEV              uart0
+#define UART_TX_PIN           0
+#define UART_RX_PIN           1
+
 #ifdef __cplusplus
  }
 #endif

+ 4 - 1
hw/bsp/rp2040/boards/raspberry_pi_pico/board.h

@@ -35,10 +35,13 @@
 #define LED_STATE_ON          1
 
 // Button pin is BOOTSEL which is flash CS pin
-
 #define BUTTON_BOOTSEL
 #define BUTTON_STATE_ACTIVE   0
 
+#define UART_DEV              uart0
+#define UART_TX_PIN           0
+#define UART_RX_PIN           1
+
 #ifdef __cplusplus
  }
 #endif

+ 17 - 3
hw/bsp/rp2040/family.c

@@ -78,7 +78,6 @@ bool __no_inline_not_in_flash_func(get_bootsel_button)() {
 
 void board_init(void)
 {
-  setup_default_uart();
   gpio_init(LED_PIN);
   gpio_set_dir(LED_PIN, GPIO_OUT);
 
@@ -86,6 +85,12 @@ void board_init(void)
 #ifndef BUTTON_BOOTSEL
 #endif
 
+#ifdef UART_DEV
+  uart_init(UART_DEV, CFG_BOARD_UART_BAUDRATE);
+  gpio_set_function(UART_TX_PIN, GPIO_FUNC_UART);
+  gpio_set_function(UART_RX_PIN, GPIO_FUNC_UART);
+#endif
+
   // todo probably set up device mode?
 #if TUSB_OPT_DEVICE_ENABLED
 
@@ -116,18 +121,27 @@ uint32_t board_button_read(void)
 
 int board_uart_read(uint8_t* buf, int len)
 {
+#ifdef UART_DEV
   for(int i=0;i<len;i++) {
-    buf[i] = uart_getc(uart_default);
+    buf[i] = uart_getc(UART_DEV);
   }
+  return len;
+#else
   return 0;
+#endif
 }
 
 int board_uart_write(void const * buf, int len)
 {
+#ifdef UART_DEV
+  char const* bufch = (uint8_t const*) buf;
   for(int i=0;i<len;i++) {
-    uart_putc(uart_default, ((char *)buf)[i]);
+    uart_putc(UART_DEV, bufch[i]);
   }
+  return len;
+#else
   return 0;
+#endif
 }
 
 //--------------------------------------------------------------------+