在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于IDO-SBC3568主板說明PMIC RK809電量計的調試方法

sXx1_industio ? 來源:深圳觸覺智能 ? 2023-05-24 09:39 ? 次閱讀

本文基于IDO-SBC3568主板介紹說明PMIC RK809電量計的調試方法。

IDO-SBC3568-V1是一款基于RK3568的工控主板,采用22nm先進工藝制程,四核A55 CPU,主頻高達2.0GHz,支持高達8GB高速LPDDR4,1T算力NPU ,4K H.265/H264硬解碼;具有豐富的視頻輸出接口HDMI2.0/eDP1.3/MIPI/LVDS) ,高速通信接口(千兆網/PCIE/USB3.0),工業互聯接口(CAN/串口)。

IDO-SBC3568-V1 可作為RK3568開發評估板,也普遍適用于各種智慧顯示終端產品、視頻類終端產品、工業自動化終端產品和邊緣計算網關類產品。應用可覆蓋邊緣計算、人工智能、工業HMI、工業網關、智慧醫療、自助終端、智能零售、能源電力等行業。

425a8088-f976-11ed-90ce-dac502259ad0.png

IDO-SBC3568-V1正面接口指示圖

42a51512-f976-11ed-90ce-dac502259ad0.png

IDO-SBC3568-V1背面接口指示圖

硬件分析

43045838-f976-11ed-90ce-dac502259ad0.png

432496a2-f976-11ed-90ce-dac502259ad0.png

435aa062-f976-11ed-90ce-dac502259ad0.png

硬件使用PMIC RK809電量計加BQ24610的充電方案,同時將GPIO1_D1作為12V DC 狀態檢測功能,當插入電源時GPIO1_D1將會被拉低,拔插電源時GPIO1_D1將上拉至1.8V。

內核修改

配置內核開啟以下驅動

RTC_DRV_RK808 [=y]

BATTERY_RK817 [=y]

設備樹修改如下:

RK809 沒有充電功能,只需要配置 battery 節點。電源檢測IO使用gpio-charger驅動,并配置charger-type為mains。

/{
charger_det: charger {
compatible = "gpio-charger";
charger-type= "mains";
gpios = <&gpio1 RK_PD1 GPIO_ACTIVE_LOW>;
status = "okay";
};

test-power {
status = "disabled";
};
};

&rk809 {
battery {
status = "okay";
compatible = "rk817,battery";
ocv_table = <7000?7250?7370?7384?7436?7470?7496
????????7520?7548?7576?7604?7632?7668?7706
????????7754?7816?7892?7950?8036?8142?8212>;/*開路電壓,是第一次接電池開機、長時間關機后再開機、長時間休眠后校正庫侖計的依據,
0%~100%的電量細分成 21 個點,步進 5%電量*/
design_capacity = <1500>; //實際電池容量,單位:mah
design_qmax = <1500>; //最大容量值
design_max_voltage = <8400>; //最大電壓
bat_res = <180>; //電池內阻
sleep_enter_current = <300>; //進入松弛模式的條件之一
sleep_exit_current = <300>; //退出松弛模式的條件之一
sleep_filter_current = <100>; //過濾無效的松弛電流。
power_off_thresd = <7000>; //期待的系統關機電壓,單位:mV
zero_algorithm_vol = <7700>; //進入電壓+庫侖計放電模式的電壓值
max_soc_offset = <60>; //開機校正時允許的最大電量誤差。
monitor_sec = <5>; //輪詢時間 單位秒
sample_res = <10>; //電池端附近的采樣電阻大小
energy_mode = <1>; //該值為 1 時表示盡可能采取將電池電量放完的方式,為 0 時表示盡量考慮曲線平滑的合理性
fb_temperature = <105>; //芯片熱保護溫度閾值
virtual_power = <0>; //假電池模式(測試模式)
bat_res_up = <140>; //BATDIV上拉分壓電阻
bat_res_down = <20>; //BATDIV下拉分壓電阻
register_chg_psy = <0>; //是否通過RK809上報充電狀態
external_chg_psy = <1>; //配置外部DC檢測上報充電狀態
};
};
電池調試

驅動文件路徑為:kernel/drivers/power/supply/rk817_battery.c

