Usbee Ax Test Pod Users Manual
Usbee Ax Test Pod Users Manual
Usbee Ax Test Pod Users Manual
Test Pod
Users Manual
CWAV
www.usbee.com
2 USBee AX Test Pod User’s Manual
USBee AX Test Pod
Users Manual
CWAV
www.usbee.com
(951) 693-3065
support@usbee.com
The following License Agreement is a legal agreement between you (either an individual or entity),
the end user, and CWAV. You have received the USBee Package, which consists of the USBee
Pod, USBee Software and Documentation. If you do not agree to the terms of the agreement, return
the unopened USBee Pod and the accompanying items to CWAV for a full refund. Contact
support@usbee.com for the return address.
By opening and using the USBee Pod, you agree to be bound by the terms of this
Agreement.
Grant of License
CWAV provides royalty-free Software, both in the USBee Package and on-line at www.usbee.com,
for use with the USBee Pod and grants you license to use this Software under the following
conditions: a) You may use the USBee Software only in conjunction with the USBee Pod, or in
demonstration mode with no USBee Pod connected, b) You may not use this Software in
conjunction with any pod providing similar functionality made by other than CWAV, and c) You may
not sell, rent, transfer or lease the Software to another party.
Copyright
No part of the USBee Package (including but not limited to manuals, labels, USBee Pod, or
accompanying diskettes) may be reproduced, stored in a retrieval system, or transcribed, in any
form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the
prior written permission of CWAV, with the sole exception of making backup copies of the diskettes
for restoration purposes. You may not reverse engineer, decompile, disassemble, merge or alter the
USBee Software or USBee Pod in any way.
Limited Warranty
The USBee Package and related contents are provided “as is” without warranty of any kind, either
expressed or implied, including but not limited to the implied warranties of merchantability and
fitness for a particular purpose, with the sole exception of manufacturing failures in the USBee Pod
or diskettes. CWAV warrants the USBee Pod and physical diskettes to be free from defects in
materials and workmanship for a period of 12 (twelve) months from the purchase date. If during this
period a defect in the above should occur, the defective item may be returned to the place of
purchase for a replacement. After this period a nominal fee will be charged for replacement parts.
You may, however, return the entire USBee Package within 30 days from the date of purchase for
any reason for a full refund as long as the contents are in the same condition as when shipped to
you. Damaged or incomplete USBee Packages will not be refunded.
The information in the Software and Documentation is subject to change without notice and, except
for the warranty, does not represent a commitment on the part of CWAV. CWAV cannot be held
liable for any mistakes in these items and reserves the right to make changes to the product in order
to make improvements at any time.
Term
This license agreement is effective until terminated. You may terminate it at any time by returning
the USBee Package (together with the USBee Pod, Software and Documentation) to CWAV. It will
also terminate upon conditions set forth elsewhere in this agreement or if you fail to comply with any
term or condition of this agreement. You agree that upon such termination you will return the USBee
Package, together with the USBee Pod, Software and Documentation, to CWAV.
Logic Analyzer
Mixed Signal Oscope/Logic
Analyzer
Digital Voltmeter
USB (Low and Full Speed)
Decoder
I2C Decoder
SPI Decoder
Async Decoder
Signal Generator
Data Logger
Frequency Counter
Remote Controller
PWM Controller
Frequency Generator
I2C Controller
Pulse Counter
USBee Toolbuilder Source
Code
In this manual, features that operate with the various USBee AX pod
types are highlighted with the following symbols:
AX-Pro Only
Connection to PC
USB 2.0 High Speed (required)
Power
via USB cable
Test Leads
14 9" leads with 0.025" square
sockets
USB Cable Length
6 Feet
Dimensions
2.1" x 1.3" x 0.5"
Minigrip Test Clips
14
1.5 Calibration
Since electronic components vary values slightly over time and
temperature, the USBee AX Pod requires calibration periodically to
maintain accuracy. The USBee AX has been calibrated during
manufacturing and should maintain accuracy for a long time, but in
case you want to recalibrate the device, follow these steps. The
calibration values are stored inside the USBee AX pod. Without
calibration the measurements of the oscilloscope may not be accurate
as the pod ages.
To calibrate your USBee AX Pod you will need the following equipment:
When you are ready to calibrate the USBee AX Pod, plug in the pod
and run either the Oscilloscope or the Mixed Signal Oscilloscope
application. Then go to the menu item Setup | Calibrate. You will be
• Connect the CH1 signal to the GND signal using the test leads and
press OK. A measurement will be taken.
• Connect the CH2 signal to the GND signal using the test leads and
press OK. A measurement will be taken.
• Connect the GND signal to the ground and the CH1 signal to the
positive connection of the External Voltage Source using the test
leads and press OK. A measurement will be taken.
• With the Multimeter, measure the actual voltage between the GND
signal and the CH1 signal and enter this value in the dialog box.
• Connect the GND signal to the ground and the CH2 signal to the
positive connection of the External Voltage Source using the test
leads and press OK. A measurement will be taken.
• With the Multimeter, measure the actual voltage between the GND
signal and the CH2 signal and enter this value in the dialog box.
• The calibration is now complete. The calibration values have been
saved inside the pod.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the CH1 pin on the USBee AX pod to one of the signal wires
using the small socket on the end of the wire.
• Connect the other end of the wire to your circuit you would like to
test. You can either use the socket to plug onto a header post, or
2.3 Features
2.3.1 Pod Status
The Oscilloscope display shows a current USBee AX Pod Status by a
red or green LED. When a USBee AX is connected to the computer,
the Green LED shows and the list box shows the available Pod ID List
for all of the USBee Ax’s that are connected. You can choose which
one you want to use. The others will be unaffected. If a USBee AX is
not connected, the LED will glow red and indicate that there is no pod
attached.
If you run the software with no pod attached, it will run in
demonstration mode and simulate data so that you can still see how
the software functions.
The Trigger position is placed where the actual signal crosses the
trigger voltage with the proper slope. The USBee AX allows for huge
sample buffers, which means that you can capture much more data
than can be shown on a single screen. Therefore you can scroll the
waveform back and forth on the display to see what happened before
or after the trigger.
You can use the Prestore setting to specify how much of the data that
is in the sample buffer comes before the actual trigger position. If you
place the Prestore all the way to the left, most of the samples taken
will be after the trigger position. If you place Prestore all the way to
the right, most of the samples taken will be before the Trigger position.
2.3.8 Printing
You can print the current screen to any printer by choosing the File |
Print menu item.
2.3.10 Calibration
Since electronic components vary values slightly over time and
temperature, the USBee AX Pod requires calibration periodically to
maintain accuracy. The USBee AX has been calibrated during
manufacturing and should maintain accuracy for a long time, but in
case you want to recalibrate the device, follow these steps. The
calibration values are stored inside the USBee AX pod. Without
calibration the measurements of the oscilloscope may not be accurate
as the pod ages.
To calibrate your USBee AX Pod you will need the following equipment:
When you are ready to calibrate the USBee AX Pod, go to the menu
item Setup | Calibrate. You will be asked to confirm that you really
want to do the calibration. If so, press Yes, otherwise press No. Then
follow these steps:
• Connect the CH1 signal to the GND signal using the test leads and
press OK. A measurement will be taken.
• Connect the CH2 signal to the GND signal using the test leads and
press OK. A measurement will be taken.
• Connect the GND signal to the ground and the CH1 signal to the
positive connection of the External Voltage Source using the test
leads and press OK. A measurement will be taken.
• With the Multimeter, measure the actual voltage between the GND
signal and the CH1 signal and enter this value in the dialog box.
• Connect the GND signal to the ground and the CH2 signal to the
positive connection of the External Voltage Source using the test
leads and press OK. A measurement will be taken.
• With the Multimeter, measure the actual voltage between the GND
signal and the CH2 signal and enter this value in the dialog box.
• The calibration is now complete. The calibration values have been
saved inside the pod.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the CH1 pin on the USBee AX pod to one of the signal wires
using the small socket on the end of the wire. Connect the other
end of the wire to your circuit you would like to test. You can either
use the socket to plug onto a header post, or connect it to one of
the mini-grabber clips and then attach it to your signal of choice.
• Connect any of the digital inputs 0 thru 7 on the USBee AX pod to
one of the signal wires using the small socket on the end of the wire.
Connect the other end of the wire to your circuit you would like to
test. You can either use the socket to plug onto a header post, or
connect it to one of the mini-grabber clips and then attach it to your
signal of choice.
• Run the Mixed Signal Oscilloscope Application.
• Press the Run button. This will capture and display the current
activity on all of the signals.
• You can then scroll the display, either by using the slider bars, or by
clicking and dragging on the waveform itself. You can also change
the knobs to zoom the waveform.
• You can make simple measurements by using the Cursors area
(gray bars under and along side the waves). Click the left mouse
button to place one cursor and click the right mouse button to place
the second. The resulting measurements are then displayed in the
Measurements section of the display.
3.3 Features
3.3.1 Pod Status
The Mixed Signal Oscilloscope display shows a current USBee AX Pod
Status by a red or green LED. When a USBee AX is connected to the
computer, the Green LED shows and the list box shows the available
Pod ID List for all of the USBee Ax’s that are connected. You can
choose which one you want to use. The others will be unaffected. If a
The Trigger position is placed where the actual signal crosses the
trigger voltage with the proper slope. The USBee AX allows for huge
sample buffers, which means that you can capture much more data
than can be shown on a single screen. Therefore you can scroll the
waveform back and forth on the display to see what happened before
or after the trigger.
There are also a set of automatic measurements that are made on the
analog waveform for each trace. These are calculated without the use
of the cursors. These are:
3.3.9 Calibration
Since electronic components vary values slightly over time and
temperature, the USBee AX Pod requires calibration periodically to
maintain accuracy. The USBee AX has been calibrated during
manufacturing and should maintain accuracy for a long time, but in
case you want to recalibrate the device, follow these steps. The
calibration values are stored inside the USBee AX pod. Without
calibration the measurements of the oscilloscope may not be accurate
as the pod ages.
To calibrate your USBee AX Pod you will need the following equipment:
When you are ready to calibrate the USBee AX Pod, go to the menu
item Setup | Calibrate. You will be asked to confirm that you really
want to do the calibration. If so, press Yes, otherwise press No. Then
follow these steps:
4.3 Features
4.3.1 Pod Status
The DVM display shows a current USBee AX Pod Status by a red or
green LED. When a USBee AX is connected to the computer, the
Green LED shows and the list box shows the available Pod ID List for
all of the USBee Ax’s that are connected. You can choose which one
you want to use. The others will be unaffected. If a USBee AX is not
connected, the LED will glow red and indicate that there is no pod
attached.
If you run the software with no pod attached, it will run in
demonstration mode and simulate data so that you can still see how
the software functions.
This section details the operation of the Logic Analyzer application that
comes with the USBee AX. Below you see the application screen.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 thru Signal 7 lines pin on the USBee AX pod to
one of the signal wires using the small socket on the end of the wire.
• Connect the other end of the wire to your circuit you would like to
test.
• Run the Logic Analyzer Application.
• Press the Run button. This will capture a trace of the activity on the
8 digital lines.
• You can then scroll the display, either by using the slider bars, or by
clicking and dragging on the waveform itself. You can also change
the knobs to zoom the waveform.
• You can make simple measurements by using the Cursors area
(gray bars under the wave). Click the left mouse button to place
one cursor and click the right mouse button to place the second.
The resulting measurements are then displayed in the
Measurements section of the display.
5.3 Features
5.3.1 Pod Status
The Logic Analyzer display shows a list with the available Pod ID List
for all of the USBee Ax’s that are connected to your PC. You can
choose which one you want to use. The others will be unaffected. If a
USBee AX is not connected, the list box will read Demo to indicate that
there is no pod attached.
If you run the software with no pod attached, it will run in
demonstration mode and simulate data so that you can still see how
the software functions.
The Acquire button starts and stops a capture. When the logic
analyzer is first started, the Acquire button is not pressed and is
waiting for you to start a capture. The Acquire button captures a
single trace and stops. This mode is good for detailed analysis of a
single event.
The Buffer Size lets you select the size of the Sample Buffer that is
used. For each trace, the buffer is completely filled, and then the
waveform is displayed. You can choose buffers that will capture the
information that you want to see, but remember that the larger the
buffer, the longer it will take to fill.
You can also choose the Sample Rate that you want samples taken.
This uses an Internal Clock at that sample rate you choose. You can
choose from 1 Msps (samples per second) to up to 24 Msps. The
actual maximum sample rate depends on your PC configuration. You
can run the menu item Setup | Sample Rate Test to determine the
maximum sample rate for your system.
The USBee AX can also use an External Clock as the sample clock via
the CLK line. This is selected by the radio button that reads “CLK
signal is an input…”. You can also then choose which Sampling Edge
that the samples will be taken on: the rising or falling edge of the
external clock using the pushbutton. In external timing mode, you can
also use the External TRG signal to qualify the capture of the traces.
Set this toggle pushbutton to the state of TRG that you want samples
The Trigger position is placed where the actual signal crosses the
trigger voltage with the proper slope. The USBee AX allows for huge
sample buffers, which means that you can capture much more data
than can be shown on a single screen. Therefore you can scroll the
waveform back and forth on the display to see what happened before
or after the trigger.
The digital trigger condition is made up of up to 4 sequential states of
any of the 8 signals. Each state for a single signal can be high, low or
don’t care. This allows you to trigger on rising edges, falling edges,
edges during another signals constant level, or one edge followed by
another edge.
The X and O Cursors are placed on any horizontal sample time. This
lets you measure the time at a specific location or the time between
the two cursors. To place the X and O cursors, move the mouse to the
white box just below the waveform. When you move the mouse in this
window, you will see a temporary line that indicates where the cursors
will be placed. Place the X cursor by left clicking the mouse at the
current location. Place the O cursor by right clicking the mouse at the
current location.
In the Measurement window, you will see the various measurements
made off of these cursors. To change the selected relative cursor,
click the T,X or O buttons next to the “Timeline Relative To” text.
There are also a set of automatic measurements that are made on the
waveform by moving the mouse pointer over the waves with the
following modes turned on. These are calculated without the use of
the cursors. These are:
5.3.8 Printing
You can print the current screen to any printer by choosing the File |
Print menu item.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect any of the Signal 0 thru 7 pins on the USBee AX pod to one
of the signal wires using the small socket on the end of the wire.
• Connect the other end of the wire to your circuit you would like to
actively drive.
• Run the Signal Generator Application.
• Draw a waveform you want to generate using the waveform edit
controls at the top of the waveform window.
• Press the Generate button. This will generate the waveform you
just drew on the pod signals.
6.3 Features
6.3.1 Pod Status
The Signal Generator display shows a list with the available Pod ID
List for all of the USBee Ax’s that are connected to your PC. You can
choose which one you want to use. The others will be unaffected. If a
USBee AX is not connected, the list box will read Demo to indicate that
there is no pod attached.
If you run the software with no pod attached, it will run in
demonstration mode so that you can still see how the software
functions.
To Scroll the Waveforms in Time left and right, you can use the left
and right arrows highlighted above, click and drag the Overview Bar
(right under the Display Control title), or you can simply click and drag
the waveform itself.
To change the zoom ratio for the time, click the Zoom In or Zoom
Out buttons. You can also zoom in and out in time by clicking on the
waveform. To zoom in, click the left mouse on the waveform window.
To zoom out in time, click the right mouse button on the waveform
window.
The cursor in the waveform window can be in one of two modes: Pan
and Zoom, or Select. In pan and zoom, you can click and drag the
waveform around on the screen. In Select, you click and drag to
select a portion of the waveform to edit. Change modes by clicking
the left-right arrow (pan and zoom), or the standard arrow (select).
Editing the Waveform is done by selecting the portion of the
waveform by clicking and dragging to highlight a section, and then
pressing one of the Edit Control buttons at the top. You can set the
specified samples to a high level, low level, create a clock on that
signal, create a single pulse, or copy and paste. You can also Undo
the last change if needed.
The X and O Cursors are placed on any horizontal sample time. This
lets you measure the time at a specific location or the time between
the two cursors. To place the X and O cursors, move the mouse to the
white box just below the waveform. When you move the mouse in this
window, you will see a temporary line that indicates where the cursors
will be placed. Place the X cursor by left clicking the mouse at the
current location. Place the O cursor by right clicking the mouse at the
current location.
In the Measurement window, you will see the various measurements
made off of these cursors. To change the selected relative cursor,
click the T,X or O buttons next to the “Timeline Relative To” text.
6.3.6 Printing
You can print the current screen to any printer by choosing the File |
Print menu item.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 pin on the USBee AX pod to your circuit SDA
line.
• Connect the Signal 1 pin on the USBee AX pod to your circuit SCL
line.
• Run the Logic Analyzer Application.
• Press the Run Button when your I2C bus is running.
• Position the X and O (or X1 and X2) cursors at the beginning and
end of where you want to decode.
• Press View | I2C Decoder in the menu.
• Select the correct SDA and SCL lines in the dropdown box.
• Press the Decode Button.
• The Text Box will be filled with the decoded bus data.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 pin on the USBee AX pod to your circuit Slave
Select line.
• Connect the Signal 1 pin on the USBee AX pod to your circuit SPI
Clock line.
• Connect the Signal 2 pin on the USBee AX pod to your circuit SPI
Output Data line.
• Connect the Signal 3 pin on the USBee AX pod to your circuit SPI
Input Data line.
• Run the Logic Analyzer Application.
• Press the Run Button when your SPI bus is running.
• Position the X and O (or X1 and X2) cursors at the beginning and
end of where you want to decode.
• Press View | SPI Decoder in the menu.
• Select the correct SS, SCK, SI and SO lines in the dropdown boxes.
• Press the Decode Button.
• The Text Box will be filled with the decoded bus data.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 pin on the USBee AX pod to your circuit Async
line.
• Run the Logic Analyzer Application.
• Press the Run Button when your Async bus is running.
• Position the X and O (or X1 and X2) cursors at the beginning and
end of where you want to decode.
• Press View | Async Decoder in the menu.
• Select the correct Async line in the dropdown boxes, enter the baud
rate, select the bit order and data bits/parity.
• Press the Decode Button.
• The Text Box will be filled with the decoded bus data.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 pin on the USBee AX pod to your circuit D+
line.
• Connect the Signal 1 pin on the USBee AX pod to your circuit D- line.
• Run the Logic Analyzer Application.
• Set the sample rate to 24Msps for Full Speed or > 3Msps for Low
Speed
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 thru 7 signals on the USBee AX pod to your
circuit you would like to test.
• Run the Frequency Counter Application.
• The frequency of each of the 8 signal lines will then be displayed.
• You can log the frequency data to a file by pressing the “Start
Logging Data” button.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 thru 7 lines on the USBee AX pod to your
circuit you would like to actively drive.
• Run the Remote Controller Application.
• Press any of the Toggle buttons and the level of the output will
toggle (Low to High, High to Low)..
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 thru 7 lines on the USBee AX pod to your
circuit you would like to actively drive with a PWM signal.
• Run the PWM Controller Application.
• Use the scroll bars to set the desired PWM level, with 0 being all low
and 255 being all high outputs.
The above shows 2 outputs of the PWM Controller. Signal 0 shows the
PWM value set to 31 (out of 255) and Signal 1 shows the PWM value of
137. A value of 0 is all low, and a value of 255 is all high.
15.1 Frequency
Generator Specifications
Digital Channels Controlled 8
Analog Channels Controlled 0
Sets of Frequencies 6
Set 1
1MHz, 500kHz, 250kHz,
62.5kHz,31.25kHz,
15.625kHz, 7.8125kHz
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 thru 7 lines on the USBee AX pod to your
circuit you would like to actively drive.
• Run the Frequency Generator Application.
• From the dropdown list, select the set of frequencies that you want
to generate out the pod.
• These frequencies are now being generated on the pod digital
signals.
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 pin on the USBee AX pod to your circuit SDA
line.
• Connect the Signal 1 pin on the USBee AX pod to your circuit SCL
line.
• Run the I2C Controller Application.
• Press the buttons to create a script of the I2C transaction you want
to run.
• Press the Run Script button to generate the I2C transaction.
• The transaction result is written to the output window (and text file)
including and read data and ACK states..
• Connect the GND pin on the USBee AX pod to one of the signal
wires using the small socket on the end of the wire.
• Connect the other end of the wire to the Ground of your circuit you
would like to test. You can either use the socket to plug onto a
header post, or connect it to one of the mini-grabber clips and then
attach it to the Ground.
• Connect the Signal 0 thru 7 signals on the USBee AX pod to your
circuit you would like to test.
• Run the Pulse Counter Application.
• Press the Start Counting button.
• The number of pulses one each of the 8 digital signals is displayed.
• You can use any of the 8 lines as a gate to enable the counting
during specified times. For example, you can count pulses only
when Signal 0 is high by setting the Signal 0 Gate to High. Pulses
that occur when Signal 0 is low are not counted.
18.1 Overview
The USBee AX Test Pod System consists of the USBee AX Test Pod
connected to a Windows® 2000 or Windows® XP PC High Speed USB
2.0 port through the USB cable, and to your circuit using the
multicolored test leads and clips. Once connected and installed, the
USBee can then be controlled using either the USBee AX Windows
Software or your own USBee AX Toolbuilder software.
The USBee AX system is also expandable by simply adding more
USBee AX pods for more channels and combined features.
The USBee AX Test Pod is ideal for students or designers that need to
get up and running with High Speed USB immediately. With a mini-B
USB connector on one end and signal pin headers on the other, this
simple pod will instantly USB 2.0 High-Speed enable your
design. Then using the source code libraries, drivers and DLL's that
are included here you can write your own Visual Basic or C PC
application to control and monitor the signal pins on the pod.
The USBee AX has headers that are the interface to your circuits. The
signals on these headers represent an 8 bit data bus, a
Read/Write#/TRG signal and a clock line. Using the libraries and
source code provided you can do byte-wide reads and writes to these
signals. The USBee AX acts as the master, driving the
Read/Write#/TRG signals and Clock lines to your circuit.
There are six modes of data transfers that you can use depending on
your system needs.
• Voltmeter Mode
• Mixed Signal Scope Capture
• Digital Logic Analyzer Capture
• Digital Signal Generator
• Bi-Directional “bit-bang” mode
• Uni-Directional High Speed mode
The Mixed Signal functions are the only method of doing oscilloscope
traces with the USBee AX. This means that if you need just an
oscilloscope trace, then you will get the digital samples at the same
time.
The USBee AX can not generate analog output voltages using this
mode. Variable analog outputs are possible using the PWM Controller
and an external RC circuit.
The USBee AX has two sets of header pins that can be connected to a
standard 0.025” square socketed wire. One section of pins is for the
digital interface and the other is for the analog channels. Below is the
pinout for these two interfaces.
Once the above files are in the directories, plugging in the USBee AX
pod into a high speed USB port will show a “New Hardware Found”
message and the drivers will be loaded.
18.5.1.1 EnumerateAXPods
This routine finds all of the USBee AX pods that are attached to your
computer and returns an array of the Pod IDs.
Calling Convention
int EnumerateAxPods(unsigned int *PodID);
Return Value:
Number of USBee AX Pods found
18.5.1.2 InitializeAXPod
This routine initializes the Pod number PodNumber. This routine must
be called before calling any other USBee AX functions.
Calling Convention
int InitializeAXPod(unsigned int PodNumber);
where PodNumber is the Pod ID of the pod used found on the back of
the unit.
Return Value:
0 = Pod Not Found
1 = Pod Initialized
Calling Convention
int SpeedTest( void )
Return Value:
247 = 24MHz
167 = 16MHz
127 = 12MHz
87 = 8MHz
67 = 6MHz
47 = 4MHz
37 = 3MHz
27 = 2MHz
17 = 1MHz
18.5.1.4 SpeedTest16
This routine tests the connection to the initialized AX pod to determine
the maximum sample rate for the current PC configuration for the
Mixed Signal Oscilloscope functions.
Calling Convention
int SpeedTest16( void )
Return Value:
167 = 16MHz
127 = 12MHz
87 = 8MHz
67 = 6MHz
18.5.2.1 SetMode
This routine sets the operating mode for the Pod number PodNumber.
This routine must be called before calling the SetSignals or GetSignals
functions.
Calling Convention
int SetMode (int Mode);
• Mode is the type of transfers that you will be doing and includes a
number of bit fields.
o Bit 0 – High Speed or Bi-Directional mode
§ Bit 0 = 0 specifies independent Bi-
Directional transfer mode. In this mode,
each of the 8 data signals can be
independently setup as inputs or outputs.
When sending data to the pod, only the
lines that are specified as outputs will be
driven. When reading data from the pod,
all 8 signals lines will return the actual value
on the signal (whether it is an input or an
output).
§ Bit 0 = 1 specifies high speed all-input or
all-output transfer mode. In this mode, all
of the 8 data signal lines are setup in the
same direction (as inputs or outputs).
When sending data to the pod, all signals
become outputs. When reading data from
the pod, all signals become inputs.
o Bit 1 – CLK mode
§ Bit 1 = 0 specifies that data changes on the
Rising edge and data is sampled on the
Falling edge of CLK.
§ Bit 1 = 1 specifies that data changes on the
Falling edge and data is sampled on the
Rising edge of CLK.
o Bits 4,3,2 – High Speed CLK rate (don’t care in bi-
directional mode)
o Bits 4,3,2 = 0,0,0 CLK=24MHz
o Bits 4,3,2 = 0,0,1 CLK=12MHz
Return Value:
0 = Pod Not Found
1 = Pod Initialized
Return Value:
1 = Successful
0 = Failure
18.5.3.1 MakeBuffer
This routine creates the sample buffer that will be used to store the
acquired samples.
Calling Convention
unsigned char *MakeBuffer( unsigned long Size )
where Size is the number of samples (Bytes) to allocate.
Return Value:
0 = Failed to allocate the buffer
other = pointer to allocated buffer
18.5.3.2 DeleteBuffer
This routine releases the sample buffer that was used to store the
acquired samples.
Calling Convention
unsigned char *DeleteBuffer( unsigned char
*buffer)
where buffer is the pointer to the allocated buffer.
Return Value:
0 = Failed to deallocate the buffer
18.5.3.3 StartCapture
This routine starts the pod capturing data at the specified trigger and
sample rates.
Calling Convention
int StartCapture( unsigned int SampleRate,
unsigned int ClockMode,
unsigned char *Triggers,
signed int TriggerNumber,
unsigned char *buffer,
unsigned long length,
unsigned long poststore);
• SampleRate is as follows:
o 247 = 24MHz
o 167 = 16MHz
o 127 = 12MHz
o 87 = 8MHz
o 67 = 6MHz
o 47 = 4MHz
o 37 = 3MHz
o 27 = 2MHz
o 17 = 1MHz
• ClockMode:
o 2 = Internal Clocking Mode
o 4 = External Timing – sample on CLK rising edge
o 5 = External Timing – sample on CLK falling edge
o 6 = External Timing – sample on CLK rising edge
AND TRIG signal high
o 7 = External Timing – sample on CLK falling edge
AND TRIG signal high
o 8 = External Timing – sample on CLK rising edge
AND TRIG signal low
o 9 = External Timing – sample on CLK falling edge
AND TRIG signal low
• Triggers: array of Mask/Value byte pairs. Mask is a bit mask that
indicates which bit signals to observe. 1 in a bit position means to
observe that signal, 0 means to ignore it. Value is the actual value
of the bits to compare against. If a bit is not used in the Mask,
make sure that the corresponding bit is a 0 in Value.
• TriggerNumber: the number of pairs of Mask/Value in the above
Triggers Array.
• Buffer: pointer to the sample buffer to store the acquired data into.
This buffer must be created using the MakeBuffer routine.
• Length: The total number of samples to acquire. This value must be
a multiple of 65536.
Return Value:
0 = Failed
1 = Success
18.5.3.4 CaptureStatus
This routine checks the status of the data capture in progress.
Calling Convention
int CaptureStatus( char *breaks,
char *running,
char *triggered,
long *start,
long *end,
long *trigger,
char *full )
Return Value:
Number of breaks in the sampling
18.5.3.5 StopCapture
This routine terminates a pending capture.
Calling Convention
int StopCapture(void)
18.5.3.6 LoggedData
This routine returns the value of a particular sample.
Calling Convention
long LoggedData( unsigned long index )
Return Value:
Value of the given sample
18.5.4.1 SetData
This routine sets the value of a given 8-bit sample to the value
specified. You can also write directly to the allocated buffer after
calling MakeBuffer().
Calling Convention
long SetData( unsigned long index,
unsigned char value);
Return Value:
0 = Set failed
1 = Set successful
18.5.4.2 StartGenerate
This routine starts the pod generating data with the specified trigger,
sample rates, and data.
• SampleRate is as follows:
o 247 = 24MHz
o 167 = 16MHz
o 127 = 12MHz
o 87 = 8MHz
o 67 = 6MHz
o 47 = 4MHz
o 37 = 3MHz
o 27 = 2MHz
o 17 = 1MHz
• TriggerMode: Indicates the value on the external TRG signal that
must occur before the waveforms are generated. 0 = Don’t Care, 1
= rising edge, 2 = falling edge, 3 = high level, 4 = low level
• Buffer: pointer to the sample that holds the data to generate. This
buffer must be created using the MakeBuffer routine.
• Length: The total number of samples to generate. This value must
be a multiple of 65536.
Return Value:
0 = Failed
1 = Success
18.5.4.3 GenerateStatus
This routine checks the status of the data generation in progress.
Calling Convention
int GenerateStatus( char *breaks,
char *running,
char *triggered,
char *complete );
Return Value:
0 = Status Failed
1 = Status Successful
18.5.4.4 StopGenerate
This routine stops a signal generation in progress and terminates a
generation cycle.
Calling Convention
int StopGenerate(void );
Return Value:
0 = Stop Failed
1 = Stop Successful
18.5.5.1 MakeBuffer16
This routine creates the sample buffer to store the acquired digital
samples. This resulting buffer is two times the Size specified for
operational purposes during the capture. Upon completion of the
capture (after calling StopCapture16()) only the first Size bytes are the
digital sample data. The remaining bytes are then unused.
Calling Convention
18.5.5.2 MakeBufferScope
This routine creates the sample buffer to store the acquired analog
samples. Upon completion of the capture (after calling
StopCapture16()) this buffer holds the sampled analog data.
The values stored in this buffer are in ADC counts, which go from 0 at
-10V to 255 at +10V (78.125mV per count).
Calling Convention
unsigned char *MakeBufferScope( unsigned long
Size )
where Size is the number of samples to allocate.
Return Value:
0 = Failed to allocate the buffer
other = pointer to allocated buffer
18.5.5.3 DeleteBuffer16
This routine releases the sample buffers that was used to store the
acquired digital and analog samples.
Calling Convention
unsigned char *DeleteBuffer( unsigned char
*buffer)
where buffer is the pointer to the allocated digital buffer. The buffer
allocated by the MakeBufferScope() call is also released.
Return Value:
0 = Failed to deallocate the buffer
other = Success
• Channel is as follows:
o 1 = CH1
o 2 = CH2
• Slope is as follows:
o 0 = Analog Slope for Trigger is Don’t Care. Uses
Digital Triggers instead.
o 1 = Analog Slope for Trigger is Rising Edge. Ignores
digital triggers.
o 2 = Analog Slope for Trigger is Falling Edge. Ignores
digital triggers.
• Level: if Slope is not 0, this value specifies the analog trigger level.
This value is in ADC counts, which go from 0 at -10V to 255 at
+10V (78.125mV per count).
• SampleRate is as follows:
o 167 = 16MHz
o 127 = 12MHz
o 87 = 8MHz
o 67 = 6MHz
o 47 = 4MHz
o 37 = 3MHz
o 27 = 2MHz
o 17 = 1MHz
• ClockMode:
o Does not matter – It is forced to use Internal Timing
for MSO functions.
• Triggers: array of Mask/Value byte pairs used for triggering on the
digital samples. Mask is a bit mask that indicates which bit signals
to observe. 1 in a bit position means to observe that signal, 0
means to ignore it. Value is the actual value of the bits to compare
against. If a bit is not used in the Mask, make sure that the
Return Value:
0 = Failed
1 = Success
18.5.5.5 CaptureStatus
This routine checks the status of the data capture in progress.
Calling Convention
int CaptureStatus( char *breaks,
char *running,
char *triggered,
long *start,
long *end,
long *trigger,
char *full )
18.5.5.6 StopCaptureMSO
This routine terminates a pending Mixed Storage Oscilloscope capture
that was started by StartCaptureMSO(). After execution of this routine,
the buffers contain the acquired data.
The values stored in the buffer made by MakeBufferScope() are in ADC
counts, which go from 0 at -10V to 255 at +10V (78.125mV per count).
The values stored in the buffer made by MakeBuffer16() are in 8 bit
values, with one bit per digital line (bit 0 is digital Signal 0).
Calling Convention
int StopCaptureMSO(void)
Return Value:
1 = Capture Stopped
0 = Stop Failed
18.5.6.1 GetAnalogAverageCount
This routine reads the average analog voltage at the specified channel.
Calling Convention
unsigned long *GetAnalogAverageCount(
unsigned long Channel)
where Channel is the channel number to sample (1 or 2).
Return Value:
Average ADC count times 0x100000. ADC counts go from 0 at -10V to
255 at +10V (78.125mV per count). This return value ranges from
0x00000000 (-10V) to 0x0FF00000 (+10V).
//********************************************************************************
// USBee AX Toolbuilder Sample Application
//
// This file contains sample C code that accesses the USBee AX Toolbuilder functions
// that are contained in the USBAXLA.DLL file. These routines are detailed in the
// USBee AX Toolbuilder document which includes the available routines and
// associated parameters.
//
// Copyright 2005, CWAV - All rights reserved.
// www.usbee.com
//********************************************************************************
#include "stdio.h"
#include "conio.h"
#include "windows.h"
// SetMode definitions
#define FAST_ONEWAY_DATA 1
#define SLOW_TWOWAY_DATA 0
#define DATA_CHANGES_ON_RISING_EDGE 2
#define DATA_CHANGES_ON_FALLING_EDGE 0
#define DATA_IS_SAMPLED_ON_RISING_EDGE 0
#define DATA_IS_SAMPLED_ON_FALLING_EDGE 2
// Buffer Routines
CWAV_IMPORT unsigned char * CWAV_API MakeBuffer( unsigned long Size );
// Makes a Logic Analyzer or Signal Generator buffer
CWAV_IMPORT unsigned char * CWAV_API MakeBuffer16( unsigned long Size );
// Makes the digital buffer for mixed signal capture
CWAV_IMPORT unsigned char * CWAV_API MakeBufferScope( unsigned long Size );
// Makes the associated Scope buffer (must be used after MakeBuffer16)
CWAV_IMPORT int CWAV_API DeleteBuffer( unsigned char *buffer );
// MSO/Scope Functions
CWAV_IMPORT int CWAV_API StartCaptureMSO(unsigned int Channel, unsigned int Slope,
unsigned int Level, unsigned int SampleRate,
unsigned int ClockMode, unsigned char *Triggers,
signed int TriggerNumber, unsigned char *buffer,
unsigned char *obuffer,unsigned long length,
unsigned long poststore);
// Starts a Mixed Signal Capture
CWAV_IMPORT int CWAV_API StopCaptureMSO( void );
// Stops a mixed signal capture
#define CHANNEL1 1
#define CHANNEL2 2
#define DONT_CARE_SLOPE 0
#define RISING_EDGE_SLOPE 1
#define FALLING_EDGE_SLOPE 2
// DVM Functions
CWAV_IMPORT unsigned long CWAV_API GetAnalogAverageCount( unsigned long channel );
// Reads the analog channel average voltage
unsigned char VoltsToCounts( float Volts ) // Converts Volts into ADC counts
{
unsigned char counts;
counts = (char) ((Volts + 10.0) / 0.078125);
return(counts);
}
float CountsToVolts( float Counts ) // Converts ADC counts into Volts
{
double Volts;
Volts = (float)((double)Counts * 0.078125) - 10.0;
return((float)Volts);
}
//***********************************
// Pod Initializations Functions - must call InitializeAXPod before using any functions
//***********************************
printf("Getting the PodIDs available\n");
NumberOfPods = EnumerateAXPods(PodID);
if (NumberOfPods == 0) {
printf("No USBee AX-Pro Pods found\n");
getch();
return 0;
}
PodNumber = PodID[0]; // Use the first one we find. Change this to address your pod
//***********************************
if (ReturnVal != 1) {
printf("Failure setting the mode\n");
getch();
return 0;
}
if (ReturnVal != 1) {
printf("Failure setting the mode\n");
getch();
return 0;
}
DataOutBuffer[0]=ch++;
SetSignals (0xFF, 32767, DataOutBuffer);
//***********************************
// Logic Analyzer Functions
//***********************************
if (ReturnVal != 1) {
printf("Failure Starting Capture\n");
getch();
return 0;
}
char Breaks;
char Running;
char Triggered;
long Start;
long End;
long Trigger;
char Full;
do {
StopCapture();
//***********************************
// Signal Generator Functions
//***********************************
Running = 1;
while (Running)
{
GenerateStatus( &Breaks, &Running, &Triggered, &Full );
Sleep(400);
printf(".");
if (Breaks) break;
}
printf("\nBreaks= %d\n", Breaks);
printf("Running= %d\n", Running);
printf("Triggered= %d\n", Triggered);
printf("Complete= %d\n", Full);
printf("Stopped\n");
StopGenerate();
DeleteBuffer(SampleBuffer);
//***********************************
// MSO Functions
//***********************************
if (ReturnVal != 1) {
printf("Failure Starting MSO Capture\n");
getch();
return 0;
}
do {
StopCaptureMSO();
//***********************************
// DVM Functions - WARNING: This routine sets up a new sample buffer.
// Make sure you delete any previous sample buffer before running this.
//***********************************
getch();
return 0;
}
OldTime = GetTickCount
End Sub
Function VoltsToCounts(Volts As Single) As Byte
Dim Counts As Byte
VoltsToCounts = Counts
End Function
Function CountsToVolts(Counts As Single) As Single
Dim Volts As Double
CountsToVolts = Volts
End Function
Sub DoIt()
Mainform.OutText.Cls
''//***********************************
''// Pod Initializations Functions - must call InitializeAXPod before using any functions
''//***********************************
Mainform.OutText.Print "Getting the PodIDs available"
NumberOfPods = EnumerateAXPods(PodID(0))
If (NumberOfPods = 0) Then
Mainform.OutText.Print "No USBee AX-Pro Pods found"
Exit Sub
End If
PodNumber = PodID(0) ''// Use the first one we find. Change this to address your pod
DataOutBuffer(0) = ch
ch = ch + 1
SetSignals &HFF, 32767, DataOutBuffer(0)
'//***********************************
'// Logic Analyzer Functions
'//***********************************
Do
DelayMS 100 '// This is required to put pauses between the status requests, otherwise
'// the CaptureStatus will eat into the USB bandwidth.
StopCapture
'//***********************************
'// Signal Generator Functions
'//***********************************
Running = 1
Do While (Running)
GenerateStatus TBreaks, TRunning, TTriggered, TFull
DelayMS 100
Mainform.OutText.Print ".";
StopGenerate
DeleteBuffer (SampleBuffer)
'//***********************************
'// MSO Functions
'//***********************************
Do
DelayMS 100 '// This is required to put pauses between the status requests,
'// otherwise the CaptureStatus will eat into the USB bandwidth.
StopCaptureMSO
'//***********************************
'// DVM Functions - WARNING: This routine sets up a new sample buffer.
'// Make sure you delete any previous sample buffer before running this.
'//***********************************
End Sub