关于cyusb 3014数字接口的问题?

公告

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

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

cross mob
chme_4259176
Level 2
Level 2
5 replies posted 10 questions asked 5 questions asked

使用基于UVC协议传输方式,使用到接口主要包含FV,LV,PCLK和DQ0~DQ15等,如果不想使用UVC协议,但是想继续使用这种接口怎么实现,怎样能转为类似于Slave fifo模式,同时保留使用这种接口方式(FV,LV,PCLK和DQ0~DQ15),谢谢!

0 点赞
1 解答
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

我对你的需求始终无法明确理解。比如说,你是否继续用 UVC?

FX3 对于从 sensor 传输过来的数据,只是添加了 UVC 的头部信息,通过 DMA 通道提交给 host,并没有做其他修改。我不是很理解你所说的 “使用UVC传输上位机虽可以取到图像但是无法取到原始数据” 是什么意思。

如果说,你就是想实现sensor 输出了什么数据,FX3 就原封不动传输给 主机,那你就不要用 UVC 协议,做成 vendor 设备,绑定Cypress提供的驱动即可。你也可以参考下面的链接。当然,你需要基于 Cypress 提供的 API 库编写自己的主机程序。

FX3 / CX3 Firmware for Streaming RAW Image Data using Cypress Driver

在原帖中查看解决方案

0 点赞
10 回复数
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

上一条回复有误,以此条回复为准。

你可以参考 AN65974,这是FX3 做 Slave FIFO的例子。

https://www.cypress.com/documentation/application-notes/an65974-designing-ez-usb-fx3-slave-fifo-inte...

0 点赞

谢谢,但是你上面提及的这个例子用的接口里除了FV,LV,PCLK和DQ0~DQ15wait,还用了FLAGA、FLAGB、FLAGC、FLAGD、SLRD、SLCS、SLWR、SLOE、A[1:0]、PKTEND等,多出了十一根线,我不想使用这种接口方式,希望使用UVC+Salve fifo的结合方式,使用UVC方式中的数字接口,然后再使用slave fifo的数据上传传输方式。请问有什么方法吗,能实现吗?

0 点赞
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

你可以思考一个问题:什么叫 Slave FIFO?

之所以叫 Slave,是因为还有一个master。 在 AN65974 中,这个master 就指的是 FPGA。 既然有 FPGA,使用 Slave FIFO,就要按照 Slave FIFO 的时序进行读写。因此有上述你提到的其他引脚做控制。

回到你的问题,从硬件上讲,你计划怎么实现 FX3 的接口?从你的表述上看,我认为你 最接近你的需求的是 GPIF master 的Demo。

你可以参考下 SDK 目录下的 GpifToUsb这个工程。

0 点赞

我这边硬件上还是使用UVC那一种的接口。该接口仅仅包含FV、LV、DQ[0-15]、PCLK。因为使用UVC传输上位机虽可以取到图像但是无法取到原始数据,所以才想到其他的方式实现,但是我的接口又已经固定了没法改,所以就想到保留现有接口(FV、LV、DQ[0-15]、PCLK),然后使用slave fifo传输数据到上位机这种方式来解决。

0 点赞
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

我对你的需求始终无法明确理解。比如说,你是否继续用 UVC?

FX3 对于从 sensor 传输过来的数据,只是添加了 UVC 的头部信息,通过 DMA 通道提交给 host,并没有做其他修改。我不是很理解你所说的 “使用UVC传输上位机虽可以取到图像但是无法取到原始数据” 是什么意思。

如果说,你就是想实现sensor 输出了什么数据,FX3 就原封不动传输给 主机,那你就不要用 UVC 协议,做成 vendor 设备,绑定Cypress提供的驱动即可。你也可以参考下面的链接。当然,你需要基于 Cypress 提供的 API 库编写自己的主机程序。

FX3 / CX3 Firmware for Streaming RAW Image Data using Cypress Driver

0 点赞

谢谢指导,我这边不适用UVC了,只想使用这个接口(包含FV、LV、DQ[0-15]、PCLK),然后完成数据的传输即可,想问下如何实现比较好

0 点赞
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

你提的这个问题,其实我前面已经回复过了,希望你再理解一下。

你可以先动手做起来,如果有新的问题,可以继续来讨论。

0 点赞

是的,谢谢指导,昨天按照您说的试了FX3 / CX3 Firmware for Streaming RAW Image Data using Cypress Driver里面的FX3_RAWData_Cypress Driver and Descriptors.zip这个non-UVC工程,确实能够实现数据传输,但是目前还是存在两个问题1、传输速率很慢,我使用该工程测试,测得usb 3.0接口传输速率大概为10000kB/s(约10MB/s),远远低于usb 3.0的理论传输速率640MB/s。2、数据传输一段时间后就会停止传输,显示失败,streamer软件上Failures会一直报数,表明数据传输失败。

我进行了以下尝试,试图去解决上述问题:

1、增加DMA的缓存buffer数量(dmaMultiConfig.count)和dmaMultiConfig.size 。

2、DMA通道类型由CY_U3P_DMA_TYPE_MANUAL_MANY_TO_ONE改CY_U3P_DMA_TYPE_AUTO_MANY_TO_ONE

3、修改状态机文件(cyfxgpif2config.h)

4、修改dmaMultiConfig.cb = CyFxUvcApplnDmaCallback中的CyFxUvcApplnDmaCallback,按照类似于UVC那种方式去获取数据然后再发送到上位机。

最终发现上述几种方式都不能解决问题,我觉得应该是什么地方自己忽视了,所以请您指导下,万分感谢!

0 点赞
YangyangC_06
Employee
Employee
750 replies posted 500 replies posted 250 replies posted

我从大的方向上给出点建议。

首先你需要了解这个固件的框架,明白固件都做了那些事情。

其次,这个应用本身没有什么复杂的,很简单,就是 摄像头产生数据,之后FX3 采样并通过 DMA 提交给host。所以,既然数据传输出了问题,就从信号的源头上查起。先检查信号源是否还正常,测量下波形进行检查。如果正常就检查 FX3 侧,看看 GPIF 是不是工作正常, DMA 是不是收到了数据包,收到的数据包是不是都正确发送出去了。这些信息都可以从 UART 端口打印出来查看。

通过这些手段去检查,数据传输是在哪一步出错,出错的原因是什么,找到原因也就能有对应的解决方法。

0 点赞