Which LCDs are supported by your CP240x LCD controller?
The CP240x LCD controller supports any LCD with up to 128 segments (4-mux), 96 segments (3-mux), 64 segments (2-mux), or 32 segments (static). An alphanumeric font table is provided for the VIM-878, which is included in the LCD development kit. If using a different lcd, the font table can be easily modified to allow software to support a different bit mapping.
The LCD font map can be found in the examples folder in the following location:
This function accepts a character position and ascii character to display on the LCD. It modifies the appropriate register in the CP240x in order to display the proper character. Information on how bits in the ULPMEMnn registers map to LCD segment pins is described in the CP240x datasheet.
USB to UART bridge application needs more control signaling then supported using CP210x devices. Can modem controls like CTS and DSR be used as indicators to the host application?
The CP210x family of devices provide modem control and GPIO (CP2103) for flow control and general purpose input and output, respectively. The GPIO signals can be manipulated using application code and APIs supported in the Silicon Labs runtime DLLs. There are some cases where the number of control inputs for an application exceeds the four GPIOs supported with the CP2103. For some applications, the modem flow control signals can be used as control indicators. If modem flow control is disabled, UART traffic will still flow across the RX/TX UART pins allowing an application to use the Win32 communications events to get the state of the modem control signals. This is accomplished using the Windows WaitCommEvent to determine when the signal has changed state or GetCommModemStatus for current state information. For example, the host application can check for a state change of the Clear to Send (CTS) signal using WaitCommEvent after the mask has been properly set.
For more information consult the Microsoft developers network:
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.