Browse Source

[bsp][pico]: support pwm adc iic for pico rtduino (#8512)

Shicheng Chu 1 year ago
parent
commit
c9abc1ba25

+ 30 - 19
bsp/raspberry-pico/Kconfig

@@ -44,16 +44,27 @@ menu "Onboard Peripheral Drivers"
             default y
     endif
 
-    config BSP_USING_ARDUINO
+        config BSP_USING_ARDUINO
         bool "Compatible with Arduino Ecosystem (RTduino)"
         select PKG_USING_RTDUINO
-        select BSP_USING_UART0
-        select BSP_UART0_TX_PIN_0
-        select BSP_UART0_RX_PIN_1
         select BSP_USING_UART1
-        select BSP_UART1_TX_PIN_8
-        select BSP_UART1_RX_PIN_9
         select BSP_USING_GPIO
+        select BSP_USING_ADC
+        select BSP_USING_ADC0
+        select BSP_USING_ADC1
+        select BSP_USING_ADC2
+        select BSP_USING_PWM
+        select BSP_USING_PWM0
+        select BSP_USING_PWM1
+        select BSP_USING_PWM2
+        select BSP_USING_PWM3
+        select BSP_USING_PWM4
+        select BSP_USING_PWM5
+        select BSP_USING_PWM6
+        select BSP_USING_PWM7
+        select BSP_USING_I2C
+        select BSP_USING_I2C0
+        imply RTDUINO_USING_SERVO
         default n
 
     config BSP_USING_ON_CHIP_FLASH
@@ -121,7 +132,7 @@ menu "On-chip Peripheral Drivers"
                 choice
                     prompt "uart1 tx pin number (GP)"
                     depends on BSP_USING_UART1
-                    default BSP_UART1_TX_PIN_4
+                    default BSP_UART1_TX_PIN_8
                     config BSP_UART1_TX_PIN_4
                         bool "4"
                     config BSP_UART1_TX_PIN_8
@@ -135,7 +146,7 @@ menu "On-chip Peripheral Drivers"
                 choice
                     prompt "uart1 rx pin number (GP)"
                     depends on BSP_USING_UART1
-                    default BSP_UART1_RX_PIN_5
+                    default BSP_UART1_RX_PIN_9
                     config BSP_UART1_RX_PIN_5
                         bool "5"
                     config BSP_UART1_RX_PIN_9
@@ -393,7 +404,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice A pin number (GP)"
                         depends on BSP_USING_PWM0
-                        default BSP_PWM0_A_PIN_0
+                        default BSP_PWM0_A_PIN_16
                         config BSP_PWM0_A_PIN_0
                             bool "0"
                         config BSP_PWM0_A_PIN_16
@@ -406,7 +417,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice B pin number (GP)"
                         depends on BSP_USING_PWM0
-                        default BSP_PWM0_B_PIN_1
+                        default BSP_PWM0_B_PIN_17
                         config BSP_PWM0_B_PIN_1
                             bool "1"
                         config BSP_PWM0_B_PIN_17
@@ -431,7 +442,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice A pin number (GP)"
                         depends on BSP_USING_PWM1
-                        default BSP_PWM1_A_PIN_2
+                        default BSP_PWM1_A_PIN_18
                         config BSP_PWM1_A_PIN_2
                             bool "2"
                         config BSP_PWM1_A_PIN_18
@@ -444,7 +455,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice B pin number (GP)"
                         depends on BSP_USING_PWM1
-                        default BSP_PWM1_B_PIN_3
+                        default BSP_PWM1_B_PIN_19
                         config BSP_PWM1_B_PIN_3
                             bool "3"
                         config BSP_PWM1_B_PIN_19
@@ -469,7 +480,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice A pin number (GP)"
                         depends on BSP_USING_PWM2
-                        default BSP_PWM2_A_PIN_4
+                        default BSP_PWM2_A_PIN_20
                         config BSP_PWM2_A_PIN_4
                             bool "4"
                         config BSP_PWM2_A_PIN_20
@@ -482,7 +493,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice B pin number (GP)"
                         depends on BSP_USING_PWM2
-                        default BSP_PWM2_B_PIN_5
+                        default BSP_PWM2_B_PIN_21
                         config BSP_PWM2_B_PIN_5
                             bool "5"
                         config BSP_PWM2_B_PIN_21
@@ -507,7 +518,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice A pin number (GP)"
                         depends on BSP_USING_PWM3
-                        default BSP_PWM3_A_PIN_6
+                        default BSP_PWM3_A_PIN_22
                         config BSP_PWM3_A_PIN_6
                             bool "6"
                         config BSP_PWM3_A_PIN_22
@@ -520,7 +531,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice B pin number (GP)"
                         depends on BSP_USING_PWM3
-                        default BSP_PWM3_B_PIN_7
+                        default BSP_PWM3_B_PIN_23
                         config BSP_PWM3_B_PIN_7
                             bool "7"
                         config BSP_PWM3_B_PIN_23
@@ -545,7 +556,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice A pin number (GP)"
                         depends on BSP_USING_PWM4
-                        default BSP_PWM4_A_PIN_8
+                        default BSP_PWM4_A_PIN_24
                         config BSP_PWM4_A_PIN_8
                             bool "8"
                         config BSP_PWM4_A_PIN_24
@@ -558,7 +569,7 @@ menu "On-chip Peripheral Drivers"
                     choice
                         prompt "pwm slice B pin number (GP)"
                         depends on BSP_USING_PWM4
-                        default BSP_PWM4_B_PIN_9
+                        default BSP_PWM4_B_PIN_25
                         config BSP_PWM4_B_PIN_9
                             bool "9"
                         config BSP_PWM4_B_PIN_25
@@ -604,7 +615,7 @@ menu "On-chip Peripheral Drivers"
                     endchoice
                     config BSP_PWM5_B_PIN
                         int
-                        default 10 if BSP_PWM5_B_PIN_10
+                        default 11 if BSP_PWM5_B_PIN_11
                         default 27 if BSP_PWM5_B_PIN_27
                     config BSP_PWM5_A_ALL
                         bool "pwm slice use all A pin"

+ 5 - 5
bsp/raspberry-pico/applications/arduino_main.cpp

@@ -1,11 +1,11 @@
 /*
- * Copyright (c) 2006-2023, RT-Thread Development Team
+ * Copyright (c) 2006-2024, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
  * Change Logs:
  * Date           Author       Notes
- * 2023-11-27     ShichengChu  first version
+ * 2024-01-25     ShichengChu  first version
  */
 
 #include <Arduino.h>
@@ -13,12 +13,12 @@
 void setup(void)
 {
     /* put your setup code here, to run once: */
-    Serial.begin();
+    Serial2.begin();
+    Serial2.println("Hello RTduino!");
 }
 
 void loop(void)
 {
     /* put your main code here, to run repeatedly: */
-    Serial.println("Hello Arduino!");
-    delay(800);
+    delay(1000);
 }

+ 21 - 18
bsp/raspberry-pico/applications/arduino_pinout/README.md

@@ -25,28 +25,31 @@ Hardware Drivers Config --->
 | 1 (D1) | P | 是/否 | Serial-RX,默认被RT-Thread的UART设备框架uart1接管 |
 | 2 (D2) | P | 是/否 |  |
 | 3 (D3) | P | 是/否 |  |
-| 4 (D4) | P | 是/否 |  |
-| 5 (D5) | P | 是/否 |  |
+| 4 (D4) | P | 是/否 | I2C0-SDA,默认被RT-Thread的I2C设备框架i2c0接管 |
+| 5 (D5) | P | 是/否 | I2C0-SCL,默认被RT-Thread的I2C设备框架i2c0接管 |
 | 6 (D6) | P | 是/否 |  |
 | 7 (D7) | P | 是/否 |  |
 | 8 (D8) | P | 是/否 | Serial2-TX,默认被RT-Thread的UART设备框架uart2接管 |
 | 9 (D9) | P | 是/否 | Serial2-RX,默认被RT-Thread的UART设备框架uart2接管 |
-| 10 (D10) | P | 是/否 |  |
-| 11 (D11) | P | 是/否 |  |
-| 12 (D12) | P | 是/否 |  |
-| 13 (D13) | P | 是/否 |  |
-| 14 (D14) | P | 是/否 |  |
-| 15 (D15) | P | 是/否 |  |
-| 16 (D16) | P | 是/否 |  |
-| 17 (D17) | P | 是/否 |  |
-| 18 (D18) | P | 是/否 |  |
-| 19 (D19) | P | 是/否 |  |
-| 20 (D20) | P | 是/否 |  |
-| 21 (D21) | P | 是/否 |  |
-| 22 (D22) | P | 是/否 |  |
-| 23 (D23) | P | 是/否 | 板载用户LED |
-| 24 (D24) | P | 是/否 |  |
-| 25 (D25) | P | 是/否 |  |
+| 10 (D10) | P | 是/否 | PWM5-CH0,默认被RT-Thread的PWM设备框架pwm5接管 |
+| 11 (D11) | P | 是/否 | PWM5-CH1,默认被RT-Thread的PWM设备框架pwm5接管 |
+| 12 (D12) | P | 是/否 | PWM6-CH0,默认被RT-Thread的PWM设备框架pwm6接管 |
+| 13 (D13) | P | 是/否 | PWM6-CH1,默认被RT-Thread的PWM设备框架pwm6接管 |
+| 14 (D14) | P | 是/否 | PWM7-CH0,默认被RT-Thread的PWM设备框架pwm7接管 |
+| 15 (D15) | P | 是/否 | PWM7-CH1,默认被RT-Thread的PWM设备框架pwm7接管 |
+| 16 (D16) | P | 是/否 | PWM0-CH0,默认被RT-Thread的PWM设备框架pwm0接管 |
+| 17 (D17) | P | 是/否 | PWM0-CH1,默认被RT-Thread的PWM设备框架pwm0接管 |
+| 18 (D18) | P | 是/否 | PWM1-CH0,默认被RT-Thread的PWM设备框架pwm1接管 |
+| 19 (D19) | P | 是/否 | PWM1-CH1,默认被RT-Thread的PWM设备框架pwm1接管 |
+| 20 (D20) | P | 是/否 | PWM2-CH0,默认被RT-Thread的PWM设备框架pwm2接管 |
+| 21 (D21) | P | 是/否 | PWM2-CH1,默认被RT-Thread的PWM设备框架pwm2接管 |
+| 22 (D22) | P | 是/否 | PWM3-CH0,默认被RT-Thread的PWM设备框架pwm3接管 |
+| 23 (D23) | P | 是/否 | PWM3-CH1,默认被RT-Thread的PWM设备框架pwm3接管 |
+| 24 (D24) | P | 是/否 | PWM4-CH0,默认被RT-Thread的PWM设备框架pwm4接管 |
+| 25 (D25) | P | 是/否 | PWM4-CH1,默认被RT-Thread的PWM设备框架pwm4接管 |
+| 26 (A0) | P | 是/否 | ADC0-CH0,默认被RT-Thread的ADC设备框架adc0接管 |
+| 27 (A1) | P | 是/否 | ADC1-CH1,默认被RT-Thread的ADC设备框架adc1接管 |
+| 28 (A2) | P | 是/否 | ADC2-CH2,默认被RT-Thread的ADC设备框架adc2接管 |
 
 > 注意:
 >

+ 27 - 24
bsp/raspberry-pico/applications/arduino_pinout/pins_arduino.c

@@ -1,11 +1,11 @@
 /*
- * Copyright (c) 2006-2023, RT-Thread Development Team
+ * Copyright (c) 2006-2024, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
  * Change Logs:
  * Date           Author       Notes
- * 2023-11-27     ShichengChu  first version
+ * 2024-01-25     ShichengChu  first version
  */
 
 #include <Arduino.h>
@@ -21,30 +21,33 @@
  */
 const pin_map_t pin_map_table[]=
 {
-    {D0, 0, "uart1"},                   /* Serial-TX */
-    {D1, 1, "uart1"},                   /* Serial-RX */
+    {D0, 0, "uart0"},                                  /* Serial-TX */
+    {D1, 1, "uart0"},                                  /* Serial-RX */
     {D2, 2},
     {D3, 3},
-    {D4, 4},
-    {D5, 5},
+    {D4, 4, "i2c0"},                                   /* I2C-SDA (Wire) */
+    {D5, 5, "i2c0"},                                   /* I2C-SCL (Wire) */
     {D6, 6},
     {D7, 7},
-    {D8, 8, "uart2"},                   /* Serial2-TX */
-    {D9, 9, "uart2"},                   /* Serial2-RX */
-    {D10, 10},
-    {D11, 11},
-    {D12, 12},
-    {D13, 13},
-    {D14, 14},
-    {D15, 15},
-    {D16, 16},
-    {D17, 17},
-    {D18, 18},
-    {D19, 19},
-    {D20, 20},
-    {D21, 21},
-    {D22, 22},
-    {D23, 25},                          /* LED_BUILTIN */
-    {D24, 26},
-    {D25, 27},
+    {D8, 8, "uart1"},                                  /* Serial2-TX */
+    {D9, 9, "uart1"},                                  /* Serial2-RX */
+    {D10, 10, "pwm5", 0},                              /* PWM */
+    {D11, 11, "pwm5", 1},                              /* PWM */
+    {D12, 12, "pwm6", 0},                              /* PWM */
+    {D13, 13, "pwm6", 1},                              /* PWM */
+    {D14, 14, "pwm7", 0},                              /* PWM */
+    {D15, 15, "pwm7", 1},                              /* PWM */
+    {D16, 16, "pwm0", 0},                              /* PWM */
+    {D17, 17, "pwm0", 1},                              /* PWM */
+    {D18, 18, "pwm1", 0},                              /* PWM */
+    {D19, 19, "pwm1", 1},                              /* PWM */
+    {D20, 20, "pwm2", 0},                              /* PWM */
+    {D21, 21, "pwm2", 1},                              /* PWM */
+    {D22, 22, "pwm3", 0},                              /* PWM */
+    {D23, 23, "pwm3", 1},                              /* PWM */
+    {D24, 24, "pwm4", 0},                              /* PWM */
+    {D25, 25, "pwm4", 1},                              /* LED_BUILTIN */
+    {A0, 26, "adc0", 0},                               /* ADC */
+    {A1, 27, "adc1", 1},                               /* ADC */
+    {A2, 28, "adc2", 2},                               /* ADC */
 };

+ 7 - 4
bsp/raspberry-pico/applications/arduino_pinout/pins_arduino.h

@@ -1,11 +1,11 @@
 /*
- * Copyright (c) 2006-2023, RT-Thread Development Team
+ * Copyright (c) 2006-2024, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
  * Change Logs:
  * Date           Author       Notes
- * 2023-11-27     ShichengChu  first version
+ * 2024-01-25     ShichengChu  first version
  */
 
 #ifndef Pins_Arduino_h
@@ -38,12 +38,15 @@
 #define D23       (23)
 #define D24       (24)
 #define D25       (25)
+#define A0        (26)
+#define A1        (27)
+#define A2        (28)
 
 #define F_CPU          133000000L  /* CPU:133MHz */
 
-#define LED_BUILTIN     D23  /* Default Built-in LED */
+#define LED_BUILTIN     D25  /* Default Built-in LED */
 
 /* Serial2 : P-TX  P-RX */
-#define RTDUINO_SERIAL2_DEVICE_NAME      "uart2"
+#define RTDUINO_SERIAL2_DEVICE_NAME      "uart1"
 
 #endif /* Pins_Arduino_h */

+ 5 - 5
bsp/raspberry-pico/drivers/drv_adc.h

@@ -12,17 +12,17 @@
 #define __DRV_ADC_H__
 
 #include <rtdevice.h>
-#if defined BSP_USING_ADC
+#ifdef BSP_USING_ADC
 
-/* pico i2c dirver class */
-static struct pico_adc
+/* pico adc dirver class */
+struct pico_adc
 {
     struct rt_adc_ops ops;
     struct rt_adc_device pico_adc_device;
 };
 
 /* pico config class */
-static struct pico_adc_config
+struct pico_adc_config
 {
     rt_uint8_t pin;
     rt_uint8_t channel;
@@ -46,7 +46,7 @@ static struct pico_adc_config
     }
 #endif
 #ifdef BSP_USING_ADC2
-#define ADC1_CONFIG                                      \
+#define ADC2_CONFIG                                      \
     {                                                    \
         .pin = 28,                                       \
         .channel = 2,                                    \

+ 1 - 0
bsp/raspberry-pico/drivers/drv_pwm.c

@@ -10,6 +10,7 @@
 #include "drv_pwm.h"
 #include "board.h"
 #include "hardware/pwm.h"
+#include "hardware/gpio.h"
 
 #ifdef BSP_USING_PWM