当前位置: 首页 > news >正文

Nordic nRF54L15 SoC对包含电池监测、中断处理和电源轨控制的定制 nPM1300 示例

1:以下是适用于 nRF Connect SDK (NCS) 的基于 Zephyr 的示例应用程序,展示了:

  • 读取电池电压和状态
  • 处理来自 nPM1300 的中断(例如,电池或电源轨事件)
  • 控制电源轨(通过 GPIO 启用/禁用)

main.c

#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/pmic.h>
#include <zephyr/drivers/pmic/npm1300.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/logging/log.h>
#include <zephyr/sys/printk.h>LOG_MODULE_REGISTER(npm1300_sample, LOG_LEVEL_INF);#define NPM1300_NODE DT_NODELABEL(npm1300)
#define NPM1300_IRQ_NODE DT_NODELABEL(npm1300_irq)
#define NPM1300_PWR_GPIO_NODE DT_NODELABEL(npm1300_pwrgpio)static const struct device *npm1300_dev = DEVICE_DT_GET(NPM1300_NODE);static struct gpio_callback irq_cb_data;void npm1300_irq_handler(const struct device *gpiodev, struct gpio_callback *cb, uint32_t pins)
{printk("nPM1300 IRQ triggered!\n");struct pmic_npm1300_irq_status irq_status;int ret = pmic_npm1300_irq_status_get(npm1300_dev, &irq_status);if (ret == 0) {if (irq_status.batt_chg) {LOG_INF("Battery charging event detected");}if (irq_status.vbus_det) {LOG_INF("VBUS detected event");}if (irq_status.temp) {LOG_INF("Temperature warning/fault event");}// Add more handlers as needed.} else {LOG_ERR("Failed to read nPM1300 IRQ status: %d", ret);}
}void main(void)
{if (!device_is_ready(npm1300_dev)) {LOG_ERR("nPM1300 device not ready");return;}LOG_INF("nPM1300 demo starting...");// Set up IRQ handlingconst struct device *irq_gpio_dev = DEVICE_DT_GET(NPM1300_IRQ_NODE);gpio_pin_configure(irq_gpio_dev, DT_GPIO_PIN(NPM1300_IRQ_NODE, gpios), GPIO_INPUT | DT_GPIO_FLAGS(NPM1300_IRQ_NODE, gpios));gpio_init_callback(&irq_cb_data, npm1300_irq_handler, BIT(DT_GPIO_PIN(NPM1300_IRQ_NODE, gpios)));gpio_add_callback(irq_gpio_dev, &irq_cb_data);gpio_pin_interrupt_configure(irq_gpio_dev, DT_GPIO_PIN(NPM1300_IRQ_NODE, gpios), GPIO_INT_EDGE_TO_ACTIVE);LOG_INF("nPM1300 IRQ configured");// Battery monitoring loopwhile (1) {int batt_mv;int status = pmic_npm1300_battery_voltage_get(npm1300_dev, &batt_mv);if (status == 0) {LOG_INF("Battery voltage: %d mV", batt_mv);} else {LOG_ERR("Failed to read battery voltage: %d", status);}// Power rail control (example: enable/disable)int pwr_status;status = pmic_npm1300_power_rail_enable(npm1300_dev, 0, true); // enable rail 0if (status == 0) {LOG_INF("Power rail 0 enabled");}k_sleep(K_MSEC(1000));status = pmic_npm1300_power_rail_enable(npm1300_dev, 0, false); // disable rail 0if (status == 0) {LOG_INF("Power rail 0 disabled");}k_sleep(K_SECONDS(10));}
}

prj.conf

CONFIG_PMIC_NPM1300=y
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_GPIO=y

 nrf54l15dk_nrf54l15.overlay

&i2c1 {npm1300: npm1300@6b {compatible = "nordic,npm1300";reg = <0x6b>;// IRQ and other properties as needed};
};/ {npm1300_irq: gpio0_pin12 {gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;};
};

使用方法:

  1. 将文件放置在您的 NCS 项目中(例如,在 src/ 、 boards/ 和根目录下)。
  2. Build for your board:  为您的板卡构建:
west build -b nrf54l15dk_nrf54l15
west flash

http://www.lryc.cn/news/575650.html

相关文章:

  • UE Universal Camera 相机插件-限制镜头在区域内移动
  • 【Docker基础】Docker容器管理:docker restart详解
  • 使用Charles中文版抓包工具进行高效的API调试与性能优化
  • 【机器学习深度学习】线性代数
  • 网络分层模型与协议体系技术研究报告
  • PDF Kit 使用示例(HarmonyOS)
  • dockers virbox 安装
  • 亚矩阵云手机多开赋能Snapchat矩阵运营:技术原理与场景化破局
  • Linux修改uboot启动延时方法详细攻略,触觉智能RK3568开发板演示
  • Go语言与云原生:Kubernetes Operator开发全流程
  • 【钓鱼预警】HW主题,无需多言
  • LLM复杂记忆存储-多会话隔离案例实战
  • swiftUI iOS16和iOS15兼容
  • 设计模式 | 原型模式
  • 专线服务器具体是指什么?
  • Nginx配置文件介绍和基本使用
  • Excel处理控件Aspose.Cells教程:如何使用 Java 将图片添加到 Excel
  • 从零构建vue3项目(二)
  • 机器学习在智能农业中的创新应用与未来趋势
  • 永磁无刷电机旋转原理
  • 进程和线程的区别?
  • 128.最长连续序列
  • 本地开发Anchor智能合约:效率翻倍的秘密
  • windows下 tomcat的安装部署
  • 机器学习17-发展历史补充
  • 第一章-人工智能概述-机器学习基础与应用(1/36)
  • spring-ai 1.0.0 (1)模型调用能力
  • day43 复习日(猫狗图像分类)
  • 算法第48天|单调栈:42. 接雨水、84.柱状图中最大的矩形
  • 从零开始理解百度语音识别API的Python实现