0%

加减串器调试

fps = frames per second
bpp = bits per pixel

加串器max96712

1. mipi时钟,lane数和PCLK的关系

1
MIPI_CLK x LANE_CNT = PCLK x BPP

例如:24-bit RGB, 4 lanes, 1GHz Mipi clock, 则PCLK为166.667MHz
备注:GMSL1模式下PCLK限制到150MHz

  • 正常模式:
  • 默认模式:
    video-link:需要一个有效的PCLK才能进行操作
    在序列化器中设置AUTO_CLINK位=1和SEREN = 1,这样当没有PCLK存在时,设备就会在视频链接和配置链接之间自动切换

解串器max96712寄存器

1. VPRBS寄存器

  • PATGEN_CLK_SRC: Pattern generator clock source for video PRBS7, PRBS9, PRBS24, checkerboard, and gradient patterns. 0=150MHz, 1=375MHz (default)
  • VIDEO_LOCK: Video channel is locked and outputting valid video data

2. BACKTOP22寄存器

  • n_vs_block: Frame block: Block the first 1-15 frames after video lock

3. FSYNC_16寄存器

  • FSYNC_ERR_CNT: Frame Sync Error Counter (resets to 0 when read or when FSYNC_LOCKED (0x4b6) goes high)

4. INTR7(0x2A)

0x01–>FSYNC_ERR_FLAG

[BIT1] :REM_ERR_FLAG: Receives remote side error status (inverse of remote side ERRB pin level)

[BIT0] :FSYNC_ERR_FLAG: Frame Sync Error Flag, FSYNC_ERR_CNT(00x4b0) >= FSYNC_ERR_THR(0x4B1)

5. VIDEO_RX8(0x108,0x11A,0x12C,0x13E,0x150,0x168,0x17A,0x18C)

重点:关注此寄存器,监测mipi数据状态(0x62)

[BIT7] :VID_BLK_LEN_ERR: Video Rx block length error detected

[BIT6] :VID_LOCK: Video pipeline locked 0b0: video pipeline not locked 0b1:video pipeline locked

[BIT5] :VID_PKT_EDT: Video Rx sufficient packet throughput detection 0b0: insufficient packet throughput 0b1: Sufficient packer throughput

[BIT4] : VID_SEQ_ERR: Video Rx sequence error detection. 0b0: No video Rx sequence error detected 0b1: Video Rx sequence error detected

6. VPRBS(0x1DC, 0x1FC, 0x21C, 0x23C,0x27C,0x29C,0x2DC)

重点:此寄存器监测video channel的lock状态(0x81)

[BIT 0] :VIDEO_LOCK: Video channel is locker and outputing vailid video data. 0b0: Video channel is not locked 0b1: Video channel is locked.

7. BACKTOP1(0x400)

[BIT7] :CSIPLL3_LOCK: CSIPLL3 lock 0b0: PLL not locked 0b1: PLL locked

[BIT6] :CSIPLL2_LOCK: CSIPLL2 lock 0b0: PLL not locked 0b1: PLL locked

[BIT5] :CSIPLL1_LOCK: CSIPLL1 lock 0b0: PLL not locked 0b1: PLL locked

[BIT4] :CSIPLL2_LOCK: CSIPLL0 lock 0b0: CSI2 0 PLL not locked 0b1: CSI2 0 PLL locked

[BIT0] :BACKTOP_EN: Backtop write logic enable.

8. BACKTOP11(0x40A)

[BIT7] :cmd_overflow3: Pipe 3 command FIFO overflow

[BIT6] :cmd_overflow2: Pipe 2 command FIFO overflow

[BIT5] :cmd_overflow1: Pipe 1 command FIFO overflow

[BIT4] :cmd_overflow0: Pipe 0 command FIFO overflow

[BIT3] :LMO_3: Pipe 3 line memory overflow sticky register

[BIT2] :LMO_3: Pipe 2 line memory overflow sticky register

[BIT1] :LMO_3: Pipe 1 line memory overflow sticky register

[BIT0] :LMO_3: Pipe 0 line memory overflow sticky register

备注:该寄存器正常出头的过程中也存在overflow。

9. BACKTOP11(0x42A)

[BIT7] :cmd_overflow7: Pipe 7 command FIFO overflow

[BIT6] :cmd_overflow6: Pipe 6 command FIFO overflow

[BIT5] :cmd_overflow5: Pipe 5 command FIFO overflow

[BIT4] :cmd_overflow4: Pipe 4 command FIFO overflow

