USB superspeed peripherals Forum Discussions
I use FX3/CX3(CYUSB3065) to shoot through DMA,
and then use a set of I2C to control the configuration of the camera.
The I2C also controls another chip, which requires occasional access,
Then the thread stopped being turned on (and the camera stopped),
and I added CyU3PMutexGet and CyU3PMutexPut before and after I2C to no avail.
What is the reason? Is there any way to solve it?
Show LessGreetings y'all,
I have a platform with a Xilinx FPGA.
The interface to FX3 is based on the 2bit master sync example using 32bit.
(slfifoasync – Asynchronous Slave FIFO)
I am only using it to pass 1 stream of data to PC so only 1 IN bulk endpoint is used.
FX3 firmware and a test pc application is working great.
The PC records 5 seconds of data (some test pattern counter), dumps it to a file and reports average data rate.
Now, I want to extend this solution to have 3 separate streams of data into 3 endpoints.
The FPGA has been modified to output 3 types of patterns in different rates via 3 different threads.
Thread0 (2bit address = 00) outputs data rate of 16KB/sec
Thread1 (2bit address = 01) outputs data rate of 32MB/sec
Thread2 (2bit address = 10) outputs data rate of 125MB/sec
Before changing the FX3 firmware and test app, The correct data pattern is read at the rate of 16KB/sec as I have expected.
Now the only change I make to the firmware is to read thread1.
CyU3PGpifSocketConfigure first argument.
All other settings (Sockets and EP are the same).
Now pc app is geting data at the rate of 32MB/s but the pattern match the one on thread0.
When the firmware is changed to read thread2, data rate measured is 125MB/s but pattern still match thread0.
When I choose other sockets no data is coming out.
Of course I change both CyU3PGpifSocketConfigure second argument as well as the DMA settings.
I thought that sockets are logical entities that could route to any socket (at least in this simple example).
Any thoughts?
Thanks,
Lior.
Show LessHello,
We are trying to buy evaluation boards with image sensor according to AN75779. It would be: 'CYUSB3KIT-003 EZ-USB® FX3™ SuperSpeed Explorer Kit' + 'Image Sensor Interconnect Board' + 'Sensor evaluation board'.
However, we are trying to use a different image sensor (MT9V032) from ON SEMI orther than MT9M114. There is only one kind of evaluation board I can find from ON SEMI, which is: Evaluation Boards from ON Semiconductor
The parallal data output of this evaluation board is a male 2*13 header that 'looks like' could be pluged into 'CYUSB3ACC-004 Aptina™ Image Sensor Interconnect Board'(https://www.cypress.com/documentation/development-kitsboards/cyusb3acc-004-aptina-image-sensor-interconnect-board-ez-usb… ). But I am not sure if they can work together at all. Could someone tell me if they are competible?
Best,
Ting
Show LessHi,
I'm trying to use a complex GPIO configured as shown here to generate an interrupt after reaching a pre-set time. There are plenty of examples on how to use simple and complex GPIO to generate interupts based on pin inputs, but I haven't found anything that illustrates how to generate interrupt flags based on a simple timer/counter. Ultimately, I'm trying to use a complex GPIO timer to let the processor know when a certain delay has elapsed. The delay is on the order of microseconds, so CyU3PBusyWait() is inadequate. I'm comfortable using direct register reads/writes to achieve this. In addition to setting up and generating interrupts, it would be helpful to know how to properly reset the timer register.
I also found this thread stating that generating interrupts does not work when using complex GPIO. Is this still the case?
Thanks
Show LessHi,
after the SDK update to 1.3.4 our firmware based on AN75779 is not working anymore. Using the JTAG connection of the SuperSpeedExplorerKit I could trace it down to the MultiChannelDMA used for video data transfer. All API functions used to send data return CY_U3P_SUCCESS, but I do only get CY_U3P_DMA_CB_PROD_EVENTs and no CY_U3P_DMA_CB_CONS_EVENTs. Therefore it seems to me, that the problem is located within the DMA implementation. The results of USBPCap show, that there is no data arriving at the PC side.
Does anybody have an idea, how to proceed to locate the problem within the dma channel functions? Which changes were made to MultiChannelDMA in preparation of SDK 1.3.4?
We added a CDC device for configuration and this is still working well, such that the implementation of the SingleChannelDMA is not affected.
Thanks and best regards,
Judith
Show LessHi,
I am trying to use file system to write data into SD card(s0 port).I am using EZ USB SUITE firmware and seggar Jlink for debugging, can anyone help me to do this.
After removing SD Card from hardware i should be able to read data by inserting it in mobile.
Regards,
Srujana.
Show LessHi,
Did not find a clear answer in the FX3 API guide, but are API calls like
CyU3PI2cSetConfig()
CyU3PI2cReceiveBytes()
CyU3PI2cTransmitBytes()
CyU3PUartSetConfig()
...
made thread safe, meaning can we call them from several ThreadX OS tasks or must we avoid doing that?
Looking forward to your feedback.
Show LessHello,
I'm building an application based on the GpifToUSB example with my own GPIF Design to read out a custom image sensor. Since the GPIF supports only 8 outputs, my readout protocol is partially implemented in Firmware and partially in a GPIF state machine. The basic readout sequence is:
1. Firmware writes a configuration (bit-bang) for the next readout
2. Firmware sets statemachine to "start_readout" state
3. GPIF runs readout sequence (reads 1 line of pixels), Firmware idles until GPIF reaches "idle" state
4. Firmware switches the sensor to the next line
5. TODO: Firmware has to insert a Tag to the first byte of the Data-Stream, similar to the DataSignature in the example
Since the GPIF always reads an entire line of the sensor, these tags should allow the host application to clearly identify every pixels data in the byte-stream it receives from the endpoint. Could you give me an example how to modify the buffers contents outside the "GpifToUsbDmaCallback"?
I'm also open to completely different approaches to map the bytes received from the endpoint to individual pixels.
Show LessHello! I'd like opinions, advice and thoughts please!
I am using FX3 to create a driver-less (using generic drivers only) keyboard + mass storage solution, and I want to create an API to communicate to this to load keyboard output and to manage mass storage access, read/write etc.
For the API, I am using HID API: GitHub - libusb/hidapi: A Simple library for communicating with USB and Bluetooth HID devices on Linux, Mac and Windows.
I think my approach has the issues:
1. OS does not allow both Keyboard and MSC drivers to be loaded for a single device from generic drivers, do I have to use a custom/Cypress driver?
2. Windows OS blocks access to endpoints from generic HID devices to discourage keyloggers
3. Generic drivers do not support multiple endpoints for a single device type
Is 1 an issue or can the descriptor handle this? Can I get around 2 and 3 by adding a third HID interface? If so, how can I do this? There are many bulk loop examples but none of them use generic drivers (as far as I can tell). I think I can use a HID device descriptor of 0, but I am not certain what that would involve, what driver would an OS try to use since the descriptor is not standard? (I am still going through the 100's of pages of documentation on USB HID specification, but if someone knows please post, it will save me allot of time).
My first objective is to use HIDAPI's "hid_write" and "hid_read" functions to communicate to the FX3 via generic drivers, but there does not seem to be any examples of how to do this? There are many examples via the cypress dll/libraries, but from what I understand, they rely on the Cypress driver. I went through this discussion forum but I did not find these questions.
Regards and thanks! Sorry for the silly questions!
Fujimi
Show LessHi,
We're currently on the exploratory stage of our project -UVC Camera. We are fixed on using CYUSB3013-BZXC and the ff sensor:
https://www.mouser.co.uk/datasheet/2/308/MT9M114EBLSTCZH3-GEVB_SCHEMATIC.PDF-1224932.pdf
However per checking on the interconnect board, it seems that they are not compatible. The previous version of this board under Aptina was compatible but believe it was changed since the shift to OnSemi brand.
Do you have any recommendations for other sensor or a workaround so that we can use this sensor?
Show Less