使用CYUSB3065芯片调试ov新的sensor 但是不出图,e-CAMView是黑色的

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

我按照文档建立了自己的工程,我需要修改哪些内容来在电脑上出图呢?

(1)首先iic配置sensor 应该是已经可以了,是能从sensor上量到mipi数据和clk数据。

(2)在板子上Pclk  是有波形的 H-Sync   和V-Sync  在打开e-CAMView 后也是有波形的。对应的也有串口信息打印。Prod = 71 Cons = 70 Prtl_Sz = 10320 Frm_Cnt = 75712 Frm_Sz = 2624256 B   

TimeDiff = 562 ms FPS = 53    主要就是这两个信息在循环。

但是e-CAMView是黑色的fps为0 没有图像。在pc机上能看到是摄像机设备。不知道还需要修改什么地方。

我在这个工程中修改的地方有

1、配置了CX3中关于sensor输入和mipi的配置。如图1和图2 。

2、在工程搭建号后自己写了iic配置sensor的内容,只写了CyCx3_ImageSensor_Init 函数。sensor也是有应答的。我还需要修改什么地方吗?

请问谁调试过这个芯片,指导下接下来怎么调试。谢谢

hant1216_0-1619092137994.png

hant1216_1-1619092167158.png

 

hant1216_2-1619092207657.png

hant1216_3-1619092270520.png

hant1216_4-1619092427765.png

 

0 点赞
1 解答
14 回复数
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

我发现glDMATxCount  这个变量一直是0  CyCx3UvcAppDmaCallback  这函数中的

hant1216_0-1619093254321.png

 

0 点赞
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Prod = 71 Cons = 70 Prtl_Sz = 10320 Frm_Cnt = 75712 Frm_Sz = 2624256 B   首先从uart log来看pro>con 数据传输就不完整,一帧图像的大小应为1920*1080*2=4147200 和你的frame size对不上。那显然你这个mipi configuration填写的内容和实际就对不上,导致解析出来的数据有问题。你可以通过测量H-sync V-sync 再次确认下 H-blanking V-blanking是否如你所填写

 

0 点赞
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

好的,我再去仔细核对下CX3 Configuration 中参数配置。

还有几个问题向您请加下。

  1、 搭建cx3 的工程增加新的sensor 出图的简单功能,需要修改的内容就是2点吗? 1、配置正确的CX3 Configuration   2、修改cyu3imagesensor.c 文件来正确的进行sensor的配置。我这想了解下是不是自己还有没有修改到的地方。

2、Prod = 71 Cons = 70 Prtl_Sz = 10320 Frm_Cnt = 97224 Frm_Sz = 2624256 B

这几个参数还需要请教下

Prod:  这个参数是TxCount 数据过来的这个是在CyU3PDmaMultiChannelCommitBuffer这个函数调用完成后会加1。 这个是不是代表mipi解析出来一帧数据后添加帧头然后再添加回dma后。来代表出来的帧的数目吗?
Cons :这个是不是代表消费端dma拿走一帧数据后加一。代表uvc消耗了一帧吗?

Prod、 Cons   如果代表帧数的话岂不是会一直增加?
Frm_Cnt : 这个是dma读出来的数据添加帧头后的buff大小。这个是代表一帧的大小呢还是代表一行的大小呢?

Frm_Sz :这个是在每次添加帧头后(CyCx3UvcAppAddHeader这个函数)都会增加1 也是代表帧的数目吗?

status = CyU3PDmaMultiChannelGetBuffer(chHandle, &dmaBuffer, CYU3P_NO_WAIT); 这个函数中读出来的dmabuff是一帧数据呢?还是一帧数据中的一行数据呢?

3、您的回复中1920*1080*2=4147200 和你的frame size对不上 。 frame size 是Prtl_Sz 这变量的值吗? 另外1920*1080*2=4147200 的计算中乘以2 是不是因为配置中传输数据是16bit。

初次接着这个芯片有很多疑问,麻烦您指导一下了。

0 点赞
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

1.是的

2.Prod: GPIF端产生的DMA buffer数量 Cons: USB端发送出去的DMA buffer数量 Frm_Cnt:发送出去的完整的帧数 Frm_Sz:一帧图像的数据量 status 是这个commit函数的返回值,代表dma buffer commit是否成功,失败则返回错误代码

3. frame size 是Frm_Sz  Prtl_Sz代表每一帧图像数据中最后一个非满包的大小 2是因为YUY2为16bit

您可以看一下我写的这篇文章:

https://community.cypress.com/t5/Resource-Library/UVC应用USB协议包分析/ta-p/246082

 

0 点赞
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

非常感谢您之前的回答。再请教个问题,我现在发现我这边串口的打印信息没有了,打开

e-CAMView后    CyCx3UvcAppDmaCallback ()这个函数应该是没有进来。

然后量PCLK是有的,但是H-Sync 和V-Sync 是没有的。

我这边量sensor的mipi数据和clk数据都是有的。Tek001.pngTek002.png企业微信截图_16195171644214.png企业微信截图_16195171857142.png量板子上EMI4183MTTAG 这个芯片的输出也是有的(这个芯片的输出直接接到了3065 的mipi接口上的)。我个人理解,这个mipi信号过去后,3065的mipi功能应该会解析这个数据交个了gpif ii   然后gpif 将数据放大dma 。这部分内容我这边代码都没有动过。个人觉的应该会进去

