20250607在荣品的PRO-RK3566开发板的Android13下使用i2c-tools工具中的i2cget+i2cset来读写PMIC芯片RK809的寄存器
console:/ # i2cget -f -y 0 0x20 0xf7
console:/ # i2cset -f -y 0 0x20 0xf7 0xc6 b
20250607在荣品的PRO-RK3566开发板的Android13下使用i2c-tools工具中的i2cget+i2cset来读写PMIC芯片RK809的寄存器
2025/6/7 9:17
缘起:使用的是荣品的PRO-RK3566开发板,RK3566+RK809。
在Android13下需要精细化调整开关机时间+充电。
那就深入琢磨RK809的寄存器吧!
1、根据RK809的DATASHEET,短按开机【100ms/500ms】/长按关机
我在网上找到的DATASHEET是V1.0的,据说有V1.4的或者更新的?
如果有,方便的话,发一下。
2、我们希望长按2s开机。
如果 RK809的开机模式是写死了。我司需要 等待 2s时间 【以防 误操作/误触发】
可以使用这个上电逻辑不?
先让 RK809检测到500ms 开机指令,如果检测到,先【清除掉 寄存器中的开机指示?】,然后让 RK809等待1.5s == 1500ms,
现在 在 检测 电源键 是否还是按下的。如果是的。走正常的开机逻辑。
如果不是,就判定为 误操作,关机了。
或者您这边有更好的 上电逻辑/建议?
1、既要长按【3s】开机,
2、又要【带2节电池的情况下】插入适配器自动开机!
console:/ #
console:/ #
console:/ # i2cget -f -y 0 0x20 0xf7
0x86
console:/ #
console:/ # i2cset -f -y 0 0x20 0xf7 0xc6
i2cset: mode too long (see "i2cset --help")
1|console:/ #
1|console:/ # i2cset --help
Toybox 0.8.6-android multicall binary (see toybox --help)
usage: i2cset [-fy] BUS CHIP ADDR VALUE... MODE
Write an i2c register. MODE is b for byte, w for 16-bit word, i for I2C block.
-f Force access to busy devices
-y Answer "yes" to confirmation prompts (for script use)
console:/ #
console:/ # i2cset -f -y 0 0x20 0xf7 0xc6 b
console:/ #
console:/ # i2cget -f -y 0 0x20 0xf7
0xc6
console:/ #
console:/ #


console:/ # i2cget -f -y 0 0x20 0xf7
0x06
console:/ #
console:/ #
console:/ # i2cget -f -y 0 0x20 0xf0
0x82
console:/ #
console:/ #
console:/ # i2cget -f -y 0 0x20 0xf5
0x40
console:/ #
console:/ # i2cget -f -y 0 0x20 0xf6
0x08
console:/ # i2cget -f -y 0 0x20 0xfA
0x00
console:/ #
拔掉时配置,只接电池





参考资料:
https://blog.csdn.net/tianlai1009/article/details/107173710/
RK809搞一下长按PWR键重启
TE_ET
于 2020-07-07 09:18:51 发布
拿到的源码默认长按关机,短按开机,
不要长按关机,
只要长按重启
那么看一下规格书:
看一下驱动:
没有做这个寄存器的配置?i2cset测试一下:
i2cget -f -y 0 0x20 0xf7
0x86
默认是86,长按关机,
那自己加一下试试:
i2cset -f -y 0 0x20 0xf7 0xc6
测试成功。
自己加一下寄存器初始化:
/* power down configuration 0xf7 */
#define RK817_PWR_KEY_LONG_PRESS_MASK BIT(6)
#define RK817_PWR_KEY_LONG_PRESS_H BIT(6)
#define RK817_PWR_KEY_LONG_PRESS_L (0)
static const struct rk808_reg_data rk817_pre_init_reg[] = {
{RK817_RTC_CTRL_REG, RTC_STOP, RTC_STOP},
{RK817_GPIO_INT_CFG, RK817_INT_POL_MSK, RK817_INT_POL_L},
{RK817_SYS_CFG(1), RK817_HOTDIE_TEMP_MSK | RK817_TSD_TEMP_MSK,
RK817_HOTDIE_105 | RK817_TSD_140},
{RK817_PMIC_PWRON_KEY,RK817_PWR_KEY_LONG_PRESS_MASK,RK817_PWR_KEY_LONG_PRESS_H}
};

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)