使用iMX53 IPU SISG功能控制摄像头闪光灯

来源:互联网 发布:知乎能用百度登录吗 编辑:程序博客网 时间:2024/04/29 14:22

最近调试MT9P111 摄像头时camera FAE方面要求使用主控控制闪关灯(具体情况好像是用sensor控制太麻烦了大笑)。发了几封邮件要求提供相关参数配置,但拿到的参数连闪关灯都无法打开。

看了闪光灯控制芯片数据手册,其基本方法为:1.使能闪光灯模式 2.enable闪光灯。尝试使用定时器控制闪光灯,但效果不理想。主要为以下两方面原因:
1.闪光灯必须在Vsync信号输出前打开,否则图片就可能会出现前半部分未被闪光。
2.不同尺寸图片闪光时间略有差异。最好在Vsync停止后关闭闪光灯。

在阅读iMX53 IPU部分数据手册时发现其提供闪光灯与机械快门控制功能SISG(Still Image Synchronization Generator),硬件解决上面遇到的2大头疼问题得意。模块框图如下:


工作原理为SISG COUNTER对被Vsync使能的SISG_CLK时钟计数,当该计数器值大于SISG_SET寄存器设定值时将sisg_out对应引脚执行SET操作,当该计数器继续计数到大于SISG_CLR寄存器值时对isg_out对应引脚执行CLR操作。这样就可以产生与Vsync相关的触发脉冲了,并且脉冲的起始边沿offset与脉宽都可以用户配置。

接下来就是添加IPU的SISG驱动,一共就4个寄存器需要控制。半天时间搞定了,经过测试效果相当不错。

需要注意的是IPU_SISG_CTRL0寄存器的MCU_ACTV_TRIG位,最新手册描述为:Reserved, should be cleared. 实际是可以用的。需要先SET然后CLR,用以CPU启动SISG模块。


原创粉丝点击