现在要接收的是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的寄存器的设置也行
leslie gao:
帧有效和行有效信号都是设置为输入的, 怎么才能拿到图像啊?
0x0: No shift.CAMEXT[13:0] – CAM [13:0]0x1: Shift by 2.CAMEXT[13:2] – CAM [11:0]0x2: Shift by 4CAMEXT[13:4] – CAM [9:0]0x3: Shift by 6CAMEXT[13:6] – CAM [7:0]
要选哪个呢?
INPMOD 0x0: Raw data0x1: YCbCr data on 16 bits. It is required to enable the 8to 16-bit bridge in the ISP_CTRL register.0x2: YCbCr data on 8 bits.
INPMOD我该选择1还是2 呢?
Chris Meng:
回复 leslie gao:
你好,
你接的是8-bit YUV,按解释INPMOD应该选2吧。
你尝试过 .is_bt656 = 1么?
leslie gao:
回复 Chris Meng:
尝试过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 ofthe CCDC module.0x0: The bridge is disabled: no conversion.0x1: Reserved0x2: The bridge is enabled. The first byte is written toCAM.DATA[7:0], the second byte is written toCAM.DATA[15:8]0x3: The bridge is enabled. The first byte is written toCAM.DATA[15:8], the second byte is written toCAM.DATA[7:0]
inputmod的两种方式我都尝试了, 0x2: YCbCr data on 8 bits. 还有一个pack8位要选择,代表着8bit/pixel
接收到的就是错误的。 帧有效行有效的极性也都改过了。
leslie gao:
回复 leslie gao:
该怎么解决啊。。。。。。。。。。给跪了
Chris Meng:
回复 leslie gao:
你好,
不好意思,DM37x的TRM我才申请了,还没有拿到。
你现在是要接外同步的8-bit YUV输入对么?如果是,对比BT656,主要还是同步信息,以及什么时候开始采集的信息需要你加上,这些在BT656里面是内嵌在信号量里面了。
你说的输出是CCDC的输出么?如果不是,建议先使能CCDC的输出,先把这个调对了,再调试后面的。
建议你先把输入的时序弄清楚,再配置DM37x。
leslie gao:
回复 Chris Meng:
我是在bt656的基础上改的, 去掉了bt656对隔行扫描的配置, 将寄存器中 FLDMODE 改为了逐行扫描。 还需要别的设置么? 逐行扫描相对于隔行扫描还需要有别的哪些寄存器的配置呢?
关于时序问题, bt656的时序不能用在逐行扫描上么?
(bt656的能正确接收到图像)
leslie gao:
回复 Chris Meng:
这个是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; }