您尚未登录。

楼主 #1 2020-10-29 18:44:54

sjshe3326
会员
注册时间: 2020-10-19
已发帖子: 126
积分: 70.5

裸机驱动OV2640显示

调了几天DCI,终于搞好了,坑真多。
OV2640设置为SVGA,RBG565输出480*272大小。使用DE直接显示在LCD上。
目前还有几个问题待解决:1:PE11输出CLK_OUT 还没搞定,目前使用PE12 PWM0输出24M,飞线给PE11.
2: 显示上有点蓝色条纹,很规律,不确定是否是摄像头没有配置好。
3:OV的数码变焦和一些参数设定 待研究
TBD:摄像头图层和其他显示图层叠加等后面在研究。
使用硬件为tiny200 R3。摄像头OV2640,LCD480*272,附件bin文件大家可以试试。别忘了PE12,PE11要接在一起,或者给PE11一个24M时钟。

BIN文件:f1c100s_Tiny200r3_CamTest.zip

视频如下:

离线

#2 2020-10-29 19:38:32

vip888888
会员
注册时间: 2020-07-16
已发帖子: 141
积分: 138

Re: 裸机驱动OV2640显示

大佬流批,裸机驱动可以参考不?

离线

#3 2020-10-30 00:15:37

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 649
积分: 539
个人网站

Re: 裸机驱动OV2640显示

感谢分享

离线

#4 2020-11-18 15:21:13

l624131531
会员
注册时间: 2020-11-18
已发帖子: 1
积分: 1

Re: 裸机驱动OV2640显示

感谢分享

离线

#5 2020-11-19 09:04:05

伍零壹
会员
注册时间: 2019-12-16
已发帖子: 161
积分: 39

Re: 裸机驱动OV2640显示

楼组牛掰

离线

#6 2021-04-20 15:45:18

kesion
会员
注册时间: 2020-07-03
已发帖子: 45
积分: 32

Re: 裸机驱动OV2640显示

厉害了,怎么调的这么清晰。。

离线

#7 2021-04-21 08:34:46

伍零壹
会员
注册时间: 2019-12-16
已发帖子: 161
积分: 39

Re: 裸机驱动OV2640显示

颜色感觉有点不对 好像偏蓝色

离线

#8 2021-04-23 13:38:36

ermao
会员
注册时间: 2019-03-04
已发帖子: 10
积分: 5

Re: 裸机驱动OV2640显示

big_smile 大佬威武

离线

#9 2021-07-19 15:49:57

xboot
会员
注册时间: 2019-10-15
已发帖子: 733
积分: 466

Re: 裸机驱动OV2640显示

继续给F1C100S填坑,PE11管脚导出clkout,给CIF摄像头的提供时钟源
https://whycan.com/t_6906.html

离线

#10 2021-07-21 11:00:18

jpglcdk
会员
注册时间: 2021-07-14
已发帖子: 9
积分: 4.5

Re: 裸机驱动OV2640显示

请问烧写是进入FEL后,用以下命令的吗:
sunxi-fel -p spiflash-write 0 f1c100s_Tiny200r3_CamTest.bin

离线

#11 2022-10-09 21:20:07

lanlanzhilian
会员
注册时间: 2021-12-21
已发帖子: 171
积分: 66

Re: 裸机驱动OV2640显示

怎么用DE直接显示在LCD上呢

离线

#13 2026-04-28 22:42:53

Robinson
会员
注册时间: 2026-04-28
已发帖子: 3
积分: 3

Re: 裸机驱动OV2640显示

你好 sjshe3326,

看了你那塊 D133 88-Pin 多介面 LCD 開發板的設計,把 RGB/LVDS/MIPI/8080/SPI 都打到同一塊板上,做這個工作的人應該不多。能看出你對顯示介面選型的研究很深。

