AR0134CS调试,寄存器配置

本文介绍AR0134CS摄像头的调试过程,包括寄存器配置及输出帧率计算等关键技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AR0134CS调试,寄存器配置

最近项目在调试AR0134摄像头,无奈资料太少,只能摸索。AR0134是ON Semiconductor公司的一款全局快门的摄像头。1/3-inch 1.2 Mp CMOS digital image sensor with an active-pixel array of 1280 (H) ×960 (V)。It is designed for low light performance and features a global shutter for accurate capture of moving scenes. It includes sophisticated
camera functions such as auto exposure control, windowing, scaling, row skip mode, and both video and single frame modes. It is programmable through a simple two-wire serial interface. The AR0134CS produces extraordinarily clear, sharp digital pictures, and its ability to capture both continuous video and single frames makes it the perfect choice for a wide —range of applications, including scanning and industrial inspection.

AR0134时序

默认的时序图如图所示:
这里写图片描述
在FV(frame valid)为高且LV(line valid)为高时,每一个pixclk 的上升沿输出一个12bit的像素数据,这个像素数据是sensor中单个感光元件输出的数据,只代表R,G,B中的一种。
AR0134可以工作在master (video) 模式,也可以工作在trigger (single frame)模式。本次使用就是在master模式,master模式下的自动曝光模式,时序图如下:
这里写图片描述

FLASH能控制外接闪光灯来进行补光操作。

输出帧率计算

在手册中有给出1280*960 @54P的配置例子: 这里写图片描述 从表中看到一帧图像的总时间为vertical blanking + 行数*(每行的种时间),一帧图像总时间的倒数即为输出帧率。 细目需要输出配置成1280*720@60的输出格式,需要重新计算。 由于一行的总时间已经确定,行数确定,因此只需要配置V的时间就可以控制输出帧率。VES标准规定,720P的像素时钟为74.25MHz,输出窗口配置成1280*720,帧率的配置主要是配置像素时钟的频率,输出的行总的像素数量,行数,这些参数都有确定值,不要要计算,但V的时间需要仔细计算一下,V的时间又主要是配置寄存器R0X300A,其参数的计算如下:
输出60帧每秒 也就是一帧图像的总时间为16.76ms
Nrows*(A+Q)为输出行的总时间,也就是720*1388*pixel clock
最后用总的帧时间减去Nrows*(A+Q)就可以得到V的时间,最终根据V的计算公式,得出Rx0300A寄存器的配置值。

寄存器的配置表如下

先配置PLL,控制像素时钟频率,在控制输出的像素格式。需要注意的是配置锁相环的时候,每个参数都有取值范围,要合理的取值,按照720行的配置=Y_ADDR_END -Y_ADDR_START +1=843-124+1=720的配置参数,,最终测试为1280*720@60P.
补充:
在自动曝光模式下,要输出4行statistical data,加上720行像素数据,因此实际输出有724行的数据,所以在计算FRAME_LENGTH_LINES 时要小心。

////////////////////////////////////////////////////////////////////
/////////////////////   Config Data LUT   //////////////////////////
//AR0134
//1280*720  24M晶振, 输出74.25M,帧率60 --- by me
//The VCO frequency, defined as fVCO = fEXTCLK × M/N must be within 384-768 MHz.
//   32 ≤ M ≤ 255
//   1 ≤ N ≤ 63
//   1 ≤ P1≤ 16
//   4≤ P2 ≤ 16
//  74.25MHz =24MHz * M /N /P1/P2    
//  74.25MHz =24MHz * 198 /8 /2 /4      
always @(*)
begin
    case(LUT_INDEX)
// [PLL_settings]
0   :       LUT_DATA<={16'h3028, 16'h0010};     //ROW_SPEED = 16   // The launch edge of PIXCLK may be set in register R0x3028.
1   :       LUT_DATA<={16'h302A, 16'h0004};     //P2=4
2   :       LUT_DATA<={16'h302C, 16'h0002};     //P1=2
3   :       LUT_DATA<={16'h302E, 16'h0008};     //N=8
4   :       LUT_DATA<={16'h3030, 16'h00C6};     //M=198
5   :       LUT_DATA<={16'h3032, 16'h0000};     //DIGITAL_BINNING = 0
6   :       LUT_DATA<={16'h30B0, 16'h0080};     //DIGITAL_TEST = 128                       
// [Timing_settings]             
8   :       LUT_DATA<={16'h301A, 16'h00D8};     //RESET_REGISTER = 216
9   :       LUT_DATA<={16'h301A, 16'h10DC};     //RESET_REGISTER = 4316  h10DC    

10  :       LUT_DATA<={16'h3002, 16'h007C};     //Y_ADDR_START = 124
11  :       LUT_DATA<={16'h3004, 16'h0002};     //X_ADDR_START = 2
12  :       LUT_DATA<={16'h3006, 16'h034B};     //Y_ADDR_END = 843 
13  :       LUT_DATA<={16'h3008, 16'h0501};     //X_ADDR_END = 1281
14  :       LUT_DATA<={16'h300A, 16'h0380};     //FRAME_LENGTH_LINES = 896 //需要仔细计算的一个参数
15  :       LUT_DATA<={16'h300C, 16'h056C};     //LINE_LENGTH_PCK = 1388
16  :       LUT_DATA<={16'h3012, 16'h008C};     //COARSE_INTEGRATION_TIME = 252  h00FC  曝光时间
17  :       LUT_DATA<={16'h3014, 16'h00E9};     //FINE_INTEGRATION_TIME = 233
18  :       LUT_DATA<={16'h30A6, 16'h0001};     //Y_ODD_INC = 1
19  :       LUT_DATA<={16'h308C, 16'h007C};     //Y_ADDR_START_CB = 124
20  :       LUT_DATA<={16'h308A, 16'h0002};     //X_ADDR_START_CB = 2
21  :       LUT_DATA<={16'h3090, 16'h034B};     //Y_ADDR_END_CB = 843
22  :       LUT_DATA<={16'h308E, 16'h0501};     //X_ADDR_END_CB = 1281
23  :       LUT_DATA<={16'h30AA, 16'h0345};     //FRAME_LENGTH_LINES_CB = 837
24  :       LUT_DATA<={16'h3018, 16'h00E9};     //FINE_INTEGRATION_TIME_CB = 233
25  :       LUT_DATA<={16'h30A8, 16'h0001};     //Y_ODD_INC_CB = 1

26  :       LUT_DATA<={16'h3040, 16'hC000};     //READ_MODE = 0,控制图像翻转
27  :       LUT_DATA<={16'h3064, 16'h1982};     //EMBEDDED_DATA_CTRL = 6530
28  :       LUT_DATA<={16'h31C6, 16'h8008};     //HISPI_CONTROL_STATUS = 32776
29  :       LUT_DATA<={16'h3056, 16'd33}    ; // Gr_GAIN
30  :       LUT_DATA<={16'h3058, 16'd45}    ; // BLUE_GAIN
31  :       LUT_DATA<={16'h305a, 16'd33}    ; // RED_GAIN
32  :       LUT_DATA<={16'h305c, 16'd33}    ; // Gb_GAIN
33  :       LUT_DATA<={16'h3100, 16'h0003}  ;   //AE;AG
34  :       LUT_DATA<={16'h3046, 16'h0100}  ;   //flash 输出
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值