USB superspeed peripherals Forum Discussions
Hi,
For FX2LP, we had a .hex file which we used CyScript.exe to generate an .spt file. What I should do for converting the FX3.0's .img file to .spt file?
Thanks,
Nazila
Show LessHello everyone,
I'm looking to test out my GPIF II interface which connects to an external FPGA via the p-port. I am using the FX3 as a master, synchronous communication, an 8 bit address bus, and a 32 bit data bus. My firmware is a modifed version of the "SlaveFifoSync" example, and uses DMA channels for data transfer, with bulk out endpoint set as 0x01 and bulk in endpoint as 0x81.
Using the "USB Control Center" application, I am able to transfer data out to the FPGA using the "Data Transfers" tab for the Bulk out endpoint 0x01. What I am seeing is separate consectuative bytes being transferred consecuatively. For example if I send 6 Bytes of data as ""FF AA 55 FF AA 55" i can read the data with the FPGA on the first 8 bits of the data bus. Attached is a screen shot of the data I sent and the FPGA reading the values.
I want to be able to send chunks of data 32 bits in length, instead of only 8 bits. Is this able to be done using the "CyUSBEndPoint.XferData" class within the CyUSB.dll or should I be using another method?
Thanks
Show LessI would like to transfer "Data Produced by CPU" and "Data in the SlaveFifo" via the same Endpoint (e.g. Bulk IN EP2)
Is there any way to implement this?
Any information about this would be appreciated.
Gary
Show Lesshi,
I used the ecplipse to run the example USBBulkLoopAuto,
the info. windows(problem occurred) is showed
Error starting process.
Cannot run program "D:\FX3\basic_examples\USBIsochLoopAuto\Debug\USBIsochLoopAuto.elf": Launching failed
Cannot run program "D:\FX3\basic_examples\USBIsochLoopAuto\Debug\USBIsochLoopAuto.elf": Launching failed
Cannot run program "D:\FX3\basic_examples\USBIsochLoopAuto\Debug\USBIsochLoopAuto.elf": Launching failed
what does it mean? And what can I do to get a successful run and compiler?
thanks, Eino
Show LessHi,
I am using the CyU3PDmaChannelGetStatus function to monitor the number of DMA buffers transferred across a DMA channel between a producer socket and a consumer socket. The producer socket receives it data payload via the GPIF II from an FPGA while the consumer socket is an In Endpoint that connects over USB to a host PC. By using the CyU3PDmaChannelGetStatus function I can monitor the number of DMA buffers that have been generated on the producer side by looking at the prodXferCount variable returned by this function. Also I can monitor the number of consumer buffers that have been sent over the In endpoint to the PC by checking consXferCount. The problem I am seeing is that the producer buffer count increments ok whenever data is sent to the producer socket but the consumer socket increments by 1 buffer count even though no data has been sent to the PC. What seems to be happening is that as soon as the producer socket fills a single DMA buffer this is then sent to the consumer socket even before the PC has requested data from this endpoint. For example if the producer socket DMA channel is 8 buffers of 1024 deep then whenever I fill this the prodXfer count increments by 8, however if |I look at consXferCount I notice this has incremented by 1
even though no transfers to the PC have taken place.
Is there a way to prevent the consumer socket count incrementing until the PC reads data from it?
Sodafarl
Show LessHello,
I'm developing an application in the PC side that receives bytes from FX3 through an "isochronous in endpoint". I need the PC to be waiting for the incoming transfer once the FX3 firmware is running.
It's supposed that when endpoint "Timeout" is set to a value distinct from 0, the endpoint must wait for that time if the transfer didn't finish before, but it doesn't work. Actually it doesn't wait any time despite the "Timeout" value is really updated (watched with the debugger).
What I do is:
device.IsocInEndPt.TimeOut = 10000; //Wait for 10 seconds
bool bResult = isocInEndpoint.XferData(ref bytes, ref xferLen);
My questions are:
1. If the PC request data and there isn't any available, the XferData(...) function returns even if the timeout is set to infinite?.
2. If the PC request data and there isn't enough available, the XferData(...) function returns the available data instead of waiting for all requested data to be available?.
Thanks in advance,
Show LessHi,
I want to read from the FX3's UART which is configured in DMA-mode. The according DMA-channel is set to Manual_In between the UART-producer and the CPU as the consumer.
I connected a serial cable between the FX3 eval-board and my PC.
In the firmware I use the function CyU3PDmaChannelGetBuffer() to read from the DMA-channel. On PC-side I use a simple console-program to type some signs and send it to serial-port.
Unfortunately I can't receive anything in the FX3 via the UART DMA in-channel, means I can't see any activity on UART_RX-pin of the eval-board!
Transmitting data from FX3 to PC via another UART DMA out-channel works fine!
Did anybody implemented a thing like this successfully? Where could be the failure?
Do I receive the DMA-buffer only if it's full or which event must happen that the CyU3PDmaChannelGetBuffer() returns w/ the received data?
regards!
Show LessWe are using register mode for I2C write. Documentation says that in this mode all APIs are blocking which means they return when the transaction is complete. But we are observing that CyU3PI2cTransmitBytes returns back prior to completion of the transaction i.e before the stop bit. Also if single byte is written CyU3PI2cTransmitBytes returns even much earlier.
Is it a known issue?
Thanks,
Sandeep
Show LessHello,
I plan to write the firmware of our application (for a separate FPGA) to SPI flashes throught USB.
The idea is to send a fist packet for the command and the next packets will be the data.
We will use only the USB 2.0 capabilities of the FX3.
So the input packets from the USB are 512 bytes long and I can only write 256 byte long pages in FLASH.
Can I do 2 256 bytes transfers from a USB endpoint to the SPI (using extra header bytes) or do I need to first copy a whole USB packet into memory and do my DMA transfers to SPI from there ?
Thanks
Show Less