我是台灣的 Robinson。我們做了一顆 USB Display SoC(MI-8808),想跟你分享:現在 USB → MIPI DSI 變成一個新方向,可以解決「主控板顯示介面已用滿,但要加副屏」的問題。

你之前提過 D133 的「資料缺乏、MIPI 調試困難」,我們的 8808 SDK 是開放的,有完整 reference design + MIPI timing 工具,免費寄樣品板給你玩玩看怎麼樣?

不需要 NDA,純技術交流。

Robinson
奔馳科技 Racer Tech
robinson@racer-tech.com

离线

#14 2026-08-22 23:43:24

Ozelot
会员
所在地: Ukraine
注册时间: 2020-06-22
已发帖子: 55
积分: 94
个人网站

Re: 裸机驱动OV2640显示

Hello sjshe3326.
Can you show CSI and camera initialization functions?

离线

楼主 #15 2026-09-30 10:32:53

sjshe3326
会员
注册时间: 2020-10-19
已发帖子: 126
积分: 70.5

Re: 裸机驱动OV2640显示

Ozelot 说:

Hello sjshe3326.
Can you show CSI and camera initialization functions?

CSI 初始化代码如下,不含CSI CLK的部分

void CSI_init(void)
{
    // 连续采集的图像数据 防止在缓存内 //
	u32_t regVal;

    // CSI打开时钟 //    
   
    // CSI 使能 CSI_EN  = 1 //
    write32(CSI_BAISADDR + CSI_EN, read32(CSI_BAISADDR + CSI_EN) | (1<<0)); 
    
    // CSI 配置  inYUV 422  UYVY   out pass   VREF+ HREF+ CLK+
    // write32(CSI_BAISADDR + CSI_CFG, (3<<20) | (0<<16) | (2<<8) | (1<<2) | (1<<1) | (1<<0));  //YUV
    // CSI配置: 输入格式RAW, 输出格式Pass Through, Vref极性-正, Href极性-正, Clk上升沿有效 //
    write32(CSI_BAISADDR + CSI_CFG, (0<<20) | (0<<16) | (2<<8) | (1<<2) | (1<<1) | (1<<0));     //RGB
            
    // CSI CAP video mode 关闭视频和照片采样模式 //
    write32(CSI_BAISADDR + CSI_CAP, (0<<1) | (0<<0));
    
    // CSI scale mask 抽样功能 0表示丢弃当前数据,V按照4行循环,H按照16byte循环,FFFF表示不丢弃数据 //
    write32(CSI_BAISADDR + CSI_SCALE, 0x0F00FFFF);//read32(CSI_BAISADDR + CSI_SCALE) | (0x0F<<24) | (0xFFFF<<0)); 

    // CSI FIFO012 ADDR 由于使用PassThrough方式,只使用FIFO0 FIFO1/2忽略  FIFO0 AB分别设置未2个缓存区 //
    write32(CSI_BAISADDR + CSI_FIFO0_BUFA, (&fb_mem[0][0])); 
    write32(CSI_BAISADDR + CSI_FIFO0_BUFB, (&fb_mem[1][0])); 
    write32(CSI_BAISADDR + CSI_FIFO1_BUFA, (&fb_mem[1][0])); 
    write32(CSI_BAISADDR + CSI_FIFO1_BUFB, (&fb_mem[1][0])); 
    write32(CSI_BAISADDR + CSI_FIFO2_BUFA, (&fb_mem[1][0])); 
    write32(CSI_BAISADDR + CSI_FIFO2_BUFB, (&fb_mem[1][0])); 

    // CSI DoubleBuffer mode  不适用双缓存模式 //
    write32(CSI_BAISADDR + CSI_BUF_CTL, (0<<2) | (0<<0));

    // FIFO  每行buf缓存 字节长度 // 
    write32(CSI_BAISADDR + CSI_BUF_LEN, 960);

    // HSIZE VSIZE     
    write32(CSI_BAISADDR + CSI_HSIZE, (960 << 16) | (  0 << 0));    // 每行有效时钟(数据)长度, 起始时钟数量 //
    write32(CSI_BAISADDR + CSI_VSIZE, (360 << 16) | (  0 << 0));    // 每帧有效行数, 起始数据行数 //

    // CSI interrupt
    //write32(CSI_BAISADDR + CSI_INT_EN, (0<<7) | (1<<1) | (1<<0));   
    
    // 中断设置
    request_irq(IRQ_CSI, f1c100s_csi_interrupt, 0);
}

