Are the CP210x devices programmable using a 3rd-party programmer?
The CP210x devices are not supported by 3rd-party, stand-alone programmers. The CP210x devices are programmable only over the USB interface using the CP210xSetIDs utility or a custom program based on the CP210xManufacturing.dll.
I created a custom CP210x driver, but now Windows 7 won't let me install an uncertified driver. How do I install my driver on Windows 7 for testing purposes?
It's possible to install a customized, uncertified CP210x driver in Windows 7 by using the 'Disable Driver Signing' option. There are two ways to do this:
Note: These options are for testing purposes only, and the driver should be WHQL certified before being released. Please see the 'WHQL Testing' article in the Related Articles section or contact technical support for more information.
1) When rebooting the computer, press F8 (make sure the function keys are enabled if the keyboard has an 'F Lock' key) after the initial BIOS screen to access the boot options. Select the 'Disable Driver Signing' mode.
2) Within Windows 7, go to the Start Menu and type 'cmd.exe' in the Search Bar (do not press Enter). Right click on cmd.exe and choose Run as Administrator.
If User Account Control is enabled, click Yes. When the Command Shell is open, copy and paste (right-click and select Paste) the following:
bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS bcdedit.exe -set TESTSIGNING ON
The statement 'The operation completed successfully.' should appear, as shown.
After restarting the PC, driver signing will be disabled and the uncertified driver can be installed.
To re-enable driver signing, open the Command Shell in Administrator mode and copy and paste (right-click and select Paste) the following:
bcdedit.exe -set loadoptions ENABLE_INTEGRITY_CHECKS bcdedit.exe -set TESTSIGNING OFF
Driver Signing will then be enabled after a restart.
How long does it take for a PC to recognize a CP210x device after it is plugged into a USB port?
The enumeration time of a USB device depends on the system. Different operating systems will issue a varying number of requests during enumeration which can lengthen the time before a device is ready to be opened by the PC application.
The first time that a device is connected to PC typically takes longer as the operating system has to load the driver for the device. Subsequent connections should enumerate a device in one to two seconds, but applications should not be designed to assumed a fixed amount of time. Any application that connects to a CP210x device should wait for enumeration to complete before attempting to open the handle.
Are there any CP210x driver compatibility issues with Windows 7?
The CP210x devices are fully supported under the 32-bit and 64-bit versions of Windows. The latest WHQL-certified drivers are available for download here: http://www.silabs.com/mcudownloads
The 64-bit versions of Windows require that a driver is WHQL-certified before it will install. The CP210x driver available on the Silicon Labs website is WHQL-certified, but customizing the driver will break that certification. For testing purposes, you can also temporarily disable the Windows 7 check for a certified driver. See the related articles for more information about certifying your customized driver and temporarily disabling the check.
The CP210x devices are not supported under the MS-DOS operating system.
DOS is sometime used to refer to the command-line interface provided by Windows 98/2K/Vista/7. In this case, since there is CP210x driver support for these operating systems, you can use the CP210x from within their command-line interface.
I am having trouble connecting to a device using the USB Debug Adapter (or the Toolstick Base Adapter). How can I diagnose what's wrong?
Step 1: Check the electrical connections
* Ensure that the 10-pin ribbon cable (USB Debug Adapter) or the card-edge connector (Toolstick Debug Adapter) are correctly oriented and making solid connection with the target system.
* Ensure that the USB cable is connected between the adapter and the PC.
* In cases where the target system is not powered by the adapter itself, ensure that adequate power is supplied to the device. Check all power pins to ensure they are within the specified operating supply range.
Step 2: Check the PC Setup
* In the IDE, open the Options->Connection Options... dialog.
* Ensure that 'USB Debug Adapter' is selected, and that there is a serial number in the box. If this option is greyed out, or if there is no serial number in the 'Adapter Selection' box, check the following: - USB cable connections - unplug and replug the device with the IDE closed, and then reopen the IDE. - If this does not help, try a different USB cable and/or a different USB port on the host machine.
* If more than one adapter is connected to the PC, check to see that the correct serial number is selected in the 'Adapter Selection' box. For troubleshooting purposes, try connecting only the adapter of interest to the PC to find the correct serial number.
* Select the correct Debug Interface. - JTAG is used only for the following device families : C8051F0xx, C8051F1xx and C8051F2xx - C2 should be selected for all other device families.
Step 3: Reset the Adapter Firmware
* If Steps 1 and 2 do not help to establish a connection to the target device, it is possible that the adapter firmware was corrupted during an upgrade. Use the USB Adapter Firmware Reset utility to reset the firmware in the adapter: - The USB Reset Utility is found in the path CiLabsMCUUtilitiesUSB Reset for most installations of the IDE. - With the IDE closed, run the file USB Debug Adapter Firmware Reset.exe. - Select the debug adapter serial number in the drop down box. - Click 'Update Firmware'. - Close the software and then try to reconnect again in the IDE, ensuring once again that all of the options are correct. The IDE will initially give a message about needing to re-program the adapter firmware - this is normal after a USB reset.
Step 4: Final Troubleshooting
* If a connection still cannot be established to the target device, a few other things may be done to try and isolate the issue: - If possible, try using a different PC to see if the problem can be reproduced independent of the PC. - If available, mix and match debug adapters and the target system. In other words, if adapter A and target A have been used the entire time, try adapter A with target B, and adapter B with target A. Note whether the issue follows the adapter or the target system. - Attempt a reboot of the PC.
* If you are connecting to your own prototype for the first time, double-check the board connections. - Ensure that all signals are properly connected from the Debug Adapter to the device. On JTAG devices, these are Ground, TMS, TCK, TDO and TDI. On C2 devices, these are Ground, C2CK and C2D. - Ensure that all ground and power pins on the device are connected. This includes all analog and digital supply pins and ground pins on the device. - On devices which have a MONEN pin, ensure that MONEN is tied directly to VDD (preferred) or GND.
* A device cannot connect if it is held in reset. Check the state of the /RST pin to make certain that it is high when you attempt to connect.
How do I uninstall the VCP driver on a Mac OS machine?
To uninstall the VCP driver from a Mac OS machine, just drag the driver to the trash from the System/Library/Extensions folder (SilabsUSBDriver) and then reboot the machine.
To verify if a driver is present, plug in a CP210x device and check the /dev directory for a device named 'tty.SLAB_USBtoUART'. If this is not present, it means no VCP driver is active, or that the CP210x device has a VID/PID combination that does not match the driver installed. The VID/PID can be found in the device listing in the System Profiler (even if a corresponding driver is not installed).
I'm trying to use the CP210x Host API functions (AN144, CP210xSetIDs, CP210xManufacturing.DLL), but my program isn't working at all. What could be the problem?
The old version of the CP210x Host API function library (CP210xManufacturing.DLL) is no longer compatible with newer versions of the VCP (v6.1 and above) and USBXpress (v3.2.2 and above) drivers. The DLL (v4.1 and above) must be updated to the latest version to work with the new drivers. This change affects any software which uses the following functions, including CP210xSetIDs:
I'm new to USB driver development and would like to create or modify a Windows driver. What are some useful resources I should refer to when getting started?
There are many resources available for new USB driver developers. The following are just a few:
'USB Complete: Everything You Need to Develop Custom USB Peripherals (Complete Guides series),' by Jan Axelson
This book provides a great understanding of USB in general for both the peripheral (firmware) and the host (driver), but does not provide in-depth specifics of driver development. It's a good all-around USB resource to have available to help answer any general USB questions that may arise during the driver development.
'Developing Drivers with the Windows Driver Foundation,' by Penny Orwick and Guy Smith
This book addresses general driver development using the Windows Driver Development Kit (WinDDK), but uses a USB driver as its example. The driver the book uses as its example is available with the WinDDK under \srcusb. An example board that implements the this driver's matching hardware and firmware is called the OSR USB FX2 Learning Kit and is available in the OSR store at http://www.osronline.com/. Together with this hardware module, this book can help a beginner driver developer to modify the driver source code and learn how the driver works.
Microsoft's MSDN Library
The MSDN Library contains lots of information to help driver developers, from function and event descriptions to forums. This resource is invaluable for any driver developer.
I am trying to use the SetIDs.exe utility from AN144 to change my device parameters, but I can't program the value. What may be wrong?
SetIDs Fields are Blank
If you see a screen similar to the one shown here, where the device is in the device list, but all the fields are blank, there is a mismatch between the driver version and the manufacturing .DLL version on your PC (for example, using a version 6.x driver with a manufacturing .DLL intended for 5.x drivers). Using the appropriate .DLL will fix the issue.
If you are using the latest VCP driver, then the most recent verison of the SetIDs software and manufacturing .DLL should be used for device programming. The latest SetIDs software can be downloaded by clicking on the AN144SW link on the Application Notes page:
If you are using an older version of the VCP driver and seeing this behavior, please generate a ticket for the support team with the link below, and request the version of SetIDs that matches your driver verison:
If the fields aren't blank but the value isn't being programmed, verify that the checkbox next to the text field is activated. The procedure for programming a value in a CP210x using SetIDs is:
Write the new desired value into the appropriate text box.
Activate the checkbox next to the modified text box.
Press the 'Program Device' button to write the value to the CP210x device.
This process is shown below:
This process may also fail if the CP210x device is locked, which is indicated in the lower left-hand corner of the SetIDs program. If the procedure above doesn't work and the device isn't locked, please generate a ticket for the support team with the link below:
Open F3xx_BlinkyExample.wsp in CiLabsMCUExamplesC8051F34xUSB_HIDBlinkyExample
Compile the code.
Download to an 'F34x Target Board (TB).
Run the firmware.
Driver: No driver needed; uses the built-in HID driver in the operating system.
Can either run HID_Blinky.exe in CiLabsMCUExamplesC8051F34xUSB_HIDBlinkyExample or rebuild the Host Application Source.
To rebuild the Host Application Source, open the HID_Blinky.vcproj file in Visual C++ .NET 2003. If a newer version of Visual Studio is used, the project may need to be updated and some of the settings may change. NOTE: The HID PC Application requires the WinDDK to be installed.
Rebuild the project.
Hit run and use the program.
All of the main code for the program can be found in HID_BlinkyDlg.cpp, so any changes to the application should occur here.
Which development boards are compatible with the CP240x LCD daughtercards? Which serial interface is used to communicate with the MCU?
There are two CP240x LCD daughtercards. The CP2400 daughtercard uses the SPI interface to communicate with the host MCU. The CP2401 daughtercard uses the SMBus interface to communicate with the host MCU.
The CP240x LCD daughtercards are compatible with the 'F930 Target Board, 'F912 Target Board, Si1000 Motherboard. Compatibility should also be maintained with development boards for new devices in the 'F9xx family that have a 96-pin connector.
The CP240x LCD daughtercards also have a 10 pin connector (J1) that can be connected to any 'Port Header' on many MCU development boards such as the 'F12x, 'F34x, 'F04x, etc if the 96-pin connector does not align to the proper signals on the development board for which you wish to add LCD capability.
Do I need to test my USB product for USB-IF compliance?
In order for a USB product to have the right to license the USB logo and be added to the USB IF Integrators List, the product must pass USB-IF compliance testing. The USB.org developers page provides a full description of the tests and procedures:
If your product does not require the use of the USB logo in its packaging or documentation, USB-IF compliance testing is not required.
All Silicon Labs USB devices have passed USB compliance testing. This includes the CP210x USB-to-UART bridges and the general purpose USB MCUs. The Silicon Labs USB devices were tested using the evaluation and target boards. USB-IF compliance testing certifies products at a system-level and not a device-level and so any unique product created using a Silicon Labs USB device must be retested.
What USB Analyzers are available to help me debug my USB product?
The two types of analyzers available to help debug USB solutions are hardware analyzers and software analyzers.
Both types of analyzers are able to decode USB packets between an MCU and a USB host. Some hardware analyzers can also detect signal errors in addition to packet and logic errors. Using a USB analyzer is highly recommended when developing a USB solution as they greatly reduce the development and debugging time.
All Silicon Labs USB MCU products are USB full-speed devices, which is supported by most analzyers.
The following is a list of some hardware and software analyzers.
When I connect a single CP210x device to my PC, I can communicate with it. When I connect two or more devices, I can no longer communicate with any of them. What am I doing wrong?
In order for the operating system to identify each CP210x that is simultaneously connected to a PC, each CP210x must have a unique combination of Vendor ID (VID), Product ID (PID), and product serial string. In most applications, each CP210x device is given the same VID and PID with unique serial number values.
To write unique identifying information to non-volatile CP210x storage space, follow the instructions in the 'Customizing CP210x Drivers to recognize new VID/PID' Knowledge Base article in the Related Articles links.
Note that CP210x devices are assigned a VID/PID of 0x10C4/0xEA60 by default. The default VCP drivers have been written to look for all devices connected to the bus with this default VID/PID combination. If a different VID/PID combination is used for a CP210x, a corresponding custom driver must also be generated to work with the VID/PID in the devices.
To use the Silicon Laboratories VID and request a unique PID, follow the instructions found in the 'Obtaining a Unique PID' Knowledge Base article in the Related Articles links.
All of these use the CP210xManufacturing.DLL to communicate with the device. The version of this .DLL must be compatible with the version of the Virtual COM Port (VCP) drivers you are using. For example, the 4.x utilities won't work with the 5.x driver, or vice-versa. If you have recently upgraded to the newest version of the driver and are seeing a problem, download the latest version of the utilities to access the device.
The latest versions of these tools are available here.
I'm using the UART in a multi-processor application. How much time do I have to decode my device address prior to clearing SM2 / MCE before data is lost?
The SM2 / MCE bit is sampled, and decisions based on it are made, at the time the UART RX hardware samples the 9th data bit (or STOP bit in 8-bit data mode). If the bit is cleared any time before the 9th data bit is sampled, then the logic state of the 9th bit is not used to accept or ignore the received byte.
Why am I unable to achieve the low supply currents listed in the datasheet?
The shutdown currents listed in the datasheet can be achieved after all peripherals that have an enable/disable bit have been turned off. There are a number things to check that may be affecting your current measurements:
Check that LEDs and switches have been disconnected from the Port I/O pins. On most Target Boards, these components can be disconnected by removing the shorting blocks from the associated headers. For example, on the 'F33x Target Board, all shorting blocks on J3 should be removed when measuring supply current.
Verify that peripherals enabled on reset have been disabled. This includes most peripherals associated with the power supply such as voltage regulators and supply monitors. For example, all USB microcontrollers have the voltage regulator and VDD Monitor enabled after each reset.
Verify that the USB Debug Adapter is not connected. On some target boards, this can result in a supply current increase of approximately 30uA.
Check for any pull-down resistors (For example, IDAC resistors). All Port I/O have weak pullups, and if external pull-downs are used, this could result in a current of a few uA. If a pin does have a pull-down resistor, it can be configured into Analog mode to disable its weak pull-up.
If using an 'F9xx device, see Application Note 358 for more details on how to reduce power consumption.