系統啟動后可從 /sys/class/power_supply/battery/uevent 節點獲取電池狀態信息

43770d6a-f976-11ed-90ce-dac502259ad0.png

支持應用層配置驅動調試信息的輸出,配置方法如下:

#開啟打印信息
echo1 > /sys/module/rk817_battery/parameters/dbg_level
#關閉打印信息
echo0 > /sys/module/rk817_battery/parameters/dbg_level

開啟后詳細的電池數據將會輸出至調試串口,內容如下:

43959582-f976-11ed-90ce-dac502259ad0.png

使用gpio-charger配置GPIO1_D1為充電檢測,同樣會創建一個charger的上報事件,可從

/sys/class/power_supply/charger/uevent 節點中獲取到當前DC插入狀態。

43ad479a-f976-11ed-90ce-dac502259ad0.png

電池校準

長時間關機后,讀取到的電量會和電池的實際電量有差異,這時候需要對電池進行校準,校準方法如下:

1. 移除DC,拔掉電池10秒以上再插入,電量計將會重新校準電量數據。

電池做一次完整的充放電。

修改充電狀態上報

以上的方案和電路,當12V供電拔出時rk817_battery驅動中上報的充電狀態依舊是Charging。

分析充電狀態上報代碼如下:

43bf1204-f976-11ed-90ce-dac502259ad0.png

充電狀態是由plugin_trigger決定,驅動中分別注冊了plugin和plugout中斷,用于檢測USB充電拔插事件。驅動代碼如下:

