12.07.2015 Views

Datasheet IO-Warrior56 - Code Mercenaries

Datasheet IO-Warrior56 - Code Mercenaries

Datasheet IO-Warrior56 - Code Mercenaries

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>IO</strong>-<strong>Warrior56</strong>Generic universal I/O Controllerfor USB<strong>Code</strong> <strong>Mercenaries</strong>1. Features• Full speed USB interface (12MBit/sec)• Full USB V2.0 compliant full speed device• Full USB HID 1.1 compliance• 50 general purpose I/O pins• IIC master with 50, 100, or 400kbit/sec, multimaster capable• Supports a wide range of alphanumeric andgraphic LCD modules• SPI master up to 12MBit/sec• Drives a LED matrix up to 8x64 with externalshift registers• Drives a 8x8 key or switch matrix• Easy to use starter kit• Software support for Mac(10.2 and up), Linux(Kernel 2.6), and Windows (XP and up)• No USB knowledge necessary to use• Single +5V power supply• Available in MLFP56 package or 100mil spacedthrough hole module.• Extended temperature range: -40°C to +85°C1.1 VariantsRight now the <strong>IO</strong>-Warrior chip family is availablein three low speed and one full speed variant.This data sheet describes the full speed variant<strong>IO</strong>W56.For the low speed <strong>IO</strong>-Warrior chips please refer tothe separate data sheet.2. Functional overview<strong>IO</strong>-Warrior offers a simple access to the USB.Many projects that formerly used the parallel portor some other kind of direct I/O interface todayface the problem that getting simple things to workon the USB is quite complex.With a serial or parallel port you needed only asimple circuit to control an external relay or read asingle switch.With USB you need a microcontroller that handlesall the protocol work to do the same thing. Severalstandard commands need to be supported to get adevice accepted as a USB device, let aloneimplementing any real function.<strong>IO</strong>-Warrior brings simplicity to the USB. Theprotocol is encapsulated in the <strong>IO</strong>-Warrior Chip.You only have to care about the I/O pins and haveto write only a few simple lines of code to accessthem.<strong>IO</strong>-Warrior also supports a range of industrialstandard interfaces to simplify interfacing tocertain chips or modules. These interfaces arehandled internally in <strong>IO</strong>-Warrior removing thebandwith wasting controlling of individual pins.1.2 Custom variantsCustom adaptions are available on request.1.3 Supported OSesWinXP and laterCompatibility with older Windows version is nottested and no support available for thoseLinux kernel 2.6 and upMacOS X 10.3 and upV 1.0.2, September 22nd 2011 for chip version V1.1.0.11


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>2.1 Product selection matrixType USB Speed I/O Pins LCD IIC SPI RC5 IR Keys LEDs Timer SSOP48 DIL24 SOIC24 MLFP56 Module<strong>IO</strong>-Warrior40 low 32 √ √8x16 8x32√√<strong>IO</strong>-Warrior24 low 16 √ √ √ √ 8x32 √√ √<strong>IO</strong>-<strong>Warrior56</strong> full 50 √ √ √ 8x8 8x64 √ √2.2 Starter KitsWith the <strong>IO</strong>-Warrior Starter Kits you can make your first steps with <strong>IO</strong>-Warrior 56. A few elements on thekit allow first experiments with inputs and outputs, the bread board area provides space to test yourindividual circuit.The starter kits are sold unassembled. A few minutes soldering will provide you with a working unit.Actual components supplied with the kit may vary from those shown here.V 1.0.2, September 22nd 2011 for chip version V1.1.0.12


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>3.0 Pin Configurations<strong>IO</strong>-<strong>Warrior56</strong>-LFXIMLFP56 PackageP2.5P2.7P0.1P0.3P0.5P0.7GndVccP0.6P0.4P0.2P0.0P2.6P2.4P2.3P2.1P4.7P4.5P4.3P4.1P3.7P3.5P3.3P3.1P5.7P5.5P5.3P5.11234567891011121314565554535251504948474645444315161718192021222324252627284241403938373635343332313029P2.2P2.0P4.6P4.4P4.2P4.0P3.6P3.4P3.2P3.0P5.6P5.4P5.2P5.0P1.7P1.5P1.3P1.1GndD+D-VccP6.7P6.0P1.0P1.2P1.4P1.6All drawings: TOP VIEW!V 1.0.2, September 22nd 2011 for chip version V1.1.0.13


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong><strong>IO</strong>-<strong>Warrior56</strong>-MODModulePin numbers5 656 557 8 4 3 2 1 54 539 1052 5111 1250 4913 1448 4715 1646 4517 1844 4319 2042 4121 2240 3923 2438 3725 2636 3527 2834 3329 30 32 31All drawings: TOP VIEW!V 1.0.2, September 22nd 2011 for chip version V1.1.0.14


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong><strong>IO</strong>-<strong>Warrior56</strong>-MODModulePin namesP1.3GndD+D-VccP6.7P1.5P6.0P5.1P1.7P1.0P1.1P5.5P5.3P1.2P1.4P3.1P5.7P1.6P5.0P3.5P3.3P5.2P5.4P4.1P3.7P5.6P3.0P4.5P4.3P3.2P3.4P2.1P4.7P3.6P4.0P2.5P2.3P4.2P4.4P0.1P2.7P4.6P2.0P0.5P0.3P2.2P2.4P0.6P0.7P2.6P0.0NCNCP0.2P0.4All drawings: TOP VIEW!V 1.0.2, September 22nd 2011 for chip version V1.1.0.15


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>4.0 Pin Assignments <strong>IO</strong>-<strong>Warrior56</strong>Pi # MLFP56 Pin# Module Type Name Special function122219I/OI/OP2.3P2.1X3X2342017I/OI/OP4.7P4.5 LCD-CS1 (not driven by special mode function)561815I/OI/OP4.3P4.1LCD-E-/RELCD-RS781613I/OI/OP3.7P3.5LCD-Data7LCD-Data59101411I/OI/OP3.3P3.1LCD-Data3LCD-Data11112129I/OI/OP5.7P5.51314107I/OI/OP5.3P5.1SPI-/DRDYSPI-/SS151685I/OI/OP1.7P1.5IIC-SCLIIC-SDA1718653I/OI/OP1.3P1.1LED-/OELED-Clk, undefined state during start up194 power Gnd203 USB D+212 USB D-221 power Vcc23245655I/OI/OP6.7P6.0 Power select during start up25265452I/OI/OP1.0P1.2LED-Data, undefined state during start upLED-Strobe27285150I/OI/OP1.4P1.629304948I/OI/OP5.0P5.2SPI-SCKSPI-MOSI3147 I/O P5.4 SPI-MISO3246 I/O P5.633344544I/OI/OP3.0P3.2LCD-Data0LCD-Data235364342I/OI/OP3.4P3.6LCD-Data4LCD-Data637384140I/OI/OP4.0P4.2LCD-/OnLCD-R/W-/WE39403938I/OI/OP4.4P4.6LCD-E2-/RESLCD-CS2 (not driven by special mode function)41423736I/OI/OP2.0P2.2X0X243443534I/OI/OP2.4P2.6X4X645463332I/OI/OP0.0P0.2Y0Y247483127I/OI/OP0.4P0.6Y4Y64950--power Vccpower Gnd51522825I/OI/OP0.7P0.5Y7Y553542623I/OI/OP0.3P0.1Y3Y155562421I/OI/OP2.7P2.5X7X5V 1.0.2, September 22nd 2011 for chip version V1.1.0.16


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>4.1 Pin descriptionsD+, D-Differential data lines of USB. Put 24Ω seriesresistors in these lines and connect them to theUSB cable or plug, see application circuit fordetails. The <strong>IO</strong>W56-MOD already has the seriesresistors.For a PCB layout make sure to run these twosignals next to each other. USB data is adifferential signal that produces best signal qualityand lowest RF emission if the two lines are close toeach other.P0.0..P0.7First I/O port of the chip. These pins correspondwith the lowest 8 bits of the input or output (bits0..7).P1.0..P1.7Second I/O Port. Corresponds to the bits 8..15.P1.0 and P1.1 are used during production of the<strong>IO</strong>W56. After power up and during the internalstart up process of <strong>IO</strong>W56 these two pins canchange their status a couple times. Take this intoaccount when connecting external circuits.P2.0..P2.7Third I/O Port. Corresponds to the bits 16..23.P3.0..P3.7Fourth I/O Port. Corresponds to the bits 24..31.P4.0..P4.7Fifth I/O Port. Corresponds to the bits 32..39.P5.0..P5.7Sixth I/O Port. Corresponds to the bits 40..47.P6.0, P6.7Seventh I/O Port. Corresponds to the bits 48 and55. This port has only two pins. Always write theunused bits as "1".4.2 Special mode pin functions<strong>IO</strong>-<strong>Warrior56</strong> supports various higher levelfunctions including IIC, SPI, LED matrix, keymatrix, and driving various LCD modules.Handling IIC via the normal generic I/O would bevery slow as each edge of data and clock wouldhave to be transmitted separately. At a rate of 1000such transactions per second (which is themaximum <strong>IO</strong>-<strong>Warrior56</strong> is allowed by USBspecifications) the maximum bit rate andthroughput would be around 250 bits/sec.To make IIC and other devices usable <strong>IO</strong>-Warriorimplements the special mode functions. Byhandling the IIC inside <strong>IO</strong>-Warrior the actual datarate is approaching the theoretical maximum.When any of the special mode functions isactivated the corresponding pins will no longerrespond as generic I/O pins but are under control ofthe activated special mode function.4.2.1 IIC Mode pins<strong>IO</strong>-<strong>Warrior56</strong> can act as an IIC master with 50,100, or 400kbit/sec data rate. Multi master mode issupported.<strong>IO</strong>-<strong>Warrior56</strong> supports clock stretching handshakewith slaves that need throttling of the data flow.The following pins get reassigned when the IICfunction is enabled:FunctionSCLSDA<strong>IO</strong>W56P1.7P1.5These pins will no longer be affected by the datasent via the normal port setting command. Bothpins have internal pull up resistors and open draindrivers. They can be connected direct to IICcompatible chips. Optionally the internal pull upresistors can be disabled by setting the appropriateflag in the IICenable command. This allowsoperation with lower voltage IIC slaves.GNDPower supply ground.VccSupply voltage.A 100nF ceramic capacitor is required to beconnected directly to each pair of the power supplypins. The <strong>IO</strong>W56-MOD already has the capacitors.The MLFP56 package has a center ground pad thatmust be connected to ground (Vss).V 1.0.2, September 22nd 2011 for chip version V1.1.0.17


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>4.2.2 LCD Mode pins<strong>IO</strong>-<strong>Warrior56</strong> has support for controlling LCDmodules with a wide range of controllers. Refer toApplication Note 5: "Controlling LCDs with <strong>IO</strong>-Warrior" for more information on compatiblemodules and how to use them.The following pins get reassigned when the LCDfunction is enabled:Function <strong>IO</strong>W56/On P4.0RS P4.1R/W/WE P4.2E/RE P4.3E2/RES P4.4Data0 P3.0Data1Data2Data3Data4Data5Data6Data7P3.1P3.2P3.3P3.4P3.5P3.6P3.7When the LCD function is enabled these pins willno longer be affected by the normal port settingcommand./On should be used to enable power supply to LCDmodules that have high current demand orbacklighting. The /On signal is low when the LCDfunction is enabled, it does go high when <strong>IO</strong>-Warrior enters suspend mode or when the LCDfunction is disabled.By default the follwing pins should be used forcontrolling the CS lines of graphic displays withmultiple controller chips:P4.5 - CS1P4.6 - CS2Since the polarity of the CS signals varies betweenLCD modules we decided not to handle them in thespecial mode function.The internal pull up resistors of the LCD signalpins can be disabled by setting the appropriate flagwhen enabling the LCD function. This allows <strong>IO</strong>-<strong>Warrior56</strong> to work with displays that use lowersupply voltage levels.4.2.3 SPI Mode Pins<strong>IO</strong>-<strong>Warrior56</strong> has a hardware SPI master interface.It can communicate with SPI slave devices with adata clock speed of up to 12MHz. Actual datathroughput depends on a number of factors,including the size of the data packets that aretransmitted. Possible peak rates are around 62,000bytes/sec.The following pins get reassigned when the SPIfunction is enabled:Function <strong>IO</strong>W56 Pin mode/DRDY P5.3 int. pull up / high Z/SSMOSIMISOSCKP5.1 open drainP5.2 CMOS or open drainP5.4 high Z / inputP5.0 CMOS or open drainWhen the SPI function is enabled these pins willno longer be affected by the normal port settingcommand. The driver mode of the pins changeswhen SPI is enabled.SCK and MOSI use CMOS drivers, /SS open drainwith internal pull up, /DRDY is an input withinternal pull up and MISO is high Z input.Optionally the pins can be switched to open drainwithout pull up for /SS, MOSI, SCK and high Zinputs for MISO and /DRDY. This allowscompatibility with devices that use a lower supplyvoltage.4.2.4 LED Matrix Mode Pins<strong>IO</strong>-<strong>Warrior56</strong> supports driving a LED matrix withup to 8x64 LEDs.Function <strong>IO</strong>W56/OE P1.3StrbClkDataP1.2P1.1P1.0When the LED Matrix function is enabled thesepins will no longer be affected by the normal portsetting command./OE is driven high when <strong>IO</strong>-Warrior enters thesuspend mode. The external driver should thendisable to stay within the USB power limits forsuspend mode.For more details on how to control a LED matrixplease refer to the separate application note.V 1.0.2, September 22nd 2011 for chip version V1.1.0.18


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>4.2.5 Switch Matrix Mode Pins<strong>IO</strong>-<strong>Warrior56</strong> supports scanning of a 8x8 matrix ofkeys or switches. When this function is enabledP0.0..7 will turn off their internal pull up resistorsand will be used as the Y lines that are periodicallydriven to Gnd voltage level. P2.0..7 will serve asthe X matrix inputs, they will keep their internalpull up resistors active so a closed switch in thematrix will pull down the X line when thecorresponding Y line is driven low.To allow more than two switches to be closed atthe same time and still be able to faultlessly detectwhich of the matrix points are closed it isnecessary to insert a diode in series with every keyor switch in the matrix. The kathodes of the diodeshave to be connected to the Y lines (P0.0..7).The following pins get reassigned when the keymode is enabled:Function <strong>IO</strong>W56X0 P2.0X1X2X3X4X5X6X7Y0Y1Y2Y3Y4Y5Y6Y7P2.1P2.2P2.3P2.4P2.5P2.6P2.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7The matrix is scanned every 4msec. Debouncetime is 16msec.When <strong>IO</strong>-Warrior enters the suspend mode the Xand Y lines will be pulled high by internal pull upresistors. Closing a switch/key does not wake the<strong>IO</strong>-Warrior.V 1.0.2, September 22nd 2011 for chip version V1.1.0.19


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>5.Device OperationDue to the fact that all current operating systemsoffer an especially easy access to devices in theHID class, <strong>IO</strong>-Warrior was designed as a genericHID device.By identifying as a generic HID class device <strong>IO</strong>-Warrior avoids being controlled by any of thehigher level system drivers, which makes itpossible to access <strong>IO</strong>-Warrior from applicationlevel.5.1 Accessing <strong>IO</strong>-WarriorA common misconception with USB is to thinkyou can "talk to the USB port". The truth is thatyou do that as likely as you are going to directlytalk to your Ethernet port or PCI bus.Communication on the USB is always with aspecific device attached to the USB. The USBitself is only the medium through which youcommunicate.To get access to a certain device you have to lookfor the VendorID and ProductID of that device.The specific mechanisms for doing so depend onthe individual operating system.For details please refer to our sample code in theSDK.5.2 <strong>IO</strong>-Warrior communication<strong>IO</strong>-<strong>Warrior56</strong> has five USB endpoints. Endpointsare like virtual communication ports into or out ofthe device.An endpoint can be assigned to an interface.Interfaces are like virtual devices or subsystemswithin a device. <strong>IO</strong>-Warrior uses interface 0 to talkto the pins directly and interface 1 to talk to thespecial mode functions.Endpoint 0 is a standard endpoint that is present onall USB devices. It does use the control transfermode and is used by the system to get informationabout the device and to configure the device.Endpoint zero can also be used to send data to thedevices functions. The low speed <strong>IO</strong>-Warrior chipsuse Endpoint zero for output data, <strong>IO</strong>-<strong>Warrior56</strong>has dedicated Endpoints for the output data toachieve a higher performance.For input data <strong>IO</strong>-Warrior is using endpoint 1 as aninterrupt-in endpoint. "Interrupt" is a bitmisleading in this case. For USB "interrupt" meansthat data is sent when there is new data available.The host computer is periodically asking the devicefor new data. The device itself can not initiate thedata transfer. <strong>IO</strong>-Warrior sends a new report anytime it detects a change to the input pin status.Output data to the I/O pins is send to Endpoint 2which is also an interrupt type endpoint. A sevenbyte report directly sets the status of the port pins.Special mode functions receive their commandsvia Endpoint 4, also interrupt mode. The reportsize for the special mode functions is 63 bytes plusthe report ID. This enables a single <strong>IO</strong>W56 specialmode command to transport ten times more datathan on the low speed <strong>IO</strong>-Warrior chips.Reactions to commands to the special modefunctions are sent via endpoint 3, also in interrupttransfer mode.Since <strong>IO</strong>-<strong>Warrior56</strong> uses interrupt out endpoints itcan not be used with USB 1.0 hosts (i.e. Win98),USB 1.1 is required as the minimum.5.3 <strong>IO</strong>-Warrior input behaviour<strong>IO</strong>-Warrior checks the status of all pins once everymillisecond. If it detects a change from the laststatus a new report via endpoint 1 is issued. Pinswhich are currently used by a special modefunction are not checked. Reports are send to thecomputer in 1msec intervals.The worst case latency from a status change tosending off the report is 2 ms unless the operatingsystem adds additional latency.5.4 <strong>IO</strong>-Warrior output behaviourUpon receiving the report <strong>IO</strong>-Warrior writes thenew data to the output pins in groups of eight pinseach. Pins 0.0 to 0.7 get the new data first, then 1.0to 1.7, 2.0 to 2.7, and last 6.0/ 6.7.The time between the individual ports is about1μsec.5.5 Using pins as inputs or outputsAll I/O pins on <strong>IO</strong>-Warrior can be used as input oroutput pins.All pins act as inputs all of the time. Whenreceiving an input report from <strong>IO</strong>-Warrior youalways get the current input status on all pinsexcept for those currently used by special modefunctions..Writing a 0 as output value to any pin causes it todrive the pin low with an open drain driver.Usually this will result in this pin being read as azero input as well, unless so much current has to bedrained by the pin that the voltage remains abovethe threshold level.Writing a 1 to a pin causes the open drain driver tobe turned off. The pin will be pulled high by aninternal pull up resistor. Now the pin acts either asan output with a high level, or can be used as aninput.V 1.0.2, September 22nd 2011 for chip version V1.1.0.110


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>5.6 Power supplyUSB does allow a device to be "Bus Powered".This means the device does get its power off theUSB port. To avoid overloading on the USB portsdevices need to advertise their power requirements.There are two power classes for devices: Lowpower and high power. Low power devices maydraw up to 100mA off the USB, high powerdevices up to 500mA.Likewise there are high power and low powerports. Usually high power ports are those on themotherboard and on hubs with external powersupply or hubs in a monitor. Low power ports aretypically on hubs that get their power off the USB,like hubs in keyboards.If the system decides that there is not sufficientpower to supply a high power decive that devicedoes not get enabled.<strong>IO</strong>-<strong>Warrior56</strong> can operate either as a high power orlow power device. Pulling the P6.0 pin high or lowat reset sets the desired power rating.This allows to configure <strong>IO</strong>-<strong>Warrior56</strong> optimallyfor supporting external circuits.5.7 Using external powerIf an external power source is used to supply powerfor an <strong>IO</strong>-<strong>Warrior56</strong> based circuit there are twooptions.The <strong>IO</strong>-<strong>Warrior56</strong> can be powered from the USBand only the external circuit gets its power off anexternal source. If this is a feasible design option itshould be used. An I/O pin may be used to checkthe presence of the external power so anycontrolling application knows if the device is in aworking configuration.The second option is to also power <strong>IO</strong>-<strong>Warrior56</strong>from an external source. This is not therecommended option since <strong>IO</strong>-<strong>Warrior56</strong> assumesthat the USB is active if it has power. In this caseset the current request of <strong>IO</strong>-<strong>Warrior56</strong> to 100mA5.9 Remote Wakeup<strong>IO</strong>-<strong>Warrior56</strong> chips support the remote wakeupfeature. They are able to wake the host computerfrom sleep state if the host operating system hasenabled this feature.Remote wakeup is initiated by <strong>IO</strong>-<strong>Warrior56</strong> if anypin changes its state while the chip is in suspendedstate.5.10 Special mode I/OTo enable <strong>IO</strong>-<strong>Warrior56</strong> to talk to devices thathave more complex demands it has the specialmode functions. When any of these functions isenabled some pins of <strong>IO</strong>-<strong>Warrior56</strong> turn intospecial function pins.Talking to the special mode functions is handeledvia the USB interface 1, which is also configuredas generic HID compliant.Commands to the special mode functions are sentas interrupt out reports via endpoint 4. Repliesfrom the special mode functions are returned asinterrupt in reports via endpoint 3.Endpoints 3 and 4 form the USB interface 1, orpipe 1.To talk to the various special mode functions andto handle different requests to them ReportIDs areused which enable multiple functions to use thesame endpoint. All reports to and from specialmode functions are always 64 bytes long, includingthe ReportID.The following chapters describe the individualspecial mode functions.5.8 SuspendAll devices on the USB port need to support thesuspended state. When the host computer stops toperiodically access the USB, like when it goes tosleep, all devices need to enter the suspended stateand drop their power draw to less than 500μA forlow power devices or less than 2.5mA for highpower devices.When entering suspended state <strong>IO</strong>-<strong>Warrior56</strong> pullsall pins high. Care must be taken in designingexternal circuits so that they will draw no morethan the allowed suspend power rating while allpins of <strong>IO</strong>-<strong>Warrior56</strong> are high.V 1.0.2, September 22nd 2011 for chip version V1.1.0.111


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>5.10.1 IIC Special mode functionThe IIC function is enabled and disabled bysending a report with the following structure withReportID=1 to interface 1:ReportID$01 outenable=$01 enables the IIC function, $00 disablesit. Other values are reserved for future use.Upon enabling IIC the SDA and SCL pins arepulled high and are no longer under control ofinterface 0. Disabling IIC does return the pinsunder control of interface 0 and pulls them highinitially.flags contains some configuration information:7 - Disable Pull Ups (1 = disable)6 - unused, write zero5 - unused, write zero4 - unused, write zero3 - unused, write zero2 - unused, write zero1 - speed bit 10 - speed bit 0Bit 7 "Disable Pull Up" allows operation with externalpull up resistors and lower voltage levels.When this bit is set the internal pull up resistors ofthe IIC pins are disabled and the SDA/SCL pinswork as open drain. The pull up resistors can notbe enabled again while the IIC function is active.Disabling and again enabling the IIC function isnecessary to change the status of the pull-upresistors back to active.Bits 0 and 1, speed of the IIC clock.0 = standard (93.75kHz)1 = fast (375kHz)2 = slow (46.8kHz)A write request to the IIC is send with ReportID=2and has the following format:ReportID$02 out1 2enable flags1 2flags dataflags contains the following bits:7 - Generate Start6 - Generate Stop5 - data count MSB4 - data count3 - data count2 - data count1 - data count0 - data count LSB3 4 ... 62$00 $00 $00 $00 $00633 4 ... 62data data data data63dataIf bit 7 - "Generate Start" is set a start signal (SDAfalling edge while SCL is high) is generated on theIIC prior to sending out the first data byte.Bit 6 - "Generate Stop" causes a stop signal (SDAgoes high while SCL is high) to be generated aftersending the last valid data byte of this report."data count" gives the number of valid data bytesin the report. The number may range from 1 to 62,higher values cause the report to be ignored.To do write transactions that are longer than 62bytes, send the first report with just the "GenerateStart" bit set, then send additional reports withneither bit 6 or 7 set until the last report is sendwhich has the "Generate Stop" bit set.Clock stretching by the slave to slow down datatransfer is supported by <strong>IO</strong>-<strong>Warrior56</strong>.Sending just the address byte in write mode andthen terminating the transfer with a stop conditionis not supported by <strong>IO</strong>W56. Trying to send such acommand results in an error being returned. Errorsare returned also when another start condition isattempted before issuing a stop, or if data is sendwithout having a valid start condition.Any write transactions are acknowledged by areport via interrupt-in endpoint 3:ReportID$02 in1 2flags $003 4$00 $00flags contains the following bits:7 - Error bit, 1 = error6 - Arb loss bit, 1 = Arbitration lost5 - data count MSB4 - data count3 - data count2 - data count1 - data count0 - data count LSB... 62$00 $0063$00"data count" indicates the last byte that wassuccessfully transfered and acknowledged by theslave (if any).An error is indicated when the slave does notacknowledge a transfer, or an invalid start/stopcondition was requested.If another master starts transmission on the bus atthe same time and <strong>IO</strong>-<strong>Warrior56</strong> loses the bus dueto a collision, an Arb Loss is returned.To resolve an Arb Loss the transfer has to beinitiated again.V 1.0.2, September 22nd 2011 for chip version V1.1.0.112


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>Reading data off the IIC is initiated with aReportID=3. The initiating report has the followingformat:ReportID$03 out1 2count command3 4 ... 62$00 $00 $00 $00 $0063"command" holds the command byte to be send tothe IIC."count" is the number of bytes that should be readoff the IIC after sending the command byte, values0 to 255 are valid, 0 reads 256 bytes.A start signal is automatically generated beforesending the command byte and a stop is generatedafter the last data byte is received. The read bit inthe address byte is automatically set to avoid busproblems.Data is returned in input reports with ID=3 viaendpoint 3. The data is returned in chunks of up to62 bytes each with an error flag and byte count.Multiple reports may be returned in reaction to aread request:Arbitration Loss is detected. This happens when<strong>IO</strong>-<strong>Warrior56</strong> is driving a logical high on SDA butreads a low.When that happens <strong>IO</strong>-<strong>Warrior56</strong> will immediatelystop driving SDA but continues to drive SCK untilthe end of the current byte and then returns an ArbLoss error.ReportID$03 in1 2flags data3 4 ... 62data data data data63dataflags contains the following bits:7 - error, set if slave does not ack command byte6 - Arb loss bit, 1 = Arbitration lost5 - data count MSB4 - data count3 - data count2 - data count1 - data count0 - data count LSBShould the IIC slave fail to acknowledge thecommand byte, the error flag will be set and thetransaction aborted. IIC does not have an errorcondition during the actual reading of data after thecommand byte was sent, except for the Arb Loss,that can occur when another master starts atransaction at the same time as the <strong>IO</strong>-<strong>Warrior56</strong>.To resolve an Arb Loss the transfer has to beinitiated again.Clock stretching by the slave to slow down datatransfer is supported by <strong>IO</strong>-<strong>Warrior56</strong>.Multi master configurations are supported by <strong>IO</strong>-<strong>Warrior56</strong>. If the bus is busy (a start was issued byanother master) <strong>IO</strong>-<strong>Warrior56</strong> will wait for a stopcondition before it starts its IIC transaction. In thecase that another master starts using the bus at thesame time as <strong>IO</strong>-<strong>Warrior56</strong> it is possible that anV 1.0.2, September 22nd 2011 for chip version V1.1.0.113


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>5.10.2 LCD Special mode functionThe LCD special mode function supports a widerange of alphanumeric and graphic LCD modules.The LCD function is enabled by sending an outputreport with ID 4 to the USB interface 1:ReportID$04 out1 2enable mode3 4 ... 62$00 $00 $00 $00 $0063enable = $00 disables the LCD function.enable = $01 enables the LCD function, othervalues are reserved."mode" contains a number of bits that determinethe behaviour of the LCD interface:7 - Disable Pull Ups (1 = disable)6 - unused, zero5 - unused, zero4 - LC79813 - T69632 - No44780Busy1 - Reset0 - Dual44780"Dual44780" enables the second E signal to controlmodules with two HD44780 controllers on them."No44780Busy" must be set for controllers thatdon't have the busy flag in bit 7 of register 0 likethe HD44780 or KS0108 controllers. Setting thisflag does disable checking for the busy flag in bit 7of the LCD register 0."Reset" enables the /RES pin. Upon issuing theenable report with this bit set the LCD functionwill pull the /RES pin low for approximately 2μsecbefore it is released to high again."T6963" switches to a mode compatible with theT6963C controllers. Make sure to also set the"No44780Busy" bit. The T6963 specific busy flagsare checked in this mode. The T6963C is the onlycontroller for which <strong>IO</strong>W56 implements the 8080bus protocol.Upon enabling the LCD function the Pins are putunder control of the LCD function and can nolonger be controlled by interface 0.The /On pin is pulled low when the LCD functionis enabled, it will go high when the <strong>IO</strong>-<strong>Warrior56</strong>enters suspend state.To write data to the connected LCD module anoutput report with ReportID 5 is written with thefollowing format:ReportID$05 out1 2flags data3 4 ... 62data data data data"flags" contains the following bits:7 - RS, Register Select bit6 - Select Special5 - data count MSB4 - data count3 - data count2 - data count1 - data count0 - data count LSB63dataThe status of the "RS" bit is used to set the RS orA0 line to the LCD module.With "data count" the number of bytes to bewritten is specified. <strong>IO</strong>-<strong>Warrior56</strong> will write up to62 data bytes to the register specified by the "RS"bit. If the "No44780Busy" flag has not been set theBusy bit of the LCD module is automaticallychecked and data written only when the LCDmodule is ready to accept it.When in "Dual44780" mode the "Select Special"bit selects which of the E lines is used for thisrequest. "Select Special" = 0 uses E1, "SelectSpecial" = 1 uses E2.In T6963 mode the "Select Special" bit selects ifthe normal busy flag or the auto mode busy flagshould be checked. "Select Special" = 0 checksSTA0, 1 before writing to the LCD, "SelectSpecial" = 1 checks STA3."LC7981" switches to a mode compatible with theLC7981 and HD61830 controllers. Make sure toalso set the "No44780Busy" bit. The LC7981specific busy flag is checked in this mode.V 1.0.2, September 22nd 2011 for chip version V1.1.0.114


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>To read data from the LCD module an outputreport with ID 6 is sent to interface 1:ReportID$06 out1 2flags $003 4$00 $00"flags" contains the following bits:7 - RS, Register Select bit6 - Select special5 - data count MSB4 - data count3 - data count2 - data count1 - data count0 - data count LSB... 62$00 $0063$00"RS" specifies which register is to be accessed."data count" sets the number of bytes to be read offthe LCD.When in "Dual44780" mode the "Select Special"bit selects which of the E lines is used for thisrequest. "Select Special" = 0 uses E1, "SelectSpecial" = 1 uses E2.In "T6963" mode the "Select Special" bit selects ifthe normal busy flag or the auto mode busy flagshould be checked. "Select Special" = 0 checksSTA0, 1 before writing to the LCD, "SelectSpecial" = 1 checks STA2.Following is a list of the LCD controllers that haveby now been tested with <strong>IO</strong>W56 and the mode bytethat is used for them. Additional chip types will beadded when tested.ChipHD44780ST7920HD61202KS0108S6B0108S1D15xxxSED152xAX1520NJU6450S1D133xxSED133xT6963LC7981HD61830mode Remarks$00 / $01 mode = $01 for dual chip$00$02 May have two chips,which means two CSlines, either polarity$02 May have two chips, two/CS lines, active low.May require 18kHz clockSuperset of KS0108$06 Select 6800 bus mode onthe module$0A May have a Font selectline$16Up to 63 bytes can be read with one request. Thedata read from the LCD module is returned in inputreports with ID 6:ReportID$06 in1 2count data3 4 ... 62data data data data63data"count" specifies the number of bytes returned inthis report. If more than 62 bytes are requested thedata will be returned in multiple reports.V 1.0.2, September 22nd 2011 for chip version V1.1.0.115


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>5.10.3 SPI Special mode function<strong>IO</strong>-<strong>Warrior56</strong> has a hardware SPI interfaceenabling it to talk to many peripheral devices.<strong>IO</strong>W56 supports SPI master mode."enable" = $00 disables the SPI and $01 enables it."mode" contains flags specifying the operatingmode for the SPI:7 - LSBfirst6 - unused, write zero5 - unused, write zero4 - unused, write zero3 - unused, write zero2 - CPHA1 - CPOL0 - unused, write zero"LSBfirst" selects which bit of the data byte getsshifted first. "LSBfirst" = 0 shifts MSB first,"LSBfirst" = 1 shifts LSB first."CPHA" works together with "CPOL" to specifywhich clock edges are used to drive and sampledata bits."CPOL" = 0 causes SCK to idle low between databytes," CPOL" = 1 makes SCK idle high."CPHA" = 0 causes data to be sampled on the firstclock edge and driven on the second edge."CPHA" = 1 causes data to be driven on the firstedge and sampled on the second edge (this is theopposite behaviour of <strong>IO</strong>W24 CPHA bit).Enabling SPI takes P5.0..P5.4 out of the control ofinterface zero.clock sets the clock divider. The master clock rateis 24 MHz which is divided by clock+1. The validrange for clock is 1 to 255. So the fastest SCLKrate is 12MHz, the slowest 93.75kHz.flags contains configuration bits.7 - Disable Pull Ups (1 = disable)6 - unused, write zero5 - unused, write zero4 - unused, write zero3 - unused, write zero2 - unused, write zero1 - unused, write zero0 - unused, write zeroSPI does always shift data in and outsimultaneously. So there is only one command tosend data out of SPI that does also result in thesame number of bytes being read in and returned tothe host. If the intention is to only read data froman external device it is still necessary to shift outthe same number of dummy bytes to that device.To enable the SPI function a report with ID 8 issent to interface1:Data transfers on the SPI are initiated by a reportReportID 1 2 3 4 ... 62 with ID 9:$08 out enable mode clock flags $00 $00 $00 63ReportID 1 2 3 4 ... 62 63$09 out count flags data data data data data"flags" contains the following bits:7 - useDRDY, 1 = do handshake6 - SSactive, 1 = /SS stays active5 - ignoreDRDY, 1 = first byte ignores /DRDY4 - unused, zero3 - unused, zero2 - unused, zero1 - unused, zero0 - unused, zero"useDRDY" enables a handshaking signal thatallows the slave to signal if and when it is ready toaccept or send data.If "useDRDY" = 1 <strong>IO</strong>-<strong>Warrior56</strong> will check for the/DRDY signal to be low before it starts shifting adata byte. If the slave wants to pause the datatransmission it has to pull /DRDY high before theend of the current byte transfer.Upon starting a data transfer it may be desired tosend the first byte without the slave signalling /DRDY low. By setting "ignoreDRDY" to 1 thefirst byte of this report is sent to the slave withoutchecking /DRDY. Prior to shifting the next byte<strong>IO</strong>-<strong>Warrior56</strong> will check the status of /DRDY."count" has the number of bytes to shift, values 1-61 are valid, others will be ignored.<strong>IO</strong>-<strong>Warrior56</strong> assertes /SS before starting to shiftthe first data byte of this report and will deassert itafter completing the last byte, unless bit 6"SSactive" is = 1. If "SSactive" is set /SS will stayasserted after the last byte of the report has beentransfered, allowing more than 61 bytes to take partof a single transfer.Data shifted in by <strong>IO</strong>-<strong>Warrior56</strong> during atransaction is returned in a report with ID 9:ReportID 1 2 3 4 ... 62 63$09 in count data data data data data $00"count" holds the number of valid bytes in thereport.V 1.0.2, September 22nd 2011 for chip version V1.1.0.116


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>5.10.3.1 SPI CPHA / CPOLIf CPOL and CPHA are = 0 data is driven on thefalling edges of SCK (green lines) and sampled onthe rising edges (blue lines). The first bit is drivenbefore the first rising edge on SCK.For CPOL = 1 and CPHA = 1data is driven on thefalling edges of SCK (blue lines) and sampled onthe rising edges (green lines). The first bit is drivenon the on the first falling edge of SCK.For CPOL = 0 and CPHA = 1 data is driven on therising edges of SCK (blue lines) and sampled onthe falling edges (green lines). The first bit isdriven on the first rising edge of SCK.For CPOL = 1 and CPHA = 0 data is driven on therising edges of SCK (green lines) and sampled onthe falling edges (blue lines). The first bit is drivenbefore the first falling edge of SCK.V 1.0.2, September 22nd 2011 for chip version V1.1.0.117


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>5.10.4 Driving a LED matrix<strong>IO</strong>-<strong>Warrior56</strong> has the capability to drive a matrixof up to 8x64 LEDs with the aid of a few simpleexternal driver chips.To enable the reciever function a report with ID$14 is sent to interface 1:ReportID$14 out1 2enable $003 4$00 $00... 62$00 $00 $0063enable = $01 enables the LED function, enable =$00 disables it again.Data to be displayed in the matrix is written in twoblocks of 32 bytes:ReportID 1 2 ... 33 34 ...$15 out block data0 datan data31 $00 $00 $0063"block" = 0 writes to the first four lines, "block" =1 to the second four lines.5.10.5 Switch Matrix Mode<strong>IO</strong>-<strong>Warrior56</strong> can handle a matrix of 8x8 switchesor keys. Other than with a keyboard controller it ispossible to read out all possible combinations ofclosed switches. Since the switch status is reportedas a bitmap there is no limitation to the number ofswitches that can be closed at the same time(diodes are required in the matrix though if morethan two keys can be pressed at the same time).To enable the switch matrix function a report withID $18 is sent to interface 1:ReportID 1 2 3 4$18 out enable $00 $00 $00 … $00 $00 62$0063"enable" = $01 enables the switch matrix function,"enable" = $00 disables it again.The status of the matrix is returned when ever thereis a change of status or it can be requestedimmediately by sending a report with ID $19:ReportID$19 out1 2$00 $003 4$00 $00 … $00 $00 62$00635.10.6 Getting special mode function statusTo get the information which special modes arecurrently in use, send a report with reportID $FE tointerface 1:ReportID$FE outThis will immediately return an input report withID $FE that contains flags for the special modefunctions. Non zero means the function is active:ReportID$FF in5.10.7 Getting current pin statusDue to the way Windows implements HID support<strong>IO</strong>-<strong>Warrior56</strong> is unable to continuously send itsstatus.HID class devices do have a function that allowsthe host to set the rate at which reports should berepeated if there is no change to the data. Windowsdoes set this rate to zero for <strong>IO</strong>-<strong>Warrior56</strong>, whichmeans <strong>IO</strong>-<strong>Warrior56</strong> may send data only if thereare changes.To be able to get the current status from <strong>IO</strong>-<strong>Warrior56</strong> it does support a Special Mode Functionthat always returns the current status of all pins.To get the port status just send a report with ID$FF to interface 1:ReportID$FF outThis will result in the current pin status to bereturned immediately in an input report with ID$FF with the following format:ReportID$FF in1 2$00 $003 4 ... 62$00 $00 $00 $00 $00631 2IIC LCD SPI 3 LED41 2$00 $001 2Prt0 Prt15 6Key $003 4 ... 62$00 $00 $00 $00 $00633 4Prt2 Prt35 6Prt4 Prt5... 63$00 $007 ...Prt6 $00The status of the matrix is returned in an inputreport with ID $19. A set bit denotes a closedswitch:ReportID$19 in1 2Y0 Y13 4Y2 Y35 6Y4 Y57 8Y6 Y7 … $00 $0063V 1.0.2, September 22nd 2011 for chip version V1.1.0.118


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>6. Absolute Maximum RatingsStorage Temperature ........................................................................................-55°C to +100°CAmbient Temperature with power applied.........................................................-40°C to +85°CAmbient Temperature using USB ......................................................................-10°C to +85°CSupply voltage on Vcc relative to Gnd ..................................................................-0.5V to +6VDC input voltage....................................................................................Gnd-0.5V to Vcc+0.5VMaximum current into any port pin..........................................................................-25/+50mAMaximum combined output low current for all port pins ...............................................150mAStatic discharge voltage..................................................................................................>2000VLatch-up current ..............................................................................................................200mA6.1 DC CharacteristicsV ccI ccI sbI olR upV ithV HV ohV olV diV cmV seC inR extZ oV CcrsParameter Min Max Units RemarksOperating Voltage4.35 5.25 VOperating Supply Current50 mA Depending on operating modeSuspend mode current25 μA Oscillator offSink current on output pins25 mA Vout = 0.75VPull-up Resistance4 8 kΩInput threshold voltage45% 65% V cc All ports, low to high edgeInput hysteresis voltage6% 12% V ccUSB InterfaceStatic output high2.8 3.6 V 15kΩ±5% to GNDStatic output low0.3 VDifferential Input sensitivity0.2V |(D+)-(D-)|Differential Input common Mode Range 0.8 2.5 VSingle Ended Transceiver Threshold0.8 2.0 VTransceiver capacitance20 pFExternal USB series resistor23 25 Ω In series with each USB pinUSB driver output impedance28 44 Ω Including R extD+/D- crossover voltage 1.3 2.0 VV 1.0.2, September 22nd 2011 for chip version V1.1.0.119


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>7. Ordering informationPartname Order <strong>Code</strong> Description Package<strong>IO</strong>-<strong>Warrior56</strong><strong>IO</strong>W56-LFXI <strong>IO</strong>-Warrior 50 I/O pinsMLFP56<strong>IO</strong>-<strong>Warrior56</strong><strong>IO</strong>W56-MOD <strong>IO</strong>-Warrior 50 I/O pinsModuleThe chips listed here are standard products.Customized chips are available on request.7.1 Packaging infoMLFP56 chips are packaged in trays with 250chips each. Only complete trays are available dueto mechanical handling as well as moisturesensitivity of the package.<strong>IO</strong>W56-LFXI has MSL 3.<strong>IO</strong>W56 modules are available in any quantity,packaging units are 1 and 15.7.2 USB VendorID and ProductIDBy default all <strong>IO</strong>-Warrior chips are shipped withthe USB VendorID of <strong>Code</strong> <strong>Mercenaries</strong> ($7C0 ordecimal 1984) and a fixed ProductID.On request chips can be equipped with thecustomers VendorID and ProductID. VendorIDscan be obtained from the USB ImplementersForum Customized chips may be subject to minimumorder quantities, contact for details.7.3 Serial numbersAll <strong>IO</strong>-Warrior chips do have unique serialnumbers in their device descriptors. These serialnumbers can be used to simplify programming formultiple <strong>IO</strong>-Warriors connected to a singlecomputer.The serial numbers are factory programmed andcan not be changed. Serial numbers are 8 digithexadecimal numbers. No two chips of a type willbe produced with identical serial numbers. Thoughit can be that a <strong>IO</strong>W24 has the same serial numberas a <strong>IO</strong>W40 or <strong>IO</strong>W56 chip.It is not possible to order chips with a specificserial number unless they are ordered as customchips which are subject to minimum order volumesand setup charges.Following are the ProductIDs for the <strong>IO</strong>-Warriorcontrollers:<strong>IO</strong>-<strong>Warrior56</strong> $1503ProductIDs are independent of the package type.V 1.0.2, September 22nd 2011 for chip version V1.1.0.120


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>8. <strong>IO</strong>-<strong>Warrior56</strong> basic circuit(MLFP56 package)2249USB+5VD-D+GND1234C1100nFC2100nFR1 24ΩR2 24ΩR3100K2120D-D+2423P6.0P6.72914P5.030P5.113P5.231P5.312P5.432P5.511P5.6P5.7376P4.038P4.15P4.239P4.34P4.440P4.53P4.6P4.7Vcc VccI O- War r i or 56- LFXIGNDGNDP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7455446534752485125182617271628154124214356445533103493583671950V 1.0.2, September 22nd 2011 for chip version V1.1.0.121


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>8.1 <strong>IO</strong>-<strong>Warrior56</strong> Starterkit CircuitUSB+5VD-D+GND1234C110μFJ1R2470ΩD1J2R1100KS123D-D+5556P6.0P6.7497P5.048P5.110P5.247P5.39P5.446P5.512P5.6P5.74115P4.040P4.118P4.239P4.317P4.438P4.520P4.6P4.71VccI O- War r i or 56- MODGNDP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.733233226312527285453526515508371936223121342445114414431342164V 1.0.2, September 22nd 2011 for chip version V1.1.0.122


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>9. Package DimensionsModuleThe module contains the bypass capacitors as well as the USB series resistors.V 1.0.2, September 22nd 2011 for chip version V1.1.0.123


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>9.1 Package DimensionsQFN 56(Drawing from Cypress data sheet)Center pad must be soldered to groundV 1.0.2, September 22nd 2011 for chip version V1.1.0.124


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>10. ESD Considerations<strong>IO</strong>-<strong>Warrior56</strong> has an internal ESD protection towithstand discharges of more than 2000V withoutpermanent damage. However ESD may disruptnormal operation of the chip and cause it to exhibiterratic behaviour.For the typical office environment the 2000Vprotection is normally sufficient. Though forindustrial use additional measures may benecessary.When adding ESD protection to the signals specialcare must be taken on the USB signal lines. TheUSB has very low tolerance for additionalresistance or capacitance introduced on the USBdifferential signals.In any case the USB 2.0 specification chapter 6and 7 should be read for detailed specification ofthe electrical properties.10.1 EMC Considerations<strong>IO</strong>-Warrior uses relatively low power levels and soit causes few EMC problems. The most importantissue is to provide a very clean layout for thepower supply. <strong>IO</strong>-<strong>Warrior56</strong> runs at 24MHzinternal clock rate, this can cause current spikes ifthe supply lines are not carefully layed out.To avoid any EMC problems the following rulesshould be followed:• Keep the PCB traces from the resonator to thechip pins as short as possible.• Put the 100nF ceramic capacitors right next tothe power supply pins of the chip and make surethe PCB traces between the chips power pinsand the capacitor are as short as possible.• Run the power supply lines first to the capacitor,then to the chip.• Connect the second ground and supply pin inthe shortest possible way to the first ground andsupply pin. No other things may haveprecedence over this.• Keep the two USB signal lines close to eachother, route no other signal between them. USBuses differential signalling so the best signalquality with lowest RF emission is achieved byputting these lines very close to each other.11. Revision History<strong>IO</strong>-<strong>Warrior56</strong> does not use the same code base as<strong>IO</strong>-Warrior24 and <strong>IO</strong>-Warrior40, so the versionnumbers are not identical.1.1.0.1Feature release.IIC multi master capability added.Some invalid combinations on IIC now generateerrors, older versions could hang the IIC functionon violations of start/stop sequences.Disabling pull-up resistors for low voltagecompatibility added to IIC, SPI, and LCDfunctions.1.1.0.0Not released due to a bug.1.0.0.2Bugfix release. A problem in the USB stack wasfixed that had resulted in malfunctioning chips.This was a production issue.1.0.0.1Initial release1.0.0.0Not released due to a bug.V 1.0.2, September 22nd 2011 for chip version V1.1.0.125


