吴忠躺衫网络科技有限公司

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

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

3天內不再提示

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

深圳觸覺智能 ? 來源:深圳觸覺智能 ? 作者:深圳觸覺智能 ? 2023-05-29 10:11 ? 次閱讀

前言

本文基于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、工業網關、智慧醫療、自助終端、智能零售、能源電力等行業。

圖片

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

圖片

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

硬件分析

圖片

圖片

圖片

硬件使用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 節點獲取電池狀態信息

圖片

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

#開啟打印信息
echo 1 > /sys/module/rk817_battery/parameters/dbg_level
#關閉打印信息
echo 0 > /sys/module/rk817_battery/parameters/dbg_level

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

圖片

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

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

wKgZomR0CcSAdsqhAAAVa2tLQy816.webp

電池校準

長時間關機后,讀取到的電量會和電池的實際電量有差異,這時候需要對電池進行校準,校準方法如下:
1. 移除DC,拔掉電池10秒以上再插入,電量計將會重新校準電量數據。

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

修改充電狀態上報

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

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

圖片

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

static int 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!n");
		return plug_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!n");
		return plug_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!n");
		return ret;
	}

	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!n");
		return ret;
	}

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

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

wKgaomR0CcWAF85zAABYpDYkW4A91.webp

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

圖片

此處可修改驅動,通過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 @@ static int 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!n");
+
+               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!n");
        }

        DBG("the battery dts info dump:n"
@@ -2119,10 +2125,18 @@ static int 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;
-                       else if (battery->chip_id == RK809_ID &&
-                                battery->plugin_trigger)
-                               val->intval = POWER_SUPPLY_STATUS_CHARGING;
-                       else
+                       else if (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;
+                               } else if (battery->plugin_trigger){
+                                       val->intval = POWER_SUPPLY_STATUS_CHARGING;
+                               } else {
+                                       val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
+                               }
+                       }else
                                val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
                }
                break;

電池狀態顯示

未接入電源時顯示如下

圖片

插入DC 12V 后顯示如下

圖片


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

    關注

    14

    文章

    1557

    瀏覽量

    77037
  • 電量計
    +關注

    關注

    2

    文章

    127

    瀏覽量

    31980
  • 開發板
    +關注

    關注

    25

    文章

    5121

    瀏覽量

    98191
  • 電池
    +關注

    關注

    84

    文章

    10675

    瀏覽量

    131311
  • 邊緣計算
    +關注

    關注

    22

    文章

    3121

    瀏覽量

    49515
  • RK3568
    +關注

    關注

    4

    文章

    525

    瀏覽量

    5232