camera OV2640 初始化代码如下

uint8_t CamInit_OV2640(void)
{     
    // 检测ChipID //
    uint16_t id = CamCheck_OV2640();
    if (0x2642 != id)//CamCheck_OV2640())
	{
		printf("Cam ChipID : Error(%04x) \r\n",id);
		while(1);
	}

    // 初始化参数 //
    SCCB_WriteReg(OV2640_DEVADDR, 1, OV2640_DSP_RA_DLMT, 0x01); // 操作sensor寄存器
    SCCB_WriteReg(OV2640_DEVADDR, 1, OV2640_SENSOR_COM7, 0x80); // 软复位OV2640
    
    delay_1ms(10);
    
    // 写入参数表 采用SXGA分辨率(800*600)  //
	for (uint16_t i = 0;i < sizeof(ov2640_uxga_init_reg_tbl)/2; i++)
	{
      //SCCB_WriteReg(OV2640_DEVADDR, 1, ov2640_VGA_init_reg_tbl[ i][0], ov2640_VGA_init_reg_tbl[ i][1]);
        SCCB_WriteReg(OV2640_DEVADDR, 1, ov2640_uxga_init_reg_tbl[ i][0], ov2640_uxga_init_reg_tbl[ i][1]);    
	} 

    delay_1ms(1);
             
	return 0; 	// ok //
}
//UXGA(1600*1200) 
const uint8_t ov2640_uxga_init_reg_tbl[][2]= 
{   
	0xff, 0x00,
	0x2c, 0xff,
	0x2e, 0xdf,
	0xff, 0x01,
	0x3c, 0x32,
	//
	0x11, 0x00,
	0x09, 0x02,
	0x04, 0x00,//水平镜像,垂直翻转
	0x13, 0xe5,
	0x14, 0x48,
	0x2c, 0x0c,
	0x33, 0x78,
	0x3a, 0x33,
	0x3b, 0xfB,
	//
	0x3e, 0x00,
	0x43, 0x11,
	0x16, 0x10,
	//
	0x39, 0x92,
	//
	0x35, 0xda,
	0x22, 0x1a,
	0x37, 0xc3,
	0x23, 0x00,
	0x34, 0xc0,
	0x36, 0x1a,
	0x06, 0x88,
	0x07, 0xc0,
	0x0d, 0x87,
	0x0e, 0x41,
	0x4c, 0x00,
	
	0x48, 0x00,
	0x5B, 0x00,
	0x42, 0x03,
	//
	0x4a, 0x81,
	0x21, 0x99,
	//
	0x24, 0x40,
	0x25, 0x38,
	0x26, 0x82,
	0x5c, 0x00,
	0x63, 0x00,
	0x46, 0x00,
	0x0c, 0x3c,
	//
	0x61, 0x70,
	0x62, 0x80,
	0x7c, 0x05,
	//
	0x20, 0x80,
	0x28, 0x30,
	0x6c, 0x00,
	0x6d, 0x80,
	0x6e, 0x00,
	0x70, 0x02,
	0x71, 0x94,
	0x73, 0xc1, 
	0x3d, 0x34, 
	0x5a, 0x57,
	//
	0x12, 0x00,//UXGA 1600*1200
	
	0x17, 0x11,
	0x18, 0x75,
	0x19, 0x01,
	0x1a, 0x97,
	0x32, 0x36,
	0x03, 0x0f, 
	0x37, 0x40,
	// 
	0x4f, 0xca,
	0x50, 0xa8,
	0x5a, 0x23,
	0x6d, 0x00,
	0x6d, 0x38,
	//
	0xff, 0x00,
	0xe5, 0x7f,
	0xf9, 0xc0,
	0x41, 0x24,
	0xe0, 0x14,
	0x76, 0xff,
	0x33, 0xa0,
	0x42, 0x20,
	0x43, 0x18,
	0x4c, 0x00,
	0x87, 0xd5,
	0x88, 0x3f,
	0xd7, 0x03,
	0xd9, 0x10,
	0xd3, 0x82,
	//
	0xc8, 0x08,
	0xc9, 0x80,
	//
	0x7c, 0x00,
	0x7d, 0x00,
	0x7c, 0x03,
	0x7d, 0x48,
	0x7d, 0x48,
	0x7c, 0x08,
	0x7d, 0x20,
	0x7d, 0x10,
	0x7d, 0x0e,
	//
	0x90, 0x00,
	0x91, 0x0e,
	0x91, 0x1a,
	0x91, 0x31,
	0x91, 0x5a,
	0x91, 0x69,
	0x91, 0x75,
	0x91, 0x7e,
	0x91, 0x88,
	0x91, 0x8f,
	0x91, 0x96,
	0x91, 0xa3,
	0x91, 0xaf,
	0x91, 0xc4,
	0x91, 0xd7,
	0x91, 0xe8,
	0x91, 0x20,
	//
	0x92, 0x00,
	0x93, 0x06,
	0x93, 0xe3,
	0x93, 0x05,
	0x93, 0x05,
	0x93, 0x00,
	0x93, 0x04,
	0x93, 0x00,
	0x93, 0x00,
	0x93, 0x00,
	0x93, 0x00,
	0x93, 0x00,
	0x93, 0x00,
	0x93, 0x00,
	//
	0x96, 0x00,
	0x97, 0x08,
	0x97, 0x19,
	0x97, 0x02,
	0x97, 0x0c,
	0x97, 0x24,
	0x97, 0x30,
	0x97, 0x28,
	0x97, 0x26,
	0x97, 0x02,
	0x97, 0x98,
	0x97, 0x80,
	0x97, 0x00,
	0x97, 0x00,
	//
	0xc3, 0xef,
	
	0xa4, 0x00,
	0xa8, 0x00,
	0xc5, 0x11,
	0xc6, 0x51,
	0xbf, 0x80,
	0xc7, 0x10,
	0xb6, 0x66,
	0xb8, 0xA5,
	0xb7, 0x64,
	0xb9, 0x7C,
	0xb3, 0xaf,
	0xb4, 0x97,
	0xb5, 0xFF,
	0xb0, 0xC5,
	0xb1, 0x94,
	0xb2, 0x0f,
	0xc4, 0x5c,
	//
	0xc0, 0xc8,
	0xc1, 0x96,
	0x8c, 0x00,
	0x86, 0x3d,
	0x50, 0x00,
	0x51, 0x90,
	0x52, 0x2c,
	0x53, 0x00,
	0x54, 0x00,
	0x55, 0x88,
	
	0x5a, 0x90,
	0x5b, 0x2C,
	0x5c, 0x05,
	
	0xd3, 0x02,//auto设置要小心

	0xc3, 0xed,
	0x7f, 0x00,
	
	0xda, 0x09,
	
	0xe5, 0x1f,
	0xe1, 0x67,
	0xe0, 0x00,
	0xdd, 0x7f,
	0x05, 0x00,
};  

离线

#16 2026-10-01 03:31:24

Ozelot
会员
所在地: Ukraine
注册时间: 2020-06-22
已发帖子: 55
积分: 94
个人网站

Re: 裸机驱动OV2640显示

Thank you so much. I used the OV5640 – it was fun to streaming video through the analog TV output smile

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发