mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-12-27 01:28:23 +00:00
[UPDATE]添加新驱动、完善 BSP
- [update] 更新 template 工程配置 - [update] 更新 PLATFORM 配置 - [add] 添加 ra icu 驱动文件 - [add] 增加传感器类型 IAQ、EtOH - [add] 添加 CAN 驱动 - [add] 添加 RW007 驱动及使用说明 - [fix] GCC 编译问题 - [fix] flash 驱动 - [fix] 修改 scons 脚本配置
This commit is contained in:
@@ -50,6 +50,8 @@ extern "C" {
|
||||
#define RT_SENSOR_CLASS_GNSS (16) /* GPS/GNSS sensor */
|
||||
#define RT_SENSOR_CLASS_TOF (17) /* TOF sensor */
|
||||
#define RT_SENSOR_CLASS_SPO2 (18) /* SpO2 sensor */
|
||||
#define RT_SENSOR_CLASS_IAQ (19) /* IAQ sensor. */
|
||||
#define RT_SENSOR_CLASS_ETOH (20) /* EtOH sensor. */
|
||||
|
||||
/* Sensor vendor types */
|
||||
|
||||
@@ -90,6 +92,7 @@ extern "C" {
|
||||
#define RT_SENSOR_UNIT_PPB (15) /* Concentration unit: ppb */
|
||||
#define RT_SENSOR_UNIT_DMS (16) /* Coordinates unit: DMS */
|
||||
#define RT_SENSOR_UNIT_DD (17) /* Coordinates unit: DD */
|
||||
#define RT_SENSOR_UNIT_MGM3 (18) /* Concentration unit: mg/m3 */
|
||||
/* Sensor communication interface types */
|
||||
|
||||
#define RT_SENSOR_INTF_I2C (1 << 0)
|
||||
@@ -218,6 +221,8 @@ struct rt_sensor_data
|
||||
rt_uint32_t dust; /* Dust sensor. unit: ug/m3 */
|
||||
rt_uint32_t eco2; /* eCO2 sensor. unit: ppm */
|
||||
rt_uint32_t spo2; /* SpO2 sensor. unit: permillage */
|
||||
rt_uint32_t iaq; /* IAQ sensor. unit: 1 */
|
||||
rt_uint32_t etoh; /* EtOH sensor. unit: ppm */
|
||||
} data;
|
||||
};
|
||||
|
||||
|
||||
@@ -37,7 +37,9 @@ static char *const sensor_name_str[] =
|
||||
"eco2_", /* eCO2 sensor */
|
||||
"gnss_", /* GPS/GNSS sensor */
|
||||
"tof_", /* TOF sensor */
|
||||
"spo2_" /* SpO2 sensor */
|
||||
"spo2_", /* SpO2 sensor */
|
||||
"iaq_", /* IAQ sensor */
|
||||
"etoh_", /* EtOH sensor */
|
||||
};
|
||||
|
||||
/* Sensor interrupt correlation function */
|
||||
@@ -134,7 +136,8 @@ static rt_err_t local_control(struct rt_sensor_device *sensor, int cmd, void *ar
|
||||
LOG_D("Undefined control");
|
||||
return RT_ERROR;
|
||||
}
|
||||
static struct rt_sensor_ops local_ops = {
|
||||
static struct rt_sensor_ops local_ops =
|
||||
{
|
||||
.fetch_data = local_fetch_data,
|
||||
.control = local_control
|
||||
};
|
||||
@@ -145,7 +148,7 @@ static rt_err_t rt_sensor_open(rt_device_t dev, rt_uint16_t oflag)
|
||||
rt_sensor_t sensor = (rt_sensor_t)dev;
|
||||
RT_ASSERT(dev != RT_NULL);
|
||||
rt_err_t res = RT_EOK;
|
||||
rt_err_t (*local_ctrl)(struct rt_sensor_device *sensor, int cmd, void *arg) = local_control;
|
||||
rt_err_t (*local_ctrl)(struct rt_sensor_device * sensor, int cmd, void *arg) = local_control;
|
||||
|
||||
if (sensor->module)
|
||||
{
|
||||
@@ -311,7 +314,7 @@ static rt_size_t rt_sensor_read(rt_device_t dev, rt_off_t pos, void *buf, rt_siz
|
||||
if (sensor->ops->fetch_data != RT_NULL)
|
||||
{
|
||||
result = sensor->ops->fetch_data(sensor, buf, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sensor->module)
|
||||
@@ -359,7 +362,7 @@ static rt_err_t rt_sensor_control(rt_device_t dev, int cmd, void *args)
|
||||
{
|
||||
sensor->config.range = (rt_int32_t)args;
|
||||
LOG_D("set range %d", sensor->config.range);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RT_SENSOR_CTRL_SET_ODR:
|
||||
/* Configuration data output rate */
|
||||
|
||||
@@ -74,6 +74,12 @@ static void sensor_show_data(rt_size_t num, rt_sensor_t sensor, struct rt_sensor
|
||||
case RT_SENSOR_CLASS_ECO2:
|
||||
LOG_I("num:%3d, eco2:%5d ppm, timestamp:%5d", num, sensor_data->data.eco2, sensor_data->timestamp);
|
||||
break;
|
||||
case RT_SENSOR_CLASS_IAQ:
|
||||
LOG_I("num:%3d, IAQ:%5d.%d , timestamp:%5d", num, sensor_data->data.iaq / 10, sensor_data->data.iaq % 10, sensor_data->timestamp);
|
||||
break;
|
||||
case RT_SENSOR_CLASS_ETOH:
|
||||
LOG_I("num:%3d, EtOH:%5d.%03d ppm, timestamp:%5d", num, sensor_data->data.etoh / 1000, sensor_data->data.etoh % 1000, sensor_data->timestamp);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -156,7 +162,7 @@ static void sensor_fifo(int argc, char **argv)
|
||||
rt_device_control(dev, RT_SENSOR_CTRL_SET_ODR, (void *)20);
|
||||
}
|
||||
#ifdef RT_USING_FINSH
|
||||
MSH_CMD_EXPORT(sensor_fifo, Sensor fifo mode test function);
|
||||
MSH_CMD_EXPORT(sensor_fifo, Sensor fifo mode test function);
|
||||
#endif
|
||||
|
||||
static void sensor_irq_rx_entry(void *parameter)
|
||||
@@ -220,7 +226,7 @@ static void sensor_int(int argc, char **argv)
|
||||
rt_device_control(dev, RT_SENSOR_CTRL_SET_ODR, (void *)20);
|
||||
}
|
||||
#ifdef RT_USING_FINSH
|
||||
MSH_CMD_EXPORT(sensor_int, Sensor interrupt mode test function);
|
||||
MSH_CMD_EXPORT(sensor_int, Sensor interrupt mode test function);
|
||||
#endif
|
||||
|
||||
static void sensor_polling(int argc, char **argv)
|
||||
@@ -269,7 +275,7 @@ static void sensor_polling(int argc, char **argv)
|
||||
rt_device_close(dev);
|
||||
}
|
||||
#ifdef RT_USING_FINSH
|
||||
MSH_CMD_EXPORT(sensor_polling, Sensor polling mode test function);
|
||||
MSH_CMD_EXPORT(sensor_polling, Sensor polling mode test function);
|
||||
#endif
|
||||
|
||||
static void sensor(int argc, char **argv)
|
||||
@@ -306,103 +312,103 @@ static void sensor(int argc, char **argv)
|
||||
rt_device_control(dev, RT_SENSOR_CTRL_GET_INFO, &info);
|
||||
switch (info.vendor)
|
||||
{
|
||||
case RT_SENSOR_VENDOR_UNKNOWN:
|
||||
rt_kprintf("vendor :unknown vendor\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_STM:
|
||||
rt_kprintf("vendor :STMicroelectronics\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_BOSCH:
|
||||
rt_kprintf("vendor :Bosch\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_INVENSENSE:
|
||||
rt_kprintf("vendor :Invensense\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_SEMTECH:
|
||||
rt_kprintf("vendor :Semtech\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_GOERTEK:
|
||||
rt_kprintf("vendor :Goertek\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_MIRAMEMS:
|
||||
rt_kprintf("vendor :MiraMEMS\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_DALLAS:
|
||||
rt_kprintf("vendor :Dallas\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_ASAIR:
|
||||
rt_kprintf("vendor :Asair\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_SHARP:
|
||||
rt_kprintf("vendor :Sharp\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_SENSIRION:
|
||||
rt_kprintf("vendor :Sensirion\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_TI:
|
||||
rt_kprintf("vendor :Texas Instruments\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_PLANTOWER:
|
||||
rt_kprintf("vendor :Plantower\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_AMS:
|
||||
rt_kprintf("vendor :AMS\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_MAXIM:
|
||||
rt_kprintf("vendor :Maxim Integrated\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_UNKNOWN:
|
||||
rt_kprintf("vendor :unknown vendor\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_STM:
|
||||
rt_kprintf("vendor :STMicroelectronics\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_BOSCH:
|
||||
rt_kprintf("vendor :Bosch\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_INVENSENSE:
|
||||
rt_kprintf("vendor :Invensense\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_SEMTECH:
|
||||
rt_kprintf("vendor :Semtech\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_GOERTEK:
|
||||
rt_kprintf("vendor :Goertek\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_MIRAMEMS:
|
||||
rt_kprintf("vendor :MiraMEMS\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_DALLAS:
|
||||
rt_kprintf("vendor :Dallas\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_ASAIR:
|
||||
rt_kprintf("vendor :Asair\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_SHARP:
|
||||
rt_kprintf("vendor :Sharp\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_SENSIRION:
|
||||
rt_kprintf("vendor :Sensirion\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_TI:
|
||||
rt_kprintf("vendor :Texas Instruments\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_PLANTOWER:
|
||||
rt_kprintf("vendor :Plantower\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_AMS:
|
||||
rt_kprintf("vendor :AMS\n");
|
||||
break;
|
||||
case RT_SENSOR_VENDOR_MAXIM:
|
||||
rt_kprintf("vendor :Maxim Integrated\n");
|
||||
break;
|
||||
}
|
||||
rt_kprintf("model :%s\n", info.model);
|
||||
switch (info.unit)
|
||||
{
|
||||
case RT_SENSOR_UNIT_NONE:
|
||||
rt_kprintf("unit :none\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MG:
|
||||
rt_kprintf("unit :mG\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MDPS:
|
||||
rt_kprintf("unit :mdps\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MGAUSS:
|
||||
rt_kprintf("unit :mGauss\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_LUX:
|
||||
rt_kprintf("unit :lux\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_CM:
|
||||
rt_kprintf("unit :cm\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_PA:
|
||||
rt_kprintf("unit :pa\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_PERMILLAGE:
|
||||
rt_kprintf("unit :permillage\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_DCELSIUS:
|
||||
rt_kprintf("unit :Celsius\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_HZ:
|
||||
rt_kprintf("unit :HZ\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_ONE:
|
||||
rt_kprintf("unit :1\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_BPM:
|
||||
rt_kprintf("unit :bpm\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MM:
|
||||
rt_kprintf("unit :mm\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MN:
|
||||
rt_kprintf("unit :mN\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_PPM:
|
||||
rt_kprintf("unit :ppm\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_PPB:
|
||||
rt_kprintf("unit :ppb\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_NONE:
|
||||
rt_kprintf("unit :none\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MG:
|
||||
rt_kprintf("unit :mG\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MDPS:
|
||||
rt_kprintf("unit :mdps\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MGAUSS:
|
||||
rt_kprintf("unit :mGauss\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_LUX:
|
||||
rt_kprintf("unit :lux\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_CM:
|
||||
rt_kprintf("unit :cm\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_PA:
|
||||
rt_kprintf("unit :pa\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_PERMILLAGE:
|
||||
rt_kprintf("unit :permillage\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_DCELSIUS:
|
||||
rt_kprintf("unit :Celsius\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_HZ:
|
||||
rt_kprintf("unit :HZ\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_ONE:
|
||||
rt_kprintf("unit :1\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_BPM:
|
||||
rt_kprintf("unit :bpm\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MM:
|
||||
rt_kprintf("unit :mm\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_MN:
|
||||
rt_kprintf("unit :mN\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_PPM:
|
||||
rt_kprintf("unit :ppm\n");
|
||||
break;
|
||||
case RT_SENSOR_UNIT_PPB:
|
||||
rt_kprintf("unit :ppb\n");
|
||||
break;
|
||||
}
|
||||
rt_kprintf("range_max :%d\n", info.range_max);
|
||||
rt_kprintf("range_min :%d\n", info.range_min);
|
||||
@@ -497,5 +503,5 @@ static void sensor(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
#ifdef RT_USING_FINSH
|
||||
MSH_CMD_EXPORT(sensor, sensor test function);
|
||||
MSH_CMD_EXPORT(sensor, sensor test function);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user