DESIGNCYCLETHE
ADVANCED TECHNIQUES FOR DESIGN ENGINEERS
■ BY FRED EADY
TAKE AN IO-WARRIOR INTO YOUR
NEXT EMBEDDED BATTLE
We are all used to stuffing code into a microcontroller to enable our embedded
applications. This month, the tables are turned. The microcontroller work has been
done for us and we must perform some Bill Gates C++ coding to force bits back
and forth across the USB pipe. The folks at Code Mercenaries have assembled a
microcontroller package that embeds a fully compliant, low speed USB HID device. All
we have to do to access the IO-Warrior’s I/O subsystem is plug the IO-Warrior into a USB
port and perform the IO-Warrior API calls required to implement our application.
CODE MERCENARIES’ IO-WARRIOR
The IO-Warrior family (available through Saelig; see
Resources) consists of the IO-Warrior 24, the IO-Warrior
40, the IO-Warrior 56, and the IO-Warrior 24 Power Vampire.
The numbers in the IO-Warrior monikers represent the
number of actual pins that make up the host microcontroller
package. The 24-pin IO-Warrior 24 exposes 16 I/O pins
to the programmer while the IO-Warrior 40 provides the
programmer with 32 I/O pins. Fifty of the IO-Warrior 56’s
pins are available to the user. The IO-Warrior 24 Power
Vampire is a specialized variant that is designed to power
source from the USB portal. All of the IO-Warriors are low
speed USB devices with the exception of the IO-Warrior 56,
which is a full speed device. The IO-Warrior 24 you see in
Photo 1 is the one we’ll be working with. The IO-Warrior
24 is coded to include limited I2C master support, an
HD44780 LCD driver, incoming RC5 IR command support,
and SPI master mode support. There is also a special function
mode that allows the IO-Warrior 24 to drive an 8 x 32
LED matrix
with a little
help from
some external
shift registers.
■ PHOTO 1. The
IO-Warrior 24
comes as a kit.
The Design
Cycle version
is shown here.
I added the
solderless
breadboard
and the 2 x 16
Lumex LCD.
The basis of the IO-Warrior 24 is an OTP (One Time
Programmable) Cypress CY7C63743C-PXC enCoRe
USB combination low speed USB and PS/2 peripheral
controller which you can see sans the IO-Warrior version
label in Photo 2. The CY7C63743C-PXC’s claim to fame is
its ability to automatically operate in USB or PS/2 mode
with a minimum of external supporting components.
For you young’uns, a PS/2 is (was) an IBM personal
computer that replaced the venerable IBM XT and AT personal
computers. The PS is short for “Personal System.” USB
overtook the clocked PC PS/2 interfaces in the 1990s.
To eliminate the more commonly used microcontroller
support components, the CY7C63743C-PXC’s internal oscillator
can be used in lieu of an external ceramic resonator, while a 3. 3
volt internal regulator provides voltage for the USB pull-up
resistor. The CY7C63743C-PXC isn’t very good at sourcing
current on its I/O pins ( 2 mA max). However, it makes up for
the weakness by being able to sink up to 50 mA on a single
GPIO pin. Otherwise, as you can see in Figure 1, the PXC is a
typical USB-enabled microcontroller. A pinout diagram of it and
■ PHOTO 2. The veteran Cypress CY7C63743C-PXC enCoRe
USB combination low speed USB and PS/2 peripheral
controller take on the IO-Warrior 24 USB mission.
November 2009 49