AN-812: MicroController-Based Serial Port Interface (SPI) Boot Circuit (Rev. 0) PDF

AN-812
APPLICATION NOTE
One Technology Way • P.O. Box 9106 • Norwood, MA 02062-9106, U.S.A. • Tel: 781.329.4700 • Fax: 781.461.3113 • www.analog.com
Microcontroller-Based Serial Port Interface (SPI®) Boot Circuit
by Alfredo Barriga
INTRODUCTION
SPI DEFINITIONS
This application note describes the operation of a generalpurpose, microcontroller-based Serial Port Interface (SPI) boot
circuit. This is a low cost solution for users who need to modify
some of their device’s parameters at power up. This circuit
addresses a 3-wire SPI application for programming converters,
or any device that has a SPI option, and sends commands to
user-defined SPI registers.
The SPI port consists of three pins. These are the serial clock
pin (SCLK), the serial data IO pin (SDIO) and the chip select
bar pin (CSB). SCLK is the serial shift clock in and is used to
synchronize serial interface reads and writes. SDIO is a dualpurpose pin, which is used as an input and output depending
on the instruction being sent and the relative position in the
timing frame. CSB is an active low control that gates the read
and write cycles. Figure 1 shows the SPI timing details. Table 1
provides specifications.
tDS
tS
tHI
tDH
CSB
DON’T CARE
SDIO
DON’T CARE
tLO
DON’T CARE
R/W
W1
W0
A12
A11
A10
A9
A8
A7
D5
Figure 1. SPI Timing Details
Table 1.
Specification Name
tDS
tDH
tCLK
tS
tH
tHI
tLO
Meaning
Setup time between data and rising edge of SCLK
Hold time between data and rising edge of SCLK
Period of the clock
Setup time between CSB and SCLK
Hold time between CSB and SCLK
Minimum period that SCLK should be in a logic high state
Minimum period that SCLK should be in a logic low state
Rev. 0 | Page 1 of 8
D4
D3
D2
D1
D0
DON’T CARE
05686-001
SCLK
tH
tCLK
AN-812
TABLE OF CONTENTS
Introduction ...................................................................................... 1
SPI Definitions .................................................................................. 1
Revision History ........................................................................... 2
Circuit Description........................................................................... 3
Configuration File ........................................................................ 3
Circuit Operation ......................................................................... 4
Programming the Device................................................................. 5
Off-PCB Programming................................................................ 5
Voltage Level Translation ............................................................ 6
Obtaining Code and Programming Tools................................. 6
Component Details and BOM ........................................................ 7
References .......................................................................................... 8
REVISION HISTORY
12/05—Revision 0: Initial Version
Rev. 0 | Page 2 of 8
AN-812
CIRCUIT DESCRIPTION
The core of this particular SPI boot circuit is the PIC12F629
microcontroller. This Flash™-based device is capable of writing
to the SPI port using the SCLK, SDIO, and CSB control signals.
It can be programmed many times to fit different application
needs, and because of its small size, can be easily incorporated
on any design.
CONFIGURATION FILE
05686-002
The configuration file to be programmed into the chip is
automatically generated by a standalone LabVIEW™ application
which allows the user to specify the number of registers to be
accessed and the 8-bit data-word to be written on each location.
LabView generates the assembly code which is then compiled
and linked to produce the hex file to be programmed into the
microcontroller.
There are two applications used for this purpose, which are
called by the main LabVIEW standalone configuration program
(SPI Code Builder.exe). MPASM® by Microchip® is used to
compile and link the assembly program, and PicFLASH® by
MikroElektronika® serves as a programmer to load the
generated hex file into the microcontroller. These two
Windows®-based applications have been included in the SPI
Code Builder application setup file. The user may also employ
any other compiler and programming application to assemble
the source code provided by the standalone program. Figure 2
shows an example of the SPI Code Builder and PicFLASH®
Programmer windows.
Figure 2. SPI Code Builder and PicFLASH® Windows
Rev. 0 | Page 3 of 8
AN-812
CIRCUIT OPERATION
The PIC12F629 is a low cost 8-pin, 8-bit microcontroller. It
features an internal oscillator which can be enabled to eliminate
the need of using an external clock source. The device operates
at an internal frequency of 4 MHz, and the clock output
frequency from the SCLK pin is based on its operating speed
and number of instruction cycles.
down mode in which minimal power is dissipated (13 μW
max). The device can be restarted at any time by pressing the
RESET button or simply by cycling the power supply. An
optional LED may be connected to Pin 3 (GP4) to indicate that
the device is busy during the data transfer process. Figure 3
shows the SPI boot circuit schematic diagram. This circuit can
be used for any 3.3 V tolerant SPI interface and can be
implemented very inexpensively. A voltage level translator may
also be incorporated for devices requiring lower input voltages.
The microcontroller operates immediately after power up by
sending write commands to the target device. After the
microcontroller has finished sending the data, it enters a power-
3.3V
SW1
1 B
2
OFF
3 A
U1
1
C2
0.1µF
R1
4.7kΩ
2
3
SW2
4
2
4
3
VSS
GP5
GP0
GP4
GP1 6
MCLA
GP2 5
7
GND
R2
4.7kΩ
SPI PORT
R3
4.7kΩ
R4
4.7kΩ
SCLK
SDI
CSB
PIC12F629_SN
OPTIONAL
RESET
R5
200Ω
CR1
U2
5.0V
3.3V P1
GND P2
1
2
L1
120nF
2
3
4
5
6
7
8
9
10
ISP
(PIC PROGRAMMER)
3.3V
C3
10µF
1
C4
0.1µF
05686-003
1
8
VDD
OPTIONAL
Figure 3. SPI Boot Circuit
Rev. 0 | Page 4 of 8
AN-812
PROGRAMMING THE DEVICE
OFF-PCB PROGRAMMING
The microcontroller used in this implementation can be serially
programmed while in the end application circuit. This is done
with two lines for clock and data, and three lines for power,
ground, and programming voltage/RESET. There are a number
of low cost serial and USB programmers available in the market,
such as the PicFLASH®USB programmer by MikroElektronika®.
This programmer can be purchased online at a low cost.
The user may choose to program the microcontroller before
soldering it to the board. This can be done by using the
appropriate socket for the package selected (8-lead PDIP, SOIC,
or DFN-S). The control lines used by the programmer can be
directly connected into the socket for off-PCB programming.
Figure 3 shows a simplified schematic using a preprogrammed
microcontroller. In this circuit, VDD is directly connected to
the 3.3 V supply and the RESET button is permanently removed
from MCLR (Pin 4). The user can choose to enable or disable
the microcontroller by adding a jumper between the supply and
the VDD pin.
Programming specifications require that the unit be powered at
5 V during programming. If the microcontroller is operated at a
voltage smaller than 5 V, a switch or a two-position jumper
must be added to select from system supply and programming
supply (SW1). A three-position switch allows the circuit to be
in three different modes—programming mode, normal SPI
mode, and power off. The off position can be incorporated if
the user does not want to write to the SPI port when the system
is powered up. To eliminate the need of switching between
programming supply and system supply, the microcontroller
can be permanently powered at 5 V. This adds simplicity to the
design and at the same time complies with the programming
voltage requirement.
Another advantage of programming the microcontroller offPCB is that there is no worry about setting the microcontroller
to a voltage that matches the required programming supply
voltage. The device can be powered at any voltage between 2 V
and 5.5 V, providing the flexibility of using an existing power
supply.
3.3V
U1
2
R1
4.7kΩ
3
4
VDD
GP5
GP4
MCLA
VSS
GP0
GP1
GP2
8
7
6
5
PIC12F629_SN
Figure 4. SPI Boot Circuit (Simplified)
Rev. 0 | Page 5 of 8
GND
SCLK
SDI
CSB
SPI PORT
R2
0.1µF
05686-004
1
AN-812
VOLTAGE LEVEL TRANSLATION
Logic thresholds are dictated by the process and design
implemented on each product. On some products, SPI inputs
are 5 V or 3.3 V tolerant. However, other products may only
accept smaller voltages (for example, 1.8 V). In this case, it
might be necessary to incorporate a voltage level translator to
adapt the levels from the microcontroller to levels acceptable to
the inputs of the DUT. It is recommended that the customer
uses the ADG3304 which is a four-channel bidirectional level
translator. The translator can be customized to perform
bidirectional logic level translation without an additional signal
to set the direction in which the translation takes place. For
instance, if the microcontroller is operating at 5 V supply and
the SPI port is 1.8 V tolerant, the ADG3304 can be set so that it
translates the SCLK, SDI, and CSB signals from 5 V to 1.8 V.
The ADG3304 is an easy-to-use solution that requires very few
external components. Moreover, the user can disable the
outputs from the translator at any time by pulling Pin 8 (EN)
low. Figure 5 shows the implementation of the SPI boot circuit
with the voltage level translator.
OBTAINING CODE AND PROGRAMMING TOOLS
Source code and installer with programming tools can be found
at no cost at www.analog.com. For information about the
PicFLASH USB programmer, go to www.mikroelektronika.co.yu.
5V
C428
0.1µF
U402
1
R418
4.7kΩ
S401
1
2
3
3
VDD
VSS
GP5
GP0
GP4
GP1
8
7
6
4 MCLA/GP3 GP2 5
4
RESET/REPROGRAM
C427
0.1µF
PIC12F629_SN
OPTIONAL
2
R419
261Ω
CR401
LED_SS
14
R421
4.7kΩ
R422
4.7kΩ
R423
4.7kΩ
13
12
11
10
5V
9
R425
10kΩ
E401
J401
PICVCC 1
2
GP1 3
4
GP0 5
6
NCLA/GP3 7
8
9
PICVCC
GP1
Rev. 0 | Page 6 of 8
8
2
VCCY
VCCA
Y1
A1
Y2
A2
Y3
A3
Y4
A4
9
EN
NC
GND
1
2
3
4
5
SCLK_DUT
SDIO_DUT
CSB_DUT
6
7
ADC3304BRUZ
JP401
1
GP0
CLOSED—HI-Z
OPEN—NORMAL OP
NCLA/GP3
10
ISP
(PIC PROGRAMMING HEADER)
Figure 5. SPI Boot Circuit with Translator
C429
0.1µF
U403
CLOSE WHEN PROGRAMMING PIC (U402)
05686-005
5V
SPI_VDD
AN-812
COMPONENT DETAILS AND BOM
Table 2. Recurring Components
QTY
4
1
1
1
1
DEVICE
RES_402
SWITCH01 1
PIC12F629_SOIC
HEADER10
Any three-position switch. May also use a jumper block.
Table 3. One Time Purchases
QTY
1
1
DEVICE
PIC Flash USB Programmer 1
Or any PIC compatible serial programmer.
Table 4. Optional Components
QTY
1
1
1
1
1
DEVICE
8-Lead SOIC Socket
LED_GAAS
RES_402
ADG3304
PUSHBUTTON
Rev. 0 | Page 7 of 8
AN-812
REFERENCES
•
Interfacing to High Speed ADCs via SPI® User Manual is available at www.analog.com.
•
The ADG3304 data sheet is available at www.analog.com.
•
The PIC12F629 data sheet and MPLAB® PM3 ICSP Design Guide can be obtained from Microchip® at www.microchip.com.
•
Information on the PicFLASH® USB Programmer and open source software can be obtained at www.mikroelektronika.co.yu
© 2005 Analog Devices, Inc. All rights reserved. Trademarks and
registered trademarks are the property of their respective owners.
AN05686-0-12/05(0)
T
T
Rev. 0 | Page 8 of 8