[BIT3] :LMO_7: Pipe 7 line memory overflow sticky register

[BIT2] :LMO_6: Pipe 6 line memory overflow sticky register

[BIT1] :LMO_5: Pipe 5 line memory overflow sticky register

[BIT0] :LMO_4: Pipe 4 line memory overflow sticky register

10. BACKTOP25(0x438)

[BIT7] :mem_err7: Pipe 7 line memory error

[BIT6] :mem_err6: Pipe 6 line memory error

[BIT5] :mem_err5: Pipe 5 line memory error

[BIT4] :mem_err4: Pipe 4 line memory error

[BIT3] :mem_err3: Pipe 3 line memory error

[BIT2] :mem_err2: Pipe 2 line memory error

[BIT1] :mem_err1: Pipe 1 line memory error

[BIT0] :mem_err0: Pipe 0 line memory error

11. FSYNC_22(0x4B6)

[BIT7] :FSYNC_LOSS_OF_LOCK: Frame Synchronization Lost Lock

[BIT6] :FSYNC_LOCKED: Frame Synchronization Lock

12. MIPI_TX2(0x902, 0x942, 0x982, 0x9c2)

[BIT7:0] : STATUS: MIPI Tx Status Register

– 0bxxxxxxx0: SYNC mode disabled

– 0bxxxxxxx1: SYNC mode enable

– 0bxxxxxx0x: Video channels not in-sync

– 0bxxxxxx1x: Video channels in-sync

– 0bxxxxx0xx: No loss of video sync

– 0bxxxxx1xx: Video sync lost after last read of this register or reset

备注:正常多个相机拼图同步,该寄存器的值为0x03, 自我感觉的低两位必须置位。

13. MIPI_PHY_19(0x8D0)

[BIT7:4] :csi2_tx1_pkt_cnt: Packer count of CSI2 Controller 1

[BIT3:0] :csi2_tx1_pkt_cnt: Packer count of CSI2 Controller 0

– 0bxxx1: PHY copy 0 FIFO overflow

– 0bxx1x: PHY copy 0 FIFO underflow

– 0bx1xx: PHY copy 1 FIFO overflow

– 0b1xxx: PHY copy 1 FIFO underflow

14. MIPI_PHY_20(0x8D1)

[BIT7:4] :csi2_tx1_pkt_cnt: Packer count of CSI2 Controller 3

[BIT3:0] :csi2_tx1_pkt_cnt: Packer count of CSI2 Controller 2

– 0bxxx1: PHY copy 0 FIFO overflow

– 0bxx1x: PHY copy 0 FIFO underflow

– 0bx1xx: PHY copy 1 FIFO overflow

– 0b1xxx: PHY copy 1 FIFO underflow

15. MIPI_PHY_21(0x8D2)

[BIT7:4] :phy1_pkt_cnt: Packet count of MIPI PHY1

[BIT3:0] :phy0_pkt_cnt: Packet count of MIPI PHY0

– 0bxxx1: PHY copy 0 FIFO overflow

– 0bxx1x: PHY copy 0 FIFO underflow

– 0bx1xx: PHY copy 1 FIFO overflow

– 0b1xxx: PHY copy 1 FIFO underflow

16. MIPI_PHY_22(0x8D3)

[BIT7:4] :phy1_pkt_cnt: Packet count of MIPI PHY1

[BIT3:0] :phy0_pkt_cnt: Packet count of MIPI PHY0

– 0bxxx1: PHY copy 0 FIFO overflow

– 0bxx1x: PHY copy 0 FIFO underflow

– 0bx1xx: PHY copy 1 FIFO overflow

– 0b1xxx: PHY copy 1 FIFO underflow

17. VID_PXL_CRC_ERR_INT(0x45)

备注:正常出图也会存在ecc错误。

  • 调试2wh的2个8m相机(异常绿图),该寄存器值为0x00
  • 调试2wh的2个2m相机(图像正常),该寄存器值为0xc0

18. MIPI_PHY(0x8d0, 0x8d1, 0x8d2, 0x8d3)

备注:正常出图也会存在copy FIFO overflow

  • 调试2wh的2个8m相机(异常绿图),该寄存器为reg[0x8d0]=0x00, reg[0x8d1]=0x00
  • 调试2wh的2个2m相机(图像正常),该寄存器为reg[0x8d0]=0xc0, reg[0x8d1]=0x0b

GMSL1外触发配置

