您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 3. BF561开发板的CMOS摄像头接口设计实验
本帖共有1092个阅读者
发表帖子 发表投票 回复主题
3. BF561开发板的CMOS摄像头接口设计实验
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
3. BF561开发板的CMOS摄像头接口设计实验

实验名称:CMOS摄像头模块拍照实验

实验目的:学习CMOS采集图像原理,学习ADSP-BF561处理器利用PPI接口,扩展CmosSensor的设计方法及程序设计

实验设备:ADSP-BF561-EZKIT开发板,ADSP-EDU-BF561教学实验平台( CmosSensor模块)


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/12/3 10:25:21
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

实验内容及原理:

l  内容:利用ADSP-BF561处理器PPI总线接口单元与CMOS子卡连接,通过对

CMOS配置实现图像采集和处理器的照相功能。

l  原理:

   系统硬件介绍:

      CMOS子卡能驱动三款CMOS摄相头模组,分别为CN00303R0FD0 30万像素,CN01305Z3HH4 130万像素,TGA 130V10 130万像素,它们选用的图像传感器分别为PO3030KPO3130DOV9653

CMOS 30万介绍:

采用PIXELPLUS公司的PO3030K图像传感器为核心的型号为CN00303R0FD0的CMOS

摄相头模块。PO3030K CMOS Sensor,输出30万像素,支持SXGA、VGA、QVGA、QQVGA、CIF、QCIF、QQCIF输出模式;数据输出格式:YCbCr4:2:2、YUV4:2:2、8Bit Bayer data、5:6:5RGB、5:5:5RGB、CCIR656;寄存器读写采用标准I2C总线结构,其详细配置信息请查阅OV9650文档。

CN00303R0FD0摄相头模块提供的数据传输接口如下:

上传的图片
  201512310272278.jpg [ 195.39 KB 584×785 ] (缩略时请点击查看原图)

 


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/12/3 10:27:28
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

CMOS 130万介绍(选OV9653 sensor 作介绍)

采用OmniVision公司的OV9653 图像传感器为核心的型号为8102A CMOS摄相头模块。OV9653 CMOS Sensor,输出130万像素,支持SXGAVGAQVGAQQVGACIFQCIFQQCIF输出模式;数据输出格式:YCbCr4:2:2、YUV4:2:2、8Bit Bayer data565RGB5:5:5RGBCCIR656;寄存器读写采用标准I2C总线结构,其详细配置信息请查阅OV9653文档。

根据CMOS模组的接口,会发现与处理器的PPI接口兼容,所以此系统采用PPI接口连接方法实现图像的采集。由于此系统TFT屏的接口也是PPI,为了使两个模块之间互不干扰,且能分时复用的原则,这里采用LVC245PPI总线数据隔离,当LVC245使能与否分别控制着处理器读取数据或禁止读取的操作。系统上电后,CMOS会在默认的寄存器输出格式下输出数据,由于LVC245的隔离作用,数据并不进入PPI总线上,但是可以根据此特性,测量CMOS子卡的数据时钟测试来判断CMOS模块是否正常工作。

由于TFT屏与CMOS两个模块复用PPI总线,并且CMOS输出时钟进入到处理器PPI_CLK,而TFT工作也要输入时钟到处理器PPI_CLK,这样两个设备就在时钟线上冲突,所以此系统在设计时,为了避免冲突增加了选择时钟切换功能,由74AHC125完成。选择切换控制信号,由CPLD产生,处理器可通过控制CPLD扩展的资源来实现切换功能。

CPLDADSP-BF561处理器的内部接口参数设置

控制寄存器说明如下:

pCtrOut_Flag_A 位定义表(地址0x2C07 0000):



D0

D1

D2

D3

D4

D5

D6

D7

MOTOR_A

MOTOR_B

MOTOR_C

MOTOR_D

PS2_245_DIR

PS_DAT_DIR

CMOS_RST

保留

3


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/12/3 10:28:33
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

pCtrOut_Flag_B 位定义表(0x2C08 0000):



D0

D1

D2

D3

D4

D5

D6

D7

SPI_A0

SPI_A1

SPI_A3

(保留)

LED_A0

LED_A1

CMOSCLK_SET

TFTCLK_SET

4

pCtrOut_Flag_OE 位定义表(地址0x2C05 0000):



D0

D1

D2

D3

D4

D5

D6

D7

MOTOR_OE

TFT_245_OE

CMOS_245_OE

PS2_245_OE

保留

LED_OE

DMB_OE

IRDA_SD

5


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/12/3 10:28:47
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

实验时驱动代码的编写过程要按照以下步骤进行:

第一:使能CMOS子卡上的LVC245对应的CMOS_245_OE写入数据0

第二:使能CMOS时钟输入,对应的CMOSCLK_SET写入数据0。(注CMOSCLK_SETTFTCLK_SET不能同时为0)

第三:I2C总线配置CMOS寄存器,使其输出数据为YUV422,输出模式为VGAQVGA

第四:使能DMAPPI读取数据,等待中断。

第五:中断后,鼠标点击环境选择Halt,停止程序运行。然后在VisualDSP++ 菜单栏中的 View->Debug Windows->Image viewer ,将弹出的会话框如图设置参数,确定后即可生成图像(此为VGA还原图象方法,若是QVGA则将Width修改为320Height修改为240即可。具体请看实验步骤及实验结果)


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/12/3 10:29:06
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

例程分析(核心代码片段分析):

void Init_CPLD(void)

{

     *pCtrOut_Flag_OE=~CMOS_245_OE;            //CMOS_OE 245 允许    

    *pCtrOut_Flag_B  =~CMOSCLK_SET;                 // AHC125选择CMOS时钟进入EZKIT外部PPI

}

void Init_FLASH(void)

{

     *pCtrlRegFlashAPortADirection=0xFF;

     *pCtrlRegFlashAPortADataOut =0x20;   //EZKIT上允许外部PPICLK 进入处理器PPI

}



我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/12/3 10:29:46
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

实验结果:

产生中断后会打印如图4信息,说明捕捉图象成功。

待打印出如图3的信息后,选择 VisualDSP++菜单栏中的Debug菜单下的Halt,将程序停下。

然后在VisualDSP++ 菜单栏中的 View->Debug Windows->Image viewer

按照YUY2:422,320:240设置

还原图像,完成CMOS在BF561上的采集实验


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/12/3 10:33:09
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154167 Call, 1 Queries, Processed in 0.015625 second(s),