USB superspeed peripherals Forum Discussions
The Hardware SPI port is not available when using 32-bit GPIF.
I understand there is a Software SPI option explained @ FX3 use of SPI and 32 bits words GPIF
Is it possible to boot the FX3 from Hardware SPI, and sometime later switch the pins to 32-bit GPIF?
If so, is it also possible to switch back to 16-bit GPIF with SPI in order to access the SPI device(s)?
Are there any examples available?
Thank you in advance for your support.
Greg
Show LessHello,
I want to get the point of the frame start , at the moment , I want to send one package by CPU,and then use the dma send data,how can I get it? Wherher the GPIFII state machine can be modified?
Show LessHello,
Please bear with my multi-threaded ignorance...
Also, I originally posted this on 'Known Problems and Solutions' when it should've gone here...
For our current application, we're using the 32-bit GPIF-II mode, and thus the SPI peripheral is not available. We have another device off to the side that we've connected to three GPIO on the FX3 to act as chip select, clock, and data (we did basically the same thing with a project we did that used the FX2 chip). We want this interface to work at close to its maximum speed, which is 20MHz according to the interfacing component's data sheet. In our previous iteration, we'd drive chip select and the clock low, drive the data to its desired value, run a couple of 'nop' calls for setup time, bring the clock high, run a couple of 'nop' calls for hold time, and then bring the clock signal low again, all in a loop until the message was finished. I tried to implement something similar on the FX3, but it runs quite a bit slower than I anticipated. I'm thinking it's due to the multi-threaded nature of the underlying OS, but I'm not an expert on this, so I've come to the forums. Here's my code:
void SwXTimesFiveNsDelay( uint8_t x ) { int i; for (i = 0; i < x; i++) { __nop(); } } void SwSpiWriteToDac( uint16_t val ) { signed char b; /* Don't let anything get in the way of this routine; disable all * interrupts, but make sure we know which interrupts were enabled before we * disabled them. */ uint32_t currentIRQs = CyU3PVicDisableAllInterrupts(); /* Turn on the chip select */ CyU3PGpioSetValue( GPIO_HVCTRLCS_L, CyFalse ); /* Force clock low if it isn't already */ CyU3PGpioSetValue( GPIO_HVCTRLSCK, CyFalse ); for(b = 15; b >= 0; b--) { if (val & (1 << b)) CyU3PGpioSetValue( GPIO_HVCTRLSDI, CyTrue ); else CyU3PGpioSetValue( GPIO_HVCTRLSDI, CyFalse ); SwXTimesFiveNsDelay(6); // 50% duty cycle clock, ~16.8MHz CyU3PGpioSetValue( GPIO_HVCTRLSCK, CyTrue ); // Bring clock high SwXTimesFiveNsDelay(6); // Hold high for the rest of the duty cycle CyU3PGpioSetValue( GPIO_HVCTRLSCK, CyFalse ); // Bring clock low } /* Disable DAC */ CyU3PGpioSetValue( GPIO_HVCTRLCS_L, CyTrue ); /* Re-enable previously disabled interrupts */ CyU3PVicEnableInterrupts( currentIRQs ); }
The actual logic of the code is fine; it does exactly what I expect it to logically on the scope. However, the calls to CyU3PGpioSetValue appear to take ~1.2us, and the __nop's take ~63ns. I didn't really now how long the CyU3PGpioSetValue call was going to take, and my calculations were that a __nop would take 4.96ns when using a system clock of 403.2MHz (CPU clock is half the system clock).
Thread priority is '8', and it's one of two threads running, the other being a low-priority debug thread.
Thanks in advance.
Show LessHi All,
I have been using FX3 SDK and PSoC Creator for quite some time. I have had issues running update manager from either the FX3 or PSoC installations. In both cases I am told it is not installed. So today I removed all all Cypress development software and drivers, and deleted their directories. I reinstalled the FX3 SDK and still cannot run the update manager. What's happening and how can I fix it?
Thanks,
Scott
Show LessHi,
i need some unique id for the FPGA devices, I connected 3 different FPGA devices and i saw , through API, that In each device the serial number is an empty string.
Using device instance path in device manager may provide different results when plug unplug them, the device instance path may change.
i want to ask how can i burn serial number into the FPGA device? maybe there is already unique serial id for each FPGA and i didnt notice that? May be there is some tool? Or may be there is another way in API to get some unique id for each FPGA device?
thanks and appreciate the help,
Adam.
Show Less
Hi,
I am using the below attached firmware before i am using it for transferring data from P-Port to U-Port which is working fine and endpoints are also enumerating properly and after that i modified firmware to work for P-Port to S0-Port after that endpoints are not enumerating.
Can you please go through the firmware and tell what might be the reason?
Regards,
Srujana.
Show LessHello
Page 47 of FX3 data sheet (Document Number: 001-52136 Rev. * X) is described No.1~No.11 as Errata Summary.
Please tell me whether all the errata (except No6, 10) are supported for the following source code of AN75779.
https://www.cypress.com/file/123501/download
Best Regards,
Arai
メッセージ編集者: Norimitsu Arai 11/28 I will attache the excel sheet.
Show LessHi,
I am writing a custom firmware flasher for a device I built. I am trying to use libusb-1.0 which requires a compatible driver to be installed for the device. I used Zidag in order to update the driver from the CYUSB3 (v1.2.3.22) to WinUSB (v6.1.7600.16385) which allowed me to use libusb against this device - and everything works
The problem I have is I don't want end users to have to download Zidag and follow instructions to get the driver changed, is there a more appropriate or seamless way to allow libusb to be used with the cypress usb bootloader? Or a more automatic way to change the driver?
Thank you,
Dimitar
Show Less