如果外接一个相机,则只配置对应那一路的gpio(0xb08, 0xc08, 0xd08, 0xe08),否则多配或少配都会导致加串配置失败。

1
2
3
4
5
6
7
8
9
10
11
12
0x04 0x29 0x03 0x04 0x61
0x04 0x29 0x03 0x0a 0x63

0x04 0x29 0x04 0xa0 0x08
0x04 0x29 0x04 0xaf 0x1f
0x04 0x29 0x0b 0x08 0x61
#0x04 0x29 0x0c 0x08 0x61
#0x04 0x29 0x0d 0x08 0x61
#0x04 0x29 0x0e 0x08 0x61

/*加串器配置默认gpio都是打开的,所以不用配置寄存器0xf*/
#0x03 0x40 0xf 0x83

调试问题汇总

问题1:在调试外部出发2wh模式的时候,GMSLA, GMSLB两路拼图是正常的,但是GMSLC, GMSLD两路拼图,刚开始图像是实时正常,但是几秒钟后图像变为下图的样子并卡死,没有数据流。

外部触发寄存器配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
0x04 0x29 0x04 0xa0 0x08
0x04 0x29 0x04 0xa2 0x60
0x04 0x29 0x04 0xaf 0x9f
0x04 0x29 0x03 0x06 0x83
0x04 0x29 0x03 0x3D 0x22

0x04 0x40 0x02 0xbe 0x00
0x00 1
0x04 0x40 0x02 0xbe 0x10
0x04 0x40 0x03 0x18 0x5E
0x00 0.05
0x04 0x40 0x02 0xd5 0x02
0x04 0x40 0x02 0xd3 0x84

解决办法:更新几个寄存器的配置如下,外触发相机正常出图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0x04 0x29 0x04 0xa0 0x08
0x04 0x29 0x04 0xa2 0x60
0x04 0x29 0x04 0xaf 0x9f
0x04 0x29 0x03 0x06 0x83
0x04 0x29 0x03 0x3D 0x22
0x04 0x29 0x03 0x74 0x22
0x04 0x29 0x03 0xAA 0x22

0x04 0x40 0x02 0xbe 0x00
0x00 1
0x04 0x40 0x02 0xbe 0x10
0x04 0x40 0x03 0x18 0x5E
0x00 0.05
0x04 0x40 0x02 0xd5 0x02
0x04 0x40 0x02 0xd3 0x84

问题2:2个8m相机拼图,有一个相机的图像被拆分并对掉,图像实时

问题3:这个是因为配置0x41a寄存器为0xf0导致的问题

问题3: 分辨率不匹配的问题

原因是分倍率没有配置正确导致,实际分倍率是1280x960, 错误配置成为1288x968

问题4:配置MIPI的速率低导致图像异常

image-20240126112433332

解决办法:调高MIPI每个lane的传输速率,解决问题。

基于max96712格式raw12相机调试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
0x03 0x28 0x01 0x10
0x00 5
0x04 0x29 0x00 0x13 0x40
0x00 3

0x04 0x29 0x03 0x00 0x81
0x00 0.002
0x04 0x29 0x00 0x01 0xCD
0x00 0.002

0x04 0x29 0x04 0x0B 0x00
0x00 0.002

0x04 0x29 0x08 0xA0 0x04
0x04 0x29 0x08 0xA3 0xE4
0x04 0x29 0x08 0xA4 0xE4
#0x04 0x29 0x08 0xA3 0x1b
#0x04 0x29 0x08 0xA4 0x1b
#0x04 0x29 0x00 0x51 0x02
#0x04 0x29 0x00 0x52 0x01
0x00 0.002

0x04 0x29 0x04 0x14 0x00
0x04 0x29 0x04 0x17 0x00
0x04 0x29 0x09 0x0A 0xC0
0x04 0x29 0x09 0x4A 0xC0
0x04 0x29 0x09 0x8A 0xC0
0x04 0x29 0x09 0xCA 0xC0
0x00 0.002


0x04 0x29 0x09 0x0B 0x07
0x04 0x29 0x09 0x0C 0x00
0x04 0x29 0x09 0x0D 0x2c
0x04 0x29 0x09 0x0E 0x2c
0x04 0x29 0x09 0x0F 0x00
0x04 0x29 0x09 0x10 0x00
0x04 0x29 0x09 0x11 0x01
0x04 0x29 0x09 0x12 0x01
0x04 0x29 0x09 0x2D 0x15
0x00 0.002


