Forráskód Böngészése

update:pm设置IOVOL

alienwalker 2 éve
szülő
commit
3b6b4d5e17
2 módosított fájl, 35 hozzáadás és 38 törlés
  1. 1 2
      luat/include/luat_pm.h
  2. 34 36
      luat/modules/luat_lib_pm.c

+ 1 - 2
luat/include/luat_pm.h

@@ -24,8 +24,7 @@ enum
 // 电平类
 enum
 {
-	LUAT_PM_IOVLOT_GPIO,
-	LUAT_PM_IOVLOT_AONGPIO
+	LUAT_PM_ALL_GPIO,
 };
 
 int luat_pm_request(int mode);

+ 34 - 36
luat/modules/luat_lib_pm.c

@@ -317,38 +317,38 @@ static int l_pm_power_ctrl(lua_State *L) {
     return 1;
 }
 
-// /**
-// IO电平控制,当前仅EC618系列可用
-// @api pm.ioVolt(id, val)
-// @int 电平id, 例如 pm.IOVLOT_GPIO, pm.IOVLOT_AONGPIO
-// @int 电平值,单位毫伏
-// @return boolean 处理结果true成功,false失败
-// @usage
-// -- EC618系列设置IO电平, 范围 1650 ~ 3400 , 单位毫伏, 步进50mv
-// -- 例如Air780E/Air600E/Air700E/Air780EG
-// -- 注意, 这里的设置优先级会高于硬件IOSEL脚的配置
-// -- 但开机时依然先使用硬件配置,直至调用本API进行配置, 所以io电平会变化
-// -- pm.ioVolt(pm.IOVLOT_GPIO, 3300)    -- 对应VDD_EXT电压域
-// -- pm.ioVolt(pm.IOVLOT_AONGPIO, 3300) -- 对应LDOAON电压域
-//  */
-// static int l_pm_iovolt_ctrl(lua_State *L) {
-// 	int val = 3300;
-//     int id = luaL_checkinteger(L, 1);
-//     if (lua_isboolean(L, 2)) {
-//     	val = lua_toboolean(L, 2);
-//     }
-//     else if (lua_isinteger(L, 2)) {
-//         val = luaL_checkinteger(L, 2);
-//     }
-//     lua_pushboolean(L, !luat_pm_iovolt_ctrl(id, val));
-//     return 1;
-// }
+/**
+IO电平电压控制,当前仅EC618系列可用
+@api pm.ioVol(id, val)
+@int 电平id,目前只有pm.IOVOL_ALL_GPIO
+@int 电平值,单位毫伏
+@return boolean 处理结果true成功,false失败
+@usage
+-- EC618系列设置IO电平, 范围 1650 ~ 2000,2650~3400 , 单位毫伏, 步进50mv
+-- 例如Air780E/Air600E/Air700E/Air780EG
+-- 注意, 这里的设置优先级会高于硬件IOSEL脚的配置
+-- 但开机时依然先使用硬件配置,直至调用本API进行配置, 所以io电平会变化
+-- pm.ioVol(pm.IOVOL_ALL_GPIO, 3300)    -- 所有GPIO高电平输出3.3V
+-- pm.ioVol(pm.IOVOL_ALL_GPIO, 1800)    -- 所有GPIO高电平输出1.8V
+*/
+static int l_pm_iovolt_ctrl(lua_State *L) {
+int val = 3300;
+ int id = luaL_checkinteger(L, LUAT_PM_ALL_GPIO);
+ if (lua_isboolean(L, 2)) {
+	val = lua_toboolean(L, 2);
+ }
+ else if (lua_isinteger(L, 2)) {
+	 val = luaL_checkinteger(L, 2);
+ }
+ lua_pushboolean(L, !luat_pm_iovolt_ctrl(id, val));
+ return 1;
+}
 
-// #ifndef LUAT_COMPILER_NOWEAK
-// LUAT_WEAK int luat_pm_iovolt_ctrl(int id, int val) {
-//     return -1;
-// }
-// #endif
+#ifndef LUAT_COMPILER_NOWEAK
+LUAT_WEAK int luat_pm_iovolt_ctrl(int id, int val) {
+ return -1;
+}
+#endif
 
 
 /**
@@ -393,7 +393,7 @@ static const rotable_Reg_t reg_pm[] =
     { "shutdown",       ROREG_FUNC(l_pm_power_off)},
     { "reboot",         ROREG_FUNC(l_rtos_reboot)},
 	{ "power",          ROREG_FUNC(l_pm_power_ctrl)},
-    // { "ioVolt",         ROREG_FUNC(l_pm_iovolt_ctrl)},
+    { "ioVol",         ROREG_FUNC(l_pm_iovolt_ctrl)},
     { "wakeupPin",         ROREG_FUNC(l_pm_wakeup_pin)},
 
 
@@ -419,10 +419,8 @@ static const rotable_Reg_t reg_pm[] =
     { "DAC_EN",         ROREG_INT(LUAT_PM_POWER_DAC_EN_PIN)},
     //@const PWK_MODE number 是否开启ec618的powerkey滤波模式,true开,注意滤波模式下reset变成直接关机
     { "PWK_MODE",       ROREG_INT(LUAT_PM_POWER_POWERKEY_MODE)},
-    //@const IOVLOT_GPIO 普通GPIO电平控制,当前仅ec618系列可用,对应VDD_EXT电压域
-    { "IOVLOT_GPIO",    ROREG_INT(LUAT_PM_IOVLOT_GPIO)},
-    //@const IOVLOT_GPIO AONGPIO电平控制,当前仅ec618系列可用,对应LDOAON电压域
-    { "IOVLOT_AONGPIO", ROREG_INT(LUAT_PM_IOVLOT_AONGPIO)},
+    //@const IOVL 所有GPIO高电平电压控制,当前仅ec618系列可用
+    { "IOVOL_ALL_GPIO",    ROREG_INT(LUAT_PM_ALL_GPIO)},
 	{ NULL,             ROREG_INT(0) }
 };