91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【深圳觸覺(jué)智能技術(shù)分享】RK3568 RK809電量計(jì)電池調(diào)試

深圳觸覺(jué)智能 ? 來(lái)源:深圳觸覺(jué)智能 ? 作者:深圳觸覺(jué)智能 ? 2023-05-29 10:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

本文基于IDO-SBC3568主板介紹說(shuō)明PMIC RK809電量計(jì)的調(diào)試方法。

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

IDO-SBC3568-V1 可作為RK3568開(kāi)發(fā)評(píng)估板,也普遍適用于各種智慧顯示終端產(chǎn)品、視頻類(lèi)終端產(chǎn)品、工業(yè)自動(dòng)化終端產(chǎn)品和邊緣計(jì)算網(wǎng)關(guān)類(lèi)產(chǎn)品。應(yīng)用可覆蓋邊緣計(jì)算、人工智能、工業(yè)HMI、工業(yè)網(wǎng)關(guān)、智慧醫(yī)療、自助終端、智能零售、能源電力等行業(yè)。

圖片

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

圖片

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

硬件分析

圖片

圖片

圖片

硬件使用PMIC RK809電量計(jì)加BQ24610的充電方案,同時(shí)將GPIO1_D1作為12V DC 狀態(tài)檢測(cè)功能,當(dāng)插入電源時(shí)GPIO1_D1將會(huì)被拉低,拔插電源時(shí)GPIO1_D1將上拉至1.8V。

內(nèi)核修改

配置內(nèi)核開(kāi)啟以下驅(qū)動(dòng)

RTC_DRV_RK808 [=y]

BATTERY_RK817 [=y]

設(shè)備樹(shù)修改如下:

RK809 沒(méi)有充電功能,只需要配置 battery 節(jié)點(diǎn)。電源檢測(cè)IO使用gpio-charger驅(qū)動(dòng),并配置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>;/*開(kāi)路電壓,是第一次接電池開(kāi)機(jī)、長(zhǎng)時(shí)間關(guān)機(jī)后再開(kāi)機(jī)、長(zhǎng)時(shí)間休眠后校正庫(kù)侖計(jì)的依據(jù),
													0%~100%的電量細(xì)分成 21 個(gè)點(diǎn),步進(jìn) 5%電量*/
			design_capacity = <1500>;       //實(shí)際電池容量,單位:mah
			design_qmax = <1500>;           //最大容量值
			design_max_voltage = <8400>;	  //最大電壓
			bat_res = <180>;                //電池內(nèi)阻
			sleep_enter_current = <300>;    //進(jìn)入松弛模式的條件之一
			sleep_exit_current = <300>;     //退出松弛模式的條件之一
			sleep_filter_current = <100>;   //過(guò)濾無(wú)效的松弛電流。
			power_off_thresd = <7000>;      //期待的系統(tǒng)關(guān)機(jī)電壓,單位:mV
			zero_algorithm_vol = <7700>;    //進(jìn)入電壓+庫(kù)侖計(jì)放電模式的電壓值
			max_soc_offset = <60>;          //開(kāi)機(jī)校正時(shí)允許的最大電量誤差。
			monitor_sec = <5>;              //輪詢(xún)時(shí)間 單位秒
			sample_res = <10>;              //電池端附近的采樣電阻大小
			energy_mode = <1>;              //該值為 1 時(shí)表示盡可能采取將電池電量放完的方式,為 0 時(shí)表示盡量考慮曲線(xiàn)平滑的合理性
			fb_temperature = <105>;         //芯片熱保護(hù)溫度閾值
			virtual_power = <0>;            //假電池模式(測(cè)試模式)
			bat_res_up = <140>;             //BATDIV上拉分壓電阻
			bat_res_down = <20>;						//BATDIV下拉分壓電阻
			register_chg_psy = <0>;         //是否通過(guò)RK809上報(bào)充電狀態(tài)
			external_chg_psy = <1>;					//配置外部DC檢測(cè)上報(bào)充電狀態(tài)
		};
};

