请问,双摄像头切换在驱动里应该如何操作呢?
wayen 11:34:28
请问,双摄像头切换在驱动里应该如何操作呢?
回复奔逸玄思 11:36:21
。
回复123456 11:44:37
mtk 的话是用不同的GPIO来控制CMPDN
有双摄像头的工程的话,看看,CAMERA_hw.c 和 image_sensor.c 就明白了
回复logical 11:45:30
上层的怎么切?怎么添加?
回复123456 11:46:46
image_sensor.c
里面会定义一个全局变量的
上层切换的时候会修改这个全局变量的
回复123456 11:47:42
根据全局变量,来点亮camera,进行初始化
回复wayen 11:54:55
const CameraModule CameraModules[]=
{
/*power_Pin Reset_Pin Cmpdn_Pin CLK_Pin Data_Pin Direction*/
{37, 10, 11, 8, 9, 0x00},//hou
{38, 10, 27, 8, 9, 0x00},//qian
}
我单独打开后摄像头或前摄像头的pin脚定义是能点亮的,但是两个都打开时,默认后摄像头可以亮,切换到前摄像头时就提示“装置未就绪”。为什么呢?
回复奔逸玄思 11:55:56
看看CMPDN这个pin
回复奔逸玄思 11:56:06
要一个高一个低
回复执着 11:56:43
如果都是高有效,那就有效的那个为低啊
回复奔逸玄思 11:57:51
power其实可以接到一起的
123456 12:34:45
wayen(1162228408) 11:54:54
换到前摄像头时就提示“装置未就绪”。为什么呢?
切换之后,打印sensor 的ID看看,
回复wayen 12:35:40
同样的主板,同样的软件,双摄像头,暂时未打开双摄像头切换功能,只对前摄像头操作。现在有一个现象:如果我后摄像头不装到主板上,前摄像头能正常点亮,如何把后摄像头扣上前摄像头打不开,后摄像头却能亮不过是花屏。
回复123456 12:38:03
切换的时候Cmpdn_Pin有问题
在sensor的init里面没有控制好
回复123456 12:39:18
进initial,
Cmpdn_Pin 都来高
reset 完了之后,再拉低其中一个
回复123456 12:40:07
能不能把你的init贴出来看看呢
回复wayen 12:42:51
现在我不切换了,只当是单摄像头。只是后摄像头扣上与否的区别,就倒置前摄像头点亮或点不亮
for(i=0;i<CAMERA_MODULE_NUM;i++)
{
GPIO_InitIO(1, CameraModules.Module_Power_Pin);
GPIO_ModeSetup(CameraModules.Module_Power_Pin, 0);
GPIO_WriteIO(1, CameraModules.Module_Power_Pin);
//Power Open
#if defined(MT6318)
pMIC_sw_sel(1);
PMIC_vasw_enable(KAL_TRUE);
#endif
GPIO_InitIO(1, CameraModules.Module_Cmpdn_Pin);
GPIO_ModeSetup(CameraModules.Module_Cmpdn_Pin, 0);
//Powerdown set low
if(get_coms_sensor_pdn_config() == HIGH_POWERDOWN)
GPIO_WriteIO(0, CameraModules.Module_Cmpdn_Pin);
else
GPIO_WriteIO(1, CameraModules.Module_Cmpdn_Pin);
//Reset set high
GPIO_ModeSetup(CameraModules.Module_Reset_Pin, 0);
GPIO_InitIO(1, CameraModules.Module_Reset_Pin);
GPIO_WriteIO(1, CameraModules.Module_Reset_Pin);
// SCCB set high
GPIO_ModeSetup(CameraModules.Module_Clk_Pin,0x0);
GPIO_ModeSetup(CameraModules.Module_Data_Pin,0x0);
GPIO_InitIO(1, CameraModules.Module_Clk_Pin);
GPIO_InitIO(1, CameraModules.Module_Data_Pin);
GPIO_WriteIO(1, CameraModules.Module_Clk_Pin);
GPIO_WriteIO(1, CameraModules.Module_Data_Pin);
}
回复奔逸玄思 12:43:40
后摄像头 必须是高阻状态的
回复奔逸玄思 12:43:48
要不然是会导致你说的问题,
回复123456 12:49:22
//Powerdown set low
if(get_coms_sensor_pdn_config() == HIGH_POWERDOWN)
GPIO_WriteIO(0, CameraModules.Module_Cmpdn_Pin);
else
GPIO_WriteIO(1, CameraModules.Module_Cmpdn_Pin);
回复123456 12:49:34
这里似乎有问题
回复123456 12:50:26
GPIO_WriteIO(0, CameraModules[0].Module_Cmpdn_Pin);
GPIO_WriteIO(0, CameraModules[1].Module_Cmpdn_Pin);
你根据条件查查,是不是都拉低了
回复123456 12:51:16
都拉低,装一个摄像头肯定是没有问题,但装两个肯定是有干扰的