未验证 提交 ccc8e7ce 编写于 作者: S Shicheng Chu 提交者: GitHub

[bsp][pico]update: add drv_adc (#7603)

上级 b9cd90c6
...@@ -57,7 +57,6 @@ CONFIG_RT_USING_MESSAGEQUEUE=y ...@@ -57,7 +57,6 @@ CONFIG_RT_USING_MESSAGEQUEUE=y
# #
# Memory Management # Memory Management
# #
CONFIG_RT_PAGE_MAX_ORDER=11
CONFIG_RT_USING_MEMPOOL=y CONFIG_RT_USING_MEMPOOL=y
CONFIG_RT_USING_SMALL_MEM=y CONFIG_RT_USING_SMALL_MEM=y
# CONFIG_RT_USING_SLAB is not set # CONFIG_RT_USING_SLAB is not set
...@@ -81,7 +80,7 @@ CONFIG_RT_USING_DEVICE=y ...@@ -81,7 +80,7 @@ CONFIG_RT_USING_DEVICE=y
CONFIG_RT_USING_CONSOLE=y CONFIG_RT_USING_CONSOLE=y
CONFIG_RT_CONSOLEBUF_SIZE=128 CONFIG_RT_CONSOLEBUF_SIZE=128
CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
CONFIG_RT_VER_NUM=0x50000 CONFIG_RT_VER_NUM=0x50001
# CONFIG_RT_USING_STDC_ATOMIC is not set # CONFIG_RT_USING_STDC_ATOMIC is not set
# CONFIG_RT_USING_CACHE is not set # CONFIG_RT_USING_CACHE is not set
# CONFIG_RT_USING_HW_ATOMIC is not set # CONFIG_RT_USING_HW_ATOMIC is not set
...@@ -115,6 +114,10 @@ CONFIG_FINSH_USING_DESCRIPTION=y ...@@ -115,6 +114,10 @@ CONFIG_FINSH_USING_DESCRIPTION=y
# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set # CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
# CONFIG_FINSH_USING_AUTH is not set # CONFIG_FINSH_USING_AUTH is not set
CONFIG_FINSH_ARG_MAX=10 CONFIG_FINSH_ARG_MAX=10
#
# DFS: device virtual file system
#
# CONFIG_RT_USING_DFS is not set # CONFIG_RT_USING_DFS is not set
# CONFIG_RT_USING_FAL is not set # CONFIG_RT_USING_FAL is not set
...@@ -436,6 +439,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -436,6 +439,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_HASH_MATCH is not set # CONFIG_PKG_USING_HASH_MATCH is not set
# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
# CONFIG_PKG_USING_VOFA_PLUS is not set # CONFIG_PKG_USING_VOFA_PLUS is not set
# CONFIG_PKG_USING_RT_TRACE is not set
# #
# system packages # system packages
...@@ -507,6 +511,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -507,6 +511,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_QPC is not set # CONFIG_PKG_USING_QPC is not set
# CONFIG_PKG_USING_AGILE_UPGRADE is not set # CONFIG_PKG_USING_AGILE_UPGRADE is not set
# CONFIG_PKG_USING_FLASH_BLOB is not set # CONFIG_PKG_USING_FLASH_BLOB is not set
# CONFIG_PKG_USING_MLIBC is not set
# #
# peripheral libraries and drivers # peripheral libraries and drivers
...@@ -591,6 +596,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -591,6 +596,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_FT5426 is not set # CONFIG_PKG_USING_FT5426 is not set
# CONFIG_PKG_USING_FT6236 is not set # CONFIG_PKG_USING_FT6236 is not set
# CONFIG_PKG_USING_XPT2046_TOUCH is not set # CONFIG_PKG_USING_XPT2046_TOUCH is not set
# CONFIG_PKG_USING_CST816X is not set
# CONFIG_PKG_USING_REALTEK_AMEBA is not set # CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_STM32_SDIO is not set # CONFIG_PKG_USING_STM32_SDIO is not set
# CONFIG_PKG_USING_ESP_IDF is not set # CONFIG_PKG_USING_ESP_IDF is not set
...@@ -603,7 +609,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -603,7 +609,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_LKDGUI is not set # CONFIG_PKG_USING_LKDGUI is not set
# CONFIG_PKG_USING_NRF5X_SDK is not set # CONFIG_PKG_USING_NRF5X_SDK is not set
# CONFIG_PKG_USING_NRFX is not set # CONFIG_PKG_USING_NRFX is not set
# CONFIG_PKG_USING_WM_LIBRARIES is not set
# #
# Kendryte SDK # Kendryte SDK
...@@ -661,14 +666,15 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -661,14 +666,15 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_MISAKA_AT24CXX is not set # CONFIG_PKG_USING_MISAKA_AT24CXX is not set
# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set # CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set # CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
# CONFIG_PKG_USING_BL_MCU_SDK is not set
# CONFIG_PKG_USING_SOFT_SERIAL is not set # CONFIG_PKG_USING_SOFT_SERIAL is not set
# CONFIG_PKG_USING_MB85RS16 is not set # CONFIG_PKG_USING_MB85RS16 is not set
# CONFIG_PKG_USING_RFM300 is not set # CONFIG_PKG_USING_RFM300 is not set
# CONFIG_PKG_USING_IO_INPUT_FILTER is not set # CONFIG_PKG_USING_IO_INPUT_FILTER is not set
# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set # CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
# CONFIG_PKG_USING_LRF_NV7LIDAR is not set # CONFIG_PKG_USING_LRF_NV7LIDAR is not set
# CONFIG_PKG_USING_AIP650 is not set
# CONFIG_PKG_USING_FINGERPRINT is not set # CONFIG_PKG_USING_FINGERPRINT is not set
# CONFIG_PKG_USING_SPI_TOOLS is not set
# #
# AI packages # AI packages
...@@ -687,7 +693,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -687,7 +693,10 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# Signal Processing and Control Algorithm Packages # Signal Processing and Control Algorithm Packages
# #
# CONFIG_PKG_USING_FIRE_PID_CURVE is not set # CONFIG_PKG_USING_FIRE_PID_CURVE is not set
# CONFIG_PKG_USING_QPID is not set
# CONFIG_PKG_USING_UKAL is not set # CONFIG_PKG_USING_UKAL is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_KISSFFT is not set
# #
# miscellaneous packages # miscellaneous packages
...@@ -734,7 +743,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -734,7 +743,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_DSTR is not set # CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set # CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set # CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set # CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set # CONFIG_PKG_USING_UPARAM is not set
# CONFIG_PKG_USING_HELLO is not set # CONFIG_PKG_USING_HELLO is not set
...@@ -761,6 +769,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -761,6 +769,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# #
# Projects # Projects
# #
# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set
# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set # CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set # CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set # CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
...@@ -907,14 +916,20 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 ...@@ -907,14 +916,20 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# #
# Display # Display
# #
# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
# CONFIG_PKG_USING_ARDUINO_U8G2 is not set # CONFIG_PKG_USING_ARDUINO_U8G2 is not set
# CONFIG_PKG_USING_ARDUINO_U8GLIB_ARDUINO is not set # CONFIG_PKG_USING_ARDUINO_U8GLIB_ARDUINO is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
# CONFIG_PKG_USING_SEEED_TM1637 is not set # CONFIG_PKG_USING_SEEED_TM1637 is not set
# #
# Timing # Timing
# #
# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
# CONFIG_PKG_USING_ARDUINO_TICKER is not set
# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
# #
# Data Processing # Data Processing
...@@ -975,3 +990,12 @@ CONFIG_SOC_RP2040=y ...@@ -975,3 +990,12 @@ CONFIG_SOC_RP2040=y
# Onboard Peripheral Drivers # Onboard Peripheral Drivers
# #
# CONFIG_BSP_USING_LVGL is not set # CONFIG_BSP_USING_LVGL is not set
#
# On-chip Peripheral Drivers
#
CONFIG_BSP_USING_PIN=y
CONFIG_BSP_USING_UART=y
# CONFIG_BSP_USING_SOFT_I2C is not set
# CONFIG_BSP_USING_SOFT_SPI is not set
# CONFIG_BSP_USING_ADC is not set
...@@ -16,6 +16,9 @@ if GetDepend('BSP_USING_SOFT_I2C'): ...@@ -16,6 +16,9 @@ if GetDepend('BSP_USING_SOFT_I2C'):
if GetDepend('BSP_USING_SOFT_SPI'): if GetDepend('BSP_USING_SOFT_SPI'):
src += ['drv_soft_spi.c'] src += ['drv_soft_spi.c']
if GetDepend('BSP_USING_ADC'):
src += ['drv_adc.c']
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
Return('group') Return('group')
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-06-04 Chushicheng first version
*/
#include "board.h"
#include "drv_adc.h"
#include "hardware/adc.h"
#ifdef BSP_USING_ADC
#define DBG_TAG "drv.adc"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
static struct pico_adc_config adc_config[] =
{
#ifdef BSP_USING_ADC0
ADC0_CONFIG,
#endif
#ifdef BSP_USING_ADC1
ADC1_CONFIG,
#endif
#ifdef BSP_USING_ADC2
ADC2_CONFIG,
#endif
};
static struct pico_adc pico_adc_obj[sizeof(adc_config) / sizeof(adc_config[0])];
static rt_err_t pico_adc_enabled(struct rt_adc_device *device, rt_int8_t channel, rt_bool_t enabled)
{
struct pico_adc_config *pico_adc_handler;
RT_ASSERT(device != RT_NULL);
pico_adc_handler = device->parent.user_data;
if (enabled)
{
adc_gpio_init(pico_adc_handler->pin);
adc_select_input(pico_adc_handler->channel);
}
return RT_EOK;
}
static rt_err_t pico_adc_get_value(struct rt_adc_device *device, rt_int8_t channel, rt_uint32_t *value)
{
RT_ASSERT(device != RT_NULL);
RT_ASSERT(value != RT_NULL);
/* get ADC value */
*value = (rt_uint32_t)adc_read();
return RT_EOK;
}
static const struct rt_adc_ops pico_adc_ops =
{
.enabled = pico_adc_enabled,
.convert = pico_adc_get_value,
.get_resolution = RT_NULL,
.get_vref = RT_NULL,
};
int rt_hw_adc_init(void)
{
int result = RT_EOK;
adc_init();
for (rt_size_t i = 0; i < sizeof(pico_adc_obj) / sizeof(struct pico_adc); i++)
{
/* register ADC device */
if (rt_hw_adc_register(&pico_adc_obj[i].pico_adc_device, adc_config[i].device_name, &pico_adc_ops, &adc_config[i]) == RT_EOK)
{
LOG_D("%s init success", adc_config[i].device_name);
}
else
{
LOG_E("%s register failed", adc_config[i].device_name);
result = -RT_ERROR;
}
}
return result;
}
INIT_BOARD_EXPORT(rt_hw_adc_init);
#endif /* BSP_USING_ADC */
/*
* Copyright (c) 2006-2023, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2023-06-04 Chushicheng first version
*/
#ifndef __DRV_ADC_H__
#define __DRV_ADC_H__
#include <rtdevice.h>
#if defined BSP_USING_ADC
/* pico i2c dirver class */
static struct pico_adc
{
struct rt_adc_ops ops;
struct rt_adc_device pico_adc_device;
};
/* pico config class */
static struct pico_adc_config
{
rt_uint8_t pin;
rt_uint8_t channel;
const char *device_name;
};
#ifdef BSP_USING_ADC0
#define ADC0_CONFIG \
{ \
.pin = 26, \
.channel = 0, \
.device_name = "adc0", \
}
#endif
#ifdef BSP_USING_ADC1
#define ADC1_CONFIG \
{ \
.pin = 27, \
.channel = 1, \
.device_name = "adc1", \
}
#endif
#ifdef BSP_USING_ADC2
#define ADC1_CONFIG \
{ \
.pin = 28, \
.channel = 2, \
.device_name = "adc2", \
}
#endif
int rt_hw_adc_init(void);
#endif /* BSP_USING_ADC */
#endif /* __DRV_ADC_H__ */
...@@ -97,7 +97,22 @@ menu "On-chip Peripheral Drivers" ...@@ -97,7 +97,22 @@ menu "On-chip Peripheral Drivers"
range 0 28 range 0 28
default 12 default 12
endif endif
endif
menuconfig BSP_USING_ADC
bool "Enable ADC"
default n
select RT_USING_ADC
if BSP_USING_ADC
config BSP_USING_ADC0
bool "Enable ADC0 (GP26)"
default n
config BSP_USING_ADC1
bool "Enable ADC1 (GP27)"
default n
config BSP_USING_ADC2
bool "Enable ADC2 (GP28)"
default n
endif endif
endmenu endmenu
......
...@@ -11,6 +11,7 @@ pico-sdk/src/rp2_common/hardware_flash/flash.c ...@@ -11,6 +11,7 @@ pico-sdk/src/rp2_common/hardware_flash/flash.c
pico-sdk/src/rp2_common/pico_multicore/multicore.c pico-sdk/src/rp2_common/pico_multicore/multicore.c
pico-sdk/src/rp2_common/pico_stdlib/stdlib.c pico-sdk/src/rp2_common/pico_stdlib/stdlib.c
pico-sdk/src/rp2_common/hardware_gpio/gpio.c pico-sdk/src/rp2_common/hardware_gpio/gpio.c
pico-sdk/src/rp2_common/hardware_adc/adc.c
pico-sdk/src/rp2_common/hardware_claim/claim.c pico-sdk/src/rp2_common/hardware_claim/claim.c
pico-sdk/src/rp2_common/hardware_sync/sync.c pico-sdk/src/rp2_common/hardware_sync/sync.c
pico-sdk/src/rp2_common/pico_platform/platform.c pico-sdk/src/rp2_common/pico_platform/platform.c
...@@ -65,6 +66,7 @@ path = [ ...@@ -65,6 +66,7 @@ path = [
cwd + '/pico-sdk/src/rp2_common/pico_multicore/include', cwd + '/pico-sdk/src/rp2_common/pico_multicore/include',
cwd + '/pico-sdk/src/common/pico_stdlib/include', cwd + '/pico-sdk/src/common/pico_stdlib/include',
cwd + '/pico-sdk/src/rp2_common/hardware_gpio/include', cwd + '/pico-sdk/src/rp2_common/hardware_gpio/include',
cwd + '/pico-sdk/src/rp2_common/hardware_adc/include',
cwd + '/pico-sdk/src/common/pico_base/include', cwd + '/pico-sdk/src/common/pico_base/include',
cwd + '/pico-sdk/src/boards/include', cwd + '/pico-sdk/src/boards/include',
cwd + '/pico-sdk/src/rp2_common/pico_platform/include', cwd + '/pico-sdk/src/rp2_common/pico_platform/include',
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
/* Memory Management */ /* Memory Management */
#define RT_PAGE_MAX_ORDER 11
#define RT_USING_MEMPOOL #define RT_USING_MEMPOOL
#define RT_USING_SMALL_MEM #define RT_USING_SMALL_MEM
#define RT_USING_SMALL_MEM_AS_HEAP #define RT_USING_SMALL_MEM_AS_HEAP
...@@ -45,7 +44,7 @@ ...@@ -45,7 +44,7 @@
#define RT_USING_CONSOLE #define RT_USING_CONSOLE
#define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLEBUF_SIZE 128
#define RT_CONSOLE_DEVICE_NAME "uart0" #define RT_CONSOLE_DEVICE_NAME "uart0"
#define RT_VER_NUM 0x50000 #define RT_VER_NUM 0x50001
#define ARCH_ARM #define ARCH_ARM
#define ARCH_ARM_CORTEX_M #define ARCH_ARM_CORTEX_M
#define ARCH_ARM_CORTEX_M0 #define ARCH_ARM_CORTEX_M0
...@@ -70,6 +69,9 @@ ...@@ -70,6 +69,9 @@
#define FINSH_USING_DESCRIPTION #define FINSH_USING_DESCRIPTION
#define FINSH_ARG_MAX 10 #define FINSH_ARG_MAX 10
/* DFS: device virtual file system */
/* Device Drivers */ /* Device Drivers */
#define RT_USING_DEVICE_IPC #define RT_USING_DEVICE_IPC
...@@ -225,4 +227,9 @@ ...@@ -225,4 +227,9 @@
/* Onboard Peripheral Drivers */ /* Onboard Peripheral Drivers */
/* On-chip Peripheral Drivers */
#define BSP_USING_PIN
#define BSP_USING_UART
#endif #endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册