電池調(diào)試

驅(qū)動(dòng)文件路徑為:kernel/drivers/power/supply/rk817_battery.c

系統(tǒng)啟動(dòng)后可從 /sys/class/power_supply/battery/uevent 節(jié)點(diǎn)獲取電池狀態(tài)信息。

圖片

支持應(yīng)用層配置驅(qū)動(dòng)調(diào)試信息的輸出,配置方法如下:

#開(kāi)啟打印信息
echo 1 > /sys/module/rk817_battery/parameters/dbg_level
#關(guān)閉打印信息
echo 0 > /sys/module/rk817_battery/parameters/dbg_level

開(kāi)啟后詳細(xì)的電池?cái)?shù)據(jù)將會(huì)輸出至調(diào)試串口,內(nèi)容如下:

圖片

使用gpio-charger配置GPIO1_D1為充電檢測(cè),同樣會(huì)創(chuàng)建一個(gè)charger的上報(bào)事件,可從

/sys/class/power_supply/charger/uevent 節(jié)點(diǎn)中獲取到當(dāng)前DC插入狀態(tài)。

wKgZomR0CcSAdsqhAAAVa2tLQy816.webp

電池校準(zhǔn)

長(zhǎng)時(shí)間關(guān)機(jī)后,讀取到的電量會(huì)和電池的實(shí)際電量有差異,這時(shí)候需要對(duì)電池進(jìn)行校準(zhǔn),校準(zhǔn)方法如下:
1. 移除DC,拔掉電池10秒以上再插入,電量計(jì)將會(huì)重新校準(zhǔn)電量數(shù)據(jù)。

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

修改充電狀態(tài)上報(bào)

以上的方案和電路,當(dāng)12V供電拔出時(shí)rk817_battery驅(qū)動(dòng)中上報(bào)的充電狀態(tài)依舊是Charging。

分析充電狀態(tài)上報(bào)代碼如下:

圖片

充電狀態(tài)是由plugin_trigger決定,驅(qū)動(dòng)中分別注冊(cè)了plugin和plugout中斷,用于檢測(cè)USB充電拔插事件。驅(qū)動(dòng)代碼如下:

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有關(guān),當(dāng)VDC電壓大于0.55V時(shí),會(huì)將寄存器設(shè)置為1,否則設(shè)置為0。

wKgaomR0CcWAF85zAABYpDYkW4A91.webp

本文調(diào)試的主板沒(méi)有配置DC拔插來(lái)修改VDC狀態(tài),VDC在系統(tǒng)上電后VDC始終保持上拉至1.2V,PLUG_IN_STS寄存器值始終保持為1。VDC部分電路如下:

圖片

此處可修改驅(qū)動(dòng),通過(guò)GPIO1_D1檢測(cè)外部DC的插入來(lái)上報(bào)充電狀態(tài)。在dts battery節(jié)點(diǎn)中增加自定義參數(shù)external_chg_psy用于配置外部充電檢測(cè)上報(bào)。

同時(shí)內(nèi)核修改充電狀態(tài)上報(bào)的邏輯,修改內(nèi)容如下:

--- 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;

電池狀態(tài)顯示

未接入電源時(shí)顯示如下

圖片

插入DC 12V 后顯示如下

圖片


