Line 1: |
Line 1: |
| [[VEYE-MIPI-290/327 i2c/zh|查看中文]] | | [[VEYE-MIPI-290/327 i2c/zh|查看中文]] |
| | | |
− | | + | [[VEYE-MIPI-290/327 i2c/|<big><big><big><big>VEYE-MIPI-X I2C.sh user guide</big></big></big></big>]] |
− | '''<big>veye_mipi_i2c.sh MANUAL</big>'''
| |
| | | |
| ===Overview=== | | ===Overview=== |
− | There are 4 files: camera_i2c_config、i2c_read、i2c_write、veye_mipi_i2c.sh。 | + | There are 4 files: camera_i2c_config、i2c_read、i2c_write、veye_mipi_i2c.sh |
| | | |
| + | ===RaspberryPi Only, Set IO config=== |
| Running | | Running |
| | | |
Line 16: |
Line 16: |
| | | |
| Then you can run veye_mipi_i2c.sh. | | Then you can run veye_mipi_i2c.sh. |
− | ===camera_i2c_config USAGE=== | + | ====camera_i2c_config USAGE==== |
| | | |
| *for standard RPI, just run | | *for standard RPI, just run |
Line 34: |
Line 34: |
| |1 | | |1 |
| |CAM1 | | |CAM1 |
− | |}<br /> | + | |} |
| ===veye_mipi_i2c.sh USAGE=== | | ===veye_mipi_i2c.sh USAGE=== |
| ./veye_mipi_i2c.sh | | ./veye_mipi_i2c.sh |
| | | |
− | Usage: ./veye_mipi_i2c.sh [-r/w] [-f] function name -p1 param1 -p2 param2 -b bus | + | Usage: ./veye_mipi_i2c.sh [-r/w] [-f] function name -p1 param1 -p2 param2 -b bus -d i2caddr |
| | | |
| options: | | options: |
Line 54: |
Line 54: |
| -b [i2c bus num] i2c bus number | | -b [i2c bus num] i2c bus number |
| | | |
− | support functions: devid,hdver,wdrmode,videoformat,mirrormode,denoise,agc,lowlight,daynightmode,ircutdir,irtrigger,mshutter
| + | -d [i2c addr] i2c device address |
| + | === i2c bus number on different board === |
| + | Please refer to the following article to determine which -b parameter you need to use. |
| | | |
− | Pi3B / Pi3B+ / 3A / 4B(1G/2G/4G),we use i2c0
| + | [[I2c bus number and video node|i2c bus number on different boards]] |
| | | |
− | Compute Module/ CM3,we use i2c1,please add '''-b 1''' option.
| + | === Functions list === |
| | | |
| =====devid===== | | =====devid===== |
Line 66: |
Line 68: |
| !description | | !description |
| |- | | |- |
− | |0x02 | + | |0x06 |
− | |MIPI, WDRDisable, 2Lane
| + | |VEYE-MIPI-X series,IMX327 IMX462 IMX385 |
− | |- | |
− | |0x22
| |
− | |MIPI, WDREnable, 2Lane
| |
− | |-
| |
− | |0x13
| |
− | |LVDS,WDRDisable,3Lane
| |
− | |-
| |
− | |0x33
| |
− | |LVDS,WDREnable,3Lane
| |
| |} | | |} |
| =====hdver===== | | =====hdver===== |
Line 87: |
Line 80: |
| |Version | | |Version |
| |} | | |} |
| + | The isp fireware release time will also be printed. |
| + | |
| + | ===== sensorid ===== |
| + | <code>./veye_mipi_i2c.sh -r -f sensorid</code> |
| + | |
| + | Print sensor type and board information. |
| + | |
| =====wdrmode===== | | =====wdrmode===== |
| <code>./veye_mipi_i2c.sh -r -f wdrmode | | <code>./veye_mipi_i2c.sh -r -f wdrmode |
Line 104: |
Line 104: |
| |- | | |- |
| |0x03 | | |0x03 |
− | |WDR Enable | + | |DOL WDR Enable |
| |} | | |} |
| =====videoformat===== | | =====videoformat===== |
Line 113: |
Line 113: |
| !value | | !value |
| !description | | !description |
| + | !frame rate |
| |- | | |- |
| |PAL | | |PAL |
| |PAL(50Hz) | | |PAL(50Hz) |
| + | |25fps |
| |- | | |- |
| |NTSC | | |NTSC |
| |NTSC(60Hz) | | |NTSC(60Hz) |
| + | |30fps |
| |} | | |} |
| =====mirrormode===== | | =====mirrormode===== |
Line 197: |
Line 200: |
| <code>./veye_mipi_i2c.sh -r -f agc | | <code>./veye_mipi_i2c.sh -r -f agc |
| ./veye_mipi_i2c.sh -w -f agc -p1 [value]</code> | | ./veye_mipi_i2c.sh -w -f agc -p1 [value]</code> |
| + | agc indicated max gain of AE mode. |
| + | |
| + | Agc stands for auto gain control. It is a part of auto exposure, in different light intensity, will try to adjust the gain of sensor to achieve the same image brightness. 0xC by default. |
| {| class="wikitable" | | {| class="wikitable" |
| !value | | !value |
Line 207: |
Line 213: |
| <code>./veye_mipi_i2c.sh -r -f lowlight | | <code>./veye_mipi_i2c.sh -r -f lowlight |
| ./veye_mipi_i2c.sh -w -f lowlight -p1 [value]</code> | | ./veye_mipi_i2c.sh -w -f lowlight -p1 [value]</code> |
| + | In the case of low illuminance, the camera module can prolong the exposure time and reduce the frame rate by configuring this parameter to achieve a better effect of low illuminance. |
| + | |
| + | Note that the set value is the minimum frame rate value and the actual frame rate value is affected by the automatic exposure algorithm. |
| + | |
| + | Note that it is not suitable for use in a sports scene. |
| {| class="wikitable" | | {| class="wikitable" |
| !value | | !value |
− | !description | + | !minimum fps |
| |- | | |- |
| |0x01 | | |0x01 |
Line 257: |
Line 268: |
| |Trigger Mode | | |Trigger Mode |
| |} | | |} |
− | mshutter | + | IR-CUT (Infrared cut-off filter) is a mechanical shutter design. It is placed between the lens and the image sensor, and is controlled by a motor or an electromagnet. |
− | <br /> | + | |
| + | IR-CUT has two status: '''Block''' or '''Deliver''' the infrared. |
| + | |
| + | *Color Mode |
| + | |
| + | Image is Color Mode and IR_CUT status '''Block''' infrared. |
| + | |
| + | *Black&White Mode |
| + | |
| + | Image is Black&White Mode and IR_CUT status '''Deliver''' infrared. |
| + | |
| + | *Trigger Mode |
| + | |
| + | Trigger pin : [[VEYE-MIPI-290/327|J3 pin1 of VEYE-MIPI-327]] or [[VEYE-MIPI-IMX327S Data Sheet|J2 pin1 of VEYE-MIPI-IMX327S]]. |
| + | |
| + | Trigger pin High(3.3~12V),Image is Black&White Mode and IR-CUT status '''Deliver''' infrared. |
| + | |
| + | Trigger pin Low(GND),Image is Color Mode and IR-CUT status '''Bolck''' infrared. |
| + | |
| + | ===== ircutdir ===== |
| + | <code>./veye_mipi_i2c.sh -r -f ircutdir</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f ircutdir -p1 [value]</code> |
| + | |
| + | IR_CUT pins control direction. value could be 0 or 1. |
| + | =====irtrigger===== |
| + | <code>./veye_mipi_i2c.sh -r -f irtrigger</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f irtrigger -p1 [value]</code> |
| + | |
| + | Polarity setting of the day/night switching external trigger mode pin. |
| + | {| class="wikitable" |
| + | ! value |
| + | !description |
| + | |- |
| + | |0x0 |
| + | |default value,refer to datasheet of different boards. |
| + | |- |
| + | |0x1 |
| + | |Reversed. |
| + | |} |
| + | =====mshutter===== |
| + | Automatic exposure, manual exposure mode selection and configuration. |
| + | |
| + | <code>./veye_mipi_i2c.sh -r -f mshutter</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f mshutter -p1 [value]</code> |
| + | |
| + | value is exposure time(seconds) |
| + | |
| + | If value is greater than or equal to 0x4B, it will reduce framerate. |
| + | {| class="wikitable" |
| + | |+ |
| + | !value |
| + | !description |
| + | |- |
| + | | |
| + | |NTSC(PAL) |
| + | |- |
| + | |0x40 |
| + | |auto mode |
| + | |- |
| + | |0x41 |
| + | |1/30 (25) |
| + | |- |
| + | |0x42 |
| + | |1/60(50) |
| + | |- |
| + | |0x43 |
| + | |1/120(100) |
| + | |- |
| + | |0x44 |
| + | |1/240(200) |
| + | |- |
| + | |0x45 |
| + | |1/480(400) |
| + | |- |
| + | |0x46 |
| + | |1/1000 |
| + | |- |
| + | |0x47 |
| + | |1/2000 |
| + | |- |
| + | |0x48 |
| + | |1/5000 |
| + | |- |
| + | |0x49 |
| + | |1/10000 |
| + | |- |
| + | |0x4A |
| + | |1/50000 |
| + | |- |
| + | |0x4B |
| + | |1/30 (25) *2 |
| + | |- |
| + | |0x4C |
| + | |1/30 (25) *4 |
| + | |- |
| + | |0x4D |
| + | |1/30 (25) *6 |
| + | |- |
| + | |0x4E |
| + | |1/30 (25) *8 |
| + | |- |
| + | |0x4F |
| + | |1/30 (25) *10 |
| + | |- |
| + | |0x50 |
| + | |1/30 (25) *15 |
| + | |- |
| + | |0x51 |
| + | |1/30 (25) *20 |
| + | |- |
| + | |0x52 |
| + | |1/30 (25) *25 |
| + | |- |
| + | |0x53 |
| + | |1/30 (25) *30 |
| + | |} |
| + | |
| + | =====cameramode===== |
| + | Requirements:hdver >= 0x3 |
| + | |
| + | <code>./veye_mipi_i2c.sh -r -f cameramode</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f cameramode -p1 [value]</code> |
| + | {| class="wikitable" |
| + | !value |
| + | !description |
| + | |- |
| + | |0x0 |
| + | |Stream mode |
| + | |- |
| + | |0x1 |
| + | |Capture mode |
| + | |}Stream mode: stream output |
| + | |
| + | Caputre mode: output the next frame each '''capture''' cmd. |
| + | =====nodf===== |
| + | Requirements:hdver >= 0x3, effective in Stream mode |
| + | |
| + | Number of dropped frames |
| + | |
| + | It is a method of framerate control, output one frame,discard '''nodf''' frames,output next frame, and so on. |
| + | |
| + | ''actual framerate = original framerate /(1+nodf)'' |
| + | |
| + | For example,if the original framerate is 30fps, set '''nodf''' to 2, then ''actual framerate'' is 10fps. |
| + | |
| + | <code>./veye_mipi_i2c.sh -r -f nodf</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f nodf -p1 [value]</code> |
| + | |
| + | '''ntof''' range is [0-0xFF], default 0. |
| + | =====capture===== |
| + | Requirements:hdver >= 0x3, effective in Capture mode |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f capture</code> |
| + | |
| + | Output the next frame. This cmd does not interfere the sensor, it just output the next frame (the newest frame). |
| + | |
| + | So it is not trigger mode, there will be a delay[0,1/framerate] between the cmd and the frame exposure. |
| + | |
| + | It is applicable to those that do not require a high level of real-time performance. |
| + | =====csienable===== |
| + | Requirements:hdver >= 0x3 |
| + | |
| + | <code>./veye_mipi_i2c.sh -r -f csienable</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f csienable -p1 [value]</code> |
| + | {| class="wikitable" |
| + | !value |
| + | !description |
| + | |- |
| + | |0x0 |
| + | |suspend csi output |
| + | |- |
| + | |0x1 |
| + | |enable csi output |
| + | |}default: 0x1 |
| + | |
| + | Note: This is not low power mode, the camera is still working. |
| + | =====brightness===== |
| + | <code>./veye_mipi_i2c.sh -r -f brightness</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f brightness -p1 0x32</code> |
| + | |
| + | AE Target Brightness,rang: [0,0x64] |
| + | =====aespeed===== |
| + | <code>./veye_mipi_i2c.sh -r -f aespeed</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f aespeed -p1 0x32 -p2 0x32</code> |
| + | |
| + | AE adjust speed,p1 is agc speed, p2 is shutter speed,Slow to Fast: [0,0x64] |
| + | =====contrast===== |
| + | <code>./veye_mipi_i2c.sh -r -f contrast</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f contrast -p1 0x32</code> |
| + | |
| + | Contrast,range: [0,0xFF],default: 0x80. |
| + | |
| + | =====saturation===== |
| + | <code>./veye_mipi_i2c.sh -r -f saturation</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f saturation -p1 0x32</code> |
| + | |
| + | Saturation, range: [0,0x64]. |
| + | |
| + | ===== sharppen ===== |
| + | <code>./veye_mipi_i2c.sh -r -f sharppen</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f sharppen -p1 [val1] -p2 [value]</code> |
| + | {| class="wikitable" |
| + | !param1 value |
| + | !description |
| + | |- |
| + | |0x0 |
| + | | sharppen disable |
| + | |- |
| + | |0x1 |
| + | | sharppen enable |
| + | |}default: 0x1 |
| + | |
| + | param2: sharppen strength, range [0x0-0xA] |
| + | =====wdrsharppen===== |
| + | <code>./veye_mipi_i2c.sh -r -f wdrsharppen</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f wdrsharppen -p1 [val1] -p2 [value]</code> |
| + | |
| + | sharppeness setting on DOL WDR mode. |
| + | {| class="wikitable" |
| + | ! param1 value |
| + | !description |
| + | |- |
| + | |0x0 |
| + | |sharppen disable |
| + | |- |
| + | |0x1 |
| + | | sharppen enable |
| + | |}default: 0x1 |
| + | |
| + | param2: sharppen strength, range [0x0-0xA] |
| + | =====wdrtargetbr===== |
| + | <code>./veye_mipi_i2c.sh -r -f wdrtargetbr</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f wdrtargetbr -p1 0x80</code> |
| + | |
| + | The overall AE target value in WDR mode. |
| + | |
| + | Takes effect in WDR mode. range: [0-0xFF], default : 0x80. |
| + | =====wdrbtargetbr===== |
| + | <code>./veye_mipi_i2c.sh -r -f wdrbtargetbr</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f wdrbtargetbr -p1 0x80</code> |
| + | |
| + | The AE target value of the bright area in WDR mode. |
| + | |
| + | Takes effect in WDR mode. range: [0-0xFF], default : 0x80. |
| + | |
| + | ===== boardmodel ===== |
| + | <code>./veye_mipi_i2c.sh -r -f boardmodel</code> |
| + | |
| + | Requirment: hdver >=4. |
| + | |
| + | Read the board number of the board, which can be used to distinguish between VEYE-MIPI-327 and VEYE-MIPI-IMX327S. |
| + | |
| + | ===== i2cwen ===== |
| + | <code>./veye_mipi_i2c.sh -r -f i2cwen</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f i2cwen -p1 [0/1]</code> |
| + | |
| + | Requirment: hdver >=4. |
| + | |
| + | Whether to enable the i2C write register function of the camera, enabled by default. It is used for register write protection in special cases. |
| + | |
| + | ===== i2cauxenable ===== |
| + | <code>./veye_mipi_i2c.sh -r -f i2cauxenable</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f i2cauxenable -p1 [0/1]</code> |
| + | |
| + | Requirment: hdver >=4. |
| + | |
| + | Whether to enable auxiliary i2C. If enable auxiliary i2C, the primary i2C on the FFC cable cannot be used. Used for bus conflict resolution in special cases. |
| + | ===== awbgain ===== |
| + | <code>./veye_mipi_i2c.sh -r -f awbgain</code> |
| + | |
| + | Read the Rgain and Bgain of the current white balance status , parameter range [0,0xFF]. |
| + | =====wbmode===== |
| + | <code>./veye_mipi_i2c.sh -r -f wbmode</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f wbmode -p1 [value]</code> |
| + | |
| + | White balance mode setting. |
| + | {| class="wikitable" |
| + | !value |
| + | !description |
| + | |- |
| + | |0x18 |
| + | |Auto white balance |
| + | |- |
| + | |0x1B |
| + | | Manual white balance |
| + | |} |
| + | ===== mwbgain===== |
| + | <code>./veye_mipi_i2c.sh -r -f mwbgain</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f mwbgain -p1 [rgain] -p2 [bgain]</code> |
| + | |
| + | Rgain and Bgain setting in manual white balance mode.arameter range [0,0xFF]. |
| + | =====yuvseq===== |
| + | <code>./veye_mipi_i2c.sh -w -f yuvseq -p1 YUYV</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f yuvseq -p1 UYVY</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -r -f yuvseq</code> |
| + | |
| + | Set yuv seq of camera. |
| + | |
| + | Note: only supported on hdver >= 0x4 |
| + | |
| + | === New function list === |
| + | The following new features are only supported in camera's firmware versions with ''release time'' later than 2022-11-22. |
| + | |
| + | ===== paramsave ===== |
| + | <code>./veye_mipi_i2c.sh -w -f paramsave</code> |
| + | |
| + | Save isp-related parameters to flash. |
| + | |
| + | ===== new_expmode ===== |
| + | <code>./veye_mipi_i2c.sh -r -f new_expmode</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f new_expmode -p1 [0/1]</code> |
| + | |
| + | Whether the new version of manual exposure is enabled. |
| + | |
| + | If the new version manual exposure is enabled, then: |
| + | |
| + | # The original ''mshutter'' command is no longer in effect, ''new_mshutter'' takes effect. |
| + | # gain (agc) from automatic mode also changed to manual mode, ''new_mgain'' takes effect. |
| + | |
| + | ===== new_mshutter ===== |
| + | <code>./veye_mipi_i2c.sh -r -f new_mshutter</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f new_mshutter -p1 1000</code> |
| + | |
| + | New version of manual exposure time configuration, in us in the range [1,1000000]. |
| + | |
| + | Since the sensor can not support accurate exposure time of 1us, it is recommended to read it for confirmation after configuration. |
| + | |
| + | ===== new_mgain ===== |
| + | <code>./veye_mipi_i2c.sh -r -f new_mgain</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f new_mgain -p1 2.1</code> |
| + | |
| + | The new version manual gain, depending on the sensor, accurate to 0.1dB or 0.3dB. |
| + | |
| + | ===== auto_shutter_max ===== |
| + | This feature is only supported in versions with ''release time'' later than 2022-12-09. |
| + | |
| + | Configure the upper limit of auto exposure when '''mshutter''' is configured to auto. |
| + | |
| + | <code>./veye_mipi_i2c.sh -r -f auto_shutter_max</code> |
| + | |
| + | <code>./veye_mipi_i2c.sh -w -f auto_shutter_max -p1 1000</code> |
| + | |
| + | in us in the range [1,1000000/fps]. |
| + | |
| + | Since the sensor can not support accurate exposure time of 1us, it is recommended to read it for confirmation after configuration. |