This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM3725视频采集不到,ISP和CCDC寄存器到底该怎么配置



现在要接收的是VGA UYVY的数据。通过并行的8跟数据线进行输入。

原来用的V4l2的框架,直接配置好相机输出后传递给isp_device参数,

static struct isp_v4l2_subdevs_group beagle_camera_subdevs[] = {
{
.subdevs = mt9v128_camera_subdevs,
.interface = ISP_INTERFACE_PARALLEL,
.bus = {
.parallel = {
// .width = 8,
.data_lane_shift = 2,// 1181页
// .clk_pol = 1,
// .hdpol=1,
.vdpol=1,
.bridge =0x3, // ISPCTRL_PAR_BRIDGE_BENDIAN
// .fldmode = 0,
// .is_bt656 = 0
}
},
},
{ },
};

但是在应用程序中一直阻塞在获取图像的部分,  因为唤醒等待队列的CCDC_VD0_IRQ一直没有触发过。  

后来不用这个了,  因为我手里有一个不用v4l2框架的接受bt656的图像驱动,是直接配置ISP和CCDC的寄存器的驱动, 我按照手册修改了驱动之后,不阻塞了,获取一帧编码发送之后图像整屏都是粉色的。   

可以配置的参数都尝试了一遍  但是就是获取不了图像。   还有一个疑问是,CCDC_VDINT中设置接收够一定数量的行之后触发CCDC_VD0_IRQ中断,  但是我写的不用v4l2框架的驱动设置的这个寄存器的值为0也能收到次中断(而且必须设置接收的行数为0 才能触发这个中断)  是因为什么原因呢?  

有没有什么解决办法,   用V4l2的和不用的   谁有什么建议可以让我尝试一下,   现在已经完全没有思路了。

或者直接给我一份能接收VGA图像的ISP和CCDC的寄存器的设置也行

  •  帧有效和行有效信号都是设置为输入的,  怎么才能拿到图像啊?  

    0x0: No shift.
    CAMEXT[13:0] - CAM [13:0]
    0x1: Shift by 2.
    CAMEXT[13:2] - CAM [11:0]
    0x2: Shift by 4
    CAMEXT[13:4] - CAM [9:0]
    0x3: Shift by 6
    CAMEXT[13:6] - CAM [7:0]

    要选哪个呢?    

     INPMOD 
    0x0: Raw data
    0x1: YCbCr data on 16 bits. It is required to enable the 8
    to 16-bit bridge in the ISP_CTRL register.
    0x2: YCbCr data on 8 bits.

    INPMOD我该选择1还是2 呢?   

  • 你好,

    你接的是8-bit YUV,按解释INPMOD应该选2吧。

    你尝试过 .is_bt656 = 1么?

  • 尝试过bt656 =1  但是还是阻塞。  

    我现在有一份可以接收到bt656的驱动,    我在这个基础上修改的驱动,获取到的图像有问题,保存下起来之后只有第一行有数据,其余的数据都是ffff.   

    我接的是8bit,  不是有个8bit -> 16bit  bridge 么。 

    3:2 PAR_BRIDGE This bit field controls the 8 to 16-bit bridge at the input of
    the CCDC module.
    0x0: The bridge is disabled: no conversion.
    0x1: Reserved
    0x2: The bridge is enabled. The first byte is written to
    CAM.DATA[7:0], the second byte is written to
    CAM.DATA[15:8]
    0x3: The bridge is enabled. The first byte is written to
    CAM.DATA[15:8], the second byte is written to
    CAM.DATA[7:0]

    inputmod的两种方式我都尝试了,   0x2: YCbCr data on 8 bits. 还有一个pack8位要选择,代表着8bit/pixel  

    接收到的就是错误的。  帧有效行有效的极性也都改过了。

  • 该怎么解决啊。。。。。。。。。。给跪了

  • 你好,

    不好意思,DM37x的TRM我才申请了,还没有拿到。

    你现在是要接外同步的8-bit YUV输入对么?如果是,对比BT656,主要还是同步信息,以及什么时候开始采集的信息需要你加上,这些在BT656里面是内嵌在信号量里面了。

    你说的输出是CCDC的输出么?如果不是,建议先使能CCDC的输出,先把这个调对了,再调试后面的。

    建议你先把输入的时序弄清楚,再配置DM37x。

  • 我是在bt656的基础上改的, 去掉了bt656对隔行扫描的配置, 将寄存器中 FLDMODE  改为了逐行扫描。   还需要别的设置么?  逐行扫描相对于隔行扫描还需要有别的哪些寄存器的配置呢?      

    关于时序问题,   bt656的时序不能用在逐行扫描上么?  

    (bt656的能正确接收到图像)

  • 这个是SDK中使用v4l2框架的CCDC部分的代码,


    if (syncif->bt_r656_en)
    syn_mode |= ISPCCDC_SYN_MODE_PACK8;   

    --------------------------------------

    if ((format->code == V4L2_MBUS_FMT_YUYV8_2X8) ||
    (format->code == V4L2_MBUS_FMT_UYVY8_2X8)) {
    if (pdata->is_bt656)
    syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR8;
    else
    syn_mode |= ISPCCDC_SYN_MODE_INPMOD_YCBCR16;
    }