審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1619

    瀏覽量

    82817
  • 電量計(jì)
    +關(guān)注

    關(guān)注

    2

    文章

    142

    瀏覽量

    33221
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6291

    瀏覽量

    118076
  • 電池
    +關(guān)注

    關(guān)注

    85

    文章

    11525

    瀏覽量

    143394
  • 邊緣計(jì)算
    +關(guān)注

    關(guān)注

    22

    文章

    3527

    瀏覽量

    53443
  • RK3568
    +關(guān)注

    關(guān)注

    5

    文章

    644

    瀏覽量

    7940
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK817/RK809音頻Codec停止播放雜音問(wèn)題:內(nèi)核驅(qū)動(dòng)修復(fù)與技術(shù)解析

    在嵌入式音頻開(kāi)發(fā)領(lǐng)域,Codec(編解碼器) 是實(shí)現(xiàn)音頻輸入輸出的核心組件。近期,基于 Rockchip 平臺(tái)的開(kāi)發(fā)者反饋了一個(gè)典型問(wèn)題:RK817/RK809 Codec 在停止播放后會(huì)出現(xiàn)明顯的雜音,嚴(yán)重影響終端設(shè)備的音頻體驗(yàn)。今天我們就來(lái)深度解析這個(gè)問(wèn)題的根源,并分
    的頭像 發(fā)表于 02-09 16:32 ?124次閱讀
    <b class='flag-5'>RK</b>817/<b class='flag-5'>RK809</b>音頻Codec停止播放雜音問(wèn)題:內(nèi)核驅(qū)動(dòng)修復(fù)與<b class='flag-5'>技術(shù)</b>解析

    深入解析RK3568引腳控制核心:rk3568-pinctrl.dtsi文件的作用與實(shí)踐(可應(yīng)用rk全系列)

    在嵌入式 Linux 開(kāi)發(fā)中,設(shè)備樹(shù)(Device Tree) 是連接硬件與軟件的關(guān)鍵橋梁,而針對(duì) Rockchip RK3568 芯片的rk3568-pinctrl.dtsi文件,更是掌控芯片引腳
    的頭像 發(fā)表于 02-05 14:01 ?862次閱讀
    深入解析<b class='flag-5'>RK3568</b>引腳控制核心:<b class='flag-5'>rk3568</b>-pinctrl.dtsi文件的作用與實(shí)踐(可應(yīng)用<b class='flag-5'>rk</b>全系列)

    RK3568 Android11編譯環(huán)境搭建及報(bào)錯(cuò)解決指南

    在嵌入式開(kāi)發(fā)領(lǐng)域,RK3568 芯片憑借其出色的性能被廣泛應(yīng)用?;?RK3568 進(jìn)行 Android11 系統(tǒng)的開(kāi)發(fā),首先要搭建好編譯環(huán)境。本文將詳細(xì)介紹在 Ubuntu20.04 系統(tǒng)上搭建 RK3568 Android1
    的頭像 發(fā)表于 02-04 17:37 ?1698次閱讀
    <b class='flag-5'>RK3568</b> Android11編譯環(huán)境搭建及報(bào)錯(cuò)解決指南

    迅為RK3576對(duì)比RK3568:AI算力與接口的全面躍遷

    迅為RK3576對(duì)比RK3568:AI算力與接口的全面躍遷
    的頭像 發(fā)表于 12-22 15:24 ?1614次閱讀
    迅為<b class='flag-5'>RK</b>3576對(duì)比<b class='flag-5'>RK3568</b>:AI算力與接口的全面躍遷

    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解

    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解
    的頭像 發(fā)表于 11-21 13:25 ?1191次閱讀
    【迅為工業(yè)<b class='flag-5'>RK3568</b>穩(wěn)定可靠】itop-<b class='flag-5'>3568</b>開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):<b class='flag-5'>RK3568</b>內(nèi)核模塊符號(hào)導(dǎo)出詳解

    【HZ-RK3568開(kāi)發(fā)板免費(fèi)體驗(yàn)】HZ-RK3568開(kāi)發(fā)板操作系統(tǒng)編譯

    開(kāi)發(fā)環(huán)境搭建好了后,接下來(lái)就是HZ-RK3568開(kāi)發(fā)板操作系統(tǒng)編譯工作。 一、menuconfig 先確保虛擬機(jī)的開(kāi)發(fā)環(huán)境OK。 sudo apt install build-essential
    發(fā)表于 08-17 09:15

    迅為RK3568?重制版RK3568驅(qū)動(dòng)指南全面升級(jí)

    迅為RK3568 重制版RK3568驅(qū)動(dòng)指南全面升級(jí)
    的頭像 發(fā)表于 07-28 15:25 ?2529次閱讀
    迅為<b class='flag-5'>RK3568</b>?重制版<b class='flag-5'>RK3568</b>驅(qū)動(dòng)指南全面升級(jí)

    Ubuntu系統(tǒng)安裝Docker詳細(xì)攻略,觸覺(jué)智能RK3568開(kāi)發(fā)板演示

    本文介紹Ubuntu系統(tǒng)安裝Docker方法,使用觸覺(jué)智能EVB3568鴻蒙開(kāi)發(fā)板演示,搭載瑞芯微RK3568,四核A55處理器,主頻2.0Ghz,1T算力NPU;支持開(kāi)源鴻蒙
    的頭像 發(fā)表于 06-06 18:05 ?958次閱讀
    Ubuntu系統(tǒng)安裝Docker詳細(xì)攻略,<b class='flag-5'>觸覺(jué)</b><b class='flag-5'>智能</b><b class='flag-5'>RK3568</b>開(kāi)發(fā)板演示

    RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第130章 GPIO的調(diào)試方法

    RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第130章 GPIO的調(diào)試方法
    的頭像 發(fā)表于 06-03 11:32 ?1288次閱讀
    <b class='flag-5'>RK3568</b>驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第130章 GPIO的<b class='flag-5'>調(diào)試</b>方法

    Rockchip RK3568技術(shù)參考手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《Rockchip RK3568技術(shù)參考手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 05-17 17:24 ?53次下載

    揭秘RK3568 HDMI IN 實(shí)現(xiàn)核心:RK628D芯片的橋接方案

    MIPI-CSI才能獲取視頻信息。本文詳細(xì)介紹了基于RK3568平臺(tái),通過(guò)視頻橋接芯片RK628D將HDMI-IN信號(hào)轉(zhuǎn)換為MIPI-CSI信號(hào)的調(diào)試過(guò)程。一、背景介
    的頭像 發(fā)表于 04-18 08:32 ?2698次閱讀
    揭秘<b class='flag-5'>RK3568</b> HDMI IN 實(shí)現(xiàn)核心:<b class='flag-5'>RK</b>628D芯片的橋接方案

    HZ-EVM-RK3568-技術(shù)規(guī)格書(shū)

    電子發(fā)燒友網(wǎng)站提供《HZ-EVM-RK3568-技術(shù)規(guī)格書(shū).pdf》資料免費(fèi)下載
    發(fā)表于 04-17 15:47 ?2次下載

    HZ-CORE-RK3568-規(guī)格書(shū)

    電子發(fā)燒友網(wǎng)站提供《HZ-CORE-RK3568-規(guī)格書(shū).pdf》資料免費(fèi)下載
    發(fā)表于 04-17 15:45 ?0次下載

    rk3568開(kāi)發(fā)工具

    rk3568開(kāi)發(fā)工具
    發(fā)表于 04-16 17:03 ?7次下載

    NPU性能深度評(píng)測(cè):瑞芯微RK3588、RK3576、RK3568、RK3562

    隨著AI技術(shù)不斷發(fā)展,越來(lái)越多的嵌入式設(shè)備開(kāi)始集成NPU(神經(jīng)網(wǎng)絡(luò)處理單元),以實(shí)現(xiàn)更高效的AI推理。作為國(guó)產(chǎn)芯片廠(chǎng)商的佼佼者,瑞芯微推出的RK3588、RK3576、RK3568、
    的頭像 發(fā)表于 04-03 11:17 ?7128次閱讀
    NPU性能深度評(píng)測(cè):瑞芯微<b class='flag-5'>RK</b>3588、<b class='flag-5'>RK</b>3576、<b class='flag-5'>RK3568</b>、<b class='flag-5'>RK</b>3562