西南科技大学城市学院本科生毕业论文
unsigned int upll, uclk, camclk,camclk_div;
camclk = get_camera_clk(); CLKCON |= CLKCON_CAMIF; ChangeUPllValue(56, 2, 1); //0x38==56
CLKDIVN |= DIVN_UPLL_EN; //UCLK=UPLL/2 upll = 96000000; uclk = (CLKDIVN & DIVN_UPLL_EN) ? upll/2 : upll;
printk(\ UCLK d CAMCLK d \\n\camclk); camclk_div = upll /( camclk * 2) -1 ;
CAMDIVN = CAMCLK_SET_DIV | (camclk_div & 0xf ) ; }
Camera 图像采集程序
void Test_CamPreview(void) {
Uart_Printf(\
//camera global variables
camTestMode=CAM_TEST_MODE_PVIEW; camCodecCaptureCount=0; camPviewCaptureCount=0; camPviewStatus=CAM_STOPPED; camCodecStatus=CAM_STOPPED; flagCaptured_P=0;
LCD_LTS350Q1_PE1_Init() ;
Uart_Printf( \
// Initialize Camera interface switch(USED_CAM_TYPE)
27
西南科技大学城市学院本科生毕业论文
{
case CAM_S5X532 : // defualt for test : data-falling edge, ITU601, YCbCr CamInit(640, 480, 240, 320, 112, 20, CAM_FRAMEBUFFER_C, CAM_FRAMEBUFFER_P); break;
case CAM_S5X3A1 : // defualt for test : data-falling edge, YCbCr CamInit(640, 480, 240, 320, 120, 100, CAM_FRAMEBUFFER_C, CAM_FRAMEBUFFER_P); rCISRCFMT = rCISRCFMT & ~(1<<31); // ITU656 //
rCIGCTRL &= ~(1<<26); // inverse PCLK, test pattern
break; //--- add by hzh case CAM_OV7620:
CamInit(240, 320, 240, 320, 0, 0, CAM_FRAMEBUFFER_C, CAM_FRAMEBUFFER_P); break; //--- default :
CamInit(640, 480, 320, 240, 0, 0, CAM_FRAMEBUFFER_C, CAM_FRAMEBUFFER_P); break; }
Uart_Printf(\
// Start Capture
rSUBSRCPND |= BIT_SUB_CAM_C|BIT_SUB_CAM_P; ClearPending(BIT_CAM); pISR_CAM = (U32)CamIsr; CamPreviewIntUnmask();
CamCaptureStart(CAM_PVIEW_SCALER_CAPTURE_ENABLE_BIT);
Uart_Printf(\
28
西南科技大学城市学院本科生毕业论文
while (1) {
if (flagCaptured_P) {
flagCaptured_P = 0; // }
if ( Uart_GetKey() == ESC_KEY ) break;
}
Uart_Printf(\
4.5 LCD显示模块
S3C2440A 的内置 LCD 控制器支持单色、每象素 2 位(4 级灰度)、每象素 4 位(16 级灰度)的黑白屏,也支持每象素 8 位(256 色)和每象素 12 为(4096 色)的彩色 LCD, 并且也支持每象素 16 位和每象素 24 位的真彩显示。 LCD 控制器可以通过编程选择支持不同的 LCD 屏的要求,例如行和列象素,数据总线 宽度,就口时序和刷新频率。LCD 控制器的主要作用是将定位于系统存储器的显示缓冲区 的 LCD 图像数据传送到外部 LCD 驱动器。 S3C2440A LCD的控制器
VFRAME/VSYNC/STV :LCD 控制器和 LCD 驱动器之间的帧同步信号。他通知 LCD 屏新的 一帧显示,LCD 控制器在一个完整帧的显示后发出 VFRAME 信号。
VLINE/HSYNC/CPV :LCD 控制器和 LCD 驱动器之间的同步脉冲信号,LCD 驱动器通过他 来将水平移位寄存器中的内容显示到 LCD 屏上。LCD 控制器在一整行数据全部传输到 LCD 驱动去后,插入一个 VLINE 信号。
VCLK/LCD_HCLK :此信号为 LCD 控制器和 LCD 驱动器之间的象素时钟信号,LCD 控制 器在 VCLK 的上升沿发送数据,LCD 驱动器在 VCLK 的下降沿采样数据。
VM:LCD 驱动器所使用的交流信号,LCD 驱动器使用 VM 信号改变用于打开或关闭象素的 行和列电压的极性,从而控制象素点的显示或熄灭。VM 信号可以与每个帧同步,也可以与 可变数量的 VLINE 信号同步。
29
西南科技大学城市学院本科生毕业论文
VD[23:0] :LCD 象素数据输出端口,也就是我们所说的 RGB 信号线。 LCD控制方框图如图4-12所示。
图4-12 S3C2440A 内部的 LCD 控制器的逻辑示意图
图4-13 LCD控制方框图
S3C2440 LCD控制器被用来传送视频数据和生成必要的控制信号,比如VFRAME, VLINE, VCLK, VM, 等等。除了控制信号外,这S3C2440还有作为视频数据的数
据端口,它们是如图4-12所示的VD[23:0]。LCD控制器由REGBANK, LCDCDMA,VIDPRCS, TIMEGEN, 和LPC3600组成。REGBANK由17个可编程的寄存器组和一块256*16的调色板内存组成,它们用来配置LCD控制器的。LCDCDMA是一个专用的DMA,它能自动地把在帧内存中的视频数据传送到LCD
30
西南科技大学城市学院本科生毕业论文
驱动器。通过使用这个DMA通道,视频数据在不需要CPU的干预的情况下显示在LCD屏上。VIDPRCS接收来自LCDCDMA的数据,将数据转换为合适的数据格式,比如说4/8位单扫,4位双扫显示模式,然后通过数据端口VD[23:0]传送视频数据到LCD驱动器。TIMEGEN由可编程的逻辑组成,支持不同的LCD驱动器接口时序和速率的需求。TIMEGEN块可以产生VFRAME, VLINE, VCLK, VM等。 LCD控制器的功能是通过程序设置相应的寄存器来实现。在这里我们用到了端口C、D控制寄存器(GPCCON、GPDCON)与其上拉控制寄存器(GPCUP、GPDUP),5个LCD控制寄存器(LCDCON),3个LCD帧缓冲器起始地址寄存器(LCDSADDR)。LCD显示模块程序设计流程如图4-13所示。
图4-14 LCD显示模块程序设计流程图
清除串口中的数据并计数复位 结 束 调整被测物体与摄像头之间 的距离为10CM 通过串口工具接收图像数据 并保存为文本文件 开 始 运行程序并采集一帧图像数据 图像数据经过MATLAB仿真 并还原为图像
程序设置如下:
rLCDCON1 =rLCDCON1 & 0x3fffe; // 禁止视频输出和LCD控制信号 rGPCUP=0xffffffff; // 禁用端口C上拉功能
rGPCCON=0xaaaa56a9; //初始化VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND
rGPDUP=0xffffffff; // 禁用端口D上拉功能 rGPDCON=0xaaaaaaaa; //初始化 VD[15:8] 设置LCD 5个控制寄存器
rLCDCON1=(CLKVAL_TFT_320240<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
31
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库机器人视觉识别系统研究(7)在线全文阅读。
相关推荐: