无锡科技职业学院·嵌入式系统工程专业 毕业设计(论文)
最终我们选择了数字摄像头OV6620。 OV6620的管脚分布样子如图2.6和2.7所示:
2.3.3 OV6620管脚说明
图2.6管脚分布图 图2.7 OV6620像头
PIN1-PIN8 灰度信号输出接口 Y0-Y7 PIN11 SCCB数据接口 SDA PIN12 奇偶场同步信号 FODD PIN13 SCCB数据时钟 SCL PIN14 行中断信号 HREF PIN16 场中断信号 VSYN
PIN18 像素同步信号 PCLK(也叫TCLK) PIN32 模拟信号输出接口 VTO
这里仅说明可能需要用到的管脚,模拟摄像头无非也就这几个信号,重要的是,模拟摄像头的信号线需要分离,这当然会给图像的采集带来本可以避免的干扰。
2.3.4 OV6620图像采集
我最不能忍受的是模拟的图像采集之后的分辩率.真的还不如在光电前加个老花镜.数字摄像头相对来说贵一些,他内部的信号处理比较复杂,接口也较多,一般是彩色的YUV信号,只取Y的亮度信号,所以用起来略有浪费.
附上测的数字OV6620的时序图,我发现它的DS上表示有些不明确,就自己
11
无锡科技职业学院·嵌入式系统工程专业 毕业设计(论文)
画了一个.而实际上,图像采集的这块最关键的也是时序的把握了.另外,中断的优先级一定要保证,要不然系统一运行起来,图像采到一半就丢了.
先看DS上的时序图2.8:
图2.8 DS上的时序
如果这个图还不明白的话看下面的这个图2.9:
图2.9 摄像头信号采集时序图
如果这个图还不明白的话看下面的说明:
(1)、在采集时乎略TCLK,首先是因为它太快了,捕捉不到,另外也没有必要捕捉到它。采集图像时尽快地一个点一个点的取就行了,和模拟摄像头一样。
(2)、VYNSC是判断是否一幅图像开始,周期是20mS, 其中高电平持续时
12
无锡科技职业学院·嵌入式系统工程专业 毕业设计(论文)
间很短,忽略; HREF是判断是否一行图像的开始,周期是63us左右,其中高电平持续时间为40US,低电平持续时间23US,那么可以算一下一场有多少行:20ms/63us=317,当然实际上没有这么多,消隐和无效信号去掉之后只有292行。 (3)、必须明确:场中断要通过下降沿捕捉,行中断要通过上升沿捕捉。若用IRQ捕捉行中断必须加反相器。
(4)、有效的灰度数据是在行中断之后的上升沿内,所以不要在行中断后的23US后采集,那是废数据。计算一下一行OV6620有多少个点: 40us/110ns=363, 消隐和无效信号去掉之后只有356个点。 图上若有表述不清楚可通过示波器观察。
13
无锡科技职业学院·嵌入式系统工程专业 毕业设计(论文)
第3章 软件系统设计
3.1 时钟模块
时钟基本脉冲是CPU工作的基础。MC9S12XS128微控制器的系统时钟信号,由时钟振荡电路或专用时序脉冲信号提供。MCU内部的所有时钟信号都来源于EXTAL引脚,也为MCU与其他外接芯片之间的通信提供了可靠的同步时钟信号。
S12的总线时钟是整个MCU系统的定时基准和工作同步脉冲,其频率固定为晶体频率的1/2。对于S12,可以利用寄存器SYNR、REFDV来改变晶振频率fOSCCLK,可以选用8MHz或16MHz外部晶体振荡器作外时钟。将SYNR设为3,REFDV设为1,可以得到32MHz的总线频率。
而锁相环产生的时钟频率fPLLCLK=2*fOSCCLK*(SYNR+1)/(REFDV+1),设计中我们将SYNR设为3,REFDV设为1,因此,总线时钟为32MHz,CPU工作频率为64MHz。
3.2 ECT模块
S12得ECT具有8个输入(IC)/输出(OC)比较通道,可以通过设置TIOS寄存器选择输入或输出比较功能。ECT既可以作为一个时基定时产生中断,也可以用来产生控制信号。
模数递减计数器(MDC)是S12微控制器ECT特有,它是一个16位计数器,其外围配备了常数寄存器MCCNT和控制寄存器MCCTL,分别为MDC提供定时常数和时钟信号。通过寄存器TCTL4设定各个引脚的各种动作,初始化设置过程如下所示: //定时器初始化 void extern vECTInit(void)
14
无锡科技职业学院·嵌入式系统工程专业 毕业设计(论文)
{
TIOS =0x00;//定时器通道0,1为输入捕捉 TSCR1=0x80;//定时器使能
TCTL4=0x09;//通道0捕捉上升沿通道1捕捉下降沿 TIE=0x03; //通道0,1中断使能 TFLG1=0xFF;//清中断标志位 }
void extern IOC_Init(void) {
//TSCR2 = 0x04; // 禁止定时器溢出中断,计数器自由运行,禁止复位,预分频系数为16
// busclock/16=48Mhz/16=3000000
TIOS = 0x00; // 设置通道2工作在输出比较状态,其它通道工作在输入状态 //TC2 = 0x2328; // 0x2328*(1/3000000)=3ms //TCTL2 = 0x00; // 切断OC2与输出引脚断开 // TCTL3=0X80; TCTL4=0x09;
//TSCR1_TFFCA=1; // 通道自动清除 // TIE= 0x83; // 通道0,1,2,7中断使能 //TIE= 0x84;
TSCR1_TEN = 1; // 定时器使能
PACTL = 0x40; //脉冲累加器使能,事件计数,下降沿计数,16位A累加器 PACNT = 0x0000;
TFLG1=0xFF; //清中断标志位 PERT=0x80;//PT7口上拉电阻使能 PPST=0x00; }
15