平台为6572的闪光灯正常但电筒无法控制
时间:10-02
整理:3721RD
点击:
平台为6572的闪光灯正常但电筒无法控制
控制代码如下 在闪光灯模式下,示波器读IO电平如下 GPIO14=1,GPIO15=0,GPIO16=1,闪光正常
在手电筒模式下 示波器读IO电平如下 GPIO14=0,GPIO15=1,GPIO16=1,手电懂不正常,也没根据软件的逻辑运行
目前还没查到IO复用问题,到现在不知道是什么原因,那位大侠不我分析分析
#ifdef GPIO_LEDS_STROBE
#define LEDS_TORCH_MODE 0
#define LEDS_FLASH_MODE 1
#define LEDS_CUSTOM_MODE_THRES 20
#define PLUSE_NUM 5
#define GPIO_CAMERA_ONEW_EN_PIN (GPIO14)
#define GPIO_CAMERA_TORCH_EN_PIN (GPIO15)
#define GPIO_CAMERA_FLASH_EN_PIN (GPIO16)
int FL_enable(void)
{
int pulse_count=0;
PK_DBG("%s: start\n", __func__);
mt_set_gpio_out(GPIO_CAMERA_ONEW_EN_PIN,GPIO_OUT_ONE); //wakeup enable chip
if( g_torch_mode == LEDS_FLASH_MODE )
{
mt_set_gpio_out(GPIO_CAMERA_FLASH_EN_PIN,GPIO_OUT_ONE);
}
PK_DBG("[constant_flashlight] enable flashlight flashlight success! \n"); */
}
else if( g_torch_mode == LEDS_TORCH_MODE ){
mt_set_gpio_out(GPIO_CAMERA_TORCH_EN_PIN,GPIO_OUT_ONE);
}
return 0;
}
int FL_disable(void)
{
PK_DBG("%s: start\n", __func__);
mt_set_gpio_out(GPIO_CAMERA_ONEW_EN_PIN,GPIO_OUT_ZERO);
mt_set_gpio_out(GPIO_CAMERA_FLASH_EN_PIN,GPIO_OUT_ZERO);
mt_set_gpio_out(GPIO_CAMERA_TORCH_EN_PIN,GPIO_OUT_ZERO);
return 0;
}
int FL_dim_duty(kal_uint32 duty)
{
PK_DBG("FL_dim_duty %d, thres %d", duty, LEDS_CUSTOM_MODE_THRES);
if(duty==0)
g_torch_mode=LEDS_TORCH_MODE;
else
g_torch_mode=LEDS_FLASH_MODE;
if((g_timeOutTimEMS == 0) && (duty > LEDS_CUSTOM_MODE_THRES))
{
PK_ERR("FL_dim_duty %d > thres %d, FLASH mode but timeout %d", duty, LEDS_CUSTOM_MODE_THRES, g_timeOutTimeMs);
g_torch_mode=LEDS_TORCH_MODE;
}
return 0;
}
int FL_init(void)
{
PK_DBG("%s: start\n", __func__);
mt_set_gpio_mode(GPIO_CAMERA_ONEW_EN_PIN,GPIO_MODE_00);
mt_set_gpio_dir(GPIO_CAMERA_ONEW_EN_PIN,GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_CAMERA_ONEW_EN_PIN,GPIO_OUT_ZERO);
mt_set_gpio_mode(GPIO_CAMERA_FLASH_EN_PIN,GPIO_MODE_00);
mt_set_gpio_dir(GPIO_CAMERA_FLASH_EN_PIN,GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_CAMERA_FLASH_EN_PIN,GPIO_OUT_ZERO);
mt_set_gpio_mode(GPIO_CAMERA_TORCH_EN_PIN,GPIO_MODE_00);
mt_set_gpio_dir(GPIO_CAMERA_TORCH_EN_PIN,GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_CAMERA_TORCH_EN_PIN,GPIO_OUT_ZERO);
FL_disable();
INIT_WORK(&workTimeOut, work_timeOutFunc);
return 0;
}
控制代码如下 在闪光灯模式下,示波器读IO电平如下 GPIO14=1,GPIO15=0,GPIO16=1,闪光正常
在手电筒模式下 示波器读IO电平如下 GPIO14=0,GPIO15=1,GPIO16=1,手电懂不正常,也没根据软件的逻辑运行
目前还没查到IO复用问题,到现在不知道是什么原因,那位大侠不我分析分析
#ifdef GPIO_LEDS_STROBE
#define LEDS_TORCH_MODE 0
#define LEDS_FLASH_MODE 1
#define LEDS_CUSTOM_MODE_THRES 20
#define PLUSE_NUM 5
#define GPIO_CAMERA_ONEW_EN_PIN (GPIO14)
#define GPIO_CAMERA_TORCH_EN_PIN (GPIO15)
#define GPIO_CAMERA_FLASH_EN_PIN (GPIO16)
int FL_enable(void)
{
int pulse_count=0;
PK_DBG("%s: start\n", __func__);
mt_set_gpio_out(GPIO_CAMERA_ONEW_EN_PIN,GPIO_OUT_ONE); //wakeup enable chip
if( g_torch_mode == LEDS_FLASH_MODE )
{
mt_set_gpio_out(GPIO_CAMERA_FLASH_EN_PIN,GPIO_OUT_ONE);
}
PK_DBG("[constant_flashlight] enable flashlight flashlight success! \n"); */
}
else if( g_torch_mode == LEDS_TORCH_MODE ){
mt_set_gpio_out(GPIO_CAMERA_TORCH_EN_PIN,GPIO_OUT_ONE);
}
return 0;
}
int FL_disable(void)
{
PK_DBG("%s: start\n", __func__);
mt_set_gpio_out(GPIO_CAMERA_ONEW_EN_PIN,GPIO_OUT_ZERO);
mt_set_gpio_out(GPIO_CAMERA_FLASH_EN_PIN,GPIO_OUT_ZERO);
mt_set_gpio_out(GPIO_CAMERA_TORCH_EN_PIN,GPIO_OUT_ZERO);
return 0;
}
int FL_dim_duty(kal_uint32 duty)
{
PK_DBG("FL_dim_duty %d, thres %d", duty, LEDS_CUSTOM_MODE_THRES);
if(duty==0)
g_torch_mode=LEDS_TORCH_MODE;
else
g_torch_mode=LEDS_FLASH_MODE;
if((g_timeOutTimEMS == 0) && (duty > LEDS_CUSTOM_MODE_THRES))
{
PK_ERR("FL_dim_duty %d > thres %d, FLASH mode but timeout %d", duty, LEDS_CUSTOM_MODE_THRES, g_timeOutTimeMs);
g_torch_mode=LEDS_TORCH_MODE;
}
return 0;
}
int FL_init(void)
{
PK_DBG("%s: start\n", __func__);
mt_set_gpio_mode(GPIO_CAMERA_ONEW_EN_PIN,GPIO_MODE_00);
mt_set_gpio_dir(GPIO_CAMERA_ONEW_EN_PIN,GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_CAMERA_ONEW_EN_PIN,GPIO_OUT_ZERO);
mt_set_gpio_mode(GPIO_CAMERA_FLASH_EN_PIN,GPIO_MODE_00);
mt_set_gpio_dir(GPIO_CAMERA_FLASH_EN_PIN,GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_CAMERA_FLASH_EN_PIN,GPIO_OUT_ZERO);
mt_set_gpio_mode(GPIO_CAMERA_TORCH_EN_PIN,GPIO_MODE_00);
mt_set_gpio_dir(GPIO_CAMERA_TORCH_EN_PIN,GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_CAMERA_TORCH_EN_PIN,GPIO_OUT_ZERO);
FL_disable();
INIT_WORK(&workTimeOut, work_timeOutFunc);
return 0;
}
问题解决 ,使能扣修改为
#define GPIO_CAMERA_ONEW_EN_PIN (GPIO16)
#define GPIO_CAMERA_TORCH_EN_PIN (GPIO15)
#define GPIO_CAMERA_FLASH_EN_PIN (GPIO14)
学习