525|2

88

帖子

0

资源

一粒金砂(中级)

安路SparkRoad摄像头监控 [复制链接]

本帖最后由 冒险武者 于 2022-5-22 23:16 编辑

购买了一颗OV7725摄像头,一款 1/4 英寸单芯片图像传感器,其感光阵列达到 640*480,能实现最快 60fps VGA 分辨率的图像采集。传感器内部集成了图像处理的功能,包括自动曝光控制(AEC)、自动增益控制(AGC)和自动白平衡(AWB)等。同时传感器具有较高的感光灵敏度,适合低照度的应用。OV7725使用的是两线式接口总线,兼容SCCB协议与IIC协议。

OV7725 的输入时钟频率的范围是 10Mhz~48Mhz,本次实验摄像头的输入时钟为 12Mhz。

OV7725摄像头如下图所示,比较小巧。

image.png  

上一篇实现VGA功能的时候,预留了接口,如下图把模式设置位3‘b100,就可以同步摄像头的数据

可以查看http://bbs.eeworld.com.cn/thread-1203400-1-1.html

image.png

摄像头支持多种格式,其中VGA时序要求如下:

image.png  

采用SDRAM接口,例化如下:

EG_LOGIC_BRAM #( .DATA_WIDTH_A(16),
				.DATA_WIDTH_B(16),
				.ADDR_WIDTH_A(16),
				.ADDR_WIDTH_B(16),
				.DATA_DEPTH_A(32800),
				.DATA_DEPTH_B(32800),
				.MODE("PDPW"),
				.REGMODE_A("NOREG"),
				.REGMODE_B("NOREG"),
				.WRITEMODE_A("NORMAL"),
				.WRITEMODE_B("NORMAL"),
				.RESETMODE("SYNC"),
				.IMPLEMENT("9K"),
				.INIT_FILE("NONE"),
				.FILL_ALL("NONE"))
			inst(
				.dia(dia),
				.dib({16{1'b0}}),
				.addra(addra),
				.addrb(addrb),
				.cea(cea),
				.ceb(ceb),
				.ocea(1'b0),
				.oceb(1'b0),
				.clka(clka),
				.clkb(clkb),
				.wea(1'b1),
				.web(1'b0),
				.bea(1'b0),
				.beb(1'b0),
				.rsta(1'b0),
				.rstb(1'b0),
				.doa(),
				.dob(dob));

再就是实现I2C接口,完成摄像头的初始化工作即可

最后就是实现摄像头图像输出接口,和VGA控制类似,都涉及水平同步、垂直同步信号处理,借用代码

module camera_vga
(
	input 	wire 		clk,
	input 	wire 		reset_n,
	
	output 	wire 		csi_xclk,
	
	input 	wire 		csi_pclk,
	input 	wire [7:0] 	csi_data,
	input 	wire 		csi_vsync,
	input 	wire 		csi_hsync,
	
	output 	reg  [15:0] data_out,
	output 	wire 		wrreq,
	output 	wire 		wrclk,
	output 	reg  [15:0]	wraddr
);

reg [19:0] pixel_counter = 0;
assign csi_xclk  = (reset_n == 1) ? clk : 0;
reg vsync_passed = 0;
reg write_pixel  = 0;
reg [7:0] 	subpixel;
reg [15:0] 	current_pixel;
reg wrclk1 = 0;

always@(posedge csi_pclk)
begin
	wrclk1 <= ~wrclk1;
end

always@(negedge wrclk1)
begin
	if(csi_hsync == 1)
		write_pixel <= 1;
	else
		write_pixel <= 0;
end

always@(posedge wrreq )
begin
	data_out <= current_pixel;
end

always@(posedge csi_pclk or negedge reset_n)
begin
	if(reset_n == 0)
	begin
		pixel_counter <= 0;
		vsync_passed <= 0;
	end
	else
	begin
		if(csi_vsync == 1)
		begin
			pixel_counter <= 0;
			vsync_passed <= 1;
			wraddr <= 0;
		end
		else
			if(csi_hsync == 1 && vsync_passed == 1)
			begin
				if(pixel_counter[0] == 0)
				begin
					pixel_counter <= pixel_counter + 1;
					subpixel <= csi_data;
				end
				else
				begin
					current_pixel <= { subpixel, csi_data };
					pixel_counter <= pixel_counter + 1;
					wraddr <= wraddr + 1;
				end
			end
			else
			begin
				if(write_pixel == 1)
					pixel_counter <= pixel_counter + 1;
				else
					pixel_counter <= 0;
			end
	end
end

assign wrreq = (write_pixel == 1) && pixel_counter > 2 ? wrclk1 : 0;
assign wrclk = csi_pclk;

endmodule

 在TOP加入应对的模块,设置好模式,摄像头如下所示:

 

e846311e5cc5ce7e5fac538d33f11230

 

后续尝试结合SD卡,把摄像头的数据存入SD卡中,这还需要研究下SD卡是如何保存成视频格式的,加油~~~

 


 


回复

5068

帖子

236

资源

管理员

加油加油,sd卡的,小虾搞过 @littleshrimp


回复

9802

帖子

21

资源

版主

期待你继续弄SD卡 我的SD卡IP一直没调通 想进一步测试发现有一些信号没法添加到逻辑分析仪里


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/7 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表