收藏 人收藏

    評論

    相關推薦

    Linux系統更換開機logo方法教程,觸覺智能RK3562開發板演示

    本文介紹Linux系統更換開機logo方法教程,通用RK3566、RK3568RK3588、RK3576等開發板,觸覺
    的頭像 發表于 01-06 10:53 ?228次閱讀
    Linux系統更換開機logo方法教程,<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK</b>3562開發板演示

    瑞芯微平臺Android系統串口測試方法,觸覺智能RK3562開發板演示

    瑞芯微方案主板Android系統串口測試方法,通用RK3568RK3566、RK3588、RK3576等。觸覺
    的頭像 發表于 12-24 11:51 ?364次閱讀
    瑞芯微平臺Android系統串口測試方法,<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK</b>3562開發板演示

    RK3568內置MCU開發介紹之一

    ://wiki.youyeetoo.cn/zh/YY3568 RK3568的MCU核心需要使用串口調試,筆者這里使用的是UART4,這里也可以選擇其他的,不要跟AP核心的調試串口UAR
    的頭像 發表于 12-01 16:09 ?726次閱讀
    <b class='flag-5'>RK3568</b>內置MCU開發介紹之一

    【迅為】瑞芯微RK3588開發板RK3568開發板區別及優勢

    RK3568開發板
    的頭像 發表于 11-18 14:19 ?580次閱讀
    【迅為】瑞芯微<b class='flag-5'>RK</b>3588開發板<b class='flag-5'>RK3568</b>開發板區別及優勢

    瑞芯微RK3568 USB驅動

    瑞芯微RK3568 USB驅動程序
    發表于 11-11 14:18 ?2次下載

    RK3568燒錄工具

    RK3568 燒錄工具
    發表于 11-11 14:16 ?5次下載

    開發更便利!迅為RK3568/RK3588 定制分區鏡像發布

    開發更便利!迅為RK3568/RK3588 定制分區鏡像發布
    的頭像 發表于 11-11 14:00 ?588次閱讀
    開發更便利!迅為<b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588 定制分區鏡像發布

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

    當打開藍牙后沒有反應時,需要排查藍牙節點是否對應、固件是否加載成功,本文介紹開源鴻蒙OpenHarmony4.1系統下適配藍牙的方法,觸覺智能SBC3568主板演示,搭載了瑞芯微RK3568
    的頭像 發表于 11-08 10:11 ?454次閱讀
    OpenHarmony4.1藍牙芯片如何適配?<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK3568</b>主板SBC<b class='flag-5'>3568</b>演示

    瑞芯微RK3568開發板Linux編譯報錯404怎么辦?觸覺智能教你輕松解決

    本文介紹瑞芯微RK3568主板/開發板SDK編譯流程和編譯報錯404的解決方法,使用觸覺智能EVB3568鴻蒙開發板演示,具有豐富的視頻輸入輸出接口(HDMI/eDP/MIPI/LVD
    的頭像 發表于 11-05 11:02 ?444次閱讀
    瑞芯微<b class='flag-5'>RK3568</b>開發板Linux編譯報錯404怎么辦?<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b>教你輕松解決

    瑞芯微RK3566/RK3568 Android11使用OTA升級固件方法,深圳觸覺智能鴻蒙開發板演示,備戰第九屆華為ICT大賽

    本文介紹瑞芯微RK3566/RK3568在Android11系統OTA升級固件方法,使用觸覺智能的Purple Pi OH鴻蒙開發板演示,搭載了瑞芯微
    的頭像 發表于 10-12 11:57 ?663次閱讀
    瑞芯微<b class='flag-5'>RK</b>3566/<b class='flag-5'>RK3568</b> Android11使用OTA升級固件方法,<b class='flag-5'>深圳</b><b class='flag-5'>觸覺</b><b class='flag-5'>智能</b>鴻蒙開發板演示,備戰第九屆華為ICT大賽

    瑞芯微RK3568鴻蒙開發板OpenHarmony系統修改cfg文件權限方法

    本文適用于OpenHarmony開源鴻蒙系統修改cfg文件權限方法,深圳觸覺智能研發的RK3566、RK3568
    的頭像 發表于 09-11 13:26 ?1090次閱讀
    瑞芯微<b class='flag-5'>RK3568</b>鴻蒙開發板OpenHarmony系統修改cfg文件權限方法

    RK3568核心板橋梁監測設備接口應用

    RK3568核心板橋梁監測設備接口應用-迅為電子
    的頭像 發表于 07-24 15:18 ?406次閱讀
    <b class='flag-5'>RK3568</b>核心板橋梁監測設備接口應用

    RK3568開發板支持AMP雙系統

    RK3568開發板支持AMP雙系統
    的頭像 發表于 06-04 15:33 ?816次閱讀
    <b class='flag-5'>RK3568</b>開發板支持AMP雙系統

    深度對比!瑞芯微RK3562J比RK3568J好在哪里?

    作為瑞芯微的明星產品——RK3568J,憑借其出色的性能及豐富的外設接口成為國內眾多工業客戶的最佳選擇。隨著RK3568J的大規模應用,很多客戶開始針對RK3568J的價格偏高、功耗偏高等問題提出
    的頭像 發表于 04-29 08:07 ?1025次閱讀
    深度對比!瑞芯微<b class='flag-5'>RK</b>3562J比<b class='flag-5'>RK3568</b>J好在哪里?

    基于HD-RK3568-CORE設計的HD-RK3568-OPS主板上新!

    HD-RK3568-OPS主板基于HD-RK3568-CORE 工業級核心板設計,支持標準OPS接口,具有即插即用、操作簡單的特點,適用于數字標牌、自助終端、教育一體機等應用場景。
    的頭像 發表于 04-19 18:08 ?1116次閱讀
    基于HD-<b class='flag-5'>RK3568</b>-CORE設計的HD-<b class='flag-5'>RK3568</b>-OPS主板上新!
    大发888 dafa888游戏| 大庆冠通棋牌世界| 大英县| 送彩金百家乐官网平台| 百家乐游戏免费| 百家乐平台| 兴国县| 百家乐官网自动算牌软件| 任你博百家乐现金网| 大发888网页在线游戏| 百家乐官网最佳公式| 龍城百家乐官网的玩法技巧和规则| 百家乐买对子技巧| 百家乐必胜| 潘多拉百家乐官网的玩法技巧和规则 | 属蛇和属马合作做生意谁吃亏| 威尼斯人娱乐城网址是什么| 百家乐官网稳赢玩法| 永利高百家乐开户| 大发888娱乐城好吗| 百家乐官网高命中打法| 百家乐官网游戏打水方法| 百家乐如何看牌| 澳门顶级赌场娱乐网| 易胜博百家乐官网娱乐城| 尊龙百家乐娱乐场开户注册| 永和县| 赌百家乐咋赢对方| 亲朋棋牌捕鱼技巧| 丽都百家乐官网的玩法技巧和规则 | 百家乐官网园首选海立方| 大发888是什么软件| 678百家乐官网博彩娱乐网| 广发百家乐的玩法技巧和规则| 全讯网qx1860.com| 百家乐官网网上娱乐城| 百家乐能破解| 太阳百家乐官网3d博彩通| 百家乐规律打法| 现金百家乐官网攻略| 皇马百家乐的玩法技巧和规则|