根据CXP XML文件配置相机

 

1     说明

GenICam 定义了相机需要实施一个xml文件用于描述相机的功能、寄存器等详细信息,有了这些信息,host才能利用这些信息完成对相机的配置。

 

对于CoaxPress 接口的Device相机而言,xml信息是如何存储的呢?

Xml 一般情形下都会存在bootstrap 寄存器的用户区间内。

1.1    为什么要xml

 

 

 

1.2    xml存在哪里

 

2     如何读出xml文件

利用标准采集卡及其对应的SDK应该都可以导出xml配置文件。

2.1    华睿相机

我们以kaya 的采集卡为例进行说明。

 

 

 

图 2‑1 kaya 采集卡及其配套SDK VISION POINT获取相机信息

 

导出其xml文件即可。

 

 

 

该相机型号为华睿 A9B57CX200

 

 

 

图 2‑2 华睿 A9B57CX200 4 通道6.25Gbps CoaXPress

 

2.2    海康相机

 

 

 

图 2‑3 HK MVGY1004采集卡 MVS界面

 

选中相机右键即可保存相机的xml文件

 

 

 

 

图 2‑4 HK CXP 属性

 

 

 

图 2‑5 相机拍摄画面

 

 

图 2‑6 海康大面阵相机

2.3    Admic相机

 

 

图 2‑7 Admic 相机连接

 

 

 

图 2‑8 Admic 小相机

 

 

3     SDK demo 如何根据xml配置相机

 

以huarui_A9B57CX200.xml 为示例进行说明,如何在SDK demo中完成相机寄存器的配置。

 

3.1    配置图像格式

首先查看相机格式寄存器地址。

 

上图意思是说,PixelFormatReg地址是在ImageFormatControlBase 基地址基础上偏移0x0030,对应实际地址为ImageFormatControlBase + 0x0030, ImageFormatControlBase为0x30010000。

那么向寄存器写入什么值呢?如下图所示,如果要配置成Mono8,那么PixelFormatReg就要写入0x01080001.

 

那么怎么写入呢?

在SDK Demo中,如何完成这个配置呢?

调用 WRITE_DEVICE_REG (int address, int value) 即可,如果要读出数据,调用 int read_value = READ_DEVICE_REG(int address) 即可。

 

在什么位置完成相机的设置呢?

应该在设备链接建立之后配置。

3.2    配置曝光时间

 

根据附录示例,曝光时间参数地址 AcquisitionControlBase + 0x0058, //int Addr_ExposureTime;

那么对应增加WRITE_DEVICE_REG (0x30020000+ 0X58, exposure_time), 通常相机单位是us。

曝光模式也是类似的设置。

 

 

4     附录

以huarui_A9B57CX200.xml 为示例

//huarui A9B57CX200 5000*5000

const CameraRegisters CameraRegistersVendorHuarui = {

#define AcquisitionControlBase                0x30020000

       AcquisitionControlBase + 0x0000,//int Addr_AcquisitionMode;

       AcquisitionControlBase + 0x0004,      //int Addr_AcquisitionStart;// 1

       AcquisitionControlBase + 0x0008,      //int Addr_AcquisitionStop  ;// 1

       AcquisitionControlBase + 0x000c,      //int Addr_AcquisitionBurstFrameCount;// 1

       AcquisitionControlBase + 0x0010,      //int Addr_AcquisitionFrameRate;

       AcquisitionControlBase + 0x0014,//int AcquisitionStatusAcq

              //int Addr_AcquisitionFrameRateEnable;

              //int Addr_AcquisitionFrameRateMax;

              ////#define ResetAll                                  0x00008300//resets the camera to its power up state

       AcquisitionControlBase + 0x0020,//int Addr_TriggerMode     ; //sel==1 ¹Ì¶¨ÉèÖÃ

       AcquisitionControlBase + 0x0030,      //int Addr_TriggerSource;

       AcquisitionControlBase + 0x0038,      //int Addr_TriggerActivation;

       AcquisitionControlBase + 0x0028,//int Addr_TriggerSoftware;

       AcquisitionControlBase + 0x003c,      //Addr_TriggerDelay

 

       AcquisitionControlBase + 0x0048,      //int Addr_ExposureMode;

       AcquisitionControlBase + 0x0050,      //int Addr_ExposureTimeMinReg;

       AcquisitionControlBase + 0x0054,      //int Addr_ExposureTimeMaxReg;

       AcquisitionControlBase + 0x0058,      //int Addr_ExposureTime;   

 

#define AnalogControlBase                      0x30030000

              AnalogControlBase + 0x001C,//int Addr_BlackLevel;//Controls the analog black level 0-255

              AnalogControlBase + 0x000C,//int Addr_AnalogGain;//Defines the analog Gain in discrete steps.enum x1 x2 x4

              //

              //

#define ImageFormatControlBase                   0x30010000

       ImageFormatControlBase + 0x0010,//int Addr_Width            ;

       ImageFormatControlBase + 0x001c,//int Addr_Height           ;

       ImageFormatControlBase + 0x0028,//int Addr_OffsetX          ;

       ImageFormatControlBase + 0x002C,//int Addr_OffsetY         ;

       ImageFormatControlBase + 0x0030,//int Addr_PixelFormat   ;

       ImageFormatControlBase + 0x0004,//int Addr_SensorHeight ;

       ImageFormatControlBase + 0x0674,//int Addr_SensorWidth ;

       ImageFormatControlBase + 0x003c,//int Addr_TEST_IMAGE_SLECTOR;//TestImageSelector

              //

#define TransportLayerControlBase          0x30040000

       TransportLayerControlBase + 0x4,//int Addr_TapGeometry   ; //0x0004

       TransportLayerControlBase + 0x301C,//int Addr_Image1StreamID;      

};

posted @ 2024-02-29 13:19  Hello-FPGA  阅读(422)  评论(0编辑  收藏  举报