<strong>IO</strong>-<strong>Warrior56</strong><strong>Code</strong> <strong>Mercenaries</strong>Legal StuffThis document is ©1999-2011 by <strong>Code</strong><strong>Mercenaries</strong>.The information contained herein is subject tochange without notice. <strong>Code</strong> <strong>Mercenaries</strong> makesno claims as to the completeness or correctness ofthe information contained in this document.<strong>Code</strong> <strong>Mercenaries</strong> assumes no responsibility forthe use of any circuitry other than circuitryembodied in a <strong>Code</strong> <strong>Mercenaries</strong> product. Nordoes it convey or imply any license under patent orother rights.<strong>Code</strong> <strong>Mercenaries</strong> products may not be used in anymedical apparatus or other technical products thatare critical for the functioning of lifesaving orsupporting systems. We define these systems assuch that in the case of failure may lead to thedeath or injury of a person. Incorporation in such asystem requires the explicit written permission ofthe president of <strong>Code</strong> <strong>Mercenaries</strong>.Trademarks used in this document are properties oftheir respective owners.<strong>Code</strong> <strong>Mercenaries</strong>Hard- und Software GmbHKarl-Marx-Str. 147a12529 Schönefeld OT GrossziethenGermanyTel: x49-3379-20509-20Fax: x49-3379-20509-30Mail: support@codemercs.comWeb: www.codemercs.comHRB 16007 PGeschäftsführer: Guido Körber, Christian LuchtV 1.0.2, September 22nd 2011 for chip version V1.1.0.126

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!