USB low-full-high speed peripherals Forum Discussions
text.format{('custom.tabs.no.results')}
Greetings!
I'm running on a MicroBlaze processor (running at 133 MHz), and I'm encountering a situation where the CSW response to a bulk data write (usually after a big block, i.e. 128KB) is always NAKed. I see the CSW URB being posted (size=13), and then the td associated with the URB is NAK'd. The Linux driver yanks the TD as it services the completed TD's, then re-submits it again since the URB is still there. This infinite loop continues until the higher-level SCSI or Block sub-system times out and the device port get's a hard reset - after 30 seconds usually.
Bear in mind that I'm able to write thousands of data blocks before this situation occurs. That could mean minutes to hours of error-free writes and then the system borks.
Does anyone know all the events that can occur to cause a C67300 to forever-NAK like this? Anyone else had a similar issue? I'm making the assumption that the standard Linux drivers should work, and that maybe it has something to do with the slower 133 MHz speed of the CPU.
Thanks for any help or recommendations!
Show LessHi everyone
I'm looking for a chipset that will work as in Device mode, and provide an AUDIO interface and a vendor specific interface at the same time.
So possibly some programmable USB chipset which could provide the Audio endpoints and send the audio packets to an ADC (external or built in, doesn't matter) and at the same time provide a vendor specific interface with one INT IN Endpoint and BULK IN and BULK OUT endpoints.
The vendor specific interface is just used for basic instructions to the host such as track selection and play/pause.
The Audio interface needs to support:
- 16-bit linear PCM
- 44100 and 48000 Hz sample rates
Is there a cypress USB part that could do this? I am very familiar with PSoC 3 and 5 and would consider using them too.
-Kenny
Hi.
I tyring to make windows appication program on MFC.
But i have not many experiance this way. So i want to know how make methodology.
If you have any example for displaying image data to MFC from fx2, then please let me know.
Especially, i willing to use OnDraw function in MFC.
Thanks.
Show LessHi,
Is there a way to set up the USB descriptors of the FX2 so that after I have plugged it into one port of the PC and loaded the drivers, if I plug it into another port the drivers are loaded automatically without any user intervention. A customer has told me that if the USB device has a serial number in the descriptor then you should only need to load the drivers once and thereafter the drivers will be automatically loaded by Windows even if the USB device is plugged into another USB port for the first time.
Thanks,
Liam
Show LessHi
I'm trying to make interface omnivision cis camera with fx2lp.
But i cannot find fx2lp's io voltage level.
Does anybody know what is fx2lp's io voltage level?
Also, is this need voltage level shifter to both interface with fx2lp and cmos camera(omnivision) ?
Is there any reference document?
Show LessHi
I want to use tms320c6424 +CYPress IC to access hard disk or SD card, here is our requirment:
1) Write speed shall net less than 24Mbit/s,
2) sorage capacity not less than 32GB(we are more prefer to hard disk solution )
would you please recommend suitable solutions to us.
I also have an other question here , i find some SD card vendors have 64GB or 128GB version already, does CYPRess can support it ??
Thank @ Regards
Show LessHi
I want make output direction partially out and in.
When i set to OEA=oxff, as i know, this direction is out.
But i think another pin also have same direction.
How can i set partially?
Also what is IOA ?
Show LessHi
In USBTV, i have confused in i2c_hw.c.
I can see that sub_type variable is in DBG of I2CWrite function but (sub_type!=0) syntex is not existed in DBG.
If i not use DBG, what have default value to sub_type variable?
Also , how should i understand this syntex?
Could you please let me know?
Show LessHi,
I've had a working FX2 application that sends back data from a device over a quad-buffered bulk IN endpoint (EP2) for the past year. On the host side I'm using libusb with the usb_bulk_read() command to read the EP:
int usb_bulk_read
(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
If data in the device has not yet filled the FIFO, the above request times out (after a period of timeout milliseconds) and this is the way I always assumed it had to work.
Recently however, I've been in touch with another person who explained that upon a bulk read on their device, the device automatically sends NACK tokens until the device is ready; apparently avoiding the necessity of a time out.
Likewise, on http://www.beyondlogic.org/usbnutshell/usb4.shtml#Bulk it says:
IN: When the host is ready to receive bulk data it issues an IN Token. If the function receives the IN token with an error, it ignores the packet. If the token was received correctly, the function can either reply with a DATA packet containing the bulk data to be sent, or a stall packet indicating the endpoint has had a error or a NAK packet indicating to the host that the endpoint is working, but temporary has no data to send.
I bolded the key phrase. So there seems to be 3 conditions, not 2 (data or timeout (stall?)). Perhaps my endpoint is configured to respond to the host with a Stall while perhaps it's possible for me to respond with a NACK and have the host just repeatedly request the packet until data shows up?
Can anyone help me understand this, especially in the context of how I might configure the FX2 Endpoints to respond differently to a bulk read request?
Note that I've read over the TRM (not always getting every detail understood) and do see some brief discussion on the STALL bit which might be the key, but little explanation on how a Stall packet vs. NACK packet would be interpreted by the host when doing a bulk-read command...
Thanks!
Scott
Show Less