USB superspeed peripherals Forum Discussions
Hi,
i need to generate the timestamp in 10us units, but i can able to generate the timestamp in 1ms units only by using the CyU3PGetTime() API. Also by using counters i can able to generate the timestamp upto 0.64us units only. Is there any other ways or workaround available to generate the timestamp in 10us units ?
Regards,
Hari kumar
Show LessHi,
I was wondering what circumstances would cause CyU3PMipicsiInit to return CY_U3P_ERROR_FAILURE? Our firmware works perfectly fine on the e-con systems dev board, but on our new board the above error occurs.
Thanks!
Show LessI'm using a SuperSpeed Explorer Kit on a HSMC FPGA mezzanine board.
I've dowloaded the UART example(1), and it's working. Anything I enter on /dev/ttyACM0 will be observed on the kit's other UART.
However, I would like to make the UART to use the mezzanine pins on the FPGA. I've changed the source code to this:
CyU3PMemSet((uint8_t *)&io_cfg,0,sizeof(io_cfg));
io_cfg.isDQ32Bit = CyFalse;
io_cfg.s0Mode = CY_U3P_SPORT_INACTIVE;
io_cfg.s1Mode = CY_U3P_SPORT_INACTIVE;
io_cfg.useUart = CyTrue;
io_cfg.useI2C = CyFalse;
io_cfg.useI2S = CyFalse;
io_cfg.useSpi = CyTrue;
io_cfg.lppMode = CY_U3P_IO_MATRIX_LPP_DEFAULT;
io_cfg.gpioSimpleEn[0] = 0;
io_cfg.gpioSimpleEn[1] = 0;
io_cfg.gpioComplexEn[0] = 0;
io_cfg.gpioComplexEn[1] = 0;
status = CyU3PDeviceConfigureIOMatrix (&io_cfg);
To my understanding this should cause the UART TX to be moved to GPIO48/DQ30, and RX to GPIO49/DQ31. However, I can't seem to get it to work. I don't observe any change on the GPIO_49/DQ31 pin when I transmit data on /dev/ttyACM0. I've also looped rx to tx in the FPGA and would expect to get back whatever I transmitted.
Is the above settings correct to use GPIO 48/49?
1)
http://www.cypress.com/documentation/code-examples/ez-usb-fx3-usb-uart-bridge-example
Show LessHi all.
I'm currently implementing a USB3 Vision interface and require a nano-second timestamp per frame - but I can't find any timestamp API which is at least in the micro-second range. CyU3PGetTime/tx_time_get seems to be milli-second. SysTick is not available(?).
So, how do I get a microsecond (or better) timestamp?
Thanks,
George
Show LessHello,
We are having problems booting our device from an I2C EEPROM. Broadly speaking, the microcontroller seems to crash (or cancel) it's boot procedure and the device is not recognized by our PC. The problem does not appear on the SuperSpeed Explorer Kit, so part of this is our fault, but we are out of ideas when it comes to understand what is happening.
We have a custom board with a CYUSB3012-BZXC microcontroller booting from a ST i2c memory (M24M02-DR). Both chips are similar to the ones from the SSEK, although the part numbers are different. We are using 1.2V power for for Microcontroller (which can also handle 1.8V I think). I2C is driven at 100kBps. We are using an USB3 cable and port, altought the microcontroller should be booting in USB2 mode according to the datasheet.The microcontroller is in I2C EEPROM boot ('1ZZ), I'm affraid this is hardcoded and we can't change it at will beyond USB-only and I2C-only.
Our first firmware test was changing the USB descriptor in a premade example to show we could reprogram it. We have also tried removing the RTOS from the example (instead placing test code in main()) and using different unmodified examples. Changing the USB descriptor seems to work, but we couldn't confirm that playing with the RTOS actually worked (we couldn't get a LED flashing).
Here's what we have tried and what we can tell from our testing:
We added a define in code to fit the memory size. This was done before I started workiing on this, so I can only trust that this is what the code was meant to be.
Following the BootOption documentation, we changed the default elf2img arguments to fit our memory size and changed the I2C speed to 100kBps. This appears to have worked when we check the first image header read.
On the SSEK, booting from the I2C memory leads to the device being recognized. We timed the I2C communication to take around 10 seconds. Programming the RAM directly leads to the same result.
On our board, programming the RAM directly makes it so that the device is recognized correctly with it's new name. Programming the I2C shows success and the I2C lines are indeed alive while reprogramming is being done.
When we try to boot, however, the communication stops after around 1.5 seconds and the line and device appear dead. We are using the very same image in both case. Which is configured for our board's memory chip.
The 3.3V and 1.2V alimentations as well as the microcontroller's main clock are clear and stable at all time once power is on.
Any ideas on what we can try next or what might be happening?
I think this is all we have so far, if more informations are needed or if this post is unclear, feel free to shout at me and I'll clarify this.
EDIT : Since writing this post, we have noticed that the I2C header showed a size of 32kb. However, the problem is still there after changing it.
EDIT:
Added i2c memory schematic (17-10-2017)
Show LessHi community,
I'm following application note AN75779 to stream the raw video data from OV7670. I'm connecting the FX3 to the host USB 3.0 port, which successfully recognized it as a USB composite device, I guess that's working alright.
However, since OV7670 does not support 1280*720 resolution, I'm modifying the VS frame descriptor CyFxUSBSSConfigDscr in cyfxuvcdscr.c, at 640*480@30fps. Another place I modified is uvc.c, the glProbeCtrl structure.
Also, the frame sync vsync signal output from OV7670 is active low, so I modified the GPIF II project and override the cyfxgpif2config.h file in the eclipse project.
After rebuilding the solution, I reflashed the FX3, AMCap successfully regonized the video resolution as 640*480, however, the whole video screen is all blank.
The UART debug console output prints UVC: Completed 0 frames and 0 buffers every one second.
Is there anything I'm missing in here? Do you have a working code sample for such?
Regards!
Jackie
Hi,all
I use C# streamer(the latest version) to read data from USB board(3014).As the source data is increase packet by packet I find that I miss some packet by detecting the header of the packets.but I examine all the packets transmited in USB Analyzer, It shows all the packets has reached the PC host correctly. After debuging the streamer project I find that the reason of missing packets is that the finishdatatransfer() fail.
However, to my surprise,when I use C++ streamer,I can read all the packets correctly.
Is there any bug in C# streamer(latest version)? or could you tell me what the reason may be.
thanks
dekui
Show LessI am using a J-Link to debug a CX3 Denebola board. It seemed to work fine when I had an application with only one thread. I am now working with two threads, and it's almost unusable. I have to restart the debugger constantly, or it just stops working. I also keep getting this message:
Debugger problem discovered:
The debugger has set two breakpoints at the same address
Whenever the program hits a CyU3PThreadSleep() function, I get the following error in the console:
ERROR: Bad JTAG communication: Write to IR: Expected 0x1, got 0x0 (TAP Command : 2) @ Off 0x5.
Can anyone tell me why the debugger is acting so terrible?
Show LessHi,
I'm working with Denebola board and there is a problem with firmware load from SPI flash after power up. Switches are set for load via SPI, but after power up CX3 bootloader loads in USB mode. And only if I push the reset button it loads in SPI mode. Does anyone faced with this problem and how it can be solved?
Show LessHello, I try to build an fireware example from your FX3 SDK on Eclipse, but when I build a project I still have the same error.
======================================================
make all
Building file: ../cyfx_gcc_startup.S
Invoking: ARM Sourcery Linux GCC Assembler
/bin/sh: arm-none-eabi-gcc: not found
arm-none-eabi-gcc -x assembler-with-cpp -I"/home/thierry/Desktop/Cypress/FX3_SDK_B724/cyfx3sdk/firmware/u3p_firmware/inc" -Wall -Wa,-adhlns="cyfx_gcc_startup.o.lst" -c -fmessage-length=0 -MMD -MP -MF"cyfx_gcc_startup.d" -MT"cyfx_gcc_startup.d" -mcpu=arm926ej-s -mthumb-interwork -g -gdwarf-2 -o "cyfx_gcc_startup.o" "../cyfx_gcc_startup.S"
make: *** [cyfx_gcc_startup.o] Error 127
=======================================================
I try to resolve it since few days but I need advise and help.
It is my first project on FX3 SDK.
I tried to look for a solution with FX3 GUID, FX3 Manual Programmer and FX3 support but I didn't it.
Best regards
Show Less