CYUSB3014

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

cross mob
hongliangli
Level 1
Level 1
10 sign-ins 5 replies posted 5 questions asked

用上位机发送请求,固件接收请求,SPI与FPGA进行通讯;当上位机发出请求,示波器可以立即抓到cyusb3014 GPIO的信号,但上位机有卡顿,反应较慢,测试发现读写单个spi寄存器(24bit)的时间是100ms,请问怎么提高速度?相比较usb2.0,芯片cypress68013 的读写单个spi寄存器(24bit)的时间是10ms。

       用上位机发送请求,固件接收请求,用SlaveFifoSync固定,与FPGA进行数据传输,时钟100M;当上位机发出请求,xilinx ila可以立即抓到cyusb3014 GPIO的数据信号,但上位机有卡顿,反应较慢,测试发现上位机读取32768(32bit)的时间是130ms,请问怎么提高速度?另外,每次请求固件接收数据,flaga 拉高的时间只有1024 时钟周期。设置如下图:

hongliangli_0-1639045663830.png

 

0 Likes
1 Solution
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

你这个是用EP0读写的,可以试着用DMA模式,参考UsbSpiDmaMode这个例程,应该会快很多。

这个例程是构建的SPI 到 CPU的DMA通道,你也可以直接构建SPI到Bulk endpoint的DMA通道,这样会更快。

View solution in original post

0 Likes
6 Replies
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

您用的是哪个上位机程序?自己写的吗?

我们这个DMA通道是填满了一个才会commit(或者 发送ZLP ),你可以把DMA buffer Size调小。

0 Likes
hongliangli
Level 1
Level 1
10 sign-ins 5 replies posted 5 questions asked

SPI速度慢问题:

  上位机是我自己写的,当上位机发送请求,在固件CyCx3AppUSBSetupCB接收请求,就直接与FPGA进行SPI读写,参考官网UsbSpiGpioMode例程;

  而线程里面运行的只有SlaveFifo。下面SPI程序,先发的地址,后读取数据,经过测试第二次运行ept->XferData(&buffer_rx, buflen_rx); 函数总会卡一下,但是我运行上位机程序,在示波器上很快就有SPI传输波形,不知道为啥上位机打印回数据时就会延时很久,大概进行一次SPI读,需要150ms左右,求解析!

上位机程序:

hongliangli_0-1639387478671.png

固件程序:

hongliangli_1-1639388291213.png

 

 

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

你这个是用EP0读写的,可以试着用DMA模式,参考UsbSpiDmaMode这个例程,应该会快很多。

这个例程是构建的SPI 到 CPU的DMA通道,你也可以直接构建SPI到Bulk endpoint的DMA通道,这样会更快。

0 Likes
hongliangli
Level 1
Level 1
10 sign-ins 5 replies posted 5 questions asked

你好:

     下图start_time与end_time 是VS2013中读取一次32768个32bit的时间,监测到usb3.0到vs2013的数据速度在us级别;但在matlab中调用vs2013的程序固件,时间为0.170575s,导致数据上传时间很慢,二者不在一个数量级;请问这个问题怎么解决?谢谢。

hongliangli_0-1639391344422.png

 

0 Likes
hongliangli
Level 1
Level 1
10 sign-ins 5 replies posted 5 questions asked

我昨天测试一下,速度慢的原因在vs2013和matlab的数据传输上(我用的matlab调用vs2013生成的文件),测试vs2013检测到数据是us级别,而matlab

上显示接收完数据是150ms左右,(Slavefifo数据读和spi读写速度都是这个问题)这个是怎么回事呢,图片在上一条回复中!

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

您好,matlab的相关问题可以去咨询MathWorks,这里只负责Infineon产品相关问题。

0 Likes