CyCx3UvcAppDmaCallback () 这个函数。但是实际是没进去。请帮忙看下是为什么呢?我在cyu3imagesensor.c  这个文件中只修改了iic地址和 CyCx3_ImageSensor_Init() 初始化函数,这个函数将sensor完全初始化了并且直接开始输出mipi信号,不间断。 这里处理的时候也有问题吗?

0 点赞
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

1、串口的打印信息没有了,打开e-CAMView后    CyCx3UvcAppDmaCallback ()这个函数应该是没有进来。这个问题我这边添加了sleep和wakeup 后问题解决了。是不是信号同步的问题?

2、另外我还想请教个问题,针对于之前帧大小不对的问题。您之前说你可以通过测量H-sync V-sync 再次确认下 H-blanking V-blanking是否如你所填写。  这个通过测量H-sync V-sync 来确定H-blanking V-blanking的时间的方法您这有相关的文章吗?   现在连不到data数据或者数据使能信号,我这边判断不了消影时间。 我现在H-blanking V-blanking 的时间是按照5640的时间来配置的。

3、CX3 配置后生成的几个量是怎么意思? H-Actice 单位是时间us ,我理解这个应该是使能信号吧但是又有时间单位,就不知道代表什么意思了。     H-Total 单位也是时间us 。同样的V-Actice  、V-Total        。

4、现在从这些信息看,不知道如何进行下一步调试了,如何解决传输的帧 大小与实际帧大小不一致 问题😂,望指导下。

0 点赞
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

您好,我发现,我这设置cx3的时候输入的格式是有问题的。我这边输入的是input video farmat 10 位 ,设置的output video format  设置的是16bit(这里只能设置16或者24位) 。感觉这里有问题。计算出来出不多也是打印的值。我想问下这个3065内部是怎么算的呢? 另外我想 将input video farmat 设置成8位,将output video format  也设置成8位。这个设置完成是不是dma缓冲器的大小还是16k?  计数的限定值也需要设置?GPIFII  的总线宽度也要设置?这两个设置在哪里修改您这了解吗?谢谢

0 点赞
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

本身raw格式的数据就是不能直接读取的,请您参考这篇文章:

https://community.cypress.com/t5/Knowledge-Base-Articles/Streaming-RAW10-Format-Input-Data-to-16-24-...

hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

您好,我这边看了您推荐的文章。我修改了几个点的内容。但是还是没有出图(有颜色显示就行,不要求有正确的视频出来)。从文章理解在修改了input video format RAW10   Output Video Format   16-Bit   然后 在cyu3mipicsi.c将 CY_U3P_CSI_DF_RAW10 修改成CY_U3P_CSI_DF_YUV422_8_2 ,会将接收到的10bit的raw数据主动添加到16bit ,然后发送到gipf ii 然后再到dma  。这个dma的 数据应该是添加成16bit的 数据吧。从我打印帧信息看没有添加上去。还是10bit的 数据大小Frm_Sz = 2592000          。1920*1080x2x10/16 =2592000。   请问这个10bit的 数据是在哪个步骤加上到16bit的 呢?

企业微信截图_16196047294958.png

企业微信截图_16196046274716.png

企业微信截图_16196045798073.png

   

0 点赞
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

感谢之前的指导,现在通过您推荐的文章,通过第二种方法修改了分辨率后后能显示出颜色。没有正常视频流,这个是对的。我还想请教个两个问题。

(1)、我现在sensor的的输出格式是10bitraw。安装第一个方法设置,GPIF II 会将10bit的数据主动分装成16bit的数据。但是我从串口信息中看,帧的大小还是10bit的表示的帧的大小。并没有添加成16bit。这个是为什么呢?

(2)有没有关于raw 8bit   传输的文档呢?

(3)我能不能在数据进入了dma后,将这个数据改成yuv的数据格式呢?

期待您的指导

0 点赞
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

(1)、我现在sensor的的输出格式是10bitraw。安装第一个方法设置,GPIF II 会将10bit的数据主动分装成16bit的数据。但是我从串口信息中看,帧的大小还是10bit的表示的帧的大小。并没有添加成16bit。这个是为什么呢?

=>我贴的文档里面介绍了接收到的10bit数据会按照一定格式转换成16bit,没有多余的数据

YiZ_31_0-1619689320831.png

 

(2)有没有关于raw 8bit   传输的文档呢?

=>没有,预览的方式还是一样的,修改描述符文件。

(3)我能不能在数据进入了dma后,将这个数据改成yuv的数据格式呢?

=>这个算法太过复杂芯片运算速度跟不上的

0 点赞
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

哦哦,这回明白了,非常感谢。数据还是按照你贴图的方式传过去了。那这种方式就是需要对应的上位机软件来解析这种格式的数据并且显示这个数据了。有现成的播放器吗?还是需要自己开发?

0 点赞
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

所有的RAW格式都需要自行开发播放器的

0 点赞
hant1216
Level 2
Level 2
10 replies posted 10 sign-ins 5 replies posted

您好,我再请教个问题。我sensor出来打是10bit  raw数据,按照您之前提供的方法,设置了图像格式及uvc 的分辨率,数据能在pc端抓到了。我想问下通过UVC 传过来打数据已经不是raw数据格式的了吗?已经转换成YUV的数据格式的了吗?我现在要在pc端处理传出来的数据转换成图片

0 点赞