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
2. video/Configuration Link
- 正常模式:
- 默认模式:
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 | 0x04 0x29 0x03 0x04 0x61 |
调试问题汇总
问题1:在调试外部出发2wh模式的时候,GMSLA, GMSLB两路拼图是正常的,但是GMSLC, GMSLD两路拼图,刚开始图像是实时正常,但是几秒钟后图像变为下图的样子并卡死,没有数据流。
外部触发寄存器配置如下:
1 | 0x04 0x29 0x04 0xa0 0x08 |
解决办法:更新几个寄存器的配置如下,外触发相机正常出图:
1 | 0x04 0x29 0x04 0xa0 0x08 |
问题2:2个8m相机拼图,有一个相机的图像被拆分并对掉,图像实时
问题3:这个是因为配置0x41a寄存器为0xf0导致的问题
问题3: 分辨率不匹配的问题
原因是分倍率没有配置正确导致,实际分倍率是1280x960, 错误配置成为1288x968
问题4:配置MIPI的速率低导致图像异常
解决办法:调高MIPI每个lane的传输速率,解决问题。
基于max96712格式raw12相机调试
1 | 0x03 0x28 0x01 0x10 |
raw格式的图像
max96712的4wh模式图像先后顺序可配
1 | 通过配置 |
常见采图命令
Gstreamer命令采图
文件存盘
1
2
3
4filename1=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}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.