USB superspeed peripherals Forum Discussions
In USRP:
In order to compile the USRP B200 and B210 firmware, you will need the FX3 SDK
distributed by the FX3 manufacturer, Cypress Semiconductor. You can download the
[FX3 SDK from here](http://www.cypress.com/?rID=57990).
*Note*: You *must* use SDK version 1.2.3!
Once you have downloaded it, extract the ARM cross-compiler from the tarball
`ARM_GCC.tar.gz` and put it somewhere useful. The highest level directory you
need is `arm-2013.03/`.
Q:
I can get SDK version1.2.3,but I cannot get ARM_GCC.tar.gz for this version,where can i get the ARM_GCC?
Show LessHello,
i am trying to learn to setup GPIF2. I have created a GPIF2 design with the following properties:
- Master / Synchronous / Internal / 8 Bit Bus / no multiplexing / 1 input / 1 output / 2 DMA flag lines
- I have a state machine with 3 states:
-- Start state
-- STATE0: Which should set OUTPUT0 to e.g. 0
-- STATE1: Which should set OUTPUT0 to e.g. 1
Then i have 2 transitions: from STATE0 to STATE1 when INPUT0 is set and back when INPUT0 is reset (polarity does not matter at the moment).
I have attached screen shots of my design and state machine to this posting.
A) I expect that when i toggle INPUT0, then i see some reaction on OUTPUT0, but OUTPUT0 always remains 0.
B) I also expect that GPIO16 (CLK) is an output, but value is Z.
C) GPIO[0...7] is also Z, but perhaps this is correct?
D) GPIO[8...15] is 0, perhaps correct, because no used (more assumed it is Z)?
E) I also tried first without a state machine at all, changing "initial value" between high and low (of course re-compling and re-flashing), but no reaction. Therefore i am not sure, if i control the state machine at all?
This i my code to load and start GPIF (i get no error output, especially from these function, but of course other debug output):
CyU3PPibClock_t pibClock;
/* Initialize the p-port block. */
pibClock.clkDiv = 2;
pibClock.clkSrc = CY_U3P_SYS_CLK;
pibClock.isHalfDiv = CyFalse;
/* Disable DLL for sync GPIF */
pibClock.isDllEnable = CyFalse;
apiRetStatus = CyU3PPibInit(CyTrue, &pibClock);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "P-port Initialization failed, Error Code = %d\n",apiRetStatus);
CyFxAppErrorHandler(apiRetStatus);
}
/* Load the GPIF configuration for Slave FIFO sync mode. */
apiRetStatus = CyU3PGpifLoad (&CyFxGpifConfig);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PGpifLoad failed, Error Code = %d\n",apiRetStatus);
CyFxAppErrorHandler(apiRetStatus);
}
/* Start the state machine. */
apiRetStatus = CyU3PGpifSMStart (START, ALPHA_START);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PGpifSMStart failed, Error Code = %d\n",apiRetStatus);
if(apiRetStatus == CY_U3P_ERROR_NOT_CONFIGURED) CyU3PDebugPrint (4, "-> CY_U3P_ERROR_NOT_CONFIGURED)\n");
if(apiRetStatus == CY_U3P_ERROR_ALREADY_STARTED) CyU3PDebugPrint (4, "-> CY_U3P_ERROR_ALREADY_STARTED)\n");
CyFxAppErrorHandler(apiRetStatus);
}
Have i missed something to enable GPIF? There is "isDQ32Bit", what value must it get when using 8 bit?
I have it on CyFalse, because i have not 32 bit interface.
Hello,
My situation: custom FX3 design with boot library, internal core power (not from USB).
I have configured 2 USB bulk endpoints and 2 PPorts (to an FPGA), everything over auto DMA channels. Starting point was the "gpiftousb" example. It is basically in an auto forwarding only mode: EP2 : USB -> FPGA; EP86: FPGA -> USB. Everything works as expected on first enumeration.
I have problems AFTER USB3 cable is disconnected/reconnected. Just to make it clear: all problems below happen only with SS, everything works correctly on HS!
1. From host POV, everything is good; re-enumeration, device is visible in device manager.
2. There is no (disconnect) event visible in UsbEventCallback when removing the cable, why? I don't really need it, but it might be a hint. Additionally, when disconnected the function "CyFx3BootUsbGetSpeed" (polled in the main loop) still returns CY_FX3_BOOT_SUPER_SPEED !?
3. After re-connect, no data sent from host (over bulk EP) reaches the DMA!? I enabled a interrupt callback on DMA transfer just to print a message, and it doesn't trigger it.
I have tried everything I could think of:
- a simple vendor command re-initializes everything (DMA, GPIF, etc)
- I bought the SuperSpeed Explorer Kit and modified the power circuit to match my situation; the same problem (I just look for the DMA callback message).
- (re)connecting to USB2 cable works immediately, USB3 still shows the problem. This hints towards the USB3 handling.
- I found that the problem occurs only after first bulk transfer from host. Before doing any transfer, I can disconnect and reconnect several times; the first transfers will work correctly. This hints towards DMA buffer issues, but I did not find any DMA reset other than disabling / enabling it again...
The whole issue seems to be some kind of initialization issue in the boot library.
I am thankfull for any other hints / ideas.
Regards,
Gabriel
The ARM GCC B236 installer package appears to be broken within the FX3_SDK_Windows_v1.3.3.exe self extractor. Is it just me, facing the issue ? The update manager downloads the ARM_GCC_B236 package, but that also seems broken. An updated package of ARM_GCC_B236.exe is available ? Any thoughts ?
Thanks
Show LessI create a fpga design to write data to fx3 based on AN65974 (Slave fifo).
IN my Firmware, I use the function as follows- CyU3PGpifSocketConfigure(0, CY_FX_PRODUCER_PPORT_SOCKET, 6, CyFalse, 1);meawhile flagA have been configured as DMA_ready , flagB be configured as DMA_watermark.
I am able to transfer for a very short amount of time before Flag B remains Low = Buffer Full. oscilloscope both flags go low when the buffer is full but only flag A goes back up to show that the buffer is Not Full. Why does the signal not go back up?
I also used this implementation- CyU3PGpifSocketConfigure(0, CY_FX_PRODUCER_PPORT_SOCKET, 0, CyFalse, 0);When changing the watermark value from 6 to 0 I had no issues and flag B matched up with flag A .
Thanks!
Show LessHello.
I am trying to interface a device with MIPI interface to Denebola CX3 board.
I have an issue with the function CyU3PMipicsiGpifLoad that give me a status of 64.
status = CyU3PMipicsiGpifLoad(GPIF_BUS_WIDTH, CX3_UVC_DATA_BUF_SIZE);
I have used the CX3 config tool to set and generate the project files.
I have initialized the PIB before to launch CyU3PMipicsiGpifLoad.
GPIF_BUS_WIDTH is 16, and CX3_UVC_DATA_BUF_SIZE is 8176.
Could you pleas give me indications how to solve this issue?
Best Regards.
Show LessHi,
Right now, I am using fx3 uart at baud rate of 115200 for file transfer. I want to use uart at much higher baud rate 4Mbps. I change the baud uart config as given below(also changed buad rate on imx Uart to 4Mbps). But i am not able to get desired result, almost half of data packet lost.
uartConfig.baudRate = CY_U3P_UART_BAUDRATE_4M;
uartConfig.stopBit = CY_U3P_UART_ONE_STOP_BIT;
uartConfig.parity = CY_U3P_UART_NO_PARITY;
uartConfig.txEnable = CyTrue;
uartConfig.rxEnable = CyFalse;
uartConfig.flowCtrl = CyFalse;
uartConfig.isDma = CyFalse;
I even try at lower baud rate , it is working at 230400. But at baud rate higher than 230400 it is not working. Do i need to make other changes in uart configuration apart from baud rate to achieve desired rate.
Please help me in this regard.
Show LessHi all,
I am testing CYUSB2014/UVC. (Get/Set Sensor's gain value: using UVCHandleProcessingUnitRqts() )
On Windows OS, getting/setting operation plays well.
But Linux OS, it does not play.
I use the same firmware file(*.img).
I want to know why that does not on Linux OS.
Please response about that.
Regards, thank you.
Kim
Show Less