NXP i.MX8系列平台开发讲解 - 3.14 Linux 之Power Supply子系统(二)

news2025/1/17 23:25:37

专栏文章目录传送门:返回专栏目录

Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【码思途远】


目录

1. 前言

2. 芯片简介

2. 系统原理设计

2. 设备树相关


本文实操是基于Android11 系统下i.MX8MQ环境下:

  • cpu: i.mx8mq

  • Kernel version:kernel 5.4

  • 开发板:imx8mq-librem5-devkit

1. 前言

根据前一章节讲解相关Power Supply子系统,本章节将以一个实际例子进行说明,重点说明充电芯片与电量计这两个部分。

介绍之前先介绍一些相关的概念知识;

充电模式

充电模式 (Charging Mode)描述 (Description)适用情况 (Applicability)
恒流充电 (Constant Current)充电电流保持恒定,电池以恒定速率充电适用于电池的初期充电,能够更快地达到一定电荷状态
恒压充电 (Constant Voltage)充电电流逐渐减少,电压保持恒定以避免过充适用于电池的后期充电,避免过充和过热
脉冲充电 (Pulse Charging)在恒定电流和恒定电压充电模式之间切换,提高充电效率适用于快速充电,可以提高充电速度和效率
阶段充电 (Step Charging)初始充电电流较低,逐渐增加,减少充电过程中的热量产生适用于大容量电池,减少充电过程中的发热和压力
温度补偿充电 (Temperature-Compensated Charging)根据电池温度调整充电策略,以保持最佳充电效率和寿命适用于各种环境温度下,优化充电性能和电池寿命
快速充电 (Fast Charging)增加充电电流和电压以实现更快的充电速度适用于快速充电需求,可以在短时间内充满电池
自适应充电 (Adaptive Charging)根据电池状态和健康情况自动调整充电策略,以优化充电性能适用于不同电池类型和容量,实现最佳充电性能和寿命

为什么会有这么多种充电模式?

答:充电模式是充电管理芯片用来控制和管理电池充电过程的不同工作状态。不同的充电模式可以根据电池的状态和需求,采取不同的充电策略,以达到更高的充电效率、更长的电池寿命或其他特定的目标。

快充协议

快充协议,主要涉及到不同手机制造商采用的不同技术和协议。以下是一些主要的快充协议以及它们的一些特点,以便进行对比:

快充协议 (Fast Charging Protocol)版本 (Version)最大功率 (Maximum Power)描述 (Description)
Qualcomm Quick ChargeQuick Charge 1.0, 2.0, 3.0, 4, 4+, 518W (QC 1.0), 36W (QC 2.0), 18-20W (QC 3.0), 100W (QC 4+), 100W+ (QC 5)通过调整电压和电流以实现快充,版本逐渐提升功率和效率
MediaTek Pump ExpressPE1.0, PE2.0, PE3.0, PE4.010W (PE1.0), 20W (PE2.0), 30W (PE3.0), 45W (PE4.0)根据电池状态和温度动态调整充电速度
USB Power Delivery (USB PD)USB PD 2.0, USB PD 3.0, USB PD 3.1, USB PD 3.1 PPS最高100W (USB PD 2.0), 最高100W (USB PD 3.0), 最高240W (USB PD 3.1)通用标准,支持更高功率的充电
Oppo VOOCVOOC 1.0, VOOC 2.0, VOOC 3.0, VOOC 4.05V/4A (VOOC 1.0), 5V/5A (VOOC 2.0), 5V/6A (VOOC 3.0), 10V/6.5A (VOOC 4.0)通过增加电流实现快充
Huawei SuperChargeSCP 1.0, SCP 2.0, SCP 3.022.5W (SCP 1.0), 40W (SCP 2.0), 66W (SCP 3.0)高电压高电流充电技术
Samsung Adaptive Fast Charging无版本号15W (最大)根据设备状态调整充电策略

对于快充能够到达多少W,支持什么协议,对于选择充电芯片就比较重要了。

为什么会有那么多种充电协议?

不同厂家存在竞争,营销策略,技术保护等等

以下内容将重点介绍充电芯片,电量计两个方面:

开发板:imx8mq-librem5-devkit

充电芯片:bq25896

电量计芯片:MAX17055

2. 芯片简介

bq25896 是德州仪器(Texas Instruments)公司生产的一款高度集成的锂电池充电管理芯片。它是一款用于移动设备、嵌入式系统以及一些便携式应用的充电管理解决方案。bq25896 在一颗芯片内部集成了多个关键的功能模块,以实现高效的充电控制和管理,同时提供了一些配置选项,使其适应不同的应用场景。

