|
SDA,SCL是IIC接口,控制摄像头的一些属性,比如色温,分辨率这些;PCLK(像素时钟输出)、HSYNC、VSYNC就是控制每个像素点输出数据的时钟;HSYNC换行时钟、VSYNC换帧时钟。
应该是先收到(VSYNC)场中断,再收到HSYNC行中断,然后收到第一个像素的时钟信号PCLK,现在就可以接收像素数据了,然后收到一个像素时钟中断就接收一次数据,直到这行接收完成。
对于stm32的IO口驱动的话就是这样,VSYNC换帧时钟到来时就是说明新的一帧图像将要传出,HSYNC(换行同步信号)就是新的一行将要传出;如果选择的是RGB565格式的,那么就是一个Pclk一个像素;
如果是RGB888就是每3个pclk一个像素。
如果是用的STM32F4以上的芯片就有DCMI接口,就可以不用管中间的时序问题,如果你是其他型号的STM32我建议用带FIFO的摄像头模块,有了FIFO pclk这个时钟你给的,而不是被动的去接收这个时钟;
而且如果是直接去接收pclk信号,一般的STM32是无法驱动的,摄像头pclk一般在27MHz,根本无法响应,我是做过实验的,我之前直接驱动是用STM32直接给XCLK,就是摄像头的晶振时钟输入;画面过饱和,而且一秒就3~4帧的样子;直接驱动是不可行的,用带FIFIO的就好很多。
如果摄像头同步信号VSYNC与HSYNC有问题,就会出现乱码图像,甚至不出图的原因.
因为读到死区了,如果不使用摄像头的同步时钟,而自己延时,采样时间对不上就会这样.
需要修改延时函数.把采样时间和摄像头的输出时间对上.
这种情况类似于串口波特率对不上收到的就是乱码.
如果单片机采用摄像头的同步时钟,就类似于串口方式0,就不需要延时了.
|
|