Browse Source

添加ads111x驱动,侦测各电源总线状态

master
忱 沈 3 weeks ago
parent
commit
7f6c30553b
  1. 20
      .cproject
  2. 2
      .project
  3. 4
      applications/data/DATA_comm.c
  4. 5
      applications/data/Variable.c
  5. 4
      applications/data/Variable.h
  6. 226
      applications/drv/drv_ads111x.c
  7. BIN
      packages/packages.dbsqlite
  8. 20
      packages/pkgs.json

20
.cproject

@ -533,7 +533,9 @@
</option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.367913120" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input" />
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.284443241" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.284443241" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015">
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.109117712" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input" />
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.181630667" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.869072473" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.2089078869" name="GNU ARM Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1601059928" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.792449048" name="GNU ARM Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.506412204" />
@ -699,7 +701,9 @@
</option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.621221399" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input" />
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.695024300" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.695024300" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015">
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.780593163" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input" />
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1678837636" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.869072473" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.31215973" name="GNU ARM Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1601059928" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.990799832" name="GNU ARM Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.506412204" />
@ -856,7 +860,9 @@
</option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1666031213" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input" />
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.491840938" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.491840938" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015">
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1735103915" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input" />
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.85425436" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.869072473" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1562079477" name="GNU ARM Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1601059928" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1383707285" name="GNU ARM Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.506412204" />
@ -1014,7 +1020,9 @@
</option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1363315714" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input" />
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.285572904" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.285572904" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015">
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1896268472" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input" />
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1177207203" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.869072473" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.619336850" name="GNU ARM Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1601059928" />
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.350972670" name="GNU ARM Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.506412204" />
@ -1024,7 +1032,7 @@
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="packages/sqlite/rtthread_io_methods.c|packages/sqlite/rtthread_vfs.c|//cubemx/Drivers|//cubemx/EWARM|//cubemx/Src/stm32h7xx_it.c|//cubemx/Src/system_stm32h7xx.c|//packages/LVGL-v8.3.11/env_support/rt-thread/squareline|//packages/LVGL-v8.3.11/examples|//packages/LVGL-v8.3.11/tests|//packages/littlefs-v2.11.2/runners|//packages/sqlite/rtthread_io_methods.c|//packages/sqlite/rtthread_mutex.c|//packages/sqlite/rtthread_vfs.c|//packages/sqlite/shell.c|//rt-thread/components/dfs/dfs_v1/filesystems/cromfs|//rt-thread/components/dfs/dfs_v1/filesystems/mqueue|//rt-thread/components/dfs/dfs_v1/filesystems/nfs|//rt-thread/components/dfs/dfs_v1/filesystems/ramfs|//rt-thread/components/dfs/dfs_v1/filesystems/romfs|//rt-thread/components/dfs/dfs_v1/filesystems/skeleton|//rt-thread/components/dfs/dfs_v2|//rt-thread/components/drivers/audio|//rt-thread/components/drivers/can|//rt-thread/components/drivers/clk|//rt-thread/components/drivers/core/dm.c|//rt-thread/components/drivers/core/driver.c|//rt-thread/components/drivers/core/platform.c|//rt-thread/components/drivers/core/platform_ofw.c|//rt-thread/components/drivers/cputime|//rt-thread/components/drivers/fdt|//rt-thread/components/drivers/hwcrypto|//rt-thread/components/drivers/hwtimer|//rt-thread/components/drivers/i2c/i2c_bus.c|//rt-thread/components/drivers/i2c/i2c_dm.c|//rt-thread/components/drivers/i2c/soft_i2c.c|//rt-thread/components/drivers/ktime|//rt-thread/components/drivers/misc|//rt-thread/components/drivers/mtd/mtd_nand.c|//rt-thread/components/drivers/ofw|//rt-thread/components/drivers/phy|//rt-thread/components/drivers/pic|//rt-thread/components/drivers/pin/pin_dm.c|//rt-thread/components/drivers/pin/pin_ofw.c|//rt-thread/components/drivers/pinctrl|//rt-thread/components/drivers/pm|//rt-thread/components/drivers/rtc/alarm.c|//rt-thread/components/drivers/sensor|//rt-thread/components/drivers/serial/serial_dm.c|//rt-thread/components/drivers/serial/serial_tty.c|//rt-thread/components/drivers/serial/serial_v2.c|//rt-thread/components/drivers/spi/enc28j60.c|//rt-thread/components/drivers/spi/spi-bit-ops.c|//rt-thread/components/drivers/spi/spi_wifi_rw009.c|//rt-thread/components/drivers/usb|//rt-thread/components/drivers/virtio|//rt-thread/components/drivers/wlan|//rt-thread/components/fal/samples/porting/fal_flash_stm32f2_port.c|//rt-thread/components/legacy|//rt-thread/components/libc/compilers/armlibc|//rt-thread/components/libc/compilers/dlib|//rt-thread/components/libc/compilers/musl|//rt-thread/components/libc/compilers/picolibc|//rt-thread/components/libc/cplusplus|//rt-thread/components/libc/posix|//rt-thread/components/lwp|//rt-thread/components/mm|//rt-thread/components/mprotect|//rt-thread/components/net|//rt-thread/components/utilities|//rt-thread/components/vbus|//rt-thread/libcpu/aarch64|//rt-thread/libcpu/arc|//rt-thread/libcpu/arm/AT91SAM7S|//rt-thread/libcpu/arm/AT91SAM7X|//rt-thread/libcpu/arm/am335x|//rt-thread/libcpu/arm/arm926|//rt-thread/libcpu/arm/armv6|//rt-thread/libcpu/arm/common/atomic_arm.c|//rt-thread/libcpu/arm/common/divsi3.S|//rt-thread/libcpu/arm/cortex-a|//rt-thread/libcpu/arm/cortex-m0|//rt-thread/libcpu/arm/cortex-m23|//rt-thread/libcpu/arm/cortex-m3|//rt-thread/libcpu/arm/cortex-m33|//rt-thread/libcpu/arm/cortex-m4|//rt-thread/libcpu/arm/cortex-m7/context_iar.S|//rt-thread/libcpu/arm/cortex-m7/context_rvds.S|//rt-thread/libcpu/arm/cortex-m7/mpu.c|//rt-thread/libcpu/arm/cortex-m85|//rt-thread/libcpu/arm/cortex-r4|//rt-thread/libcpu/arm/cortex-r52|//rt-thread/libcpu/arm/dm36x|//rt-thread/libcpu/arm/lpc214x|//rt-thread/libcpu/arm/lpc24xx|//rt-thread/libcpu/arm/realview-a8-vmm|//rt-thread/libcpu/arm/s3c24x0|//rt-thread/libcpu/arm/s3c44b0|//rt-thread/libcpu/arm/sep4020|//rt-thread/libcpu/arm/zynqmp-r5|//rt-thread/libcpu/avr32|//rt-thread/libcpu/blackfin|//rt-thread/libcpu/c-sky|//rt-thread/libcpu/ia32|//rt-thread/libcpu/m16c|//rt-thread/libcpu/mips|//rt-thread/libcpu/nios|//rt-thread/libcpu/ppc|//rt-thread/libcpu/risc-v|//rt-thread/libcpu/rx|//rt-thread/libcpu/sim|//rt-thread/libcpu/sparc-v8|//rt-thread/libcpu/ti-dsp|//rt-thread/libcpu/unicore32|//rt-thread/libcpu/v850|//rt-thread/libcpu/xilinx|//rt-thread/src/cpu.c|//rt-thread/src/mem.c|//rt-thread/src/scheduler_mp.c|//rt-thread/src/slab.c|//rt-thread/tools" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="" />
<entry excluding="packages/sqlite/rtthread_io_methods.c|packages/sqlite/rtthread_vfs.c|//cubemx/Drivers|//cubemx/EWARM|//cubemx/Src/stm32h7xx_it.c|//cubemx/Src/system_stm32h7xx.c|//packages/Adafruit-ADS1X15-latest|//packages/Adafruit-BusIO-latest|//packages/LVGL-v8.3.11/env_support/rt-thread/squareline|//packages/LVGL-v8.3.11/examples|//packages/LVGL-v8.3.11/tests|//packages/littlefs-v2.11.2/runners|//packages/sqlite/rtthread_io_methods.c|//packages/sqlite/rtthread_mutex.c|//packages/sqlite/rtthread_vfs.c|//packages/sqlite/shell.c|//rt-thread/components/dfs/dfs_v1/filesystems/cromfs|//rt-thread/components/dfs/dfs_v1/filesystems/mqueue|//rt-thread/components/dfs/dfs_v1/filesystems/nfs|//rt-thread/components/dfs/dfs_v1/filesystems/ramfs|//rt-thread/components/dfs/dfs_v1/filesystems/romfs|//rt-thread/components/dfs/dfs_v1/filesystems/skeleton|//rt-thread/components/dfs/dfs_v2|//rt-thread/components/drivers/audio|//rt-thread/components/drivers/can|//rt-thread/components/drivers/clk|//rt-thread/components/drivers/core/dm.c|//rt-thread/components/drivers/core/driver.c|//rt-thread/components/drivers/core/platform.c|//rt-thread/components/drivers/core/platform_ofw.c|//rt-thread/components/drivers/cputime|//rt-thread/components/drivers/fdt|//rt-thread/components/drivers/hwcrypto|//rt-thread/components/drivers/hwtimer|//rt-thread/components/drivers/i2c/i2c_bus.c|//rt-thread/components/drivers/i2c/i2c_dm.c|//rt-thread/components/drivers/i2c/soft_i2c.c|//rt-thread/components/drivers/ktime|//rt-thread/components/drivers/misc|//rt-thread/components/drivers/mtd/mtd_nand.c|//rt-thread/components/drivers/ofw|//rt-thread/components/drivers/phy|//rt-thread/components/drivers/pic|//rt-thread/components/drivers/pin/pin_dm.c|//rt-thread/components/drivers/pin/pin_ofw.c|//rt-thread/components/drivers/pinctrl|//rt-thread/components/drivers/pm|//rt-thread/components/drivers/rtc/alarm.c|//rt-thread/components/drivers/sensor|//rt-thread/components/drivers/serial/serial_dm.c|//rt-thread/components/drivers/serial/serial_tty.c|//rt-thread/components/drivers/serial/serial_v2.c|//rt-thread/components/drivers/spi/enc28j60.c|//rt-thread/components/drivers/spi/spi-bit-ops.c|//rt-thread/components/drivers/spi/spi_wifi_rw009.c|//rt-thread/components/drivers/usb|//rt-thread/components/drivers/virtio|//rt-thread/components/drivers/wlan|//rt-thread/components/fal/samples/porting/fal_flash_stm32f2_port.c|//rt-thread/components/legacy|//rt-thread/components/libc/compilers/armlibc|//rt-thread/components/libc/compilers/dlib|//rt-thread/components/libc/compilers/musl|//rt-thread/components/libc/compilers/picolibc|//rt-thread/components/libc/cplusplus|//rt-thread/components/libc/posix|//rt-thread/components/lwp|//rt-thread/components/mm|//rt-thread/components/mprotect|//rt-thread/components/net|//rt-thread/components/utilities|//rt-thread/components/vbus|//rt-thread/libcpu/aarch64|//rt-thread/libcpu/arc|//rt-thread/libcpu/arm/AT91SAM7S|//rt-thread/libcpu/arm/AT91SAM7X|//rt-thread/libcpu/arm/am335x|//rt-thread/libcpu/arm/arm926|//rt-thread/libcpu/arm/armv6|//rt-thread/libcpu/arm/common/atomic_arm.c|//rt-thread/libcpu/arm/common/divsi3.S|//rt-thread/libcpu/arm/cortex-a|//rt-thread/libcpu/arm/cortex-m0|//rt-thread/libcpu/arm/cortex-m23|//rt-thread/libcpu/arm/cortex-m3|//rt-thread/libcpu/arm/cortex-m33|//rt-thread/libcpu/arm/cortex-m4|//rt-thread/libcpu/arm/cortex-m7/context_iar.S|//rt-thread/libcpu/arm/cortex-m7/context_rvds.S|//rt-thread/libcpu/arm/cortex-m7/mpu.c|//rt-thread/libcpu/arm/cortex-m85|//rt-thread/libcpu/arm/cortex-r4|//rt-thread/libcpu/arm/cortex-r52|//rt-thread/libcpu/arm/dm36x|//rt-thread/libcpu/arm/lpc214x|//rt-thread/libcpu/arm/lpc24xx|//rt-thread/libcpu/arm/realview-a8-vmm|//rt-thread/libcpu/arm/s3c24x0|//rt-thread/libcpu/arm/s3c44b0|//rt-thread/libcpu/arm/sep4020|//rt-thread/libcpu/arm/zynqmp-r5|//rt-thread/libcpu/avr32|//rt-thread/libcpu/blackfin|//rt-thread/libcpu/c-sky|//rt-thread/libcpu/ia32|//rt-thread/libcpu/m16c|//rt-thread/libcpu/mips|//rt-thread/libcpu/nios|//rt-thread/libcpu/ppc|//rt-thread/libcpu/risc-v|//rt-thread/libcpu/rx|//rt-thread/libcpu/sim|//rt-thread/libcpu/sparc-v8|//rt-thread/libcpu/ti-dsp|//rt-thread/libcpu/unicore32|//rt-thread/libcpu/v850|//rt-thread/libcpu/xilinx|//rt-thread/src/cpu.c|//rt-thread/src/mem.c|//rt-thread/src/scheduler_mp.c|//rt-thread/src/slab.c|//rt-thread/tools" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="" />
</sourceEntries>
</configuration>
</storageModule>
@ -1044,7 +1052,7 @@
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders" />
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
<resource resourceType="PROJECT" workspacePath="/828F" />
<resource resourceType="PROJECT" workspacePath="/project" />
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets" />

