*UC00A is now in Rev2.0.
By SC Lim, RH2T Mag Volume 4, March 2010
Need an effective way to establish communication between an embedded system and your computer? You are probably well acquainted with USB as the interface used by mice, keyboards, drives, cameras and other mass-market peripherals, but USB is also versatile enough for use in embedded system. Hence, you should check out this useful development tool – UC00A.
When USB technology began to take hold, engineers were scrambling to learn how to use the new interface in their designs. With the legacy serial and parallel ports on the verge of extinction, any design that required them would soon be left without a mate. Cytron foresaw the panic and designed UC00A, an easy-to-use USB (Universal Serial Bus) to UART (Universal Asynchronous Receiver/Transmitter) converter. This product assures the lifespan of any equipment that interfaces with computer using serial port would be extended without the need for in-depth knowledge of USB protocol. Upgrading RS232 legacy peripherals to USB is really simple with UC00A.
UC00A (USB to UART Converter)
UC00A is very useful because today’s laptops seldom come with serial port. New standards like USB, Firewire, HDMI and e-Sata have taken over the status of serial port. I wonder if the new generations have ever seen or heard of Serial port and RS232. If you are one of them, you may want to take a look at How This Works – UART in Robot. Head to Toe magazine Volume 3. There, you can find a brief explanation about RS232 and Serial port in the topic.
Just like any other USB device, UC00A can get the power directly from USB bus. By default, each USB port can supply up to 100mA maximum at power-up. Therefore, bus-powered mode allows only small number of peripheral support components for the interface support. However, a system that consumes more than 100mA current can be totally self-sufficient using an external power supply (self-powered mode). There are FIFOs for both receiving (128 bytes) and transmitting (256 bytes) paths. The serial interface engine (SIE) handles the internal USB transceivers and FIFOs. UC00A runs at 48MHz clock for full speed USB connections. Besides 5V for transistor-transistor logic (TTL), regulated 3.3V supply for driving the USB transceiver cell output buffers is also available through a jumper. This allows UC00A to directly interface to the 3.3V and other logic families without the need for external level converter ICs. This regulator is not designed to power external logic. However, external circuitry requiring 3.3V nominal at a current of not greater than 5mA could also draw its power from the 3.3V pad if required. Yet, the recommended way is supplying the external circuitry from external power supply.
3.3V or 5V logic level is selectable through a jumper. Just connect the middle pad to either 3.3V or 5V and it’s done! Default value is set at 5V during manufacturing process.
USB Virtual COM Port
For years, every PC came with one or more RS232 serial ports. Software accesses these ports as numbered COM ports (eg: COM1, COM2, and so on). However, COM port is rarely seen on the computers released lately. None of the latest laptop is equipped with COM port. Hence, as the usage of USB is getting more and more common, many devices with USB ports are designed to function as virtual COM ports and UC00A is one.
The figure below shows what we will see after UC00A is plugged to the computer with the correct driver installed. Communication Port (COM1), Communication Port (COM2) and Printer Port (LPT1) are the default hardware ports on my desktop PC, while USB Serial Port (COM3) is the virtual COM port created by UC00A. Besides, you will see another new device, USB Serial Converter, listed under Universal Serial Bus controller group. Let’s recall what had happened during the driver installation process when we use UC00A for the first time. Did the system require us to choose the appropriate driver? Yes, now you know the reason. It needs to enumerate these two devices generated by UC00A. That’s why we need to undergo the same process twice.
Applications access virtual COM ports in the same way as serial ports. Users can communicate using terminal emulator software such as Hyperterminal comes with the Windows versions before Vista. Programmers can use the SerialPort class in Microsoft’s .NET Framework to access the virtual COM ports. The only difference is that the hardware interface is USB instead of Serial port. Lower-level drivers handle the details of accessing the hardware.
Virtual COM ports provide a way to transfer data for just about any purpose. If you are familiar with COM port programming or have existing program that utilize COM port, UC00A that becomes the virtual COM port can be a good choice. You don’t have to know anything about USB protocols to use this device. Moreover, the COM port data travels in USB’ bulk transfers and bulk transfers are fast on a bus that isn’t busy.
Interfacing UC00A via Virtual COM Port
You can interface UC00A to just about any microcontroller or CPUs that has a UART interface. On Enumeration (process of computer obtain information about USB device), the computer assigns virtual COM port driver to UC00A. The driver causes UC00A to appear as a COM port on the computer. You can set the baud rate and other parameters for the port just as you would for a serial port in Control Panel > System > Device Manager > Ports (COM & LPT).
When a computer writes a byte to the virtual COM port, UC00A receives the byte at USB port and passes the byte to the onboard chip using the selected port parameters. A microcontroller or embedded system that connects to the asynchronous serial port (TX, RX, GND) of UC00A can read the received byte. In the other direction, when the embedded system writes a byte to its serial port, UC00A receives the byte as serial data and passes the byte to the computer via USB. COM port software is needed on the computer to retrieve the received byte.
Although Serial port is nearly died out in today’s personal computer industry, this oldest electronic interface standard is still a very useful and very common data exchange interface. In order to continue using this easy-configured interface, UC00A is the solution. It’s an ideal USB add-on solution for Microchip, AVR and other microprocessors. This makes it really simple for you to connect all sorts of embedded system to your computer via USB port. It’s your imagination that limits what you can do with an USB enabled system. Get creative! One of the examples on using UC00A is given in Problem Solving and Tutorial section in this issue. Please have a look.