USB low-full-high speed peripherals Forum Discussions
Hello,
For one of our projects, we are building a custom solution (hardware and software) based on a FPGA and a FX3 USB 3.0 controller.
When powering up our custom board, the FX3 enumerate itself with these parameters: VID=0x04B4, PID = 0x0053. After uploading a firmware in the RAM (via Control Center for example), the device re-enumerate itself with the new tuple (VID, PID) on both Windows and Linux.
Right now, we have developed a custom python script with libusb to upload firmware in the FX3 RAM. The transfer works flawlessly. For example, if we write a firmware with a blinking led, the default bootloader and after program jump entry USB command, the led blink. So far so good, but if we look at the USB enumeration process, we can see, via dmesg, that the device is not re-enumerated and disconnected.
According to Cypress datasheet, this behaviour is totally normal, however this is not the one we want. Is this possible to force the USB to re-enumerate itself and be seen by the linux machine after program jump entry command ?
Best regards,
Christophe FAUVEL
PS: The observations described below have been made on a CYUSB3KIT-003 board also.
Show LessHi every body,
I want to built read-only(write protect) and write-only(copy protect) usb flash driver. Can I use CY3686 EZ-USB NX2LP-Flex for this purpose?? Can I wtire mu own program to control USB bus and allow host to read only data or just write it?
Thanks in advanced.
Show LessI am trying to get the SDK up and running using microsoft visual studio express 2013 for windows desktop. I have installed the PLX SDK as well, but when I try to execute the test bench example project I get an error that appears in the windows command window; "Please define the CY_USE_PLX symbol to compile with the PLX library."
How do I fix this issue?
Show LessI am working on a USB drive prototype using cy7C68033 and a NAND flash (Samsung K9KWBG08U1M, 4G byte chip), and found that, upon plug in, the device will be enumerated as "Cypress FX2 - No EEPROM"; however, once I start NX2LP Programmer utility, it will be enumerated as a mass storage device (and drive letter will come out). Firstly I though it was my firmware error and programmed the default firmware (CY3686FW included in the development kit) but the result was the same.
When the device is enumated as "Cypress FX2 - No EEPROM", it has a VID of 04B4 and PID of 8613, which is different from what I programmed using the NX2LP programmer utility, so probably the chip just failed to read the nand flash - am I correct?
Could someone help me to determine what is keeping the chip from working? Thanks in advance.
Show LessHi,
I have CY7C68033 on my board with 1-off Nand flash MT29F8G08ABABAWP chip. (Schematic attached.)
both are blank from Manufacturer.
I plug in the USB port in my windows7 64bit Laptop and the usb controller appears in Control Panel in other devices with hardware ID 04b4.
I guess the USB controller will be in Manufacturing mode as there is nothing in the Nand flash.
what next? where do I go from here?
where to get drivers?
any help appreciated.
thankyou.,
Show LessHi all,
I can not to overcome the problem described in the topic. I hope one of you could help me.
When I send data out (XferData() on BulkOutEndPt), the function always returns FALSE. UsbdStatusString says [state=UNKNOWN status=UNKNOWN], and the LastError is 997.
I have tried to configure SCB0 and SCB1 in different ways, but it did not help (in general my target is to set both to I2C).
Below is the initial function:
USBDeviceList usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB); CyUSBDevice usbDev = usbDevices[0] as CyUSBDevice; if (usbDev != null) { outEndpoint = usbDev.BulkOutEndPt; outEndpoint.TimeOut = 2000; } else outEndpoint = null; txBuf[0] = 123;
and the function onClick(), which tries to tx data
int len = 1; if (outEndpoint != null) if (outEndpoint.XferData(ref txBuf, ref len)) textBox1.Text += 'SUCCESS!'; textBox1.Text += CyUSBDevice.UsbdStatusString(outEndpoint.UsbdStatus); textBox1.Text += outEndpoint.LastError;
displayed result is:
[state=UNKNOWN status=UNKNOWN]997
I have tried to change timeout to 10s and even 20s. Still the same.
If it can help, below is the result of
for (byte i = 0; i < usbDev.AltIntfcCount; i++) for (int e = 1; e < usbDev.EndPointCount; e++) textBox1.Text += usbDev.USBCfgs[0].Interfaces.EndPoints.ToString();
<ENDPOINT> Type="BULK" Direction="OUT" Address="01h" Attributes="02h" MaxPktSize="64" DescriptorType="5" DescriptorLength="7" Interval="0" </ENDPOINT> <ENDPOINT> Type="BULK" Direction="IN" Address="82h" Attributes="02h" MaxPktSize="64" DescriptorType="5" DescriptorLength="7" Interval="0" </ENDPOINT> <ENDPOINT> Type="INTERRUPT" Direction="IN" Address="83h" Attributes="03h" MaxPktSize="64" DescriptorType="5" DescriptorLength="7" Interval="10" </ENDPOINT>
What am I missing? Please help me to solve this problem.
Best regards,
LUK
Show LessIs there any way to get a transmitter enable signal for controlling half-duplex RS485 driver chips such as the MAX1487 from the CY7C65213?
I hoped perhaps I could do this using the TXLED pin, but the data sheet says that is USB transmission not serial line transmission and in any case being specified for LED driving could one be sure of the timing?
An alternative is to drive this from one of the handshake outputs (DTR or RTS) and toggle it in software on the host. This is all very well on a microcontroller but is difficult to achieve satisfactorily through the layers of poorly specified mush PC operating systems impose between you and the hardware.
The competing chips from FTDI support this (TXEN output configurable in setup), but I really want to use Cypress for the wider voltage range and better integration. Is there any way of achieving this that I am missing?
Show LessThe API for this device has 'CyProgUserFlash'. Does this allow writing the area modified by 'Cypress USB-Serial Configuration Utility'? If so can this be used to change the configuration? Is the layout of this area documented anywhere (i.e. on a byte by byte basis rather then just the summary given in the datasheet).
I would like to be able offer my users some of the configuration options in the config utility but not all (and in a more use-specific presentation). Maybe could the config utility be open-sourced so we can see how to do this?
Show LessHas anyone had luck using IOCTL_ADAPT_ABORT_PIPE? When I call DeviceIoControl with IOCTL_ADAPT_ABORT_PIPE, it returns success, but seems to do nothing. Here's how/why I'm using it:
My host software needs to recover from an error condition where the device can't accept any more packets on EP2 OUT. I have setup the FX2 firmware to stall the endpoint when it cannot accept the packets (because hardware interfaced by GPIF is unexpectedly busy, and blocks GPIF, which I abort after a timeout). The sequence looks like this:
1. FX accepts some packets, then starts NAK'ing all EP2 OUT packets because hardware is busy.
2. FX time-out (implemented in firmware using hardware timer) occurs, and firmware stalls EP2.
3. The host driver (Cyusb.sys) sees the endpoint is stalled, and suspends sending packets.
4. Host software overlapped transfer times-out waiting for transfer to complete.
5. Host software asserts IOCTL_ADAPT_ABORT_PIPE in an attempt to end the transfer.
6. Host software asserts IOCTL_ADAPT_RESET_PIPE to unstall the endpoint.
That all seems to work, except that once the endpoint stall condition is cleared in step 6, the host resumes trying to send remaining packets from the original transfer OUT over EP2 (which are still NAK'd) - even after the host software exits! The only way I can get the host to stop sending the packets is to reset the USB port.
Show Less