2
.project

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>828F</name>
<name>project</name>
<comment />
<projects>
</projects>

4
applications/data/DATA_comm.c

@ -132,6 +132,10 @@ void pasre_DAT(const char *api, const char *json_str)
cJSON_AddItemToObject(dat,"SYSHUM",cJSON_CreateNumber(sys_humidity));
cJSON_AddItemToObject(dat,"SYSTIME",cJSON_CreateString(systime));
cJSON_AddItemToObject(dat,"NAME",cJSON_CreateString(machine_name));
cJSON_AddItemToObject(dat,"PBAT",cJSON_CreateNumber(pow_bat));
cJSON_AddItemToObject(dat,"PCODE",cJSON_CreateNumber(pow_code));
cJSON_AddItemToObject(dat,"PDEV1",cJSON_CreateNumber(pow_dev1));
cJSON_AddItemToObject(dat,"PDEV2",cJSON_CreateNumber(pow_dev2));
cJSON_AddItemToObject(dat,"VAR",cJSON_CreateString(sys_var));
}
else if (strcmp(api, "SC810") == 0)

5
applications/data/Variable.c

@ -8,7 +8,10 @@ rt_int32_t sys_humidity;//主机环境湿度
char sys_var[8];//主机版本0.0.00A
unsigned char sys_time[6];//系统时间
unsigned int sys_run_time;//运行时间
int pow_bat;//电池电压
int pow_code;//主电压
int pow_dev1;//设备电压.通讯
int pow_dev2;//设备电压,其它
// 动态数据缓冲区(初始化为 NULL,后续分配)
char *DATA_dat;