以下是 bq25896 的一些主要特性和功能:

高度集成的设计:bq25896 集成了充电管理所需的多个功能模块,包括电流和电压调节、充电模式控制、温度监测、电池状态检测等。这种高度集成的设计减少了外部元件的数量,降低了电路板的复杂性和成本。

多种充电模式:bq25896 支持多种充电模式,如恒流充电、恒压充电、脉冲充电等。这使得充电过程可以根据不同的电池类型和状态进行优化,以提高充电效率和电池寿命。

可编程电流和电压限制:bq25896 允许用户通过配置来设定最大充电电流和电压,以适应不同类型和容量的电池。

温度监测和保护:内置的温度监测电路可以实时检测电池温度,当温度超过设定的阈值时,bq25896 可以触发保护措施,以确保充电过程的安全性。

电池状态检测:bq25896 可以监测电池的电压、电流和温度等状态信息,实时反馈电池的健康状态,有助于提供更准确的充电控制。、

USB 快充支持:bq25896 支持一些 USB 快充协议,如 USB Power Delivery(USB PD)和 Qualcomm Quick Charge 等,可以实现更快的充电速度。

硬件保护功能:bq25896 集成了多个硬件保护功能,如过温保护、过压保护、过流保护等,以确保充电过程的安全性和稳定性。

低功耗模式:bq25896 提供了低功耗模式,以降低待机状态下的功耗,延长系统的电池续航时间。

简化原理图

MAX17055

Maxim MAX17055单节电池电量计是一款工作电流低至7μA的电量计,实施了Maxim ModelGauge™ m5 EZ算法。ModelGauge m5 EZ通过消除电池特征化要求让电量计的应用更加轻松,并且简化了主机软件互动。ModelGauge m5 EZ 稳健算法可为大多数锂电池和应用提供针对电池多样性的容限。ModelGauge m5 EZ算法将库仑计数器的短期精度和线性度与基于电压的电量计的长期稳定性以及温度补偿相结合。

MAX17055可自动补偿电池老化、温度和放电速率。该器件还可提供精确的充电状态(SOC的百分比)以及以毫安时 (mAh) 计的剩余容量。随着电池接近电量耗尽临界区,ModelGauge m5算法会激活特殊补偿以消除任何错误。它还提供了三种报告电池寿命的方法:容量降低、电池电阻增加以及码表。

2. 系统原理设计

系统这里主要介绍三个部分,一个是充电芯片,电量计,还有一个是TYPE-C芯片

TPS65982 是 USB Type-C 和供电 (PD) 控制器;BQ25895作为充电芯片,MAX17055作为电量计芯片,它们的配置都通过I2C进行通信配置,有Soc进行对寄存器的设置。

电路图

2. 设备树相关

首先查看设备数相关设置:

vim ./arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts

        charger@6b { /* bq25896 */
                compatible = "ti,bq25890";
                reg = <0x6b>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_charger>;
                interrupt-parent = <&gpio3>;
                interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
                ti,battery-regulation-voltage = <4192000>; /* 4.192V */ //设置的电池充电过程中的调整电压,单位为微伏
                ti,charge-current = <1600000>; /* 1.6A */ //充电电流设置
                ti,termination-current = <66000>;  /* 66mA */ //终止电流设置
                ti,precharge-current = <130000>; /* 130mA */ //预重电流
                ti,minimum-sys-voltage = <3000000>; /* 3V */ //最小系统电压
                ti,boost-voltage = <5000000>; /* 5V */ // 提升电压
                ti,boost-max-current = <50000>; /* 50mA */ //提升最大电流
        };

从设备树查看,很多都是设置相关的电流电压值,这些值的匹配都需要根据实际情况进行填入;

从代码从probe查看

bq25890_probe
    devm_regmap_init_i2c //创建一个适用于I2C总线的寄存器映射,用于与充电控制芯片的寄存器进行通信
    bq25890_get_chip_version //获取充电控制芯片的版本信息,用于后续的操作和识别
    bq25890_fw_probe //读取设备属性,可能包括固件版本
    bq25890_hw_init // 初始化芯片,设置寄存器相关
    devm_request_threaded_irq //中断配置
    bq25890_power_supply_init // power supply 设备的注册,将传输bq25890的信息