staticint rk809_charge_init_irqs(struct rk817_battery_device *battery)
{
struct rk808 *rk817 = battery->rk817;
struct platform_device *pdev = battery->pdev;
int ret, plug_in_irq, plug_out_irq;

battery->plugin_trigger = 0;
battery->plugout_trigger = 0;

plug_in_irq = regmap_irq_get_virq(rk817->irq_data, RK817_IRQ_PLUG_IN);
if(plug_in_irq < 0) {
????dev_err(battery->dev, "plug_in_irq request failed!
");
returnplug_in_irq;
}

plug_out_irq = regmap_irq_get_virq(rk817->irq_data, RK817_IRQ_PLUG_OUT);
if(plug_out_irq < 0) {
????dev_err(battery->dev, "plug_out_irq request failed!
");
returnplug_out_irq;
}

ret = devm_request_threaded_irq(battery->dev, plug_in_irq, NULL,
rk809_plug_in_isr,
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
"rk817_plug_in", battery);
if(ret) {
dev_err(&pdev->dev, "plug_in_irq request failed!
");
returnret;
}

ret = devm_request_threaded_irq(battery->dev, plug_out_irq, NULL,
rk809_plug_out_isr,
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
"rk817_plug_out", battery);
if(ret) {
dev_err(&pdev->dev, "plug_out_irq request failed!
");
returnret;
}

if(rk817_bat_field_read(battery, PLUG_IN_STS)) {
battery->plugin_trigger = 1;
battery->plugout_trigger = 0;
}

return0;
}

查看寄存器可知,PLUG_IN_STS寄存器的值與VDC有關,當VDC電壓大于0.55V時,會將寄存器設置為1,否則設置為0。

43d7e3e2-f976-11ed-90ce-dac502259ad0.png

本文調試的主板沒有配置DC拔插來修改VDC狀態,VDC在系統上電后VDC始終保持上拉至1.2V,PLUG_IN_STS寄存器值始終保持為1。VDC部分電路如下:

43f97b1a-f976-11ed-90ce-dac502259ad0.png

此處可修改驅動,通過GPIO1_D1檢測外部DC的插入來上報充電狀態。在dts battery節點中增加自定義參數external_chg_psy用于配置外部充電檢測上報。

同時內核修改充電狀態上報的邏輯,修改內容如下:

--- a/kernel/drivers/power/supply/rk817_battery.c
+++ b/kernel/drivers/power/supply/rk817_battery.c
@@ -624,6+624,7@@ struct rk817_battery_device {
int plugout_irq;
int chip_id;
int is_register_chg_psy;
+ int is_external_chg_psy;
bool change; /* Battery status change, report information */
};

@@ -1924,6+1925,11@@ staticint rk817_bat_parse_dt(struct rk817_battery_device *battery)
&battery->is_register_chg_psy);
if(ret < 0?|| !battery->is_register_chg_psy)
dev_err(dev, "not have to register chg psy!
");
+
+ ret = of_property_read_u32(np, "external_chg_psy",
+ &battery->is_external_chg_psy);
+ if(ret < 0?|| !battery->is_external_chg_psy)
+ dev_err(dev, "not have to register external chg psy!
");
}

DBG("the battery dts info dump:
"
@@ -2119,10+2125,18@@ staticint rk817_battery_get_property(struct power_supply *psy,
if((battery->chip_id != RK809_ID) &&
rk817_bat_get_charge_state(battery))
val->intval = POWER_SUPPLY_STATUS_CHARGING;
- elseif(battery->chip_id == RK809_ID &&
- battery->plugin_trigger)
- val->intval = POWER_SUPPLY_STATUS_CHARGING;
- else
+ elseif(battery->chip_id == RK809_ID){
+ if(battery->is_external_chg_psy){
+ if(battery->ac_in)
+ val->intval = POWER_SUPPLY_STATUS_CHARGING;
+ else
+ val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
+ } elseif(battery->plugin_trigger){
+ val->intval = POWER_SUPPLY_STATUS_CHARGING;
+ } else{
+ val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
+ }
+ }else
val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
}
break;
電池狀態顯示

未接入電源時顯示如下

4424714e-f976-11ed-90ce-dac502259ad0.png

插入DC 12V 后顯示如下

4440a882-f976-11ed-90ce-dac502259ad0.png






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • lvds
    +關注

    關注

    2

    文章

    1045

    瀏覽量

    66015
  • LPDDR4
    +關注

    關注

    1

    文章

    38

    瀏覽量

    23440
  • PMIC技術
    +關注

    關注

    1

    文章

    6

    瀏覽量

    2207
  • RK3568
    +關注

    關注

    4

    文章

    526

    瀏覽量

    5238

原文標題:【技術分享】RK3568 RK809電量計電池調試

文章出處:【微信號:industio,微信公眾號:深圳觸覺智能】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【深圳觸覺智能技術分享】RK3568 RK809電量計電池調試

    本文基于IDO-SBC3568主板介紹說明PMIC RK809電量計
    的頭像 發表于 05-29 10:11 ?6573次閱讀
    【深圳觸覺智能技術分享】<b class='flag-5'>RK3568</b> <b class='flag-5'>RK809</b><b class='flag-5'>電量計</b>電池<b class='flag-5'>調試</b>

    RK3568-GDB程序調試方法說明

    RK3568-GDB程序調試方法說明
    的頭像 發表于 01-19 16:16 ?1995次閱讀
    <b class='flag-5'>RK3568</b>-GDB程序<b class='flag-5'>調試</b><b class='flag-5'>方法</b><b class='flag-5'>說明</b>

    使用阻抗追蹤電量計

    應用Impedance TrackTM技術的電池電量計同時采用了庫倫算法和電池電壓算法進行電量計算,可為目前市面上各種類型的蓄電池提供最精準的充電指示。 在電池管理電量計論壇中,我們發現這樣一個
    發表于 08-29 16:17

    電池電量計有什么困擾

    算的誤差,然后就發現電量計量數據在到了 1% 以后就長時間不變了,我讓手機死命工作好久以后才使它實現了自動關機。根據我對電量計算方法的理解,我的 iPhone 手機使用的是庫倫電量計,這是一種
    發表于 09-18 09:05

    bq27411-g1(單節電量計) bq27541(單節電量計) bq27546-g1 (單節電量計)

    bq27411-g1(單節電量計) bq27541(單節電量計)bq27546-g1 (單節電量計)TI的這三款電量計哪個熟悉的?比如更換不同廠家的電芯之后,需要用上位機重新配置參數,
    發表于 03-02 14:53

    電池的電量計

    電池的電量計算電池廠家提供不了開路電壓對應容量的OCV表,但是這個項目又必須正確的顯示電池的電量,大家是如何做到電量的大概測量的(節省成本不用電量計),用的是開路電壓法估算(精度要在8
    發表于 08-12 18:37

    如何去實現RK809長按PWR鍵重啟呢

    如何去實現RK809長按PWR鍵重啟呢?如何對其進行測試呢?
    發表于 02-16 07:52

    通用電量計如何選型

    電池包里可以實現更高的精度,并且可以實現數據加密與電池身份的識別,避免仿冒偽劣電池引起的潛在危險。1串電池電量計也可以放在系統主板上,但由于引入了MOS、連線阻抗的影響,以及不便于校準,電量精度會受
    發表于 11-03 08:20

    如何使用阻抗追蹤電量計

    應用Impedance TrackTM技術的電池電量計同時采用了庫倫算法和電池電壓算法進行電量計算,可為目前市面上各種類型的蓄電池提供最精準的充電指示。 在電池管理電量計論壇中,我們發現這樣一個
    發表于 11-16 06:13

    如何簡化電量計的使用?

    您可能聽說過“電量計一點通”、“使用方便的電量計”、“電量計附加值產品”,甚至是“只需輕松點擊即可使用電量計”等宣傳措辭。事實上,要制作出“好”的電池
    發表于 07-10 17:56 ?2257次閱讀

    TI電量計應用指導說明

    TI 電量計基礎知識介紹、電量計開發和量產流程、 電量計算法、電量計電路設計、電量計通信及訪問、典型應用設計要點等六部分展開論述, 從原理
    發表于 07-27 16:39 ?43次下載

    TI電量計應用指導中文版

    TI電量計中文指導,比較基礎的指導關于電量計方面的知識。 電量計的介紹、電量計的開發、阻抗跟蹤、CEDV電量計開發。
    發表于 10-19 16:05 ?0次下載

    RK356X Debian/Ubuntu系統安裝Docker技術分享

    本文基于IDO-SBC3528主板演示Debian/Ubuntu 系統任何安裝Docker,方法適用于RK3568全系列產品。
    的頭像 發表于 06-30 17:49 ?1573次閱讀

    RK3568 基于TI BQ40電量計調試

    本文基于IDO-SBC3568-V1BTIBQ40電量計調試IDO-SBC3568主板采用RK3568
    的頭像 發表于 08-26 08:35 ?1455次閱讀
    <b class='flag-5'>RK3568</b> 基于TI BQ40<b class='flag-5'>電量計</b><b class='flag-5'>調試</b>

    OpenHarmony4.1藍牙芯片如何適配?觸覺智能RK3568主板SBC3568演示

    當打開藍牙后沒有反應時,需要排查藍牙節點是否對應、固件是否加載成功,本文介紹開源鴻蒙OpenHarmony4.1系統下適配藍牙的方法,觸覺智能SBC3568主板演示,搭載了瑞芯微RK3568
    的頭像 發表于 11-08 10:11 ?464次閱讀
    OpenHarmony4.1藍牙芯片如何適配?觸覺智能<b class='flag-5'>RK3568</b><b class='flag-5'>主板</b><b class='flag-5'>SBC3568</b>演示
    主站蜘蛛池模板: 黄色网址视频在线观看 | 污污的网站免费阅读 | 欧美骚 | 亚洲第一页国产 | 国产免费高清福利拍拍拍 | 日操夜干 | 99久久精品免费看国产免费 | 久久久精品免费观看 | 久久全国免费久久青青小草 | 成人a网站 | 欧美午夜小视频 | 四虎影院成人在线观看 | 国产精品人成在线播放新网站 | 亚洲国产日韩女人aaaaaa毛片在线 | 国产精品乱码高清在线观看 | 久久夜色tv网站免费影院 | 亚综合| 久在草影院 | 国产成人综合自拍 | 伊人成人在线 | 在线观看www妖精免费福利视频 | 88av视频在线观看 | 日韩午夜r电影在线观看 | 国产视频h | 人人艹人人射 | 亚洲国内精品自在线影视 | 黄色短视频软件 | 粉嫩尤物在线456 | 男人天堂资源网 | 亚洲综合色婷婷 | 国产国产成人人免费影院 | 久久久国产精品网站 | 精品在线一区二区三区 | 四虎免费影院在线播放 | 国产成人综合一区人人 | 你懂得网址在线观看 | 男人天堂网在线 | 国产一级毛片午夜 | 色多多视频在线 | 亚洲伊人久久大香线蕉综合图片 | 色偷偷中文字幕 |