Browse the Community
Discussion forum for Community Information topics.
The Resource Library contains documents related to our products, software, IoT projects, and general tips.
Knowledge Base Articles are product related resources written by our Apps Team Experts.
Cypress does not recommend that to distribute or ship ezusb.sys with your final product.
The general purpose driver was created for demonstration purposes, and is not production ready. There may be corner cases (e.g. power management) that may not be completely handled properly for your own application. Please distribute the driver at your own discretion, always abiding by the software license agreement distributed with each development kit. At the very least, Cypress recommends that you remove all Cypress manufacturer strings (if any), etc. if you do indeed plan to distribute ezusb.sys.
The updated driver CyUSB.sys can be used instead, for the development and distribution purpose.
Question: What is the maximum I2C Clock Frequency for CY8C9520?
Response: The maximum SCL clock frequency of the CY8C9520 is only 100 KHz for both 3.3V and 5V operations. There is an error in the data sheet which mentions 400 KHz as the maximum I2C speed.Show Less
- What should the subsystem device ID be?
- What should my subsystem vendor ID be?
- Can you give me my subsystem ID number?
- If I want to load my subsystem ID numbers into the PCI Configuration registers, how would I do so?
The Subsystem Device ID and Vendor ID registers are part of the PCI Configuration registers. These are usually used when a PCI device is used as part of an add-in card. For example, if you are using the CY7C09449PV PCI Dual-port on an add-in board that your company manufactures, the PCI dual-port itself has the Vendor ID and Device ID provided by Cypress Semiconductor. However, the subsystem Vendor ID and Device ID would be specific to your company. This is used to uniquely identify the add-in card or sybsystem that the PCI-DP resides within. Using these two registers, your computer can then differentiate between two different boards made by different companies that may both contain the CY7C09449PV chip. Otherwise, your computer would not know which drivers to use with which board.
We do not assign the Subsystem Vendor ID. This is a Vendor ID assigned to your company by the PCI-SIG (Special Interest Group). The PCI-SIG is the only body officially liscensed to give out IDs. You need to be a member of PCI-SIG to request your own ID. Information about joining PCI-SIG is available here: http://www.pcisig.com. The Subsystem Device ID is then whatever you choose for that specific board.
To load your subsystem ID numbers into the PCI Configuration registers within the CY7C09449PV, you can use the boot EEPROM. Just load the EEPROM with your ID numbers into address 0x4C. When you restart the PCI-DP, it will automatically load these values into the configuration register.
Please also review the articles 'Accessing the EEPROM' and 'Using a Serial EEPROM' for more information.
Question: What will happen if brown out is detected? Can an interrupt be triggered on its detection?
Response: When the VDD drops below the IPOR threshold, the PSoC is automatically reset. But under circumstances where the IPOR threshold is not set correctly, this may lead to processor hanging. For example, when the PSoC is operated at 24MHz, the VDD has to be above 4.75V. The IPOR should be set to 4.8V for this condition. If IPOR is not set correctly, then the processor may hang if the voltage falls below 4.75V.
Under such circumstances, the LVD may be used to generate an interrupt when the supply falls below the LVD threshold. The LVD threshold can be set in the Global Resourses window in the PSoC Designer. The LVD interrupt can be enabled by setting the LVD bit in the INT_MSK0 register. The PSoC designer by default places a "halt" instruction in the LVD interrupt vector. This will safely halt the processor in case of a brownout. Alternately, you could write your own ISR to perform other operations like throttling down the CPU speed, storing critical variables to EEPROM etc.Show Less
The INT line is solely dedicated to the read register after the read register command is issued by the external master. The read register sequence occurs in 3 steps
1. External master issues a read register command by providing the register address to be read.
2. SX2 puts the data from the corresponding register on FD[7:0]
3. SX2 asserts INT# pin to inform the external master that data is available on FD [7:0]
If an interrupt from any other source occurs after step1 and before step3 of the read register sequence, the SX2 will buffer that interrupt until the read request completes and the external master has read the data. This insures that after a read sequence has begun, the next interrupt that is received from the SX2 will indicate that the corresponding data is available. The other interrupt source gets buffered and will not interfere with read request. After reading the register data, the processor will be notified of the interrupt source via the INT line going low again.Show Less
The default internal monitor is loaded from 0x0000-0x11CD. Make sure your application code is not stepping on the monitor code. In additions to verifing the Com port selection is correct, check the baud rate. In the Kiel tools it should be set to 19200 for the EZ-USB and 38400 for the EZ-USB FX. Try using the external version of the monitor (mon-ext-sio1.hex or mon-ext-sio0.hex).
This is a bulk loopback test application that exercises the EZ-USB FX2 bulk endpoints. This test consists of a Windows application that may be used to loop data to and from any device using the general purpose driver that supports bulk endpoints. EZ-USB AN21xx, EZ-USB FX, and FX2 are all supported by the same front-end test program. The device under test must have loopback firmware loaded such as bulkloop.hex (see the bulkloop example program in c:\cypress\usb\examples\fx2\bulkloop).
Yes, it is possible to use Cyconsole with enCoRe II devices. Normally, an enCoRe II HID device would use the Windows HID driver to communicate with host. So, for the Cyconsole application to be able to talk to the enCoRe II device, the device should attach to the CYUSB driver. This is achieved by the following steps.
1.) Download and install the SuiteUSB SDK.
This contains Cyconsole application and the CyUSB driver.
2.) The default directory where the driver is saved is C:\Program Files\Cypress\USB DevStudio\Driver\CyUSB.sys
3.) Open CYUSB.sys and make the following changes.
a.) Make a copy of this line in the file ? ?;%VID_VVVV&PID_PPPP.DeviceDesc%=CyUsb, USB\VID_VVVV&PID_PPPP?
b.) Uncomment the copied line (Remove the ?;? character in front of the line)
c.) Change VVVV to the hex vendor ID and PPPP to hex product ID.
d.) Scroll down to the line ? VID_VVVV&PID_PPPP.DeviceDesc="Cypress Generic USB Device"
e.) Change VVVV to the hex vendor ID and PPPP to hex product ID like in step c.
f.) Save the changes.
4.) Program the enCoRe II device and attach it to the host using USB. If the device enumerates using the Windows HID driver, go to device properties in Device Manager ->Driver-> Update Driver and go on to select the CyUSB.sys driver stored in the location mentioned in step 2. If Windows gives you a ?Not digitally signed? warning, hit continue anyway. Your device should now use the CyUSB.sys driver and should appear under USB controllers on Device Manager.
Note:- After installing the SDK you can find the drivers in C:\Program Files\Cypress\Cypress Suite USB 3.4.1\Driver\bin separated into folders based on the OS and hardware platform.Show Less
After the SX2 has its descriptor information, it connects and enumerates. The external processor should wait for the ENUM_OK interrupt. The external processor can perform other tasks while waiting for enumeration to complete. After it gets the ENUM_OK interrupt, the external processor should write all of the SX2 configuration registers values it needs to set up the SX2 for its application. After enumeration, it's a good idea for the external processor to check and see whether the SX2 enumerated at high or full speed and adjust the EPxPKTLENH/L register so that the SX2 knows when to automatically send packets to the host. The last initialization task is for the external master to flush all of the SX2 FIFOs.Show Less
It is possible to achieve 1 transaction/ms using the control pipe (i.e., using GET_REPORT and SET_REPORT requests) to achieve 8 Kbytes/sec throughput. This is 10 times faster than sending data over the data endpoint which is 8 bytes every 10ms. In fact Windows polls an IN every 8ms, so this gives a little more throughput. However, the first approach would make a device a "bad citizen" USB device because it takes aprox 25% of USB bus bandwidth unnecessarily. This approach is not recommended unless the design will be operating in a closed system
That is on UHCI hosts; OHCI hosts may schedule multiple control transfers per frame, and so may go faster, but in most circumstances the device vendor will not be able to guarantee the type of host in the target application, so must assume UHCI.
Other than GET_REPORT and SET_REPORT, 8 bytes every 8ms is the max you could get out of a low-speed interrupt endpoint. If you try to change the polling rate in the Endpoint Descriptor to 1ms, I think Windows may send an IN every 1ms (I don't know why Windows accepts this invalid request), but this will not pass the Compliance tests.