在bq25890设置了一个中断检测是否充电,`power_supply_desc 结构体的填充:

static const struct power_supply_desc bq25890_power_supply_desc = {
        .name = "bq25890-charger",
        .type = POWER_SUPPLY_TYPE_USB,
        .properties = bq25890_power_supply_props,
        .num_properties = ARRAY_SIZE(bq25890_power_supply_props),
        .get_property = bq25890_power_supply_get_property,
};

关于bq25890的重要信息都要提供给power supply

max17055设备树:

        bat: fuel-gauge@36 {
                compatible = "maxim,max17055";
                reg = <0x36>;
                interrupt-parent = <&gpio3>;
                interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_gauge>;
                maxim,over-heat-temp = <700>; //过热温度的阈值
                maxim,over-volt = <4500>; //过压的阈值
                maxim,rsns-microohm = <5000>; //电池内阻的值
        };

对于这个max 17055设备树,主要设置了一个中断引脚,设置一些最大温度,最大电压,还有电池内阻值,这些一般都需要根据实际电池进行设置。

根据probe查看:

max17042_probe
    devm_regmap_init_i2c //用于与I2C总线上的寄存器进行通信
    devm_power_supply_register //将会注册power supply
    devm_request_threaded_irq

power_supply_desc结构体


static const struct power_supply_desc max17042_psy_desc = {
        .name           = "max170xx_battery",
        .type           = POWER_SUPPLY_TYPE_BATTERY,
        .get_property   = max17042_get_property,
        .set_property   = max17042_set_property,
        .property_is_writeable  = max17042_property_is_writeable,
        .external_power_changed = max17042_external_power_changed,
        .properties     = max17042_battery_props,
        .num_properties = ARRAY_SIZE(max17042_battery_props),
};

设备启动成功后,就可以通过/sys/class/power_supply看到类似的设备:

通过sysfs可以看到power supply 的寄存器相关信息

能查看这些基本上就可以成功了。

后续有机会介绍bq2570a等更复杂的充电芯片和电量计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1790591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DKTCDR:Domain-Oriented Knowledge Transfer for Cross-Domain Recommendation

Domain-Oriented Knowledge Transfer for Cross-Domain Recommendation IEEE(CCF B.SCI 1)-Guoshuai Zhao, Xiaolong Zhang, Hao Tang, Jialie Shen, and Xueming Qian-2024 思路 在CDR中,构建连接两个域的桥梁是实现跨域推荐的基础。然而现在的CDR方法往往在连接两个域时忽…

STM32-- GPIO->EXTI->NVIC中断

一、NVIC简介 什么是 NVIC &#xff1f; NVIC 即嵌套向量中断控制器&#xff0c;全称 Nested vectored interrupt controller 。它 是内核的器件&#xff0c;所以它的更多描述可以看内核有关的资料。M3/M4/M7 内核都是支持 256 个中断&#xff0c;其中包含了 16 个系统中…

调用smc为什么就能直接切换到ATF?

快速链接: . &#x1f449;&#x1f449;&#x1f449;Trustzone/TEE/安全 面试100问-目录 &#x1f448;&#x1f448;&#x1f448; 付费专栏-付费课程 【购买须知】:联系方式-加入交流群 ----联系方式-加入交流群 个人博客笔记导读目录(全部) 背景 插播一个小插曲&#…

图片的dpi数值怎么修改?快速在线改图片dpi的操作技巧

在网上报名或者上传个人证件照片时&#xff0c;经常会对图片dpi数值有所要求&#xff0c;需要按照要求将图修改图片dpi到规定数值才可以正常上传&#xff0c;有很多人都对这个问题的感到非常的困扰&#xff0c;那么有什么方法能够快速在线改图片分辨率的dpi数值呢&#xff1f; …

WPF 依赖属性原理、 附加属性

依赖属性如何节约内存 MSDN中给出了下面几种应用依赖属性的场景&#xff1a; 希望可在样式中设置属性。 希望属性支持数据绑定。 希望可使用动态资源引用设置属性。 希望从元素树中的父元素自动继承属性值。 希望属性可进行动画处理。 希望属性系统在属性系统、环境或用户…

Wpf 使用 Prism 开发MyToDo应用程序

MyToDo 是使用 WPF &#xff0c;并且塔配Prism 框架进行开发的项目。项目中进行了前后端分离设计&#xff0c;客户端所有的数据均通过API接口获取。适合新手入门学习WPF以及Prism 框架使用。 首页统计以及点击导航到相关模块功能待办事项增删改查功能备忘录增删改查功能登录注册…

【Python编程】【Jupyter Notebook】启动时报错:no available port could be found

一、报错描述 在Jupyter Notebook中编写程序&#xff0c;无法运行&#xff0c;提示由于没有可供监听的端口&#xff0c;无法启动Jupyter服务器&#xff0c;如下图所示&#xff1a; 二、原因分析 通过报错信息&#xff0c;猜测大概是由于网络环境的原因。首先&#xff0c;关闭…

智能体应用开发:构建各类垂直领域的ai智能体应用

最近在做个类似的项目&#xff0c;有用到这方面的知识&#xff0c;顺便做一些记录和笔记吧&#xff0c;希望能帮到大家了解智能体应用开发 目录 引言 AI原生应用的兴起 智能体在AI中的角色 实现原理详解 机器学习基础 数据管理与关联数据库 数据结构 Embedding 检索方…

开放式耳机哪个牌子好?2024年度热门机型推荐榜单分享!

随着音乐技术的不断革新&#xff0c;开放式耳机已成为音乐发烧友们的首选。从最初的简单音质&#xff0c;到如今的高清解析&#xff0c;开放式耳机不断进化。音质纯净&#xff0c;佩戴舒适&#xff0c;无论是街头漫步还是家中细细静听&#xff0c;都能带给你身临其境的音乐体验…

电路方案分析(十九)快速响应过流事件检测电路

快速响应过流事件检测电路 1.设计需求2.设计方案3.设计说明4.仿真验证 tips&#xff1a;方案参考来自TI参考设计&#xff0c;仅供学习交流使用。 1.设计需求 2.设计方案 这是一种快速响应单向电流检测解决方案&#xff0c;通常称为过流保护 (OCP)&#xff0c;可提供 < 2μ…

开源模型应用落地-LangSmith试炼-入门初体验-监控和自动化(五)

一、前言 在许多应用程序中&#xff0c;特别是在大型语言模型(LLM)应用程序中&#xff0c;收集用户反馈以了解应用程序在实际场景中的表现是非常重要的。 LangSmith可以轻松地将用户反馈附加到跟踪数据中。通常最好提供一个简单的机制(如赞成和反对按钮)来收集用户对应用程序响…

解决MAC M1 Docker Desktop启动一直在starting

问题描述&#xff1a; 今天使用docker buildx 构建Multi-platform&#xff0c;提示如下错误&#xff1a; ERROR: Multi-platform build is not supported for the docker driver. Switch to a different driver, or turn on the containerd image store, and try again. 于是按…

RTOS笔记--任务状态与调度

任务状态 freertos中的任务分为四个状态&#xff1a;就绪状态&#xff08;ready&#xff09;、运行状态&#xff08;running&#xff09;、阻塞状态&#xff08;blocked&#xff09;、暂停状态&#xff08;suspended&#xff09; 完整的任务状态转换图&#xff1a; 在使用vTas…

短剧市场大爆炸:小米和华为的亿万争夺战,谁能笑到最后?

在数字化媒体的浪潮中&#xff0c;内容消费模式正经历着翻天覆地的变化。短视频的兴起引领了一种全新的娱乐方式&#xff0c;而短剧作为其衍生形式&#xff0c;正逐渐成为各大科技巨头争夺的新战场。 小米和华为&#xff0c;作为中国科技界的两大巨头&#xff0c;也在这一新兴…

Android Studio的Gradle面板里不显示task,build ,assemble 无法出aar包

按照以下方式把对应开关打开就可以正常进行build/assemble进行aar的生成了

回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法)

回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法) 目录 回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现基于LightGBM算法的数据回归预…

配置Kubernetes资源管理Secret与ConfigMap

前言 Kubernetes 中的 Secret&#xff08;提供加密模式&#xff09;和 ConfigMap&#xff08;提供配置&#xff09;是关键的资源&#xff0c;用于安全地存储和管理敏感信息和配置数据。它们在应用程序开发和部署过程中扮演着重要的角色。本文将介绍如何有效地配置和管理这些资…

YOLOv8改进有效涨点专栏目录——包含backbone、head、neck和损失函数上百余种改进技巧

专栏地址&#xff1a;YOLOv8改进有效涨点——持续更新中 backbone——主干 YOLOv8改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 完整代码】 YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】 YOLOv8改进 | 主干网络 | 在…

基于JS实现《国家基本比例尺地形图分幅和编号》标准

1、标准 GB T 13989-2012国家基本比例尺地形图分幅和编号 地址&#xff1a;【高清版】GB T 13989-2012国家基本比例尺地形图分幅和编号 - 道客巴巴 2、1:100万比例尺 2.1 说明 2.2 计算公式 2.3 计算代码 2.3.1 元素数据定义 由于中国只到N层&#xff0c;所以只定义到O. …

2022.9.25DAY677

今日图书馆恢复开放&#xff0c;被同学邀约去图书馆占座位。来到图书馆&#xff0c;想着既然来到了&#xff0c;那就开始复习吧。高数看了第一章的一二节&#xff0c;看着看着&#xff0c;想着光看教材难以去衡量自己有没有掌握&#xff0c;于是又想着要是有章节练习就好了。习…