1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-12-24 04:03:19 +02:00
ben-wpan/prod/doc/analysis.html

186 lines
5.9 KiB
HTML
Raw Normal View History

<TITLE>Production and testing: Fault analysis</TITLE>
<BODY>
<HTML>
<H1>Production and testing: Fault analysis</H1>
<!-- ====================================================================== -->
<H2>Component placement and orientation</H2>
<!-- ====================================================================== -->
<H2>Supply voltages</H2>
The transceiver has three voltage domains:
<UL>
<LI>The supply and I/O voltage, which is nominally 3.3 V in
<B>atben</B> and <B>atusb</B>,
<LI>the digital (core) supply, which is nominally 1.8 V, and
<LI>the analog (RF) supply, which is nominally 1.8 V.
</UL>
<BR>
On <B>atusb</B>, there is also the USB voltage domain at nominally 5.0 V.
<P>
Voltages should be tested in the following order: USB, then I/O, then
digital, and finally analog. The table below gives the permissible
ranges. Any voltages outside of these ranges indicate a problem.
<P>
<TABLE frame="border" cellpadding="2">
<TR><TH>Domain<TH>Nominal<TH>Minimum<TH>Maximum
<TR><TD>USB<TD>5.0 V<TD>4.5 V<TD>5.25 V
<TR><TD>I/O<TD>3.3 V<TD>3.0 V<TD>3.6 V
<TR><TD>Digital<TD>1.8 V<TD>1.7 V<TD>1.9 V
<TR><TD>Analog<TD>1.8 V<TD>1.7 V<TD>1.9 V
</TABLE>
<P>
<H3>Measurement setup</H3>
The measurements should be performed either with a digital multimeter.
To enable all voltage domains, put the transceiver in receive mode:
<PRE>
atrf-txrx
</PRE>
or
<PRE>
atrf-txrx -d net:ben
</PRE>
Exit with Ctrl-C.
<P>
To produce periodic transmissions in addition to enabling all voltage
domains, use
<PRE>
atrf-txrx -p 3 -E 0
</PRE>
or
<PRE>
atrf-txrx -d net:ben -p 3 -E 0
</PRE>
Again, exit with Ctrl-C. Note that the transmissions may disturb nearby
equipment operating in the 2.4 GHz band, such as 802.11 networks. This
can be prevented by shorting the antenna to ground.
<P>
In case the board does not accept commands, only the USB and I/O voltage
can be checked. If they are correct, proceed with checking the clock.
<!-- ---------------------------------------------------------------------- -->
<H3>Measurement points on atben</H3>
<!-- ---------------------------------------------------------------------- -->
<H3>Measurement points on atusb</H3>
<!-- ====================================================================== -->
<H2>Clock frequency</H2>
The flawless performance of the crystal oscillator is crucial for
operation. Anomalies are easy to detect with even a low-cost oscilloscope
and pinpoint specific problems and help to select further analysis steps.
<P>
The crystal used in <B>atben</B> and <B>atusb</B> has a nominal tolerance
of +/&minus; 15 ppm at 22-28 C. Low-cost oscilloscopes typically have a timing
accuracy of
+/&minus; 100 ppm, which means that only major excursions can be detected by
measuring the clock output with such an instrument. Full-speed USB only
requires an accuracy of +/&minus; 2500 ppm.
We can therefore consider all results within a range of +/&minus; 1000 ppm as
sufficient, and perform more precise measurements by other means. This
applies to <B>atben</B> as well as to <B>atusb</B>.
<P>
<!-- ---------------------------------------------------------------------- -->
<H3>Measuring the clock on atben</H3>
<B>atben</B> normally does not output a clock signal. A 1 MHz clock
can be enabled with the following command:
<PRE>
atrf-txrx -d net:ben -C 1
</PRE>
This configures <B>atben</B> as a promiscuous receiver. The reception
of any IEEE 802.15.4 frame or pressing Ctrl-C will terminate the command.
<P>
<TABLE frame="border" cellpadding="2">
<TR><TH align="left">Clock<TH align="left">Action
<TR><TD>0 Hz<TD>Check voltages; check that the clock is enabled;
check for shorts around crystal; check connectivity of crystal
<TR><TD>0.999-1.001 MHz, ~3.3 Vpp<TD>Perform precision measurement with
<B>atrf-xtal</B>
<TR><TD>Other<TD>Check voltages; check for contamination around crystal
</TABLE>
<P>
<!-- ---------------------------------------------------------------------- -->
<H3>Measuring the clock on atusb</H3>
The transceiver provides the clock for the microcontroller in <B>atusb</B>.
A clock signal is therefore always available. Immediately after reset,
the transceiver generates a 1 MHz clock. When the microcontrolled comes out
of reset, it raises the transceiver's clock output to 8 MHz and then
enables USB.
<P>
<TABLE frame="border" cellpadding="2">
<TR><TH align="left">Clock<TH align="left">Action
<TR><TD>0 Hz<TD>Check voltages; check for shorts around crystal; check
connectivity of crystal
<TR><TD>0.999-1.001 MHz, ~3.3 Vpp<TD>Check presence of firmware; check for
shorts on SPI signals; check connectivity of SPI signals
<TR><TD>7.992-8.008 MHz, ~3.3 Vpp<TD>Perform precision measurement with
<B>atrf-xtal</B>
<TR><TD>Other<TD>Check voltages; check for contamination around crystal
</TABLE>
<!-- ---------------------------------------------------------------------- -->
<H3>Precision measurements</H3>
The clock frequency of <B>atben</B> can be measured with an accuracy
of about +/&minus; 100 ppm using the program <B>atrf-xtal</B>. <B>atrf-xtal</B>
runs directly on the Ben and measures the duration of packet transmissions.
The transmission time depends on the bit clock which is in turn derived
from the oscillator.
<PRE>
atrf-xtal 100
</PRE>
The number reported is the number of poll loops the CPU counted. This
value should be compared to a reference count obtained with a known to
be good <B>atben</B> board and the same Ben at a comparable temperature.
<P>
<TABLE frame="border" cellpadding="2">
<TR><TH align="left">Difference<TH align="left">Action
<TR><TD>&gt; +/&minus; 50 ppm<TD>Correct operation
<TR><TD>&lt; &minus;80 ppm<TD>Check soldering of capacitors;
check for contamination around crystal
<TR><TD>&gt; +120 ppm<TD>idem
<TR><TD>Other<TD>Divergence can be compensated by adjusting trim value
</TABLE>
<P>
<HR>
Up: <A href="index.html">Production and testing</A>&nbsp;
Prev: <A href="test.html">Functional test</A>&nbsp;
<HR>
Last update: 2011-05-18&nbsp;&nbsp;<I>Werner Almesberger</I>
<HR>
</BODY>
</HTML>