4
applications/data/Variable.h

@ -9,6 +9,10 @@ extern rt_int32_t sys_humidity;//主机环境湿度
extern char sys_var[8];//主机版本0.0.00A
extern unsigned char sys_time[6];//系统时间
extern unsigned int sys_run_time;//运行时间
extern int pow_bat;//电池电压
extern int pow_code;//主电压
extern int pow_dev1;//设备电压.通讯
extern int pow_dev2;//设备电压,其它
// ===== 字符串变量 =====
extern char *DATA_dat;

226
applications/drv/drv_ads111x.c

@ -0,0 +1,226 @@
/*
* Copyright (c) 2025, Your Name
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-12-27 Developer First version for ADS1115 on RT-Thread
*/
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include "Variable.h"
#define DBG_TAG "sensor.ads1115"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
/* ADS1115 I2C 地址(A0 引脚接地时为 0x48) */
#define ADS1115_I2C_ADDR 0x48
/* 使用的 I2C 总线设备名 */
#define ADS1115_I2C_BUS_NAME "i2c2" // 根据你的板子修改,如 "i2c1"
/* ADS1115 寄存器地址 */
#define ADS1115_REG_CONVERT 0x00
#define ADS1115_REG_CONFIG 0x01
static struct rt_i2c_bus_device *i2c_bus = RT_NULL;
/**
* ADS1115
*/
static rt_err_t ads1115_write_config(rt_uint16_t config)
{
rt_uint8_t buf[3] = {
ADS1115_REG_CONFIG,
(rt_uint8_t)(config >> 8),
(rt_uint8_t)(config & 0xFF)
};
struct rt_i2c_msg msgs[1] = {
{
.addr = ADS1115_I2C_ADDR,
.flags = RT_I2C_WR,
.buf = buf,
.len = 3,
}
};
if (rt_i2c_transfer(i2c_bus, msgs, 1) != 1)
{
LOG_E("Failed to write config register.");
return -RT_ERROR;
}
return RT_EOK;
}
/**
* ADS1115
*/
static rt_err_t ads1115_read_conversion(rt_int16_t *value)
{
rt_uint8_t buf[2] = {0};
struct rt_i2c_msg msgs[2] = {
{
.addr = ADS1115_I2C_ADDR,
.flags = RT_I2C_WR,
.buf = (rt_uint8_t[]){ADS1115_REG_CONVERT},
.len = 1,
},
{
.addr = ADS1115_I2C_ADDR,
.flags = RT_I2C_RD,
.buf = buf,
.len = 2,
}
};
if (rt_i2c_transfer(i2c_bus, msgs, 2) != 2)
{
LOG_E("Failed to read conversion register.");
return -RT_ERROR;
}
*value = (rt_int16_t)((buf[0] << 8) | buf[1]);
return RT_EOK;
}
/**
* ADC
* channel: 0 ~ 3 ( AIN0~AIN3 GND)
* RT_EOK
*/
static rt_err_t ads1115_read_channel(rt_uint8_t channel, rt_int16_t *raw_value)
{
if (channel > 3)
{
LOG_E("Invalid channel: %d", channel);
return -RT_EINVAL;
}
// 配置:OS=1, MUX=100+ch (单端), PGA=001 (±4.096V), MODE=1 (single), DR=100 (128SPS)
rt_uint16_t config = 0x8000 | // OS = 1
((0x04 | channel) << 12) | // MUX: AINx vs GND
(0x01 << 9) | // PGA = ±4.096V
(0x01 << 8) | // MODE = single-shot
(0x04 << 5); // DR = 128 SPS
if (ads1115_write_config(config) != RT_EOK)
{
return -RT_ERROR;
}
rt_thread_mdelay(10); // 等待转换完成(128SPS ≈ 8ms)
return ads1115_read_conversion(raw_value);
}
/**
* ADC mV
* 使 ±2.048V PGA=1 LSB = 2.048V / 32768 0.0625 mV/LSB
* 0~2.048V 2.048V = 32768 LSB
* Voltage(mV) = raw * (2048 / 32768) = raw * 0.0625
*/
static rt_int32_t ads1115_raw_to_mv(rt_int16_t raw)
{
/* 注意:单端模式下,raw 应为正数(0 ~ 32767)*/
return (rt_int32_t)(((rt_int64_t)raw * 125) / 1000); // 等价于 raw * 0.0625 * 1000
}
/**
* ADS1115 线 AIN0
*/
static void ads1115_thread_entry(void *parameter)
{
rt_int16_t raw = 0 ,mt = 3600;
while (1)
{
if(mt>3600)
{
if (ads1115_read_channel(0, &raw) == RT_EOK)
{
pow_bat = ads1115_raw_to_mv(raw);
}
else
{
LOG_E("Failed to read ADS1115 P_BAT");
}
}
else
{
mt = 0;
}
if (ads1115_read_channel(1, &raw) == RT_EOK)
{
pow_code = ads1115_raw_to_mv(raw);
}
else
{
LOG_E("Failed to read ADS1115 P_CODE");
}
if (ads1115_read_channel(2, &raw) == RT_EOK)
{
pow_dev1 = ads1115_raw_to_mv(raw);
}
else
{
LOG_E("Failed to read ADS1115 P_DEV1");
}
if (ads1115_read_channel(3, &raw) == RT_EOK)
{
pow_dev2 = ads1115_raw_to_mv(raw);
}
else
{
LOG_E("Failed to read ADS1115 P_DEV2");
}
rt_thread_mdelay(1000); // 每 秒读取一次
}
}
/**
* ADS1115
*/
static int rt_hw_ads1115_init(void)
{
i2c_bus = rt_i2c_bus_device_find(ADS1115_I2C_BUS_NAME);
if (i2c_bus == RT_NULL)
{
LOG_E("Failed to find I2C bus: %s", ADS1115_I2C_BUS_NAME);
return -RT_ENOSYS;
}
LOG_I("Found I2C bus: %s", ADS1115_I2C_BUS_NAME);
/* 创建读取线程 */
rt_thread_t tid = rt_thread_create("ads1115",
ads1115_thread_entry,
RT_NULL,
512,
RT_THREAD_PRIORITY_MAX - 2,
10);
if (tid != RT_NULL)
{
rt_thread_startup(tid);
}
else
{
LOG_E("Failed to create ADS1115 thread.");
return -RT_ERROR;
}
return RT_EOK;
}
/* 自动初始化 */
INIT_APP_EXPORT(rt_hw_ads1115_init);

BIN
packages/packages.dbsqlite

Binary file not shown.

20
packages/pkgs.json

@ -14,6 +14,11 @@
"ver": "v8.3.11",
"name": "LVGL"
},
{
"path": "/packages/system/perf_counter",
"ver": "v2.2.4.1",
"name": "PERF_COUNTER"
},
{
"path": "/packages/system/sqlite",
"ver": "v3.19.3",
@ -33,5 +38,20 @@
"path": "/packages/peripherals/rs485",
"ver": "v1.06",
"name": "RS485"
},
{
"path": "/packages/arduino/RTduino",
"ver": "latest",
"name": "RTDUINO"
},
{
"path": "/packages/arduino/signalio/Adafruit-BusIO",
"ver": "latest",
"name": "ARDUINO_ADAFRUIT_BUSIO"
},
{
"path": "/packages/arduino/signalio/Adafruit-ADS1X15",
"ver": "latest",
"name": "ARDUINO_ADAFRUIT_ADS1X15"
}
]
Loading…
Cancel
Save