0x04 0x29 0x09 0x4B 0x07
0x04 0x29 0x09 0x4C 0x00
0x04 0x29 0x09 0x4D 0x2c
0x04 0x29 0x09 0x4E 0x6c
0x04 0x29 0x09 0x4F 0x00
0x04 0x29 0x09 0x50 0x40
0x04 0x29 0x09 0x51 0x01
0x04 0x29 0x09 0x52 0x41
0x04 0x29 0x09 0x6D 0x15
0x00 0.002


0x04 0x29 0x09 0x8B 0x07
0x04 0x29 0x09 0x8C 0x00
0x04 0x29 0x09 0x8D 0x2c
0x04 0x29 0x09 0x8E 0xac
0x04 0x29 0x09 0x8F 0x00
0x04 0x29 0x09 0x90 0x80
0x04 0x29 0x09 0x91 0x01
0x04 0x29 0x09 0x92 0x81
0x04 0x29 0x09 0xAD 0x15
0x00 0.002


0x04 0x29 0x09 0xCB 0x07
0x04 0x29 0x09 0xCC 0x00
0x04 0x29 0x09 0xCD 0x2c
0x04 0x29 0x09 0xCE 0xec
0x04 0x29 0x09 0xCF 0x00
0x04 0x29 0x09 0xD0 0xC0
0x04 0x29 0x09 0xD1 0x01
0x04 0x29 0x09 0xD2 0xC1
0x04 0x29 0x09 0xED 0x15
0x00 0.002


0x04 0x29 0x08 0xA9 0xC8

0x04 0x29 0x00 0xF0 0x62
0x04 0x29 0x00 0xF1 0xEA
0x04 0x29 0x00 0xF4 0x0F

0x04 0x29 0x04 0x0C 0x00
0x04 0x29 0x04 0x0D 0x00
0x04 0x29 0x04 0x0E 0xAC
0x04 0x29 0x04 0x0F 0xBC
0x04 0x29 0x04 0x10 0xB0
0x00 0.002

0x04 0x29 0x04 0x11 0x48
0x04 0x29 0x04 0x12 0x20
0x00 0.002

0x04 0x29 0x04 0x15 0xf9
0x04 0x29 0x04 0x18 0xf9
0x00 0.002
0x04 0x29 0x04 0x1B 0x39
0x04 0x29 0x04 0x1E 0x39

0x04 0x29 0x00 0x06 0xf2
0x00 0.002

0x04 0x29 0x00 0x04 0x0F
0x04 0x29 0x04 0x0B 0x42
#0x04 0x29 0x04 0x0B 0x62
0x00 0.002

0x03 0x28 0x01 0x1f
0x00 5

#0x04 0x40 0x02 0xD3 0x10
#0x04 0x40 0x03 0x30 0x00
#0x04 0x40 0x03 0x31 0x33
#0x04 0x40 0x03 0x32 0xEE
#0x04 0x40 0x03 0x33 0xE4
#0x04 0x40 0x03 0x08 0x63
#0x04 0x40 0x03 0x11 0x30
#0x04 0x40 0x00 0x02 0x33

0x04 0x40 0x03 0x18 0x6c
#0x04 0x40 0x03 0x16 0x52
0x00 0.05

0xFF

raw格式的图像
image-20240126112433332

max96712的4wh模式图像先后顺序可配

1
2
通过配置

常见采图命令

  • Gstreamer命令采图

    1. 文件存盘

      1
      2
      3
      4
      filename1=video1_$(date +%Y%m%d)_$(date +%H%M%S).yuv
      filename0=video0_$(date +%Y%m%d)_$(date +%H%M%S).yuv
      gst-launch-1.0 v4l2src num-buffers=450 device=/dev/video0 ! "video/x-raw,format=UYVY,width=1280,height=960,framerate=30/1" ! filesink location=${filename0} &
      gst-launch-1.0 v4l2src num-buffers=450 device=/dev/video1 ! "video/x-raw,format=UYVY,width=1280,height=960,framerate=30/1" ! filesink location=${filename1}
    2. hdmi预览

      1
      gst-launch-1.0 v4l2src device=/dev/video$1 ! "video/x-raw,format=UYVY,width=$2,height=$3,framerate=30/1" ! xvimagesink -ev sync=false
  • ffplay播放视频

    1
    ffplay -video_size 7680x1080 -autoexit -pix_fmt yuv422p camera.yuv

调试2个2WH模式的相机问题。

图像异常

1.