architecture with an 8032 microcontroller core.
The uPSD321X Devices of Flas h PSDs feat ure
dual banks of Flash memory, SRAM, general
purpose I/O and programmable logic, supervisory functions and access via I
PWM channels, and an on-board 8032 microcontroller core, with two UARTs, three 16-bit
Timer/Counters and two External Interrupts. As
with other Flash PSD families, the uPSD321X
Devices are also in-system programmable (ISP)
via a JTAG ISP interface.
■ Large 2KByte SRAM with battery back-up
option
■ Dual bank Flash memories
– 64KByte ma in Flash me mory
– 16KByte secondary Flash memory
PA035I/OGeneral I/O port pin
PA134I/OGeneral I/O port pin
PA232I/OGeneral I/O port pin
PA328I/OGeneral I/O port pin
PA426I/OGeneral I/O port pin
PA524I/OGeneral I/O port pin
PA622I/OGeneral I/O port pin
PA721I/OGeneral I/O port pin
PB080I/OGeneral I/O port pin
PB178I/OGeneral I/O port pin
PB276I/OGeneral I/O port pin
PB374I/OGeneral I/O port pin
PB473I/OGeneral I/O port pin
PB572I/OGeneral I/O port pin
PB667I/OGeneral I/O port pin
PB766I/OGeneral I/O port pin
1. PLD Macro-cell outputs
2. PLD inputs
3. Latched Address Out (A0-A7)
4. Peripheral I/O Mode
1. PLD Macro-cell outputs
2. PLD inputs
3. Latched Address Out (A0-A7)
15/152
Page 16
UPSD3212C, UPSD3212CV
Port Pin
PC0TMS20IJTAG pin
PC1TCK16IJTAG pin
PC2
PC3TSTAT14I/OGeneral I/O port pin
PC4TERR9I/OGeneral I/O port pin
PC5TDI7IJTAG pin
PC6TDO6OJTAG pin
PC75I/OGeneral I/O port pin
PD1CLKIN3I/OGeneral I/O port pin
PD2CSI1I/OGeneral I/O port pin
Vcc12
Vcc50
GND13
GND29
GND69
NC10
Signal
Name
V
STBY
Pin No.In/Out
15I/OGeneral I/O port pin
Function
BasicAlternate
1. PLD Macro-cell outputs
2. PLD inputs
3. SRA M stand by voltage input
4. SRAM battery-on indicator
5. JTAG pins are dedicated pins
1. PLD I/O
2. Clock input to PLD and APD
1. PLD I/O
2. Chip select to PSD Module
(V
STBY
(PC4)
)
NC11
NC17
NC71
52 PIN PACKAGE I/O PORT
The 52-pin package members of the uPSD321X
Devices have the same port pins as those of the
80-pin package except:
■ Port 0 (P0.0-P0.7, external address/data bus
AD0-AD7)
■ Port 2 (P2.0-P2.3, external address bus A8-
A11)
■ Port A (PA0-PA7)
■ Port D (PD2)
■ Bus control signal (RD,WR,PSEN,ALE)
Pin 5 requires a pull-up resistor (2kΩ for 3V devices, 7.5kΩ for 5V devices) for all devices.
16/152
Page 17
ARCHITECTURE OVERVIEW
Memory Organization
The uPSD321X Devices’s standard 8032 Core
has separate 64KB address spac es for Program
memory and Data Memory. Program memory is
where the 8032 executes in structions from. Data
memory is used to hold data variables. Flash
memory can be mapped in either program or data
space. The Flash memory consists of two flash
memory blocks: the main Flash (512Kbit) and the
Secondary Flash (128Kbit). Except during flash
memory programming or update, Flash memory
can only be read, not written to. A Page Register
is used to access memory beyond t he 64K bytes
Figure 5. Memory Map and Address Space
MAIN
FLASH
UPSD3212C, UPSD3212CV
address space. Refer to the PSD Module for details on mapping of the Flash memory.
The 8032 core h as t wo ty pes of data m em ory (internal and external) that can be read and written.
The internal SRAM cons ists of 256 byte s, and includes the stack area.
The SFR (Special Function Registers) occupies
the upper 128 bytes of the internal SRAM, the registers can be accessed by Direct addressing only.
Another 2K bytes resides in the PSD Modul e that
can be mapped to any address space defined by
the user.
EXT. RAM
SECONDARY
FLASH
16KB
Flash Memory Space
64KB
INT. RAM
FF
Indirect
Addressing
7F
Indirect
Direct
Addressing
0
Internal RAM Space
(256 Bytes)
SFR
Direct
Addressing
or
2KB
External RAM Space
(MOVX)
AI07425
17/152
Page 18
UPSD3212C, UPSD3212CV
Registers
The 8032 has several registers; these are the Program Counter (PC), Accumulator (A), B Register
(B), the Stack Pointer (SP), the Program Status
Word (PSW), General purpose registers (R0 to
R7), and DPTR (Data Pointer register).
Accumulator. The Ac cumulator is the 8-bit general purpose register, used for data operation such
as transfer, temporary saving, and conditional
tests. The Accumulator can be used as a 16-bit
register with B Register as shown in Figure 6.
B Register. The B Register is the 8-bit general
purpose register, used f or an arithmetic operation
such as multiply, division with the Accumulator
(see Figure 7).
Stack Pointer. The Stack Pointer Register is 8
bits wide. It is incremented before data is stored
during PUSH and CALL executions. While the
stack may reside anywhere in on-chip RAM, the
Stack Po inter is initi alize d to 07h af ter reset. Th is
causes the stack to begin at location 08h (see Figure 8).
Program Counter. The Program Counter is a 16bit wide which consists of two 8-bit registers, PCH
and PCL. This counter indicates the address of the
next instruction to be executed. In RESET
the program counter has reset routine address
(PCH:00h, PCL:00h).
Program Status Word. The Program Status
Word (PSW) contains several bits that reflect the
current state of the CPU and select Internal RAM
(00h to 1Fh: Bank0 to Bank3). The PSW is described in Figure 9, page 19. It contains the Carry
Flag, the Auxiliary Carry Flag, the Half Carry (for
BCD operation), the general purpose flag, the
Register Bank Select Flags, the Overflow Flag,
and Parity Flag.
[Carry Flag, CY]. This flag stores any carry or not
borrow from the ALU of CPU after an arithmetic
operation and is also changed by the Shift Instruction or Rotate Instruction.
[Auxiliary Carry Flag, AC]. After operation, this is
set when there is a carry from Bit 3 of ALU or there
is no borrow from Bit 4 of ALU.
[Register Bank Select Flags, RS0, RS1]. This flags
select one of four bank(00~07H:bank0,
08~0Fh:bank1, 10~17h: bank2, 17~1Fh:bank3) in
Internal RAM.
[Overflow Flag, OV]. This flag is set to '1' when an
overflow occurs as the result of an arithmetic operation involving signs. An overflow occurs when the
result of an addition or subtraction exceeds +127
(7Fh) or -128 (80h). The CLRV instruction clears
the overflow flag. There is no set instruction. When
state,
the BIT instruction is executed, Bit 6 of memory is
copied to this flag.
[Parity Flag, P]. This flag reflects on number of Accumulator’s “1.” If the number of Accumulator’s 1
is odd, P=0. otherwise, P=1. The sum of adding
Accumulator’s 1 to P is always even.
R0~R7. General purpose 8-bit registers that are
locked in the lower portion of internal data area.
Data Pointer Register. Data Pointer Register is
16-bit wide which consists of two-8bit registers,
DPH and DPL. This register is used as a data
pointer for the data transmission with external data
memory in the PSD Module.
Figure 6. 8032 MCU Registers
Accumulator
B Register
Stack Pointer
Program Counter
Program Status Word
General Purpose
Register (Bank0-3)
Data Pointer Register
AI06636
PCH
DPTR(DPH)
A
B
SP
PCL
PSW
R0-R7
DPTR(DPL)
Figure 7. Configuration of BA 16-bit Registers
B
AB
A
Two 8-bit Registers can be used as a "BA" 16-bit Registers
AI06637
Figure 8. Stack Pointer
Stack Area (30h-FFh)
Bit 15Bit 0Bit 8 Bit 7
Hardware Fixed
SP (Stack Pointer) could be in 00h-FFh
SP00h
00h-FFh
AI06638
18/152
Page 19
Figure 9. PSW (Program Status Word) Registe r
UPSD3212C, UPSD3212CV
MSB
CY
PSW
Carry Flag
Auxillary Carry Flag
General Purpose Flag
AC FO RS1 RS0 OVP
Register Bank Select Flags
(to select Bank0-3)
Program Memory
The program memory consists of two Flash memory: 64KByte Main Flash and 16KByte of Secondary Flash. The Flash mem ory can be mapped to
any address space as define d by the user in the
PSDsoft Tool. It can also be mapped to Data
memory space during Flash memory update or
programming.
After reset, the CPU begins execution from location 0000h. As shown in Figure 10, each interrupt
is assigned a fixed location in Program Memory.
The interrupt causes the CPU to jump to t hat location, where it commences execution of the service
routine. External Interrupt 0, for example, is assigned to location 0003h. If External Interrupt 0 is
going to be used, its service routine must begin at
location 0003h. If the interrupt is not going to be
used, its service location is available as gen eral
purpose Program Memory.
The interrupt service locations are spaced at 8byte intervals: 0003h for External Interrupt 0,
000Bh for Timer 0, 0013 h for E xternal I nterrupt 1,
001Bh for Timer 1 and so forth. If an interrupt service routine is short enough (as is often the c ase
in control applications), it can reside entirely within
that 8-byte interval (see Figure 10). Longer service
routines can use a jump instruction to s kip over
subsequent interrupt locat ions, if other interrupts
are in use.
Data memory
The internal data memory is divided into four physically separate d blocks: 256 bytes of internal RAM,
128 bytes of Special Function Registers (SFRs)
areas and 2K bytes (XRAM-PSD) in the PSD Module.
LSB
Reset Value 00h
Parity Flag
Bit not assigned
Overflow Flag
AI06639
RAM
Four register banks, each 8 registers wide, occupy
locations 0 through 31 in the lower RAM area.
Only one of these banks may be enabled at a time.
The next 16 bytes, locations 32 through 47, contain 128 directly addressable bit locations. The
stack depth is only limited by the available internal
RAM space of 256 bytes.
XRAM-PSD
The 2K bytes of XRAM-P SD resides in the PSD
Module and can be mapped to any address space
through the DPLD (Decoding PLD) as defined by
the user in PSDsoft Development tool. The XRAMPSD has a battery backup feature that allow the
data to be retained in t he event of a power lost.
The battery is connected t o the Port C PC2 pin.
This pin must be configured in PSDSoft to be battery back-up.
Figure 10. Inte rru pt Lo c atio n of P rog ra m
Memory
008Bh
•
•
•
•
0013h
000Bh
0003h
0000hReset
8 Bytes
AI06640
Interrupt
Location
•
•
•
•
•
19/152
Page 20
UPSD3212C, UPSD3212CV
SFR
The SFRs can only be addressed directly in the
address range from 80h to FFh. Table 15, page 32
gives an overview of the Speci al Function Registers. Sixteen address in the SFRs space are bothbyte and bit-addressable. The bit-addressable
SFRs are those whose address ends in 0h and 8h.
The bit addresses in this area are 80h to FFh.
Table 3. RAM Address
Byte Address
(in Hexadecimal)
↓↓
FFh255
30h48
Byte Address
(in Decimal)
Addressing Modes
The addressing modes in uPSD321 X Devices instruction set are as follows
■ Direct addressing
■ Indirect addressing
■ Register addressing
■ Register-specific addressing
■ Immediate constants addressing
■ Indexed addressing
(1) Direct addressing. I n a direct addressing t he
operand is specified by an 8-bit address field in the
instruction. Only internal Data RAM and SFRs
(80~FFH RAM) can be directly addressed.
(2) Indirect addressing. In indirect addressing
the instruction specifies a register which contains
the address of the operand. Both internal and external RAM can be indirectly addressed. The address register for 8-bit addresses can be R0 or R1
of the selected register bank, or the Stack Pointer.
The address register for 16-bit addresses can only
be the 16-bit “data pointer” register, DPTR.
Example:
mov @R1, #40 H ;[R1] <-----40H
Figure 12. Indirect Addressing
Program Memory
55h
7
R1
40h
55
AI06642
20/152
Page 21
UPSD3212C, UPSD3212CV
(3) Register addressing. The register banks,
containing registers R0 through R7, can be accessed by certain instructions which carry a 3-bit
register specification within the opc ode of the instruction. Instructions that access the registers
this way are code efficient, since t his mode eliminates an address byte. When the instruction is executed, one of four banks is selected at execution
time by the two bank select bits in the PSW.
Example:
mov PSW, #0001000B ; select Bank0
mov A, #30H
mov R1, A
(4) Register-specific addressing. Some instructions are specific to a certain register. For example, some instructions always operate on the
Accumulator, or Data Pointer, etc., so no address
byte is needed to point it. The opcode it self does
that.
(5) Immediate constants addressing. The value of a constant can follow the opcode in Program
memory.
Example:
mov A, #10H.
(6) Indexed addressing. Only Program memory
can be accessed with indexed addressing, a nd it
can only be read. This addressing mode is intended for reading look-up tables in Program memory.
A 16-bit base register (either DPTR or PC) points
to the base of the table, and the Accumulator is set
up with the table entry number. The address of the
table entry in Program memory is formed by adding the Accumulator data to the bas e p ointer (see
Figure 13).
Example:
movc A, @A+DPTR
Figure 13. Indexed Addressing
Arithmetic Instructions
The arithmetic instructions is listed in Table 4,
page 22. The table indicates the addressing
modes that can be used with each ins truction to
access the <byte> operand. For example, the
ADD A, <byte> instruction can be written as:
ADD a, 7FH (direct addressing)
ADD A, @R0 (indirect addressing)
ADD a, R7 (register addressing)
ADD A, #127 (immediate constant)
Note: Any byte in the internal Data Memory space
can be incremented without going through the Accumulator.
One of the INC instructions operates on the 16-bit
Data Pointer. The Data Pointer is used to generate
16-bit addresses for external memory, so being
able to increment it in one 16-bit operations is
a useful feature.
The MUL A B instruc tion mul tiplies the Accum ula-
tor by the data in the B register and puts the 16-bit
product into the concatenated B and Accumulator
registers.
The DIV AB instruction divides the Accumulator by
the data in the B register and leaves the 8-bit quotient in the Accumulator, and the 8-bit remainder in
the B regi s ter.
In shift operations, dividing a num ber by 2n s hifts
its “n” bits to the right. Using DIV AB t o perform the
division completes the shift in 4?s and leaves the
B register holding the b its that were shifted out.
The DAA instruction is for BCD arithmetic operations. In BCD arithmetic, ADD and ADDC instructions should always be followed by a DAA
operation, to ensure that the result is also in BCD.
Note: DAA will not convert a binary number to
BCD. The DAA operation produces a meaningful
result only as the second step in the addition of
two BCD bytes.
ACCDPTR
3Ah1E73h
Program Memory
3Eh
AI06643
21/152
Page 22
UPSD3212C, UPSD3212CV
Table 4. Arithmetic Instructions
MnemonicOperation
ADD A,<byte>A = A + <byte>XXXX
ADDC A,<byte>A = A + <byte> + CXXXX
SUBB A,<byte>A = A – <byte> – CXXXX
INCA = A + 1Accumulator only
INC <byte><byte> = <byte> + 1XXX
INC DPTRDPTR = DPTR + 1Data Pointer only
DECA = A – 1Accumulator only
DEC <byte><byte> = <byte> – 1XXX
MUL ABB:A = B x AAccumulator and B only
DIV AB
DA ADecimal AdjustAccumulator only
A = Int[ A / B ]
B = Mod[ A / B ]
Dir.Ind.Reg.Imm
Logical Instructions
Table 5, page 23 shows list of uPSD321X Devices
logical instructions. The instructions that perform
Boolean operations (AND, OR, Exclusive OR,
NOT) on bytes perform the operation on a bit-bybit basis. That is, if the Accumulator contains
00110101B and byte contains 01010011B, then:
ANL A, <byte>
will leave the Accumulat or holding 00010001B.
The addressing modes that can be used to access
the <byte> operand are listed in Table 5.
The ANL A, <byte> instruction may take any of the
forms:
ANL A,7FH(direct addressing)
ANL A, @R1 (indirect addressing)
ANL A,R6 (register addressing)
ANL A,#53H (immediate constant)
Note: Boolean operations can be performed on
any byte in the internal Data Mem ory space without going through the Accumulator. The XRL
<byte>, #data instruction, for example, offers a
quick and easy way to invert port bits, as in
If the operation is in response to an interrupt, not
using the Accumulator saves the time and effort to
push it onto the stack in the service routine.
The Rotate instructions (RL A , RLC A, etc.) shift
the Accumulator 1 bit to the left or right. For a left
rotation, the MSB rolls into the LSB position. For a
right rotation, the LSB rolls into the MSB position.
The SWAP A instruction interchanges the high
and low nibbles within the Accumulator. This is a
useful operation in BCD manipulations. For example, if the Accumulator contains a b inary number
which is known to be less than 100, it can be quickly converted to BCD by the following code:
MOVE B,#10
DIV AB
SWAP A
ADD A,B
Dividing the number by 10 leaves the tens digit in
the low nibble of the Acc umulator, and the ones
digit in the B register. The SWAP and ADD instructions move the tens digit to the high nibble of the
Accumulator, and the ones digit to the low nibble.
CRL AA = 00hAccumulator only
CPL AA = .NOT. AAccumulator only
RL ARotate A Left 1 bitAccumulator only
RLC ARotate A Left through CarryAccumulator only
RR ARotate A Right 1 bitAccumulator only
Addressing Modes
RRC ARotate A Right through CarryAccumulator only
SWAP ASwap Nibbles in AAccumulator only
23/152
Page 24
UPSD3212C, UPSD3212CV
Data Transfers
Internal RAM. Table 6 shows the menu of in-
structions that are available for moving data
around within the internal memory spaces, and the
addressing modes that can be used with each
one. The MOV <dest>, <src> instruction allows
data to be transferred between any two internal
RAM or SFR locations without going through t he
Accumulator. Remember, the Uppe r 128 b ytes of
data RAM can be access ed only by indirect addressing, and SFR space only by di rect addressing.
Note: In uPSD321X Devices, the stack resides in
on-chip RAM, and grows upwards . The PUSH instruction first increments the St ack Pointer (SP),
then copies the byte into the stack. PUSH and
POP use only direct addressing to identify the byte
being saved or restored, but the stack itself is accessed by indirect addressing us ing the S P register. This means the stack can go into the Upper
128 bytes of RAM, if they are implemented, but not
into SFR space.
The Data Transfer instructions include a 16-bit
MOV that can be used to initialize the Data Pointer
(DPTR) for look-up tables in Program Memory.
The XCH A, <byte> instruction causes the Accumulator and ad-dressed byte to exchange data.
The XCHD A, @Ri instruction is similar, but only
the low nibbles are involved in the exchange. To
see how XCH and XCHD can be used to facilitate
data manipulations, cons ider first the problem of
shifting and 8-digit BCD number two digits to the
right. Table 8 shows how this can be done using
XCH instructions. To aid in understanding how the
code works, the contents of the regist ers that are
holding the BCD number and t he content of the
Accumulator are shown alongside each instruction
to indicate their status after the instruction has
been executed.
After the routine has been executed, the Accumulator contains the two digits that were shifted out
on the right. Doing the routine with direct MOVs
uses 14 code bytes. The same operation with
XCHs uses only 9 bytes and executes almost
twice as fast. To right-shift by an odd number of
digits, a one-digit must be executed. Table 9
shows a sample of code that will right-shift a BCD
number one digit, using the XCHD instruction.
Again, the contents of the registers holding the
number and of the accumulator are shown alongside each instruction.
Table 6. Data Transfer Instructions that Access Internal Data Memory Space
MnemonicOperation
Dir.Ind.Reg.Imm
MOV A,<src>A = <src>XXXX
MOV <dest>,A<dest> = AXXX
MOV <dest>,<src><dest> = <src>XXXX
MOV DPTR,#data16DPTR = 16-bit immediate constantX
PUSH <src>INC SP; MOV “@SP”,<src>X
POP <dest>MOV <dest>,”@SP”; DEC SPX
XCH A,<byte>Exchange contents of A and <byte>XXX
XCHD A,@RiExchange low nibbles of A and @RiX
Addressing Modes
24/152
Page 25
UPSD3212C, UPSD3212CV
First, pointers R1 and R0 are set up to point to the
two bytes containing the last four BCD digits. Then
Table 7. Shifting a BCD Number Two Digits to
the Right (using direct MOVs: 14 bytes)
a loop is executed which leaves the last byte, location 2EH, holding the l ast two dig its of the shi fted
number. The pointers are decremented, and the
loop is repeated for location 2DH. The CJNE instruction (Compare and Jump if Not equal) is a
loop control that will be described later. The l oop
executed from LOOP to CJNE for R1 = 2EH, 2DH,
2CH, and 2BH. At that point the digit that was originally shifted out on the right has propagated to location 2AH. Since that location should be left with
MOV 2Ch,2 Bh001212345678
MOV 2Bh,# 0000012345678
0s, the lost digit is moved to the Accumulator.
Table 8. Shifting a BCD Number Two Digits to
the Right (using direct XCHs: 9 bytes)
; loop for R1 = 2Dh001238456745
; loop for R1 = 2Ch001823456723
; loop for R1 = 2Bh080123456701
CLRA0801234567 00
XCHA,2Ah000123456708
25/152
Page 26
UPSD3212C, UPSD3212CV
External RAM. Table 10 shows a l ist of t he Data
Transfer instructions that access external Data
Memory. Only indirect addressing can be used.
The choice is whether t o use a one-byte address,
@Ri, where Ri can be either R0 or R1 of the s elected register bank, or a two-byte
address, @DTPR.
Note: In all external Data RAM accesses, the Accumulator is always either the destination or
source of the data.
Lookup Tables. Ta ble 1 1 shows t he tw o instructions that are available for reading lookup tables in
Program Memory. Since these instructions access
only Program Memory, the lookup tables can only
be read, not updated.
The mnemonic is MOVC for “move constant.” The
first MOVC instruction in Table 11 can accommodate a table of up to 256 entries numbered 0
through 255. The number of th e desired entry is
loaded into the Accumulator, and the Data Pointer
is set up to point to the beginning of the table.
Then:
MOVC A, @A+DPTR
copies the desired table entry into the Accumula-
tor.
The other MOVC instruction works the same way,
except the Program Counter (PC) is used as the
table base, and the table is accessed through a
subroutine. First the num ber of the desired en-try
is loaded into the Accumulator, and the subroutine
is called:
MOV A , ENTRY NUMBER
CALL TABLE
The subroutine “TABLE” would look like this:
TABLE: MOVC A , @A+PC
RET
The table itself immediately follows the RET (return) instruction is Program Memory. This type of
table can have up to 255 entries, numbered 1
through 255. Number 0 cannot b e used, because
at the time the MOVC instruction is execute d, the
PC contains the address of the RET instruction.
An entry numbered 0 would be the RET opcode itself.
Table 10. Data Transfer Instruction that Access External Data Memory Space
The uPSD323X Devices contain a complete Boolean (single-bit) processor. One page o f the internal RAM contains 128 address able bits, and the
SFR space can support up to 128 addressable bits
as well. All of the port lines are bit-addressable,
and each one can be treated as a separate singlebit port. The instructions that access these bits are
not just conditional branches, but a complete
menu of move, set, clear, complement, OR and
AND instructions. These kinds of bit operations
are not easily obtained in other architectures with
any amount of byte-oriented software.
The instruction set for the Boolean processor is
shown in Table 12. All bit s acc esse s are by di rect
addressing.
Bit addresses 00h through 7Fh are in the Lower
128, and bit addresses 80h through FFh are in
SFR space.
Note how easily an internal flag can be moved to
a port pin:
MOV C,FLAG
MOV P1.0,C
In this example, FLAG is the name of any addressable bit in the Lower 128 or SFR space. An I/O
line (the LSB of Port 1, in this case) is set or
cleared depending on whether the Flag Bit is '1' or
'0.'
The Carry Bit in the PSW is used as the single-bit
Accumulator of the Boolean processor. Bit instructions th at re fer to th e Ca rry B it as C as se mbl e a s
Carry-specific instructions (CLR C, etc.). The Carry Bit also has a direct address, since it resides in
the PSW register, which is bit-addressable.
Note: The Boolean instruction set includes ANL
and ORL operations, but not the XRL (Exclusive
OR) operation. An XRL operation is simple to implement in software. Suppose, for example, it is required to form the Exclusive OR of two bits:
C = bit 1 .XRL. bit2
The software to do that could be as follows:
MOV C , bit1
JNB bit2, OVER
CPL C
OVER: (continue)
First, Bit 1 is moved to the Carry. If bit2 = 0, then
C now contains the correct result. That i s, Bit 1
.XRL. bit2 = bit1 if bit2 = 0. On the o ther hand, if
bit2 = 1, C now contains the complement of the
correct result. It need only be inverted (CPL C) to
complete the operation.
This code uses the JNB instruction, one of a series
of bit-test instructions which execute a jump if the
UPSD3212C, UPSD3212CV
addressed bit is set (JC, JB, JBC) or if the addressed bit is not set (JNC, JNB). In the above
case, Bit 2 is being tested, and if bit2 = 0, the CPL
C instruction is jumped over.
JBC executes the jump if the addressed bit is set,
and also clears the bit. Thus a flag can be tested
and cleared in one operation. All the PSW bits are
directly addressable, so the Parity Bit, or the general-purpose flags, for example, are also available
to the bit-test instructions.
Relative Offset
The destination address for thes e jumps is specified to the assembler by a label or by an actual address in Program memory. How-ever, the
destination address assembl es to a relative of fset
byte. This is a signed (two’s complement) offset
byte which is added to the PC in two’s complement
arithmetic if the jump is executed.
The range of the jump is therefore -128 to +127
Program Memory bytes relative to the first byte following the instruction.
Table 12. Boolean Instructions
MnemonicOperation
ANL C,bitC = A .AND. bit
ANL C,/bitC = C .AND. .NOT. bit
ORL C,bitC = A .OR. bit
ORL C,/bitC = C .OR. .NOT. bit
MOV C,bitC = bit
MOV bit,Cbit = C
CLR CC = 0
CLR bitbit = 0
SETB CC = 1
SETB bitbit = 1
CPL CC = .NOT. C
CPL bitbit = .NOT. bit
JC relJump if C =1
JNC relJump if C = 0
JB bit,relJump if bit =1
JNB bit,relJump if bit = 0
JBC bit,relJump if bit = 1; CLR bit
27/152
Page 28
UPSD3212C, UPSD3212CV
Jump Instructions
Table 13 shows the list of unconditional jump instructions. The table lists a single “JMP add” instruction, but in fact there a re th ree S JMP, LJMP,
and AJMP, which differ in the format of the destination address. JMP is a generic mnemonic which
can be used if the programmer does not care
which way the jump is en-coded.
The SJMP instruction encodes the destination address as a relative offset, as described above. The
instruction is 2 bytes long, consisting of the opcode and the relative offset byte. The jump distance is limited to a range of -128 to +127 bytes
relative to the instruction following the SJMP.
The LJMP instruction encodes the destination address as a 16-bit constant. The instruction is 3
bytes long, consistin g of the op code and two address bytes. The des tination address can be anywhere in the 64K Program Memory space.
The AJMP instruction encodes the destination address as an 11-bit constant. The instruction is 2
bytes long, consisting of the opcode, which itself
contains 3 of the 11 address bits, followed by another byte containing the low 8 bits of the destination address. When the instruction is executed,
these 11 bits are simply substituted for the low 11
bits in the PC. The high 5 bits stay the same.
Hence the destination has to be within the same
2K block as the instruction following the AJMP.
In all cases the programmer specifies the destination address to the assembler in the same way: as
a label or as a 16-bit constant. The assembler will
put the destination address into the correct format
for the given instruction. If the format required by
the instruction will not support t he distance t o the
specified destination address, a “Destination out
of range” message is written into the List file.
The JMP @A+DPTR instruction supports case
jumps. The destination address is computed at execution time as the sum of the 16-bit DPTR register and the Accumulator. Typically. DPTR is set up
with the address of a jump table. In a 5-way
branch, for ex-ample, an integer 0 through 4 is
loaded into the Accum ulator. The code t o be executed mi ght be as follows:
MOV DPTR, # J U MP TABLE
MOV A,INDEX_ NU MBER
RL A
JMP @A+DPTR
The RL A instruction converts the index number (0
through 4) to an even number on the range 0
through 8, because each entry in the jump table is
2 bytes long:
JUMP TABLE:
AJMP CASE 0
AJMP CASE 1
AJMP CASE 2
AJMP CASE 3
AJMP CASE 4
Table 13 shows a single “CALL a ddr” instruction,
but there are two of them, LCALL and ACALL,
which differ in the format in which the subroutine
address is given to the CPU. CALL is a generic
mnemonic which can b e used if the progra mmer
does not care which way the address is encoded.
The LCALL instruction uses the 16-bit address format, and the subroutine can be anywh ere in the
64K Program Memory space. The ACALL instruction uses the 11-bit format, and the subroutine
must be in the same 2K block as the instruction following the ACALL.
In any case, the programmer specifies the subroutine address to the assembler in the same way: as
a label or as a 16-bit constant. The assembler will
put the address into the correct format for the given instructions.
Subroutines should end with a RET instruction,
which returns execution to the instruction following
the CALL.
RETI is used to return from an interrupt service
routine. The only difference between RET and
RETI is that RET I tells the interrupt control system
that the interrupt in progress is done. If there is no
interrupt in progress at the time RETI is executed,
then the RETI is functionally identical to RET.
Table 13. Unconditional Jump Instructions
MnemonicOperation
JMP addrJump to addr
JMP @A+DPTRJump to A+DPTR
CALL addrCall Subroutine at addr
RETReturn from subroutine
RETIReturn from Interrupt
28/152
NOPNo operation
Page 29
UPSD3212C, UPSD3212CV
Table 14 shows the list of conditional jumps available to the uPSD321X Devices user. All of these
jumps specify the destination address by the relative offset method, and so are limited to a jump distance of -128 to +127 bytes from the instruction
following the conditional jump instruction. Important to note, however, the user specifies to the assembler the actual destination address the sam e
way as the other jumps: as a label or a 16-bit constant.
There is no Zero Bit in the PSW. The JZ and JNZ
instructions test the Accumulator data for that condition.
The DJNZ instruction (Decrement and Jump if Not
Zero) is for loop control. To execute a loop N
times, load a counter byte with N and terminate the
loop with a DJNZ to the b eginning of t he loop, as
shown below for N = 10:
MOV COUNTER,#10
LOOP: (begin loop)
•
•
•
(end loop)
DJNZ COUNTER, LOOP
(continue)
The CJNE instruction (Compare and Jump if Not
Equal) can also be used f or loo p cont rol a s in Table 9. Two bytes are specified in the operand field
of the instruction. The jump is executed only if the
two bytes are not equal. In the example of Table 9
Shifting a BCD Numb er One Digits to the Right,
the two bytes were data in R1 and the constant
2Ah. The initial data in R1 was 2Eh.
Every time the loop was executed, R1 was decremented, and the looping was to continue until the
R1 data reached 2Ah.
Another application of this instruction is in “greater
than, less than” comparisons. The two bytes in the
operand field are taken as unsigned integers. If the
first is less than the second, then the Carry Bit is
set (1). If the first is greater than or equal to the
second, then the Carry Bit is cleared.
Machine Cycles
A machine cycle consists of a sequence of six
states, numbered S1 through S6. Each state time
lasts for t wo oscillator peri ods. Thus, a ma chine
cycle takes 12 oscillator periods or 1µs if the oscillator frequency is 12MHz. Refer to Figure 14, page
30.
Each state is divided into a Phase 1 half and a
Phase 2 half. State Sequence i n uPSD321X Devices shows that retrieve/execute sequences in
states and phases for various kinds of instructions.
Normally two program retrievals are generated
during each machine cycle, even if the instruction
not
being executed does
require it. If the instruction being executed does not need more code
bytes, the CPU simply ig nores the e xtra retrieval,
and the Program Counter is not incremented.
Execution of a one-cycle instruction (Figure 14,
page 30) begins during State 1 of the machine cycle, when the opcode is latched into the Instruction
Register. A second retrieve occurs during S4 of
the same machine cycle. Execution is complete at
the end of State 6 of this machine cycle.
The MOVX instructions take two machine cycles
to execute. No program retrieval is generated during the second cycle of a MOVX instruction. This
is the only time program retrievals are skipped.
The retrieve/execute sequence for MOVX instruction is shown in Figure 14, page 30 (d).
Table 14. Conditional Jump Instructions
Addressing Modes
MnemonicOperation
Dir.Ind.Reg.Imm
JZ relJump if A = 0Accumulator only
JNZ relJump if A ≠ 0Accumulator only
DJNZ <byte>,relDecrement and jump if not zeroXX
CJNE A,<byte>,relJump if A ≠ <byte>XX
CJNE <byte>,#data,relJump if <byte> ≠ #dataXX
29/152
Page 30
UPSD3212C, UPSD3212CV
Figure 14. State Sequence in uPSD321X Devices
Osc.
(XTAL2)
a. 1-Byte, 1-Cycle Instruction, e.g. INC A
b. 2-Byte, 1-Cycle Instruction, e.g. ADD A, adrs
c. 1-Byte, 2-Cycle Instruction, e.g. INC DPTR
S1S2S3S4S5S6S1S2S3S4S5S6
p1p1p1p1p1p1p1p1p1p1p1p1p2p2p2p2p2p2p2p2p2p2p2p2
Read next
Read opcode
S1S2S3S4S5S6
Read opcode
S1S2S3S4S5S6
Read opcode
S1S2S3S4S5S6
Read opcode
(MOVX)
opcode and
discard
Read 2nd
Byte
Read next
opcode and
discard
Read next
opcode and
discard
Read next
opcode
Read next
opcode
Read next
opcode and
discard
S1S2S3S4S5S6
No Fetch
No ALE
Read next
opcode and
discard
No Fetch
Read next
opcode
Read next
opcode
S1S2S3S4S5S6S1S2S3S4S5S6
d. 1-Byte, 2-Cycle MOVX Instruction
AddrData
Access External Memory
AI06822
30/152
Page 31
UPSD3200 HARDWARE DESCRIPTION
The uPSD321X Devices has a m odular architecture with two main functional modules: the MCU
Module and the PSD Module. The MCU Module
consists of a standard 8032 core, peripheral s and
other system supporting functions. The PSD Module provides configurable Program and Data memories to the 8032 CPU core. In addition, it has its
own set of I/O ports and a PLD with 16 macrocells
for general logic implementation. Ports A,B,C, and
D are general purpose programmable I/O ports
Figure 15. uPSD321X Devices Function al Mod ules
UPSD3212C, UPSD3212CV
that have a port architecture which is different from
Ports 0-4 in the MCU Module.
The PSD Module communicates with the CPU
Core through the internal address, data bus (A0A15, D0-D7) and control signals (RD_, WR_,
PSEN_ , AL E, RESET_ ). The use r defin es the De coding PLD in the PSDsoft Development Tool and
can map the resources in the PSD Mo dule to any
program or data address space.
Port 3, UART,
Intr, Timers,I2C
8032 Core
2 UARTs
Interrupt
MCU MODULE
PSD MODULE
Page Register
Decode PLD
Port 1, Timers and
2nd UART and ADC
Port 1Port 3
I2C
3 Timer /
Counters
256 Byte SRAM
Channel
ADC
512Kb
Main Flash
CPLD - 16 MACROCELLSJTAG ISP
4
8032 Internal Bus
128Kb
Secondary
Flash
PSD Internal Bus
Port 4 PWM
PWM
5
Channels
A0-A15
RD,PSEN
WR,ALE
16Kb
SRAM
D0-D7
Bus
Interface
VCC, GND,
Reset Logic
LVD & WDT
XTAL
Reset
Port 0, 2
Ext. Bus
Port C,
JTAG, PLD I/O
and GPIO
Port A & B, PLD
I/O and GPIO
Port D
GPIO
Dedicated
Pins
AI07426
31/152
Page 32
UPSD3212C, UPSD3212CV
MCU MODULE DISCRIPTION
This section provides a detail description of the
MCU Module system functions and Peripherals,
including:
■ Special Function Registers
■ Timers/Counter
■ Interrupts
■ PWM
■ Supervisory Function (LVD and Watchdog)
■ USART
■ Power Saving Modes
2
■ I
C Bus
■ On-chip Oscillator
■ ADC
■ I/O Ports
Table 15. SFR Memory Map
F8 FF
F0
E8EF
E0
D8S2CONS2STAS2DATS2A DRDF
D0
C8
C0
B8
B0
A8
A0
(1)
B
ACC
PSW
T2CON
(1)
P4
(1)
IP
(1)
P3
(1)
IE
(1)
P2
(1)
(1)
(1)
T2MODRCAP 2LRCAP2HTL2TH2CF
PSCL0LPSCL 0HPSCL1LPSCL1HIPAB7
PWM4PPWM4W
PWMCONPWM0P WM1PWM2PWM3WDRSTIEAA7
Special Function Registers
A map of the on-chip memory area called the Special Function Register (SFR) space is shown in Table 15.
Note: In the SFRs not all of the addresses are occupied. Unoccupied addresses are not implemented on the chip. READ accesses to these
addresses will in general re turn random da ta, and
WRITE accesses will have no effect. User software should write '0s' t o t hese unimplemented locations.
WDKEYAF
F7
E7
D7
C7
BF
98SC ONSBUFSCON2SBUF29F
90
88
80
Note: 1. Register can be bit addressing
P1
TCON
P0
(1)
(1)
P1SFSP3SFSP4SFSASCLA DATAC ON97
(1)
TMODTL0TL1TH0TH18F
SPDPLDPHPCON87
32/152
Page 33
UPSD3212C, UPSD3212CV
Table 16. List of all SFR
SFR
Reg Name
Addr
80P0FFPort 0
81SP07Stack Ptr
82DPL00Data Ptr Low
83DPH00 Data Ptr High
87PCONSMODSMOD1 LVREN ADSFINT RCLK1TCLK1PDIDLE00Power Ctrl
76543210
Bit Register Name
Reset
Value
Comments
88TCONTF1TR1TF0TR0IE1IT1IE0IT000
89TMODGateC/TM1M0GateC/TM1M000
8ATL000Timer 0 Low
8BTL100Timer 1 Low
8CTH000Timer 0 High
8DTH100Timer 1 High
90P1FFPort 1
91P1SFSP1S7P1S6P1S5P1S400
93P3SFSP3S7P3S600
94P4SFSP4S7P4S6P4S5P4S4P4S3P4S2P4S1P4S000
95ASCL00
96ADATAD AT7ADAT6ADAT5 ADAT4ADAT3 AD AT2ADAT1A DAT000
97ACONADENADS1ADS0ADSTADSF00
Timer / Cntr
Control
Timer / Cntr
Mode Control
Port 1 Select
Register
Port 3 Select
Register
Port 4 Select
Register
8-bit
Prescaler for
ADC clock
ADC Data
Register
ADC Control
Register
98SCONSM0SM1SM2RENTB8RB8TIRI00
99SBUF00Serial Buffer
9ASCON2SM0SM1SM2RENTB8RB8TIRI00
9BSBUF200
A0P2FFPort 2
A1 PWMCONPWMLPWMPPWMECFG4CFG3CFG2CFG1CFG000
A2PWM000
Serial Control
Register
2nd UART
Ctrl Register
2nd UART
Serial Buffer
PWM Control
Polarity
PWM0
Output Duty
Cycle
33/152
Page 34
UPSD3212C, UPSD3212CV
SFR
Reg Name
Addr
A3PWM100
A4PWM200
A5PWM300
A6WDRST00
A7IEAES2
A8IEEA-ET2ESET1EX1ET0EX000
A9
AAPWM4P00
ABPWM4W00
AEWDKEY00
B0P3FFPort 3
76543210
Bit Register Name
EI
Reset
Comments
Value
PWM1
Output Duty
Cycle
PWM2
Output Duty
Cycle
PWM3
Output Duty
Cycle
Watch Dog
Reset
2
C
00
Enable (2nd)
PWM 4 Pulse
Watch Dog
Key Register
Interrupt
Interrupt
Enable
PWM 4
Period
Wid th
B1PSCL0L00
B2PSCL0H00
B3PSCL1L00
B4PSCL1H00
B7IPAPS2PI2C00
B8IPPT2PSPT1PX1PT0PX000
C0P4FFNew Port 4
C8T2CONTF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL200
C9T2MODDCEN00 Timer 2 Mode
CARCAP2L00
CB RCAP2H00
Prescaler 0
Low (8-bit)
Prescaler 0
High (8-bit)
Prescaler 1
Low (8-bit)
Prescaler 1
High (8-bit)
Interrupt
Priority (2nd)
Interrupt
Priority
Timer 2
Control
Timer 2
Reload low
Timer 2
Reload High
34/152
Page 35
UPSD3212C, UPSD3212CV
SFR
Reg Name
Addr
76543210
CCTL200
CDTH200
D0PSWCYACFORS1RS0OVP00
Bit Register Name
Reset
Value
Comments
Timer 2 Low
byte
Timer 2 High
byte
Program
Status Word
D1
2
C (S2)
D2 S2SETUP00
I
Setup
D4
D5
D6
D7
D8
D9
DA
DB
2
I
DCS2CONCR2EN1STASTOADDRAACR1CR000
DDS2STAGCStopIntrTX-MdBbusyBlostACK_RSLV00
DES2DAT00
DFS2ADR00
C Bus
Control Reg
2
C Bus
I
Status
Data Hold
Register
2
C address
I
E0ACC00Accumulator
F0B00B Register
35/152
Page 36
UPSD3212C, UPSD3212CV
Table 17. PSD Module Register Address Offset
CSIOP
Addr
Offset
Register Name
00Data In (Port A)Reads Port pins as input
02Control (Port A)
04Data Out (Port A)Latched data for output to Port pins, I/O Output Mode00
06Direction (Port A)Configures Port pin as input or output. Bit = 0 selects input00
08Drive (Port A)
Input Macrocell
0A
0C
01Data In (Port B)
03Control (Port B)00
05Data Out (Port B)00
07Direction (Port B)00
09Drive (Port B)00
(Port A)
Enable Out
(Port A)
76543210
Configure pin between I/O or Address Out Mode. Bit = 0 selects I/
Configures Port pin between CMOS, Open Drain or Slew rate. Bit
Reads latched value on Input Macrocells
Reads the status of the output enable control to the Port pin driver.
Bit = 0 indicates pin is in input mode.
Bit Register Name
O
= 0 selects CMOS
Reset
Value
00
00
Comments
0B
0D
1A
1B
Input Macrocell
(Port B)
Enable Out
(Port B)
10Data In (Port C)
12Data Out (Port C)00
14Direction (Port C)00
16Drive (Port C)00
Input Macrocell
18
11Data In (Port D)******
13Data Out (Port D)******00
15Direction (Port D)******00
17Drive (Port D)******00
(Port C)
Enable Out
(Port C)
Enable Out
(Port D)
******
Only Bit 1 and
2 are used
Only Bit 1 and
2 are used
Only Bit 1 and
2 are used
Only Bit 1 and
2 are used
Only Bit 1 and
2 are used
20
36/152
Output
Macrocells AB
Page 37
UPSD3212C, UPSD3212CV
CSIOP
Addr
Offset
Note: (Re gi st er address = cs io p address + address offs et ; where csiop address is def i ned by user in P SD soft)
Register Name
21
22
23
C0
C2
B0PMMR0**
B4PMMR2*
E0Page00Page Register
E2VM
* indicates bit is not used and need to s et to '0.'
Output
Macrocells BC
Mask Macrocells
AB
Mask Macrocells
BC
Primary Flash
Protection
Secondary Flash
Protection
76543210
Security
_Bit
Periph-
mode
*****
**
Bit Register Name
PLD
Mcells
PLD
array
Ale
clk
PLD
array-
clk
PLD
array
Cntl2
FL_
data
Sec3_
Prot
PLD
Turbo
PLD
array
Cntl1
Boot_
data
Sec2_
Prot
*
PLD
array
Cntl0
FL_
code
Reset
Value
Sec1_
Sec1_
APD
enable
Boot_
code
Sec0_
Prot
Prot
Prot
Sec0_
Prot
*00
**00
SR_
code
Comments
Bit = 1 sector
is protected
Security Bit =
1 device is
secured
Control PLD
power
consumption
Blocking
inputs to PLD
array
Configure
8032 Program
and Data
Space
37/152
Page 38
UPSD3212C, UPSD3212CV
INTERRUPT SYSTEM
There are interrupt requests from 10 sources as
follows (see Figure 16, page 39).
■ INT0 External Interrupt
■ 2nd USART Interrupt
■ Timer 0 Interrupt
2
■ I
C Interrupt
■ INT1 External Interrupt (or ADC Interrupt)
■ Timer 1 Interrupt
■ USART Interrupt
■ Timer 2 Interrupt
Externa l In t0
– The INT0 can be either level-active or transition-
active depending on Bit IT0 in registe r TCON.
The flag that ac tuall y gen erate s t his interrupt is
Bit IE0 in TCON.
– When an external interrupt is generated, the
corresponding request flag is cleared by the
hardware when the service routine is v ectored
to only if the interrupt was transition activated.
– If the interrupt was level activated then the inter-
rupt request flag remains set until the requested
interrupt is actually generated. Then it has to deactivate the request before the interrupt service
routine is completed, or else another interrupt
will be generated.
Timer 0 and 1 Interrupts
– Timer 0 and Timer 1 Interrupts are generated by
TF0 and TF1 which are set by an overflow of
their respective Timer/Counter registers (except
for Timer 0 in Mode 3).
– These flags are cleared by the internal hard-
ware when the interrupt is serviced.
Timer 2 Interrupt
– Timer 2 Inte rrupt is generated by TF 2 which is
set by an overflow of Timer 2. This flag has to be
cleared by the software - not by hardware.
– It is also generated by the T2EX signal (Timer 2
External Interrupt P1.1) which is controlled by
EXEN2 and EXF2 Bits in the T2CON register.
2
C Interrupt
I
– The interrupt of the I
2
C is generated by Bit INTR
in the register S2STA.
– This flag is cleared by hardware.
Externa l In t1
– The INT1 can be either level active or transition
active depending on Bit IT1 in registe r TCON.
The flag that ac tuall y ge nerate s t his interrupt is
Bit IE1 in TCON.
– When an external interrupt is generated, the
corresponding request flag is cleared by the
hardware when the service routine is v ectored
to only if the interrupt was transition activated.
– If the interrupt was level activated then the inter-
rupt request flag remains set until the requested
interrupt is actually generated. Then it has to deactivate the request before the interrupt service
routine is completed, or else another interrupt
will be generated.
– The ADC can take over the External INT1 to
generate an interrupt on conversion being completed
38/152
Page 39
Figure 16. Inte rru pt S yst em
UPSD3212C, UPSD3212CV
Interrupt
Sources
INT0
USART
Timer
0
I2C
INT1
Timer
1
2nd
USART
Timer
2
IE /
IP / IPA Priority
High
Low
Interrupt Polling
Global
Enable
AI07427
39/152
Page 40
UPSD3212C, UPSD3212CV
USART Inte rru pt
– The USART Interrupt is gene rated by RI (Re-
ceive Interrupt) OR TI (Transmit Interrupt).
– When the USART Interrupt is generated, the
corresponding request flag mus t be cleared by
the software. The interrupt service routine will
have to check the various USART regist ers to
determine the source and clear the corresponding flag.
– Both USART’s are identical, except for the addi-
tional interrupt controls in the Bit 4 of the additional interrupt control registers (A7H, B7H).
Interrupt Priority Structure
Each interrupt source can be assigned one of two
priority levels. Interrupt priority levels are defined
by the interrupt priority special function register IP
and IPA.
0 = low priority
1 = high priority
Table 18. Priority Levels
SourcePriority with Level
Int00 (highest)
2nd USART1
Timer 02
A low priority interrupt may be interrupted by a
high priority interrupt level interrupt. A high priority
interrupt routine cannot be interrupted by any other interrupt source. If two interrupts of different priority occur simultaneously, the high priority level
request is serviced. If requests of the same priority
are received simultaneously, an internal polling
sequence determines which request is serviced.
Thus, within each priority level, there is a second
priority structure determined by the polling sequence.
Interrupts Enable Structure
Each interrupt source can be individually enab led
or disabled by setting or clearing a bit in the interrupt enable special function register IE and IEA. All
interrupt source can also b e globally disabled by
the clearing Bit EA in IE (see Table 19). Please
see Tables 20, 21, 22, and 23 for individual bit descriptions.
7—Not used
6—Not used
5—Not used
4PS22nd USART Interrupt priority level
3—Not used
2—Not used
1PI2CI²C Interrupt priority level
0—Not used
How Interrupts are Handled
The interrupt flags are sampled at S5P2 of every
machine cycle. The sa mples a re pol l e d dur i ng following machine cycle. If one of the flags was in a
set condition at S5P2 of the preceding cycle, the
polling cycle will find it and the interrupt system will
generate an LCALL to the appropriate service routine, provided this H/W generated LCALL is not
blocked by any of the following conditions:
– An interrupt of equal priority or higher priority
level is already in progress.
– The current machine cycle is not the final cycle
in the execution of the instruction in progress.
– The instruction in progress is RETI or any ac-
cess to the interrupt priority or interrupt enable
registers.
The polling cycl e is repeated with each machin e
cycle, and the values polled are the values that
were present at S5P2 of the previous machine cycle.
Note: If an interrupt flag is active but being responded to for one of the above mentioned conditions, if the flag is still inactive wh en the blocking
condition is removed, the d enied interrupt wil l not
be serviced. In other words, the fact that the interrupt flag was once active but not serviced is not remembered. Every polling cycle is new.
The processor acknowledges an interrupt request
by executing a hardware generated LCALL to the
appropriate service routine. The hardware generated LCALL pushes the content s of the Program
Counter on to the stack (but it does n ot save the
PSW) and reloads the PC with an address that depends on the source of the interrupt being vectored to as shown in Table 24.
Execution proceeds from that location until the
RETI instruction is encountered. The RETI instruction informs the processor that the interrupt routine
is no longer in progress, then pops the top two
bytes from the stack and reloads the Program
Counter. Execution of the interrupted program
continues from where it left off.
Note: A simple RET instruction wo uld also return
execution to the interrupted program, but it would
have left the interrupt control system thinking an
interrupt w as still in p rogre ss, mak in g futur e interrupts impossible.
Table 24. Vector Addresses
SourceVector Address
Int00003h
2nd USART004Bh
Timer 0000Bh
I²C0043h
Int10013h
Timer 1001Bh
1st USART0023h
Timer 2+EXF200 2Bh
42/152
Page 43
POWER-SAVING MODE
Two software selectable modes of reduced power
consumption are implemented (see Table 25).
Idle M o de
The following Functions are Switched Off.
– CPU ( Halted)
The following Function Rem ain Active During Id le
– System Clock Halted
– LVD Logic Remains Active
– SRAM contents remains unchanged
– The SFRs retain their value until a RESET
is as-
serted
Note: The only way to exit Power-down Mode is a
RESET
.
Power Control Register
The Idle and Power-down Modes are activated by
software via the PCON register (see Tables 26
and Table 27, page 44).
UPSD3212C, UPSD3212CV
Idle M o de
The instruction that sets PCON.0 is the last instruction executed in the normal operating mode
before Idle Mode is activated. Once in the Idle
Mode, the CPU status is preserved in its entirety:
Stack pointer, Program counter, Program status
word, Accumulator, RAM and All other registers
maintain their data during Idle Mode.
There are three ways to terminate the Idle Mode.
– Activation of any enabled interrupt will cause
PCON.0 to be cl eared by hardware terminating
Idle mode. The interrupt is serviced, and following return from interrupt instruction RETI, the
next instruction to be execut ed will be the one
which follows the instruction that wrote a logic '1'
to PCON.0.
– External hardware res et: the hardware reset is
required to be active for two machine cycle to
complete the RESET operation.
– Internal reset: the microcontroller restarts after
3 machine cycles in all cases.
Power-Down Mode
The instruction that sets PCON.1 is the las t executed prior to going into the Power-down Mode.
Once in Power-down Mode, the oscillator is
stopped. The contents of the on-chip RAM and the
Special Function Register are preserved.
The Power-down Mode can be terminated by an
extern al R ESET.
Table 25. Power- S av i ng Mode Power Co nsu m pt i on
Note: 1. See the T2CON register for details of the flag description
I/O PORTS (MCU MODULE)
The MCU Module has five ports: Port0, Port1,
Port2, Port3 and Port 4. (Refer to the PSD Module
section on I/O ports A,B,C and D). P orts P0 and
P2 are dedicated for the external address and data
bus and is not available in the 52-pin package devices.
Port1 - Port3 are the same as in the st andard 8032
micro-controllers, with the exception of the addi-
RCLK1
TCLK1
(1)
Received Clock Flag (UART 2)
(1)
Transmit Clock Flag (UART 2)
tional special peripheral functions (see Table 28 ).
All ports are bi-directional. Pins of which the alternative function is not used may be used as normal
bi-directional I/O.
The use of Port1- Port4 pins as alternative functions are carried out automatically by the
uPSD321X Devices provi ded t he a ssocia ted S FR
Bit is set HIGH.
Table 28. I/O Port Functions
Port NameMain FunctionAlternate
Port 1GPIO
Port 3GPIO
Port 4GPIOPWM - Bits 3..7
Timer 2 - Bits 0,1
2nd UART - Bits 2,3
ADC - Bits 4..7
UART - Bits 0,1
Interrupt - Bits 2,3
Timers - Bits 4,5
2
C - Bits 6,7
I
44/152
Page 45
UPSD3212C, UPSD3212CV
The following SFR registers (Tabl es 29, 30, and
31) are used to control the mapping of alternate
functions onto the I/O port bits. Port 1 alternate
functions are controlled using the P1SFS register,
except for Timer 2 and the 2nd UART which are
enabled by their configuration registers. P1.0 to
P1.3 are default to GPIO after reset.
Port 3 pins 6 and 7 have been modified from the
standard 8032. These pins that were used for
READ and WRITE control signals are now GPIO
or I2C bus pins. The READ and W RITE pins are
assigned to dedicated pins.
Port 3 (I
2
C) and Port 4 alternate functions are controlled using the P3SFS and P4SFS Special Function Selection registers. A fter a res et, t he I/O pins
default to GPIO. The alternate function is enabled
if the corresponding bit in the PXSFS register is
set to '1.' Other Port 3 alternative functions (UART,
Interrupt, and Timer/Counter) are enabled by their
configuration register and do not require setting of
the bits in R3SFS.
Bidirectional I/O port with
internal pull-ups
Schmitt input
CMOS compatible interface
Bidirectional I/O port with
internal pull-ups
Schmitt input
CMOS compatible interface
Analog input option
an_enb
Bidirectional I/O port with internal
pull-ups
Schmitt input.
TTL compatible interface
OSCILLATOR
The oscillator c ircuit of the uP SD321X D evic es is
a single stage inverting amplifier in a Pierce oscillator configuration (see Figure 19). The circuitry
between XTAL1 and XTAL2 is basically an inverter biased to the t ransfer point. Either a c rystal or
ceramic resonator can be used as the feedback el-
Figure 19. Oscillator
XTAL1XTAL2
8 to 40 MHz
AI07428
ement to complete the o scillator circuit. Both are
operated in parallel resonance.
XTAL1 is the high gain amplifier input, and XTAL2
is the output. To drive the uPSD321X Devices externally, XTAL1 is driven from an external source
and XTAL2 left open-circuit.
XTAL1XTAL2
External Clock
AI06620
47/152
Page 48
UPSD3212C, UPSD3212CV
SUPERVISORY
There are four ways to invoke a reset and initialize
the uPSD321X Devices.
■ Via the external RESET pin
■ Via the internal LVR Block.
■ Via Watch Dog timer
The RESET
Each RESET
signal active. The CPU responds by executing an
internal reset and puts the internal registers in a
defined state. This internal reset is also routed as
an active low reset input to the PSD Module.
External Reset
The RESET
for noise reduction. A RESET
holding the RESET
power up while the oscillator is r unning. Refer to
AC spec on other RESET
mechanism is illustrated in Figure 20.
source will cause an internal reset
pin is connected to a Sc hmitt trigger
is accomplished by
pin LOW for at least 1ms at
timing requirements.
Low V
Voltage Reset
DD
An internal reset is generated by the LVR circuit
when the V
ter V
DD
the RESET
drops below the reset t hreshold. Af-
DD
reaching back up to the re set threshold,
signal will remain asserted for 10 ms
before it is released. On initial power-up the LV R
is enabled (default). After power-up the LVR can
be disabled via the LVREN Bit in the PCON Register.
Note: The LVR logic is still function al in both the
Idle and Power-down Modes.
The reset threshold:
■ 5V operation: 4V +/- 0.25V
■ 3.3V operation: 2.5V +/-0.2V
This logic supports approximately 0.1V of hysteresis and 1µs noise-cancelling delay.
Watchdog Timer Overflow
The Watchdog Timer generates an internal reset
when its 22-bit counter overflows. See Watchdog
Timer section for details.
Figure 20. RESET
Reset
WDT
LVR
Configuration
10ms
Timer
Noise
Cancel
S
Q
R
10ms at 40Mhz
50ms at 8Mhz
CPU
Clock
Sync
CPU
&
PERI.
PSD_RST
“Active Low
AI07429
48/152
Page 49
UPSD3212C, UPSD3212CV
WATCHD OG TI M E R
The hardware Watchdog Timer (WDT) resets the
uPSD321X Devices when it overflows. The WDT
is intended as a recovery method in situations
where the CPU may be subject ed to a software
upset. To pr event a syste m reset the ti mer must be
reloaded in time by the application software. If the
processor suffers a hardware/software malfunction, the s oft wa re wi ll f ai l to r el oad th e ti me r. T hi s
failure will result in a reset upon overflow thus preventing the processor running out of control.
In the Idle Mode the watchdog timer and reset circuitry remain active. The WDT consists of a 22-bit
counter, the Watchdog Timer RESET
(WDRST)
SFR and Watchdog Key Register (WDKEY).
Since the WDT is automatica lly enab led whi le the
processor is running. the user only needs to be
concerned with servicing it.
The 22-bit counter overflows when it reaches
4194304 (3FFFFFH). The WDT increments once
every machine cycle.
This means the user must reset the WDT at least
every 4194304 machine cycles (1.258 seconds at
40MHz). To reset the WDT the user must write a
value between 00-7EH to the WDRST register.
The value that is written to the WDRST is loaded
to the 7MSB of the 22-bit c ounter. T his allows t he
user to pre-loaded the counter to an initial value to
generate a flexible Watchdog time out period.
Writing a “00” to WDRST clears the counter.
The watchdog timer is controlled by the watchdog
key register, WDKEY. Only pattern 01010101
(=55H), disables the watchdog timer. The rest of
pattern combinations will keep the watchdog timer
enabled. This securit y key w ill preve nt the watchdog timer from being terminated abnormally when
the function of the watchdog timer is needed.
In Idle Mode, the oscillator continues to run. To
prevent the WDT from resetting the processor
while in Idle, the user should always set up a timer
that will periodically exit Idle, service the WDT, and
re-enter Idle Mode.
Note: The Watchdog Ti m er (WDT) is enabled at po wer-up or reset and mu st be served or disabled.
WDRST6 to
WDRST0
To reset Watchdog Timer, write any value beteen 00h and 7Eh to this register.
This value is loaded to the 7 most significant bits of the 22-bit counter.
For example: MOV WDRST,#1EH
50/152
Page 51
UPSD3212C, UPSD3212CV
TIMER/COUNTERS (TIMER 0, TIMER 1 AND TIMER 2)
The uPSD321X Devices has three 16-bit Timer/
Counter registers: Timer 0, Timer 1 and Timer 2.
All of them can be c onfigured t o op erate either as
timers or event counters and are compa tible with
standard 8032 architecture.
In the “Timer” function, the register is incremented
every machine cycle. Thus, one can think of it as
counting machine cycles. Since a machine cycle
consists of 6 CPU clock periods, the count rate is
1/6 of the CPU clock frequency or 1/12 of Oscillator Frequency (f
OSC
).
In the “Counter” function, the register is incremented in response to a 1-to-0 transition at its corresponding external input pin, T0 or T1. In this
function, the external input is sampled during
S5P2 of every machine c ycle. When the sam ples
show a high in one cycle and a low in the next cycle, the count is incremented. The new count value
appears in the register during S3P1 of the cycle
Table 36. Control Register (TCON)
76543210
TF1TR1TF0TR0IE1IT1IE0IT0
following the one in which the t ransition was detected. Since it takes 2 machine cycles (24 f
clock periods) to recognize a 1-to-0 transition, the
maximum count rate is 1/24 of the f
. There are
OSC
no restrictions o n the duty cycle of the external input signal, but to ensure that a given level is sampled at least once before it changes , it should be
held for at least one full cycle. In addi tion to the
“Timer” or “Counter” selection, Tim er 0 and Timer
1 have four operating modes from which to select.
Timer 0 and Tim er 1
The “Timer” or “Counter” function is selected by
control bits C/T in the Special Function Register
TMOD. These Timer/Counters have four ope rating modes, which are selected by bit-pairs (M1,
M0) in TMOD. Modes 0, 1, and 2 are the same for
Timers/ Counters. Mode 3 is different. The four operating modes are de-scribed in the following text.
OSC
Table 37. Description of the TCON Bits
Bit SymbolFunction
7TF1
6TR1Timer 1 Run Control Bit. Set/cleared by software to turn Timer/Counter on or off
5TF0
4TR0Timer 0 Run Control Bit. Set/cleared by software to turn Timer/Counter on or off
3IE1
2IT1
1IE0
0IT0
Timer 1 overflow Flag. Set by hardware on Timer/Counter overflow. Cleared by
hardware when processor vectors to interrupt routine
Timer 0 Overflow Flag. Set by hardier on Timer/Counter overflow. Cleared by hardware
when processor vectors to interrupt routine
Interrupt 1 Edge Flag. Set by hardware when external interrupt edge detected. Cleared
when interrupt processed
Interrupt 1 Type Control Bit. Set/cleared by software to specify falling-edge/low-level
triggered external interrupt
Interrupt 0 Edge Flag. Set by hardware when external interrupt edge detected. Cleared
when interrupt processed
Interrupt 0 Type Control Bit. Set/cleared by software to specify falling-edge/low-level
triggered external interrupt
51/152
Page 52
UPSD3212C, UPSD3212CV
Table 38. TMOD Register (TMOD)
76543210
GateC/ T
M1M0GateC/TM1M0
Table 39. Description of the TMOD Bits
Bit SymbolTimerFunction
7Gate
6C/T
5M1(M1,M0)=(0,0): 13-bit Timer/Counter, TH1, with TL1 as 5-bit prescaler
4M0
3Gate
2C/T
1M1(M1,M0)=(0,0): 13-bit Timer/Counter, TH0, with TL0 as 5-bit prescaler
0M0
Timer 1
Timer 0
Gating control when set. Timer/Counter 1 is enabled only while INT1 pin is High and
TR1 control pin is set. When cleared, Timer 1 is enabled whenever TR1 control bit is set
Timer or Counter selector, cleared for timer operation (input from internal system clock);
set for counter operation (input from T1 input pin)
(M1,M0)=(0,1): 16-bit Timer/Counter. TH1 and TL1 are cascaded. There is no prescaler.
(M1,M0)=(1,0): 8-bit auto-reload Timer/Counter. TH1 holds a value which is to be
reloaded into TL1 each time it overflows
(M1,M0)=(1,1): Timer/Counter 1 stopped
Gating control when set. Timer/Counter 0 is enabled only while INT0 pin is High and
TR0 control pin is set. When cleared, Timer 0 is enabled whenever TR0 control bit is set
Timer or Counter selector, cleared for timer operation (input from internal system clock);
set for counter operation (input from T0 input pin)
(M1,M0)=(0,1): 16-bit Timer/Counter. TH0 and TL0 are cascaded. There is no prescaler.
(M1,M0)=(1,0): 8-bit auto-reload Timer/Counter. TH0 holds a value which is to be
reloaded into TL0 each time it overflows
(M1,M0)=(1,1): TL0 is an 8-bit Timer/Counter controlled by the standard TImer 0 control
bits. TH0 is an 8-bit timer only controlled by Timer 1 control bits
52/152
Page 53
UPSD3212C, UPSD3212CV
Mode 0. Putting either Timer into Mode 0 makes
it look like an 8048 Timer, which is an 8-bit Counter
with a divide-by-32 prescaler. Figure 22 shows the
Mode 0 operation as it applies to Timer 1.
In this mode, the Timer register is configured as a
13-bit register. As the count rolls over from all '1s'
to all '0s,' it sets the Timer Interrupt Flag TF1. The
counted input is enabled to the Timer when TR1 =
1 and either GATE = 0 or /INT1 = 1. (Setting GATE
= 1 allows the Timer to be controlled by external input /INT1, to facilitate pulse width measurements).
TR1 is a control bit in the Special Function Regis-
Figure 22. Tim er/Counte r Mode 0: 13 -bit Co unter
f
OSC
T1 pin
TR1
÷ 12
C/T = 0
C/T = 1
Control
ter TCON (TCON Control Register). GATE is in
TMOD.
The 13-bit register consists of all 8 bits of TH1 and
the lower 5 bits of TL1. The upper 3 bits of TL1 are
indeterminate and shou ld be ignored. S etting the
run flag does not clear the registers.
Mode 0 operation is the same for the Timer 0 as
for Timer 1. Substitute TR0, TF0, and /INT0 for the
corresponding Timer 1 signals in Figure 22. There
are two different GATE Bits, one for T imer 1 and
one for Timer 0.
Mode 1. Mode 1 is the same as Mode 0, except
that the Timer register is being run with all 16 bits.
TL1
(5 bits)
TH1
(8 bits)
TF1Interrupt
Gate
INT1 pin
AI06622
53/152
Page 54
UPSD3212C, UPSD3212CV
Mode 2. Mode 2 configures the Timer register as
an 8-bit Counter (TL1) with a utomatic reload, as
shown in Figure 23. Overflow from TL1 not only
sets TF1, but also reloads TL1 with the contents of
TH1, which is preset by software. The reload
leaves TH1 unchanged. Mode 2 operatio n is the
same for Timer/Counter 0.
Timer 2
Like Timer 0 and 1, Timer 2 can operate as either
an event timer or as an event counter. This is selected by Bit C/T2 in the special function register
T2CON (see Table 40). It has three operating
modes: Capture, Auto-reload, and Baud Rate
Generator (see Table 41, page 55), which are selected by bits in the T2CON as shown in Table 42,
page 55. In the Capture Mode there are two options which are selected by Bit EXEN2 in T2CON.
if EXEN2 = 0, then Timer 2 is a 16-bit timer or
counter which upon overflowing sets Bit TF2 , the
Timer 2 overflow bit, which can be used to generate an interrupt. If EXEN2 = 1, then Timer 2 still
does the above, but with the added feature that a
1-to-0 transition at external input T2EX causes the
current value in the Timer 2 registers, TL2 and
TH2, to be captured into registers RCAP2L and
RCAP2H, respectively. In addition, the transition
at T2EX causes Bit EXF2 in T2CON to be set, and
EXF2 like TF2 can generate an interrupt. The Capture Mode is illustrated in Figure 24, page 56.
In the Auto-reload Mode, there are again two options, wh i c h ar e selected b y b i t EXEN2 in T2CON.
If EXEN2 = 0, then when Timer 2 rolls over it not
only sets TF2 but a lso causes the T imer 2 registers to be reloaded with the 16-bit value in registers RCAP2L and RCAP2 H, which are preset by
software. If EXEN2 = 1, then Timer 2 still does the
above, but with the added feature that a 1-to-0
transition at external input T2E X will also trigger
the 16-bit reload and set EXF2. The Auto-reload
Mode is illustrated in Standard Serial Interface
(UART) Figure 25, page 5 6. The Ba ud Rat e G eneration Mode is selected by (RCLK, RCLK1) = 1
and/or (TCLK, TCLK1) = 1. It will be described in
conjunction with the serial port.
Gate
INT1 pin
f
OSC
T1 pin
TR1
÷ 12
C/T = 0
C/T = 1
Control
TL1
(8 bits)
TH1
(8 bits)
TF1Interrupt
AI06623
Table 40. Timer/Counter 2 Control Register (T2CON)
76543210
TF2EXF2RCLKTCLKEXEN2TR2C/T
2CP/RL2
54/152
Page 55
Table 41. Timer/Counter 2 Operating Modes
T2CON
Mode
RxCLK
or
TxCLK
CP/
RL
2
T2MOD
TR2Internal
DECN
00100xreload upon overflow
T2CON
EXEN
P1.1
T2EX
UPSD3212C, UPSD3212CV
Input Clock
Remarks
External
(P1.0/T2)
16-bit
Auto-
reload
0010 1↓
0011x0Down counting
reload trigger (falling
edge)
f
OSC
/12
0011x1Up count ing
16-bit
011x 0x
Capture
011x 1↓
1x1x 0x
Baud Rate
Generator
1x1x 1↓
16-bit Timer/Counter
(only up counting)
Capture (TH1,TL2) →
(RCAP2H,RC A P2L)
No Overflow Interrupt
Request (TF2)
Extra External Interrupt
(Timer 2)
f
f
OSC
OSC
/12
/12
Offxx0xxxTimer 2 stops——
Note: ↓ = fal l i ng edge
Table 42. Description of the T2CON Bits
Bit SymbolFunction
7TF2
6EXF2
5
RCLK
Timer 2 Overflow Flag. Set by a Timer 2 overflow, and must be cleared by software. TF2
will not be set when either (RCLK, RCLK1)=1 or (TCLK, TCLK)=1
Timer 2 External Flag set when either a capture or reload is caused by a negative
transition on T2EX and EXEN2=1. When Timer 2 Interrupt is enabled, EXF2=1 will
cause the CPU to vector to the Timer 2 Interrupt routine. EXF2 must be cleared by
software
Receive Clock Flag (UART 1). When set, causes the serial port to use Timer 2 overflow
(1)
pulses for its receive clock in Modes 1 and 3. TCLK=0 causes Timer 1 overflow to be
used for the receive clock
MAX
f
OSC
MAX
f
OSC
MAX
f
OSC
/24
/24
/24
Transmit Clock Flag (UART 1). When set, causes the serial port to use Timer 2 overflow
(1)
4
TCLK
pulses for its transmit clock in Modes 1 and 3. TCLK=0 causes Timer 1 overflow to be
used for the transmit clock
Timer 2 External Enable Flag. When set, allows a capture or reload to occur as a result
3EXEN2
of a negative transition on T2EX if Timer 2 is not being used to clock the serial port.
EXEN2=0 causes Time 2 to ignore events at T2EX
2TR2Start/stop control for Timer 2. A logic 1 starts the timer
1C/T
Timer or Counter Select for Timer 2. Cleared for timer operation (input from internal
2
system clock, t
); set for external event counter operation (negative edge triggered)
CPU
Capture/Reload Flag. When set, capture will occur on negative transition of T2EX if
EXEN2=1. When cleared, auto-reload will occur either with TImer 2 overflows, or
0CP/RL
2
negative transitions of T2EX when EXEN2=1. When either (RCLK, RCLK1)=1 or (TCLK,
TCLK)=1, this bit is ignored, and timer is forced to auto-reload on Timer 2 overflow
Note: 1. The RCLK1 and TCLK1 B i ts i n th e PCON Regi ster control UART 2, and have the s am e function as RCLK and TCLK .
55/152
Page 56
UPSD3212C, UPSD3212CV
Figure 24. Timer 2 in Capture Mode
f
OSC
T2 pin
T2EX pin
÷ 12
Transition
Detector
C/T2 = 0
C/T2 = 1
TR2
EXEN2
Control
Capture
Control
Figure 25. Timer 2 in Auto-Reload Mode
TL2
(8 bits)
RCAP2L
TH2
(8 bits)
RCAP2H
TF2
Timer 2
Interrupt
EXP2
AI06625
f
OSC
T2 pin
T2EX pin
÷ 12
Transition
Detector
C/T2 = 0
C/T2 = 1
TR2
EXEN2
Control
Reload
Control
TL2
(8 bits)
RCAP2L
TH2
(8 bits)
RCAP2H
TF2
Timer 2
Interrupt
EXP2
AI06626
56/152
Page 57
UPSD3212C, UPSD3212CV
Mode 3. Timer 1 in Mode 3 simply holds its count.
The effect is the same as setting TR1 = 0.
Timer 0 in Mode 3 establishes TL0 and TH0 as two
separate counters. The logic for Mode 3 on Timer
0 is shown in Figure 26. TL0 uses the Timer 0 control Bits: C/T, GATE, TR0, INT0, an d TF0. TH0 is
locked into a timer function (counting machine cycles) and takes over the use of TR1 and TF1 from
Mode 3 is provided f or applications requiring an
extra 8-bit timer on the counter. With Timer 0 in
Mode 3, an uPSD321X Devices can look like it has
three Timer/Counters. When Timer 0 is in Mode 3,
Timer 1 can be turned on and off by switching it out
of and into its own Mode 3, or can still be used by
the serial port as a baud rate generator, or in fact,
in any application not requiring an interrupt.
Timer 1. Thus, TH0 now controls the “Timer 1“ Interrupt.
Figure 26. Timer/Counter Mode 3: Two 8-bit Counters
Gate
INT0 pin
f
OSC
T0 pin
TR0
÷ 12
C/T = 0
C/T = 1
Control
TL0
(8 bits)
TF0Interrupt
f
OSC
÷ 12
TR1
Control
TH1
(8 bits)
TF1Interrupt
AI06624
57/152
Page 58
UPSD3212C, UPSD3212CV
STANDARD SERIAL INTERFACE (UART)
The uPSD321X Devices provides two standard
8032 UART serial ports. The first port is connected
to pin P3.0 (RX) and P3.1 (TX). The second port is
connected to pin P1.2 (RX) and P1.3(TX). The operation of the two serial ports are the same and are
controlled by the SCON and SCON2 registers.
The serial port is full duplex, meaning it can transmit and receive simultaneously. I t is also receivebuffered, meaning it can commence reception of a
second byte before a previously received byte has
been read from the register. (However, if the first
byte still has not been read by the time reception
of the second byte is complete, one of the bytes
will be lost.) The serial por t receive and transmit
registers are both accessed at Special Function
Register SBUF (or SBUF2 for the second serial
port). Writing to SBUF load s the t rans mit registe r,
and reading SBUF accesses a physically separate
receive register.
The serial port can operate in 4 modes:
Mode 0. Serial data enters and exits through
RxD. TxD outputs the shift clock. 8 bits are transmitted/received (LSB first). The b aud rate is f ixed
at 1/12 the f
Mode 1. 10 bits are transmitted (through TxD) or
received (through RxD): a start B it (0), 8 data bits
(LSB first), and a Stop Bit (1). On receive, t he Stop
Bit goes into RB8 in Special Function Register
SCON. The baud rate is variable.
Mode 2. 11 bits are transmitted (through TxD) or
received (through RxD): start Bit (0), 8 data bits
(LSB first), a programmable 9th data bit, and a
Stop Bit (1). On T rans m it, the 9th data bit (TB8 in
SCON) can be assigned the value of '0' or '1.' Or,
for example, the Parity Bit (P, in the PSW) could
be moved into TB8. O n receive, the 9th data bit
goes into RB8 in Special Function Register SCON,
while the Stop Bit is ignored. The baud rate is programmable to either 1/32 or 1/64 the oscillator frequency.
OSC
.
Mode 3. 11 bits are transmitted (through TxD) or
received (through RxD): a Start Bit (0), 8 data bits
(LSB first), a programmable 9th data bit, and a
Stop Bit (1). In fac t, Mode 3 is the same as M ode
2 in all respects except baud rate. Th e baud rate
in Mode 3 is variable.
In all four modes, transmission is init iated by any
instruction that uses SBUF as a d es tination register. Reception is initiated in Mode 0 by the condition RI = 0 and REN = 1. Reception is initiated in
the other modes by the incoming start bit if REN =
1.
Multiprocessor Communicati ons
Modes 2 and 3 have a s pecia l prov ision for m ultiprocessor communications. In these modes, 9
data bits are received. The 9th one goes into RB8.
Then comes a Stop Bit. The port can be programmed such that when the Stop Bit is received,
the serial port interrupt will be activated only if RB8
= 1. This feature is enabled by setting Bit SM2 in
SCON. A way to use this feature in mul ti-processor systems is as follows:
When the master processor wants to transmit a
block of data to one of several slaves, it first sends
out an address byte which identifies the target
slave. An address byte differs from a data by te in
that the 9th bit is '1' in an ad dres s by te and 0 in a
data byte. With SM2 = 1, no s lave wi ll be interrupted by a data byte. An ad-dress byte, however, will
interrupt all slaves, so that each s lave can e xamine the received byte and see if it is being addressed. The addressed slave will clear its SM2
Bit and prepare to receive the d ata bytes that wi ll
be coming. The slaves that weren’t being addressed leave their SM2s set and go on about
their business, ignoring the coming data bytes.
SM2 has no ef fect in Mode 0, and in Mode 1 can
be used to check the validity of the Stop B it. In a
Mode 1 reception, if SM2 = 1, the Receive In terrupt w ill not be ac t iv a te d un less a va lid S top Bit is
received.
58/152
Page 59
Serial Port Control Register
The serial port control and status register is the
Special Function Register SCON (SCON2 f or the
second port), shown in Figure 27. This register
(see Tables 43 and 44) contains not only the mode
Figure 27. Serial Port Mode 0, Block Diagram
Internal Bus
Write
to
SBUF
DS
CL
Q
SBUF
Zero Detector
UPSD3212C, UPSD3212CV
selection bits, but also the 9th data bit for transmit
and receive (TB8 and RB8), and the Serial Port Interrupt Bits (TI and RI).
RxD
P3.0 Alt
Output
Function
Shift
Send
Receive
Shift
Shift
Shift
Clock
RxD
P3.0 Alt
Input
Function
TxD
P3.1 Alt
Output
Function
AI06824
S6
REN
R1
Serial
Port
Interrupt
Start
Tx Clock
Rx Clock
Start
Load
SBUF
Read
SBUF
Tx Control
T
R
Rx Control
7 6 5 4 3 2 1 0
Input Shift Register
SBUF
Internal Bus
Table 43. Serial Port Control Register (SCON)
76543210
SM0SM1SM2RENTB8RB8TIRI
59/152
Page 60
UPSD3212C, UPSD3212CV
Table 44. Description of the SCON Bits
Bit SymbolFunction
7SM0(SM1,SM0)=(0,0): Shift Register. Baud rate = f
Enables the multiprocessor communication features in Mode 2 and 3. In Mode 2 or 3, if
5SM2
SM2 is set to '1,' RI will not be activated if its received 8th data bit (RB8) is '0.' In Mode
1, if SM2=1, RI will not be activated if a valid Stop Bit was not received. In Mode 0, SM2
should be '0'
4REN
3TB8
2RB8
Enables serial reception. Set by software to enable reception. Clear by software to
disable reception
The 8th data bit that will be transmitted in Modes 2 and 3. Set or clear by software as
desired
In Modes 2 and 3, this bit contains the 8th data bit that was received. In Mode 1, if
SM2=0, RB8 is the Snap Bit that was received. In Mode 0, RB8 is not used
Transmit Interrupt Flag. Set by hardware at the end of the 8th bit time in Mode 0, or at
1TI
the beginning of the Stop Bit in the other modes, in any serial transmission. Must be
cleared by software
Receive Interrupt Flag. Set by hardware at the end of the 8th bit time in Mode 0, or
0RI
halfway through the Stop Bit in the other modes, in any serial reception (except for
SM2). Must be cleared by software
OSC
/64 or f
/12
OSC
/32
60/152
Page 61
UPSD3212C, UPSD3212CV
Baud Rates. The baud rate in Mode 0 is fixed:
Mode 0 Baud Rate = f
OSC
/ 12
The baud rate in Mode 2 depends on the value of
Bit SMOD = 0 (which is the value on res et), the
baud rate is 1/64 the oscillator frequency. If SMOD
= 1, the baud rate is 1/32 the oscillator frequency.
SMOD
Mode 2 Baud Rate = (2
/ 64) x f
OSC
In the uPSD321X Devices, the baud rates in
Modes 1 and 3 are determined by the Timer 1
overflow rate.
Using Timer 1 to Generate Baud Ra te s. When
Timer 1 is used as the baud rate generator, the
baud rates in Modes 1 and 3 a re determined by
the Timer 1 overflow rate and the value of SMOD
as follows (see Table 45, page 62):
Mode 1,3 Baud Rate =
SMOD
(2
/ 32) x (Timer 1 overflow rate)
The Timer 1 Interrupt should be disabled in this
application. The Timer itself can be c onf igured for
either “timer” or “counter” operation, and in any of
its 3 running modes. In the m ost typical applications, it is configured for “timer” operation, in the
Auto-reload Mode (high nibble of TMOD = 0010B).
In that case the baud rate is given by the formula:
Mode 1,3 Baud Rate =
SMOD
(2
/ 32) x (f
/ (12 x [256 – (TH1)]))
OSC
One can achieve very low baud rates with Timer 1
by leaving the Timer 1 Interrupt enabled, and configuring the Timer to run as a 16-bit t imer (high nibble of TMOD = 0001B), and using the Timer 1
Interrupt to do a 16-bit software reload. Figure 22
lists various commonly used baud rates and how
they can be obtained from Timer 1.
Using Timer/Counter 2 to Generate Baud
Rates. In the uPSD321X Devices, Timer 2 select-
ed as the baud rate generator by setting TCLK
and/or RCLK (see Figure 22, page 53 Timer/
Counter 2 Control Register (T2CON)).
Note: The baud rate for transmit and receive c an
be simultaneously different. S etting RCLK and/or
TCLK puts Timer into its Baud Rate Generator
Mode.
The RCLK and TCLK Bits in the T2CON register
configure UART 1. The RCLK1 and TCLK1 Bits in
the PCON register configure UART 2.
The Baud Rate Generator Mode is similar to the
Auto-reload Mode, in that a roll over in TH2 causes
the Timer 2 registers to be reloaded with the 16-bit
value in registers RCAP2H and RCAP2L, which
are preset by software.
Now, the baud rates in Modes 1 and 3 are determined at Timer 2’s overflow rate as follows:
Mode 1,3 Baud Rate = Timer 2 Overflow Rate / 16
The timer can be configured for either “timer” or
“counter” operation. In the most typical applications, it is configured for “timer” operation (C/T2 =
0). “Timer” operation is a little different for Timer 2
when it’s being used as a baud rate generator.
Normally, as a timer it would increment every machine cycle (thus at the 1/6 the CPU clock frequency). In the case, the baud rate is given by the
formula:
Mode 1,3 Baud Rate = f
/ (32 x [65536 -
OSC
(RCAP2H, RCAP2L)]
where (RCAP2H, RCAP2L) is the content of
RC2H and RC2L taken as a 16-bit unsigned integer.
Timer 2 also be used as the Baud Rate Generating
Mode. This mode is valid only if RCLK + TCLK = 1
in T2CON or in PCON.
Note: A roll-over in TH2 does not set TF2, and will
not generate an interrupt. Therefore, the Timer interrupt does not have to be disabled when Timer 2
is in the Baud Rate Generator Mode.
Note: If EXEN2 is set, a 1-to-0 transition in T2EX
will set EXF2 but will not cause a reload from
(RCAP2H, RCAP2L) to (TH2, TL2). Thus when
Timer 2 is in use as a baud rate gene rator, T2EX
can be used as an extra external interrupt, if desired.
It should be noted that when Timer 2 is running
(TR2 = 1) in “timer” function in the Baud Rate Generator Mode, one should not try to READ or
WRITE TH2 or TL2. Un der these conditions the
timer is being incremented every state time, and
the results of a READ or WRITE may not be accurate. The RC registers may be read, but should not
be written to, because a WRITE might overlap a
reload and cause WRITE and/or reload errors.
Turn the timer off (clear TR2) before accessing the
Timer 2 or RC registers, in this case.
61/152
Page 62
UPSD3212C, UPSD3212CV
Table 45. Timer 1-Generated Commonly Used Baud Rates
through RxD. TxD outputs the shift clock. 8 bits are
transmitted/received: 8 data bits (LSB first). The
baud rate is fixed at 1/12 the f
OSC
.
Figure 27, page 59 shows a simplified functional
diagram of the serial port in Mode 0, and associated timing.
Transmission is initiated by any instruction that
uses SBUF as a destination register. The “WRITE
to SBUF” signal at S6P2 also loads a '1' into the
9th position of the tra nsmit shift register and t ells
the TX Control block to commence a transmission.
The internal timing is such that one f ull machine
cycle will e lapse bet ween “WR ITE to SBUF ” and
activation of SEND.
SEND enables the output of the shift register to the
alternate out-put function line of RxD and also enable SHIFT CLOCK to the alternate output function line o f TxD. SHI FT CLOC K is low during S3,
S4, and S5 of every m achine c ycle, a nd hig h during S6, S1, and S2. At S6P2 of every machine cycle in which SEND is active, the contents of t he
transmit shift are shifted to the right one position.
As data bits shift out to the right, zeros come in
from the left. When the MS B o f the da ta b yte is at
the output position of the shift register, then the '1'
that was initially loaded into the 9th position, is just
to the left of the MSB, and all positions to the left
of that contain zeros. This condition flags the TX
Control block to do one last shift and then dea ctivate SEND and set T1. Both of these actions occur
at S1P1. Both of these actions occur at S1P1 of
the 10th machine cycle after “WRITE to SBUF.”
Reception is initiated by the condition REN = 1 and
R1 = 0. At S6P2 of the next machi ne cycle, the RX
Control unit writes the bits 11111110 to the receive
shift register, and in the next clock phase activates
RECEIVE.
RECEIVE enables SHIFT CLOCK to the alternate
output function line of TxD. SHIFT CLOCK makes
transitions at S3P1 and S6P1 of every machine
cycle in which RECEIVE is active, the co ntents of
the receive shift register are shifted to the left one
position. The value that comes in from t he right is
the value that was sampled at the RxD pin at S5P2
of the same machine cycle.
As data bits come in from the right, '1s' shift out to
the left. When the '0' that was initially loaded into
the right-most position arrives at the left-most position in the shift register, it flags the RX Control
block to do one last shift and load SBUF. At S1P1
of the 10th machine cycle after the WRITE to
SCON that cleared RI, RECEIVE is cleared as RI
is set.
62/152
Page 63
Figure 28. Serial Port Mode 0, Waveform s
UPSD3212C, UPSD3212CV
Write to SBUF
Send
Shift
RxD (Data Out)
TxD (Shift Clock)
T
Write to SCON
RI
Receive
Shift
RxD (Data In)
TxD (Shift Clock)
S6P2
D0D1D2D3D4D5D6D7
S3P1S6P1
Clear RI
D0D1D2D3D4D5D6D7
More Abo ut Mode 1. Ten bits are transmitted
(through TxD), or received (through RxD): a start
Bit (0), 8 data bits (LSB first). and a Stop Bit (1). On
receive, the Stop Bit goes into RB8 in SCON. In
the uPSD321X Devices the baud rate is determined by the Timer 1 or Timer 2 overflow rate.
Figure 29, page 64 shows a simplified functional
diagram of the serial port in Mode 1, and associated timings for transmit receive.
Transmission is initiated by any instruction that
uses SBUF as a destination register. The “WRITE
to SBUF” signal also loads a '1' into the 9th bit position of the transmit shift register and flags the TX
Control unit that a transmission is requested.
Transmission actually comm ences at S1P1 of the
machine cycle following the next rollover in the divide-by-16 counter. (Thus, the bit times are synchronized to the divide-by-16 counter, not to the
“WRITE to SBUF” signal.)
The transmission begins wi th activation of SEND
which puts the start bit at TxD. One bit time l ater,
DATA is activated, which enables the output bit of
the transmit shift register to TxD. The first shift
pulse occurs one bit time after that.
As data bits shift out to the right, zeros are clocked
in from the left (see Figure 30, page 64). When the
MSB of the data byte is at the output position of the
shift regis ter, then the '1' tha t was initiall y loaded
into the 9th position is just to the left of the MSB,
and all positions to the left of that contain zeros.
This condition flags the TX Control unit t o do one
last shift and then deactivate SEND and set TI.
This occurs at the 10th divide-by-16 rollover after
“WRITE to SBUF.”
Reception is initiated by a detected 1-to-0 transition at RxD. For this purpose RxD is sampled at a
Transmit
Receive
AI06825
rate of 16 times what ev er ba ud rat e has been established. When a transition is detected, the divide-by-16 counter is immediately reset, and 1FFH
is written into the input shift register. Resetting the
divide-by-16 counter aligns its roll-overs with the
boundaries of the incoming bit times.
The 16 states of the counter divide each bit time
into 16ths. At the 7 th, 8th, an d 9th counter sta tes
of each bit time, the bit detector samples the value
of RxD. The value accepted is the value that was
seen in at least 2 of the 3 samples. This is done for
noise rejection. If the value accepted during the
first bit time is not '0,' the receive circuits are reset
and the unit goes back to looking for an-other 1-to0 transition. This is to provide rejection of false
start bits. If the start bit proves valid, it is shifted
into the input shift register, and reception of the reset of the rest of the frame will proceed.
As data bits come in from the right, '1s' shift out to
the left. When the start bit arrives at the left-most
position in the shift register (which in Mode 1 is a
9-bit register), it flags the RX Control block to do
one last shift, load SBUF and RB8, and set RI. The
signal to load SBUF and RB8, and to set RI, will be
generated if, and only if, the following conditions
are met at the time the final shift pulse is generated:
1. R1 = 0, and
2. Either SM2 = 0, or the received Stop Bit = 1.
If either of these two conditions is not m et, the re-
ceived frame is irretrievably lost. If both conditions
are met, the Stop Bit goes into RB8, the 8 data bits
go into SBUF, and RI is activated. At this time,
whether the above condi tions are met or not, the
unit goes back to looking f or a 1-to-0 t ransition in
RxD.
63/152
Page 64
UPSD3212C, UPSD3212CV
Figure 29. Serial Port Mode 1, Block Diagram
SMOD
TCLK
RCLK
Timer1
Overflow
÷2
01
Timer2
Overflow
01
0
1
Write
to
SBUF
RxD
Sample
1-to-0
Transition
Detector
÷16
Serial
Port
Interrupt
Rx Detector
TB8
DS
CL
Q
Start
Tx Clock
÷16
Rx Clock
Start
Load
SBUF
Internal Bus
SBUF
Zero Detector
Tx Control
TI
RI
Rx Control
1FFh
Input Shift Register
Shift
Send
Load SBUF
TxD
Data
Shift
Shift
Figure 30. Serial Port Mode 1, Waveform s
Tx Clock
Write to SBUF
Send
Data
Shift
TxD
T1
Rx Clock
RxD
Bit Detector
Sample Times
Shift
RI
S1P1
Start Bit
÷16 Reset
Start Bit
D0D1D2D3D4D5D6D7
D0D1D2D3D4D5D6D7
Read
SBUF
SBUF
Internal Bus
Stop Bit
Stop Bit
AI06826
Transmit
Receive
AI06843
64/152
Page 65
UPSD3212C, UPSD3212CV
More About Modes 2 and 3. Eleven bits are
transmitted (through TxD), or received (through
RxD): a Start Bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a Stop Bit (1). On
transmit, the 9th data b it (TB8) can be assigned
the value of '0' or '1.' On receive, the data bit goes
into RB8 in SCON. The baud rate is programmable to either 1/16 or 1/32 the CPU clock frequency
in Mode 2. Mode 3 may have a variable baud rate
generated from Timer 1.
Figure 31, page 66 a nd Figure 33, p age 67 show
a functional diagram of the s erial port in Modes 2
and 3. The receive portion is exactly the same as
in Mode 1. The transmit portion di ffers from M ode
1 only in the 9th bit of the transmit shift register.
Transmission is initiated by any instruction that
uses SBUF as a destination register. The “WRITE
to SBUF” signal also loads TB8 into the 9th bit position of the transmit shift register and flags the TX
Control unit that a transmission is requested.
Transmission commences at S1P1 of the machine
cycle following the next roll-over i n the divide-by16 counter. (Thus, the bit t imes are s ynchronized
to the divide-by-16 counter, not to the “WRITE to
SBUF” signal.)
The transmission begins with activation of S END,
which puts the start bit at TxD. One bit time l ater,
DATA is activated, which enables the output bit of
the transmit shift register to TxD. The first shift
pulse occurs one bit time after that (see Figure 32,
page 66 and Figure 34, page 67). The first shift
clocks a '1' (the Stop Bit) into the 9th bit position of
the shift register. There-after, only zeros are
clocked in. Thus, as data bits shift out to the right,
zeros are clocked in from the l eft. When TB8 is at
the out-put position of the shift register, then the
Stop Bit is just to the left of TB8, and all positions
to the left of that contain zeros. This condition flags
the TX Control unit to do one last shift and then de-
activate SEND and set TI. This occurs at the 11th
divide-by 16 rollover after “WRITE to SUBF.”
Reception is initiated by a detected 1-to-0 transition at RxD. For this purpose RxD is sampled at a
rate of 16 times what ev er ba ud rat e has been established. When a transition is detected, the divide-by-16 counter is immediately reset, and 1FFH
is written to the input shift register.
At the 7th, 8th, and 9th counter sta tes of each bit
time, the bit detector sam ples the value of R -D.
The value accepted is the value that was seen in
at least 2 of the 3 samples. If the value accepted
during the first bit time is not '0,' the receive circuits
are reset and the unit goes back to looking for another 1-to-0 transition. If the Start Bit proves valid,
it is shifted into the input shi ft regi ster, and reception of the rest of the frame will proceed.
As data bits come in from the right, '1s' shift out to
the left. When the Start Bit arrives at the l eft-m ost
position in the shift register (which in Modes 2 and
3 is a 9-bit register), it flags the RX Control block
to do one last shift, load SBUF and RB8, and set
RI.
The signal to load SBUF a nd RB8, a nd to set RI,
will be generated if, and only if, the following conditions are met at th e time the final shift pul se is
generated:
1. RI = 0, and
2. Either SM2 = 0, or the received 9th data bit = 1
If either of these conditions is not met, the received
frame is irretrievably lost, and RI is not set. If both
conditions are met, the recei ve d 9t h data bit goes
into RB8, and the first 8 data bits go into SBUF.
One bit time later, whether the above conditions
were met or not, the unit goes bac k to looking for
a 1-to-0 transition at the RxD input.
65/152
Page 66
UPSD3212C, UPSD3212CV
Figure 31. Serial Port Mode 2, Block Diagram
Phase2 Clock
1/2*f
OSC
÷2
SMOD
01
Write
to
SBUF
RxD
Sample
1-to-0
Transition
Detector
÷16
Serial
Port
Interrupt
Rx Detector
TB8
DS
CL
Q
Start
Tx Clock
÷16
Rx Clock
Start
Load
SBUF
Internal Bus
SBUF
Zero Detector
Tx Control
TI
RI
Rx Control
1FFh
Input Shift Register
Shift
Send
Load SBUF
TxD
Data
Shift
Shift
Figure 32. Serial Port Mode 2, Waveform s
Tx Clock
Write to SBUF
Send
Data
Shift
TxD
Stop Bit
Generator
Rx Clock
RxD
Bit Detector
Sample Times
Shift
TI
RI
S1P1
Start Bit
÷16 Reset
Start Bit
D0D1D2D3D4D5D6D7
D0D1D2D3D4D5D6D7
Read
SBUF
SBUF
Internal Bus
TB8
RB8
Stop Bit
Stop Bit
AI06844
Transmit
Receive
AI06845
66/152
Page 67
Figure 33. Serial Port Mode 3, Block Diagram
UPSD3212C, UPSD3212CV
SMOD
TCLK
RCLK
Timer1
Overflow
÷2
01
Timer2
Overflow
01
0
1
Write
to
SBUF
RxD
Sample
1-to-0
Transition
Detector
÷16
Serial
Port
Interrupt
Rx Detector
TB8
DS
CL
Q
Start
Tx Clock
÷16
Rx Clock
Start
Load
SBUF
Internal Bus
SBUF
Zero Detector
Tx Control
TI
RI
Rx Control
1FFh
Input Shift Register
Shift
Send
Load SBUF
TxD
Data
Shift
Shift
Figure 34. Serial Port Mode 3, Waveform s
Tx Clock
Write to SBUF
Send
Data
Shift
TxD
Stop Bit
Generator
Rx Clock
RxD
Bit Detector
Sample Times
Shift
TI
RI
S1P1
Start Bit
÷16 Reset
Start Bit
D0D1D2D3D4D5D6D7
D0D1D2D3D4D5D6D7
Read
SBUF
SBUF
Internal Bus
TB8
RB8
Stop Bit
Stop Bit
AI06846
Transmit
Receive
AI06847
67/152
Page 68
UPSD3212C, UPSD3212CV
ANALOG-TO-DIGITAL CONVERTOR (ADC)
The analog to digital (A/D ) converter allows conversion of an analog input to a corresponding 8-bit
digital value. The A/D module has f our analog inputs, which are multiplexed into one sample and
hold. The output of the sample and hold is the input into the converter, which generates the result
via successive approximation. The analog supply
voltage is connected to AVREF of ladder resistance of A/D module.
The A/D module has two regi sters which are the
control register ACON and A/D result register
ADAT. The register ACON, shown in Table 46 and
Table 47, page 69, controls the operation of the A/
D converter module. To use analog inputs, I/O is
selected by P1SFS register. Also an 8-bit prescaler ASCL divides the main system clock input down
to approximately 6MHz clock that is required for
the ADC logic. Appropriate values need to be loaded into the prescal er based upon the mai n MCU
clock frequency prior to use.
The processing of conversion starts when the
Start Bit ADST is set to '1.' After one cycle, it is
cleared by hardware. The register AD AT cont ains
the results of the A/D conversion. When conversion is completed, the result is loaded into the
ADAT the A/D Conversion Status Bit ADSF is set
to '1.'
The block diagram of the A/D module is shown in
Figure 35. The A/D Status Bit ADSF is set auto-
matically when A/D conversion is completed,
cleared when A/D conversion is in process.
The ASCL should be loaded with a value that results in a clock rate of approximately 6MHz for the
ADC using the following formula (see Table 48,
page 69):
ADC clock input = (f
/ 2) / (Prescaler register
OSC
value +1)
Where f
is the MCU clock input frequency
OSC
The conversion time f or the ADC can be c alcula ted as follows:
The ADSF Bit in the ACON register is set to '1'
when the A/D conversion is complete. The status
bit can be driven by the MCU, or it can be configured to generate a falling e dge i nterrupt when t he
conversion is complete.
The ADSF Interrupt is enabled by setting the ADSFINT Bit in the PCON register. Once the bit is set,
the external INT1 Interrupt is disabled and the
ADSF Interrupt takes over as INT1. INT1 must be
configured as if it is an edge interrupt input. The
INP1 pin (p3.3) is available for gene ral I/O functions, or Timer1 gate control.
The 8-bit counter of a PWM counts modul e 256
(i.e., from 0 to 255, inclusive). The valu e held in
the 8-bit counter is compared to the contents of the
Special Function Register (PWM 0-3) of the corresponding PWM. T he pola rity of t he P WM o utputs
is programmable and selected by the PWML Bit in
PWMCON register. Provided the contents of a
PWM 0-3 register is greater than the counter value, the corresponding PWM output is set HIGH
(with PWML = 0). When the contents of this register is less than or equal to the counter value, the
corresponding PWM output is set LOW (with
PWML = 0). The pulse-width-ratio is therefore de-
fined by the contents of the corresponding Special
Function Register (PWM 0-3) o f a PWM . By l oading the corresponding Special Function Register
(PWM 0-3) with either 00H or FFH, the P WM ou tput can be ret ained at a c onstant HIGH o r LOW
level respectively (with PWML = 0).
For each PWM unit, there is a 16-bit Prescaler that
are used to divide the main syste m clock to form
the input clock for the correspondi ng PWM unit.
This prescaler is used to define the desired repetition rate for the PWM unit. SFR registers B1h B2h are used to hold the 16-bit divisor values.
The repetition frequency of the PWM output is given by:
fPWM
= (f
8
/ prescaler0) / (2 x 256)
OSC
And the input clock frequency to the PWM
counters is = f
/ 2 / (prescaler data value + 1)
OSC
See the I/O PORTS (MCU Module), page 44 for
more information on how to configure the Port 4
pin as PWM output.
70/152
Page 71
Figure 36. Four-Channel 8-bit PWM Block Diagram
DATA BUS
UPSD3212C, UPSD3212CV
f
OSC
CPU rd/wr
/2
8
CPU rd/wr
8
16-bit Prescaler
Register
(B2h,B1h)
16
16-bit Prescaler
Counter
8-bit PWM0-PWM3
8-bit PWM0-PWM3
Comparators Registers
8-bit PWM0-PWM3
clock
8
Data Registers
8
x 4
8
x 4
Comparators
8
8-bit Counter
Overflow
x 4
load
4
PWMCON bit7 (PWML)
Port4.3
Port4.4
Port4.5
Port4.6
load
PWMCON bit5 (PWME)
AI06647
71/152
Page 72
UPSD3212C, UPSD3212CV
Table 49. PWM SFR Memory Map
SFR
Reg Name
Addr
A1PWMCONPWMLPWMPPWMECFG4CFG3CFG2CFG1CFG000
76543210
Bit Register Name
Reset
Value
Comments
PWM
Control
Polarity
A2PWM000
A3PWM100
A4PWM200
A5PWM300
AAPWM4P00
ABPWM4W00
B1PSCL0L00
B2PSCL 0H00
B3PSCL 1L00
B4PSCL 1H00
PWM0
Output
Duty Cycle
PWM1
Output
Duty Cycle
PWM2
Output
Duty Cycle
PWM3
Output
Duty Cycle
PWM 4
Period
PWM 4
Pulse
Width
Prescaler 0
Low (8-bit)
Prescaler 0
High (8-bit)
Prescaler 1
Low (8-bit)
Prescaler 1
High (8-bit)
PWMCON Register Bit Definition:
– PWML = PWM 0-3 polarity control
– PWMP = PWM 4 polarity control
– PWME = PWM enable (0 = disabled , 1= enabled)
– CFG3..CFG0 = PW M 0-3 Output (0 = Open Drain; 1 = Push-Pull)
– CFG4 = PWM 4 Output (0 = Open Drain; 1 = Push-Pull)
72/152
Page 73
Programm able Period 8-bi t PWM
The PWM 4 chan nel can be program med to provide a PWM output with variable pulse wi dth and
period. The PWM 4 has a 16-bi t Prescaler, an 8bit Counter, a Pulse Width Register, a nd a Pe riod
PWM pulse width time, while the Period Regi ster
defines the period of the P WM . The input clock t o
the Prescaler is f
signed to Port 4.7.
clock runs the 8-bit Counter of the PWM 4 channel. The input clock frequency to the PWM 4
Counter is:
f PWM 4 = (f
/2)/(Prescaler1 data value +1)
OSC
When the Prescaler1 Register (B4h, B3h) is set to
data value '0,' the maximum input clock frequency
to the PWM 4 Counter is f
/2 and can be as high
OSC
as 20MHz.
The PWM 4 Counter is a free-running, 8-bit
counter. The output of the counter is com pared t o
the Compare Registers, which are loaded with
data from the Pulse Width Register (PWM4W,
ABh) and the Period Register (PWM4P, AAh). The
Pulse Width Register defines the pulse duration or
the Pulse Width, while the Period Register defines
the period of the PWM. When the PWM 4 channel
is enabled, the register val ues are l oaded into the
Comparator Registers and are compared to the
Figure 38. PW M 4 Wi th P r og ra mm a b le P ul s e W i dth a n d Fre q ue n c y
Counter output. When the content of the counter is
equal to or greater than the value in the Pulse
Width Register, it sets t he PWM 4 output to low
(with PWMP Bit = 0). When the Period Register
equals to the PWM4 Counter, the Counter is
cleared, and the PWM 4 channel output is set to
logic 'high' level (beginning of the next PWM
pulse).
The Period Register cannot have a value of “00”
and its content should always be greater than the
Pulse Width Register.
The Prescaler1 Register, Pulse Width Register,
and Period Register can be modified while the
PWM 4 channel is active. The values of these registers are automatically loaded into the Prescaler
Counter and Comparator Registers when the current PWM 4 period ends.
The PWMCON Register (Bits 5 and 6) controls the
enable/disable and polarity of the PWM 4 channel.
PWM4
Defined by Pulse
Width Register
Defined by Period Register
Switch Level
RESET
Counter
AI07090
74/152
Page 75
UPSD3212C, UPSD3212CV
I2C INTERFACE
2
The serial port supports the twin line I
C-bus, consisting of a data line (SDA1), and a clock line
(SCL1) as shown in Figure 39. Dep ending on the
configuration, the SD A1 and SCL1 l ines may require pull-up resistors.
These lines also function as I/O port lines if the I
2
bus is not enabled.
The system is unique because data transport,
clock generation, address recognition, and bus
control arbitration are all controlled by hardware.
2
C serial I/O has complete a uto nom y in byte
The I
handling and operates in 4 modes.
■ Master transmitter
2
Figure 39. Block Diagram of the I
SDA1
C Bus Serial I/O
70
70
Arbitration and Sync. Logic
■ Master receiver
■ Slave transmitter
■ Slave receiver
These functions are controlled by the S FRs (see
C
Tables 50, 51, and Table 52, page 76):
– S2CON: the control of byte handling and the op-
eration of 4 mode.
– S2STA: the content s of its register ma y a lso be
used as a vector to various service routines.
– S2DAT: data shift register.
– S2ADR: slave address register. Slave address
recognition is performed by On-Chip H/W.
Slave Address
Shift Register
Internal Bus
SCL1
Bus Clock Generator
70
Control Register
70
Status Register
AI07430
75/152
Page 76
UPSD3212C, UPSD3212CV
Table 50. Serial Control Register (S2CON)
76543210
CR2ENIISTASTOADDRAACR1CR0
Table 51. Description of the S2CON Bits
Bit SymbolFunction
7CR2
6ENII
5STA
This bit along with Bits CR1and CR0 determines the serial clock frequency when SIO is
in the Master Mode.
Enable IIC. When ENI1 = 0, the IIC is disabled. SDA and SCL outputs are in the high
impedance state.
2
START Flag. When this bit is set, the SIO H/W checks the status of the I
C-bus and
generates a START condition if the bus free. If the bus is busy, the SIO will generate a
repeated START condition when this bit is set.
STOP Flag. With this bit set while in Master Mode a STOP condition is generated.
2
4STO
Flag.
When a STOP condition is detected on the I
C bus, the I2C hardware clears the STO
Note: This bit have to be set before 1 cycle interrupt period of STOP. That is, if this bit is
set, STOP condition in Master Mode is generated after 1 cycle interrupt period.
3ADDRThis bit is set when address byte was received. Must be cleared by software.
Acknowledge enable signal. If this bit is set, an acknowledge (low level to SDA) is
returned during the acknowledge clock pulse on the SCL line when:
• Own slave address is received
2AA
• A data byte is received while the device is programmed to be a Master Receiver
• A data byte is received while the device is a selected Slave Receiver. When this bit is
reset, no acknowledge is returned.
SIO release SDA line as high during the acknowledge clock pulse.
1CR1
0CR0
These two bits along with the CR2 Bit determine the serial clock frequency when SIO is
in the Master Mode.
Table 52. Selection of the Serial Clock Frequency SCL in Master Mode
S2STA is a “Read-only” register. The contents of
this register may be used as a vector to a service
routine. This optimized the respons e time of the
software and consequently that of the I
status codes for all possible modes of the I
2
C bus. The
2
C bus
interface are given Table 54.
This flag is set, and an interrupt is generated, after
any of the following events occur:
1. Own slave address has been received during
AA = 1: ack_int
2. The general call address has been received
while GC(S2ADR.0) = 1 and AA = 1:
Table 53. Serial Status Register (S2STA)
76543210
GCSTOPINTRTX_MODEBBUSYBLOST/ACK_REPSLV
Table 54. Description of the S2STA Bits
BitSymbolFunction
7GCGeneral Call Flag
6STOPStop Flag. This bit is set when a STOP condition is received
5
4TX_MODE
3BBUSY
2BLOST
1/ACK_REP
0SLV
Note: 1. Interrupt Flag Bit (I NTR, S2ST A Bit 5) is cleared by Hardware as reading S2STA register.
2
2. I
C Interrupt Flag (INTR) can occur in below case.
INTR
(1,2)
Interrupt Flag. This bit is set when an I²C Interrupt condition is requested
Transmission Mode Flag.
This bit is set when the I²C is a transmitter; otherwise this bit is reset
Bus Busy Flag.
This bit is set when the bus is being used by another master; otherwise, this bit is reset
Bus Lost Flag.
This bit is set when the master loses the bus contention; otherwise this bit is reset
Acknowledge Response Flag.
This bit is set when the receiver transmits the not acknowledge signal
This bit is reset when the receiver transmits the acknowledge signal
Slave Mode Flag.
This bit is set when the I²C plays role in the Slave Mode; otherwise this bit is reset
3. A data byte has been received or transmitted in
Master Mode (even if arbitration is lost): ack_int
4. A data byte has been received or transmitted as
selected slave: ack_int
5. A stop condi tion is received as selected slave
receiver or transmitter: stop_int
Data Shift Register (S2DAT)
S2DAT contains the serial data to b e transmitted
or data which has just been received. The M SB
(Bit 7) is transmitted or rec eived f irst; that is, data
shifted from right to left.
Table 55. Data Shift Register (S2DAT)
76543210
S2DAT7S2DAT6S2DAT5S2DAT4S2DAT3S2DAT2S2DAT1S2DAT0
77/152
Page 78
UPSD3212C, UPSD3212CV
Address Register (S2ADR)
2
This 8-bit register may be loaded with the 7-bit
slave address to which the controller will respond
when programmed as a slave receive/transmitter.
The Start/Stop Hold Time Detection and Sys tem
C unit to specify the start/stop detection time
the I
to work with the large range of MCU frequency values supported. For example, with a system clock
of 40MHz.
Clock registers (Tables 57 and 58) are included in
Table 56. Address Register (S2ADR)
76543210
SLA6SLA5SLA4SLA3SLA2SLA1SLA0—
Note: SLA6 to S LA 0: Own slave address.
Table 57. Start /Stop Hold Time Detection Register (S2SETUP)
AddressRegister Name Res et ValueNote
SFRD2hS2SETUP00h
To control the start/stop hold time detection for the multi-master
I²C module in Slave Mode
Table 58. System Cock of 40MHz
S1SETUP,
S2SETUP Register
Value
00h1EA50ns
Number of Sample
Clock (f
OSC
50ns)
/2 – >
Required Start/
Stop Hold Time
Note
When Bit 7 (enable bit) = 0, the number of
sample clock is 1EA (ignore Bit 6 to Bit 0)
80h1EA50ns
81h2EA100ns
82h3EA150ns
.........
8Bh12EA600nsFast Mode I²C Start/Stop hold time specification
Program and Data memories to the 8032 CPU
core (MCU). In addition, it has its own set of I/O
ports and a PLD with 16 macrocells for general
logic implementation.
■ Ports A,B,C, and D are general purpose
programmable I/O ports that have a port
architecture which is different from the I/O ports
in the MCU Module.
■ The PSD Module communicates with the MCU
Module through the internal address, data bus
(A0-A15, D0-D7) and control signals (RD
PSEN
, ALE, RESET). The user defines the
, WR,
Decoding PLD in the PSDsoft Development
Tool and can map the resources in the PSD
Module to any program or data address space.
Figure 40 shows the functional blocks in the
PSD Module.
Functional Overvie w
■ 512Kbit Flash mem ory. This is the main Flash
memory. It is divided into 4 sectors (16KBytes
each) that can be accessed with user-specified
addresses.
■ Secondary 128Kbit Flash boot memory. It is
divided into 2 sectors (8KBytes each) that can
be accessed with user-specified addresses.
This secondary m emo ry brings th e abilit y to
execute code and update the main Flash
concurrently.
■ 16Kbit SRAM. The SRAM’s contents can be
protected from a power failure by connecting an
external battery.
■ CPLD with 16 Output Micro Cells (OMCs) and
up to 20 Input Micro Cells (IMCs). The CPLD
may be used to efficiently implement a variety of
logic functions for internal and external control.
UPSD3212C, UPSD3212CV
Examples include state machines, loadable
shift registers, and loadable counters.
■ Decode PLD (DPLD) that decodes address for
selection of memory blocks in the PSD Module.
■ Configurable I/O ports (Port A,B,C and D) that
can be used for the following functions:
– MCU I/Os
–PLD I/Os
– Latched MCU address output
– Special function I/Os.
– I/O ports may be configured as open drain
outputs.
■ Built-in JTAG compliant serial port allows full-
chip, In-System Programmability (ISP). With it,
you can program a blank device or reprogram a
device in the factory or the field.
■ Internal page register that can be used to
expand the 8032 MCU Module address space
by a factor of 256.
■ Internal programmable Power Management
Unit (PMU) that supports a low-power mode
called Power-down Mode. The PMU can
automatically detect a lack of the 8032 CPU
core activity and put the PSD Mod ule into
Power-down Mode.
■ Erase/WRITE cycles:
– Flash memory - 100,000 minimum
– PLD - 1,000 minimum
– Data Retention: 15 year minimum (for Main
Flash memory, Boot , PLD a nd Configurat ion
bits)
79/152
Page 80
UPSD3212C, UPSD3212CV
Figure 40. PSD MODULE Block Diagram
)
PC2
(
VSTDBY
PA0 – PA7
PB0 – PB7
PC0 – PC7
PD1 – PD2
ADDRESS/DATA/CONTROL BUS
POWER
8 SECTORS
FLASH MEMORY
512KBIT PRIMARY
EMBEDDED
ALGORITHM
PAGE
REGISTER
8
UNIT
MANGMT
2 SECTORS
(BOOT OR DATA)
128KBIT SECONDARY
NON-VOLATILE MEMORY
SECTOR
SELECTS
SECTOR
SELECTS
)
DPLD
(
PLD
FLASH DECODE
73
A
PORT
PORT
PROG.
BACKUP SRAM
16KBIT BATTERY
RUNTIME CONTROL
AND I/O REGISTERS
SRAM SELECT
PERIP I/O MODE SELECTS
CSIOP
B
PORT
PORT
PROG.
PORT A ,B & C
PORT A ,B & C
2 EXT CS TO PORT D
(CPLD)
FLASH ISP CPLD
73
20 INPUT MACROCELLS
16 OUTPUT MACROCELLS
CLKIN
C
PORT
PORT
PROG.
MACROCELL FEEDBACK OR PORT INPUT
CLKIN
PORT
PORT
PROG.
JTAG
SERIAL
& FLASH MEMORY
PLD, CONFIGURATION
D
CHANNEL
LOADER
80/152
8032 Bus
PLD
BUS
INPUT
WR_, RD_,
PSEN_, ALE,
RESET_,
A0-A15
BUS
Interface
BUS
Interface
D0 – D7
GLOBAL
SECURITY
CONFIG. &
CLKIN
(PD1)
AI07431
Page 81
UPSD3212C, UPSD3212CV
In-Syst em Prog r a mmi ng ( ISP)
Using the JTAG signals on Port C, the entire PSD
MODULE device can be prog rammed or erased
without the use of the MCU. The primary Flash
memory can also be programmed in-system by
the MCU executing the programming algorithms
out of the secondary memory, or SRAM. The secondary memory can be programmed the same
Tabl e 60. Methods of Program m ing Different Functional B l ocks of the PSD MODULE
way by executing out of t he pri mary F lash m em ory. The PLD or other PSD MODULE Configuration
blocks can be program med throu gh the JTAG p ort
or a device programmer. Table 60 indicates which
programming methods can program different functional blocks of th e PSD MODULE.
81/152
Page 82
UPSD3212C, UPSD3212CV
DEVELOPMENT SYST EM
The uPSD3200 is supported by PSDsof t, a Windows-based software development tool (Windows-95, Windows-98, Windows-NT). A PSD
MODULE design is quickly and easily produced in
a point and click environment. The designer does
not need to enter Hardware Description Language
(HDL) equations, unless desired, to define PSD
MODULE pin functions and memory map information. The general design flow is shown in Figure
41. PSDsoft is available from our web site (t he ad-
Figure 41. PSDsoft Express Development Tool
Choose µPSD
Define µPSD Pin and
Node Functions
Point and click definition of
PSD pin functions, internal nodes,
and MCU system memory map
dress is given on the back page of this data sheet)
or other distribution channels.
PSDsoft directly supports a low cost device programmer from ST: FlashLINK (JTAG). The programmer may be purchased through your local
distributor/representative. The uP SD3200 is also
supported by third party device programmers. See
our web site for the current list.
Define General Purpose
Logic in CPLD
Point and click definition of combinatorial and registered logic in CPLD.
Access HDL is available if needed
Merge MCU Firmware with
PSD Module Configuration
A composite object file is created
containing MCU firmware and
PSD configuration
*.OBJ FILE
PSD Programmer
FlashLINK (JTAG)
MCU FIRMWARE
HEX OR S-RECORD
FORMAT
*.OBJ FILE
AVAILABLE
FOR 3rd PARTY
PROGRAMMERS
C Code Generation
GENERATE C CODE
SPECIFIC TO PSD
FUNCTIONS
USER'S CHOICE OF
8032
COMPILER/LINKER
AI07432
82/152
Page 83
UPSD3212C, UPSD3212CV
PSD MODULE REGISTER DESCRIPTION AND ADDRESS OFFSET
Table 61 shows the offset addresses to the PSD
MODULE registers relative to the CSIOP base address. The CSIOP space is the 256 bytes of address that is allocated by the user to the internal
Table 61. Register Address Offset
Register Name Port A Port B Port C Port D
Data In 00 01 10 11 Reads Port pin as input, MCU I/O Input Mode
Control 02 03 Selects mode between MCU I/O or Address Out
PSD MODULE registers. Table 61 provides brief
descriptions of the registers in CSIOP space. The
following section gives a more detailed description.
Other
1
Description
Data Out 04 05 12 13
Direction 06 07 14 15 Configures Port pin as input or output
Drive Select 08 09 16 17
Input Macrocell 0A 0B 18 Reads Input Macrocells
Enable Out 0C 0D 1A 1B
Output Macrocells
AB
Output Macrocells
BC
Mask Macrocells AB 22 22 Blocks writing to the Output Macrocells AB
Mask Macrocells BC23 23 Blocks writing to the Output Macrocells BC
Primary Flash
Protection
Secondary Flash
memory Protection
PMMR0 B0 Power Management Register 0
PMMR2 B4 Power Management Register 2
Page E0 Page Register
20 20
21 21
C0 Read-only – Primary Flash Sector Protection
C2
Stores data for output to Port pins, MCU I/O
Output Mode
Configures Port pins as either CMOS or Open
Drain on some pins, while selecting high slew rate
on other pins.
Reads the status of the output enable to the I/O
Port driver
READ – reads output of macrocells AB
WRITE – loads macrocell flip-flops
READ – reads output of macrocells BC
WRITE – loads macrocell flip-flops
Note: 1. Other registers that are not part of the I/O ports.
Places PSD MODULE memory areas in Program
and/or Data space on an individual basis.
83/152
Page 84
UPSD3212C, UPSD3212CV
PSD MODULE DETAILED OPERATION
As shown in Figure 15, the PSD M ODULE consists of five major types of functional blocks:
■ Memory Block
■ PLD Blocks
■ I/O Ports
■ Power Management Unit (PMU)
■ JTAG Interface
The functions of ea ch block are described i n the
following sections. Many of the blocks perform
multiple functions, and are user configurable.
MEMORY BLOCKS
The PSD MODULE has the following memory
blocks:
■ Primary Flash memory
■ Secondary Flash memory
■ SRAM
The Memory Select signals for these blocks originate from the Decode PLD (DPLD) an d are userdefined in PSDsoft Express.
Primary Flash Memory and Secon dary Flash
memory Description
The primary Flash memory is divided into 4 sectors (16KBytes each). The secondary Flash memory is divided into 2 sectors (8KBytes each). Each
sector of either memory block can be separately
protected from Program and Erase cycles.
Flash memory may be erased on a sector-by-sector basis. Flash sector erasure may be suspended
while data is read from other sectors of the block
and then resumed after reading.
During a Program or Erase cycle in Flash memory,
the status can be output on Ready/Busy
This pin is set up using PSDsoft Express Configuration.
(PC3).
Memory Block Select Signals
The DPLD generates the Select signals for all the
internal memory blocks (see the section entitled
“PLDs,” page 97). Each of the eight sectors of the
primary Flash memory has a Sele ct signal (FS0FS3) which can contain up to three product terms.
Each of the 2 sectors of the secondary Flash
memory has a Select signal (CSBOOT0CSBOOT1) which can contain up to three product
terms. Having three product terms for each Select
signal allows a given sector to be mapped in Program or Data space.
Ready/Busy
output the Ready/Busy
ry. The output on Ready/Busy
when Flash memory is being written to,
(PC3 ). This signal can be used to
status of the Flash memo-
(PC3) is a 0 (Busy)
or
when
Flash memory is being erased. The output is a 1
(Ready) when no WRITE or Erase cycle is in
progress.
Memory Operation. The primary Flash memory
and secondary Flash memory are addressed
through the MCU Bus. The MCU can access these
memories in one of two ways:
– The MCU ca n execute a typical bus WRITE or
READ
operation
.
– The MCU can execute a specific Flash memory
instruction that consists of several WRITE and
READ operations. This involve s writing specific
data patterns to special addresses within the
Flash memory to invoke an embedded algorithm. These instructions are summarized in Table 62.
Typically, the MCU can read Flash memory using
READ operations, just as it would read a ROM device. However, Flash memory can only b e altered
using specific Erase and Program instructions. For
example, the MCU cannot write a single byte directly to Flash memory as it would write a by te to
RAM. To program a byte into F lash memory, t he
MCU must execute a Program instruction, then
test the status of the Program cycle. This status
test is achieved by a RE AD operation or polling
Ready/Busy
(PC3).
84/152
Page 85
Instructions
An instruction consists of a sequence o f specific
operations. Each received byte is sequentially decoded by the PSD MODULE and not exec uted as
a standard WRITE operation. The instruction is executed when the correct number of bytes are properly received and the time between two
consecutive bytes is shorter than the time-out period. Some instructions are structured to include
READ operations after the initial WRITE operations.
The instruction must be followed exactly. Any invalid combination of instruction bytes or time-out
between two consecutive byte s while addressing
Flash memory resets the device logic into READ
Mode (Flash memory is read like a ROM device).
The Flash memory supports the instructions summarized in Table 62:
Flash memory:
■ Erase memory by chip or sector
■ Suspend or resume sector erase
■ Program a Byte
■ RESET to READ Mode
■ Read Sector Protection Status
UPSD3212C, UPSD3212CV
These instructions are detailed in Table 62. For efficient decoding of the instructions, the first two
bytes of an instruction are the code d cycles and
are followed by an instruction byte or confirmation
byte. The coded cycles consist of writing the data
AAh to address X555h during the first cycle and
data 55h to address XAAAh during th e se cond c ycle. Address signals A15-A12 are Don’t Care during the instruction WRITE cycles. However, the
appropriate Sector Select (FS0-FS3 or
CSBOOT0-CSBOOT1) must be selected.
The primary and secondary Flash memories have
the same instruction set. The Sector Select signals
determine which Flash memory is to receive and
execute the instruction. The primary Flash memory is selected if any one of Sector Select (FS0FS3) is High, and the secondary Flash memory is
selected if any one of Sector Select (CSBOO T0CSBOOT1) is High.
85/152
Page 86
UPSD3212C, UPSD3212CV
Table 62. Instructions
Instruction
(5)
READ
READ Sector
Protection
(6,8,11)
Program a Flash
(11 )
Byte
Flash Sector
(7,11)
Erase
Flash Bulk
(11)
Erase
Suspend Sector
(9)
Erase
Resume Sector
(10)
Erase
(6)
RESET
Note: 1. All bus cycles are WRITE bus cycles, exce pt the ones with t he “Read” label
2. All values are in hexadecimal:
X = Don’t care. Ad dresses of the form XXXXh, in this tab l e, must be even addresses
RA = Address of the memor y location to be read
RD = Data READ from location RA during the READ cycle
PA = Address of the memory location to be programmed. Addresses are latched on the falling edge of WRITE Strobe (WR
PA is an even address for PSD in Word P rogrammi ng M ode.
PD = Data word to be programmed at locati on PA. Data is latched on the rising edge of WRITE Str obe (WR
SA = Addres s of t he sect or to be erased or veri fied. Th e Sect or Selec t (FS0- FS3 o r CSBOOT 0-CSBO OT1) of the se ctor to b e
erased, or verified, must be Ac tive (High).
3. Sector Select (FS0-FS3 or CSBOOT0-CSBOOT1) signals are active High, and are defined in PSDsoft Express.
4. Only address Bits A 11-A0 are used i n i nstructi on decoding.
5. No Unlock or instruction cycl es are requir ed when the dev i ce is in the READ Mode
6. The RESE T I nstr uctio n is re quir ed to retu rn to the RE AD Mode afte r re adin g the S ecto r Prot ect ion St atus , or if t he Err or Fla g Bit
(DQ5) goes High.
7. Addit i onal sectors to be erased must be written at the end of the Sector Erase instructi on within 80µ s.
8. The dat a is 00h for an unp rotected sector, and 01h for a protec ted sector. In the fourth c ycle, the Sec tor Select is active, and
(A1,A0)= (1,0)
9. The system may perform READ and Program cycles in non-erasing sectors, read the Sector Protection Status when in the Suspend
Sector Eras e Mode. The S uspend Sector Erase inst ruction is val i d only during a Sector Eras e cy cle.
10. The Resume Sector Erase instruction is valid only during the Suspend Sector Erase Mode.
11. The MCU cannot inv oke the se in stru ction s wh ile exe cuti ng cod e from the sa me Fla sh me mory as that fo r whic h the ins tru ctio n is
intended. T he MCU mus t re tri eve, for exam pl e, t he co de from th e sec ondar y Flas h me mor y wh en rea ding the Sec tor P rot ectio n
Status of th e pri m ary Flash me m ory.
FS0-FS3 or
CSBOOT0-
CSBOOT1
1
1
1
1
1
1
1
1
Cycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7
“Read”
RD @ RA
AAh@
X555h
AAh@
X555h
AAh@
X555h
AAh@
X555h
55h@
XAAAh
55h@
XAAAh
55h@
XAAAh
55h@
XAAAh
90h@
X555h
A0h@
X555h
80h@
X555h
80h@
X555h
Read status @
XX02h
PD@ PA
AAh@ X555h
AAh@ X555h
55h@
XAAAh
55h@
XAAAh
30h@
SA
10h@
X555h
B0h@
XXXXh
30h@
XXXXh
F0h@
XXXXh
, CNTL0)
(7)
30h
next SA
, CNTL0).
@
86/152
Page 87
Power-down Instruction and Power-up Mode
Power-up Mode. The PSD MODULE internal
logic is reset upon Power-up to the READ Mode.
Sector Select (FS0-FS3 and CSBOOT0CSBOOT1) must be held Low, and WRITE Strobe
, CNTL0) High, during Power-up for maximum
(WR
security of the data contents and to remove the
possibility of a byte being written on t he f irst edge
of WRITE Strobe (WR
initiation is locked when V
, CNTL0). Any WRITE cycl e
is below V
CC
LKO
.
READ
Under typical conditions, the MCU may read t he
primary Flash memory or the secondary Flash
memory using READ operations just as it would a
ROM or RAM device. Alternately, the MCU may
use READ operations to ob tain status inform ation
about a Program or Erase cycle that is currently in
progress. Lastly, the MCU may use instructions to
read special data from these memory blocks. The
following sections describe these READ functions.
READ Memory Contents. Primary Flash memory and secondary Flash memory are placed in the
READ Mode after Power-up, chip reset, or a
Reset Flash instruction (see Table 62, page 86).
The MCU can read the memory contents of the primary Flash memory or thesecondary Flash memory by using READ operations any time the READ
operation is not part of an instruction.
READ Memory Sector Protection Status. The
primary Flash memory Sector Protection Status is
read with an instruction composed of 4 operations:
3 specific WRITE operations and a READ operation (see Table 62). During the READ operation,
address Bits A6, A1, and A0 must be '0,' '1 ,' and
'0,' respectively, while Sector Select (FS0-FS3 or
CSBOOT0-CSBOOT1) designates the Flash
memory sector whose protection has to be v erified. The READ operation produces 01h if the
Flash memory sector is protected, or 00h if the
sector is not protected.
The sector protection status for all NVM blocks
(primary Flash memory or secondary Flash memory) can also be read by the M CU accessing the
Flash Protection registers in PSD I/O space. See
UPSD3212C, UPSD3212CV
the section entitled “Flash Memory Sector Protect,” page 92, for register definitions.
Reading the Erase/Program Status Bits. The
Flash memory provides several status bits to be
used by the MCU to confirm the c ompletion of an
Erase or Program cycle of Flash memory. These
status bits minimize the time that the MCU spends
performing these tasks and are defined in Table
63, page 88. The status bits can be read as many
times as needed.
For Flash memory, the MCU can perform a READ
operation to obtain these status bits while an
Erase or Program instruction is being executed by
the embedded algorithm. See the section entit led
“Programming Flash Memory,” page 89, for details.
Data Polling Flag (DQ7). When erasing or programming in Flash memory, the Data Polling Flag
Bit (DQ7) outputs the complement of the bit being
entered for programming/writing on the DQ7 Bit.
Once the Program instruction or the WRITE operation is completed, the true logic value i s read on
the Data Polling Flag Bit (DQ7) (in a READ operation).
– Data Polling is effective af ter the fourth WRITE
pulse (for a Program instruction) or after the
sixth WRITE pulse (for an Erase instruction). It
must be performed at the address being programmed or at an address within the Flash
memory sector being erased.
– During an Era se cycl e , the Data Polling Flag Bit
(DQ7) outputs a '0.' After completion of the cycle, the Data Polling Flag B it (DQ7) outputs the
last bit programmed (it is a '1' after erasing).
– If the byte to be program med is in a protected
Flash memory sector, the instruction is ignored.
– If all the Flash memory sectors to be erased are
protected, the Data Polling Flag Bit (DQ7) is reset to '0' for about 100µs, and then returns to the
previous addressed byte. No erasure is performed.
87/152
Page 88
UPSD3212C, UPSD3212CV
Toggle Flag ( DQ6 ). The Flash memory offers an-
other way for determining when the Program cycle
is completed. During the internal WRITE operation
and when either the FS0-FS3 or CSBOOT0CSBOOT1 is true, the Toggle Fla g Bit (DQ6) toggles from 0 to 1 and 1 to 0 on subsequent attempts
to read any byte of the memory.
When the internal cycle is complete, the toggling
stops and the data READ on the Data Bus D0-D7
is the addressed memory byte. The device is now
accessible for a new RE AD or WRITE operat ion.
The cycle is finished when two successive Reads
yield the same output data.
– The Toggle Flag Bit (DQ6) is effective after the
fourth WRITE pulse (for a Program instruction)
or after the sixth WRITE pulse (for an E rase instruction).
– If the byte to be programmed b elongs to a pro-
tected Flash memory sector, the instruc tion is
ignored.
– If all the Flash memory sectors selected for era-
sure are protected, the Toggle Flag Bit (DQ6)
toggles to '0' for about 100µs and then returns to
the previous addressed byte.
Error Flag (DQ5). During a normal Program or
Erase cycle, the Error Flag Bit (DQ5) is to 0. This
bit is set to '1' when there is a failure during F lash
memory Byte Program, Sector Erase, or Bulk
Erase cycle.
In the case of Flash memory programming, the Error Flag Bit (DQ5) indicates the attempt to program
a Flash memory bit from the programmed state,
'0,' to the erased state, '1,' which is not valid. The
Error Flag Bit (DQ5) may also indicate a Time-out
condition while attempting to program a byte.
In case of an error in a Flash memory Sector Erase
or Byte Progra m cycle, the Fl ash memory sector i n
which the error occurred or to which the programmed byte belongs must no longer be used.
Other Flash memory sectors may still be used.
The Error Flag Bit (DQ5) is reset after a Reset
Flash instruction.
Erase Time-out Flag (DQ3). The Erase Timeout Flag Bit (DQ 3) reflects the time-out period allowed between two consecutive Sec tor Erase instructions. The Erase Tim e-out Flag Bit (DQ3) is
reset to 0 after a Sector Erase cycle for a time period of 100µs + 20% unless an additional Sector
Erase instruction is decoded. After this time period, or when the additional Sector Erase instruction
is decoded, the Erase Time-out Flag Bit (DQ3) is
set to '1.'
Table 63. Status Bit
Functional Block
Flash Memory
Note: 1. X = Not guaranteed value, can be read ei ther '1' or '0. '
2. DQ7-DQ0 represent the Data Bus bits, D7-D0.
3. FS0-FS 3 and CSBOO T 0-CSBOOT 1 are active High.
FS0-FS3/CSBO OT0-
CSBOOT1
V
IH
DQ7DQ6DQ5DQ4D Q3DQ2DQ1DQ0
Data
Polling
Toggle
Flag
Error
Flag
Erase
X
Timeout
XXX
88/152
Page 89
Programming Flash Memory
Flash memory must be erased prior to being programmed. A byte of Flash memory is erased to all
'1s' (FFh), and is programmed by set ting select ed
bits to '0.' The MC U may e rase F lash memory a ll
at once or by-sector, but not byte-by-byte. However, the MCU may program Flash memory byte-bybyte.
The primary and secondary Flash memories require the MCU to send an instruction to program a
byte or to erase sectors (see Table 62).
Once the MCU issues a Flash memory Program or
Erase instruction, it must check for the status bits
for completion. The embedded algorithms that are
invoked support several m eans to provide status
to the MCU. Status may be checked using an y of
three methods: Data Polling, Data Toggle, or
Ready/Busy
(PC3).
Data Polling. Polling on the D at a P olling Flag Bit
(DQ7) is a method of checking whether a Program
or Erase cycle is in progress or has completed.
Figure 42 shows the Data Polling algorithm.
When the MCU issue s a Program i nstruction, the
embedded algorithm begins. The MCU then reads
the location of the byte to be programmed in Flash
memory to check status. The Data Polling Flag Bit
(DQ7) of this location becomes the complement of
b7 of the original data byte to be programmed. The
MCU continues to poll this location, comparing the
Data Polling Flag Bit (DQ7) and monitoring the Error Flag Bit (DQ5). When the Data Polling Flag Bit
(DQ7) matches b7 of the original data, and the Error Flag Bit (DQ5) remains '0,' the embedded algorithm is complete. If the Error Flag Bit (DQ5) is '1,'
the MCU should test the Data Polling Flag Bit
(DQ7) again since the Data Polling Flag Bit (DQ7)
may have changed simultaneously with the Error
Flag Bit (DQ5) (see Figure 42).
The Error Flag Bit (DQ5) is set if either an internal
time-out occurred while the embedded algorithm
attempted to program the byte or if the MCU a ttempted to program a '1' to a bit that was not
erased (not erased is logic '0').
It is suggested (as with all Flash memories) to read
the location again after the embedded programming algorithm has completed, to compare the
UPSD3212C, UPSD3212CV
byte that was written to the Flash memory with the
byte that was intended to be written.
When using the Data Polling method during an
Erase cycle, Figure 42 still applies. However, the
Data Polling Flag Bit (DQ7) is '0' until the Erase cycle is complete. A '1' on the Error Flag Bit (DQ5) indicates a time-out condition on the Erase cycle; a
'0' indicates no error. The MCU can read any location within the sector being erased to get the Data
Polling Flag Bit (DQ7) and the Error Flag Bit
(DQ5).
PSDsoft Express generates ANSI C code functions which implement these Data Polling algorithms.
Figure 42. Data Polling Flowchart
START
READ DQ5 & DQ7
at VALID ADDRESS
DQ7
DATA
NO
DQ5
READ DQ7
DQ7
DATA
FAILPASS
= 1
YES
=
NO
YES
YES
=
NO
AI01369B
89/152
Page 90
UPSD3212C, UPSD3212CV
Data Toggle. Checking the Toggle Flag Bit
(DQ6) is a method of determinin g whether a P rogram or Erase cycle is in progress or has completed. Figure 43 shows the Data Toggle algorithm.
When the MCU issue s a Program i nstruction, the
embedded algorithm begins. The MCU then reads
the location of the byte to be programmed in Flash
memory to check status. The Toggle Flag Bit
(DQ6) of this location toggles each time the MCU
reads this location until the embedded algorithm is
complete. The MCU continues to read this location, checking the Toggle Flag Bit (DQ6) and monitoring the Error Flag Bit (DQ5). When the Toggle
Flag Bit (DQ6) stops toggling (two consecutive
reads yield the same value), and the Error Flag Bit
(DQ5) remains '0,' the embedded algorithm is
complete. If the Error Flag Bit (DQ5) is '1,' the
MCU should test the Toggle Flag Bit (DQ6) again,
since the Toggle Flag Bit (DQ6) may have
changed simultaneously with the Error Flag Bit
(DQ5) (see Figure 43).
The Error Flag Bit(DQ5) is set if either an internal
time-out occurred while the embedded algorithm
attempted to program the byte, or if the MCU attempted to program a '1' to a bit that was not
erased (not erased is logic '0').
It is suggested (as with all Flash memories) to read
the location again after the embedded programming algorithm has completed, to compare the
byte that was written to Flash memory with the
byte that was intended to be written.
When using the Data Toggle method after an
Erase cycle, Figure 43 still applies. the Toggle
Flag Bit (DQ6) toggles until the Erase cycle is
complete. A '1' on the Error Flag Bit (DQ5) i ndicates a time-out condition on the Erase cycle; a '0'
indicates no error. The MCU can read any location
within the sector being erased t o get the Toggle
Flag Bit (DQ6) and the Error Flag Bit (DQ5).
PSDsoft Express generates ANSI C code functions which implement these Data T oggling algorithms.
Figure 43. Data Toggle Flowchart
START
READ
DQ5 & DQ6
DQ6
=
TOGGLE
NO
DQ5
= 1
READ DQ6
DQ6
=
TOGGLE
FAILPASS
NO
YES
YES
NO
YES
AI01370B
90/152
Page 91
UPSD3212C, UPSD3212CV
Erasing Flash Memory
Flash Bulk Erase. The Flash Bulk Eras e instruc-
tion uses six WRITE operations followed by a
READ operation of the status register, as described in Table 62. If any byte of the B ulk Erase
instruction is wrong, the Bulk Erase instruction
aborts and the device is reset t o the READ F lash
memory status.
During a Bulk Erase, the memory status may be
checked by reading the Error Flag Bit (DQ5), the
Toggle Flag Bit (DQ6), and the Data Polling Fl ag
Bit (DQ7), as detailed in the section entitled “Programming Flash Memory,” page 89. The Error
Flag Bit (DQ5) returns a '1' if there has been an
Erase Failure (maximum number of Erase cycles
have been executed).
It is not necessary to program the memory with
00h because the PSD MODULE automatically
does this before erasing to 0FFh.
During execution of the Bulk Erase instruction, the
Flash memory does not accept any instructions.
Flash Sector Erase. The Sector Erase instruction uses six WRITE operations, as described in
Table 62. Additional Flash Sector Erase codes
and Flash memory sector addresses can be written subsequently to erase other Flash memory
sectors in parallel, without further coded cycles, if
the additional bytes are transmitted in a shorter
time than the time-out period of about 100µ s . The
input of a new Sector Erase code restarts the timeout period.
The status of the internal timer can be monitored
through the level of the Erase Time-out Flag B it
(DQ3). If the Erase T ime-out F lag Bit (DQ3) is '0,'
the Sector Erase instruction has been received
and the time-out period is counting. If the Erase
Time-out Flag Bit (DQ3) is '1,' the time-out period
has expired and the embedded algorithm is busy
erasing the Flash memory secto r(s ). Before and
during Erase time-out, any instruction other t han
Suspend Sector Erase and Resume Sector Erase
instructions abort the cycle that is currently in
progress, and reset the device to READ Mode.
During a Sector Erase, the memory status may be
checked by reading the Error Flag Bit (DQ5), the
Toggle Flag Bit (DQ6), and the Data Polling Fl ag
Bit (DQ7), as detailed in the section entitled “Programming Flash Memory,” page 89.
During execution of the Erase cycle, the Flash
memory accepts only RESET and Suspend Sector Erase instructions. Erasure of one Flash memory sector may be suspended, in order to read
data from another Flash memory sector, and then
resumed.
Suspend Sector Erase. When a Sector Erase
cycle is in progress, the Suspend Sector Erase instruction can be used to suspend the cycle by writing 0B0h to any address when an appropriate
Sector Se lect (FS0 -FS3 or CSBOOT0-CSBO OT1)
is High. (See Table 62). This allows reading of
data from another Flash memory sector after the
Erase cycle has been suspended. Suspend Sector Erase is accepted only during an Era se cycle
and defaults to READ Mode. A Suspend Sector
Erase instruction executed during an Erase timeout period, in addition to suspending the Erase cycle, terminates the time out period.
The Toggle Flag Bit (DQ6) stops toggling when the
internal logic is suspended. Th e status of this bit
must be monitored at an address wi thin the F lash
memory sector being erased. The Toggle Flag Bit
(DQ6) stops toggling between 0.1µs and 15µs after the Suspend Sector Erase instruction has been
executed. The Flash memory is then automatically
set to READ Mode.
If an Suspend Se ctor Erase instruction was executed, the following rules apply:
– Attempting to read from a Flash memory se ctor
that was being erased outputs invalid data.
not
– Reading from a Flash sector that was
erased is valid.
– The Flash memory
only responds to Resume Sector Erase and
Reset F las h in s t r uc tions (READ is a n op er ation
and is allowed).
– If a Reset Flash instruction is received, data in
the Flash memory sector that was being erased
is invalid .
Resume Sector Erase. If a Suspend Sector
Erase instruction was previously executed, the
erase cycle may be resumed with this instruction.
The Resume Sector Eras e instruction consists of
writing 030h to any address w hile an appropriate
Sector Se lect (FS0 -FS3 or CSBOOT0-CSBO OT1)
is High. (See Table 62.)
cannot
be programmed, and
being
91/152
Page 92
UPSD3212C, UPSD3212CV
Specific Features
Flash Memory Sector Protect. Each primary
and secondary Flash memory sector can be separately protected against Program and Erase cycles. Sector Protection provides additional data
security because it disables all Program or Erase
cycles. This mode can be activated through the
JTAG Port or a Device Programmer.
Sector protection can be selected for each sector
using the PSDsoft Express Configuration program. This automatically protects selected sectors
when the device is programmed through the JTAG
Port or a Device Programmer. Flash memory sectors can be unprotected t o allow updat ing of their
contents using the JTAG Port or a Device Programmer. The MCU can read (but cannot change)
the sector protection bits.
Any attempt to program or erase a protected Flash
memory sector is ignored by the device. The Verify
operation results in a READ of the protected data.
This allows a guarantee of the retention of the Protection status.
The sector protection status ca n be read by the
MCU through the Flash memory protection regis-
ters (in the CSIOP block). See Table 64 and Table
65.
Reset Flash. The Reset Flash instruction con-
sists of one WRITE cycle (see Table 62). It can
also be optionally preced ed by the standard two
WRITE decoding cycles (writing AAh to 555h and
55h to AAAh). It must be executed after:
– Reading the Flash Protection Status or Flash ID
– An Error condition has occurred (and the device
has set the Error Flag Bit (DQ5 ) to '1' during a
Flash memory Program or Erase cycle.
The Reset Flash instruction puts the Flash memory back into normal READ Mode. If an Error condition has occurred (and the device has set the Error
Flag Bit (DQ5) to '1' the Flash memory is put back
into normal READ Mode within a few milliseconds
of the Reset Flash instruction having been issued.
The Reset Flash instruction is ignored when it is issued during a Program or Bulk Erase cycle of the
Flash memory. The Reset Flash instruction aborts
any on-going Sector Erase cycle, and returns the
Flash memory to the normal READ Mode within a
few millis econds.
Table 64. Sector Protection/Security Bit Definition – Flash Protection Register
Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
not usednot usednot usednot usedSec3_ProtSec2_ProtSec1_ProtSec0_Prot
Note: Bit Definitions:
Sec<i>_Prot 1 = Primary Flash memory or sec ondary Flas h m em ory Sector <i> is write -protected.
Sec<i>_Prot 0 = Primary Flash memory or secondar y Fl ash memory Sector <i> is not write-p rot ected.
Sec<i>_Prot 1 = Secondary Flash memory Se ct or <i> is write-protected.
Sec<i>_Prot 0 = Secondary Flash memory Sector < i > is not write-protected.
Security_Bit 0 = Security Bit in device has not been set; 1 = Security Bit in device has been set.
92/152
Page 93
SRAM
The SRAM is enab led when SRAM Select (RS0)
from the DPLD is High. SRAM Select (RS0) can
contain up to two prod uct terms, allow ing flexible
memory mapping.
The SRAM can be backed up usin g an external
battery. The external battery should be connected
to Voltage Standby (V
, PC2). If you have an
STBY
external battery connected to the uPS D3200, the
contents of the SRAM are retained in the event of
a power loss. The contents of the SRAM are retained so long as the battery voltage remains at 2V
or greater. If the supply voltage falls below the battery voltage, an internal power s witchover to the
battery occurs.
PC4 can be configured as an output that indicates
when power is being drawn from the external ba ttery. Battery-on Indicator (V
, PC4) is High
BATON
with the supply voltage falls below the battery voltage and the battery on Voltage Standby (V
STBY
PC2) is supplying power to the internal SRAM.
SRAM Select (RS0), Voltage Standby (V
PC2) and Battery-on Indicat or (V
BATON
STBY
, PC4) are
all configured using PSDsoft Express Configuration.
Sector Select and SRAM Select
Sector Select (FS0-FS3, CSBOOT0-CSBOOT1)
and SRAM Select (RS0) are all outputs of the
DPLD. They are setup by writing equations for
them in PSDsoft Express. The following rules apply to the equations for these signals:
1. Primary Flash memory and secondary Flash
not
memory Sector Select signals must
be larg -
er than the physical sector size.
2. Any primary F lash memory sector m ust
not
be
mapped in the same memory space as another
Flash memory sector.
not
3. A secondary Flas h memory sector must
be
mapped in the same memory space as another
secondary Flash memory sector.
4. SRAM, I/O, and Peripheral I/O spaces must
not
overlap.
may
5. A secondary Flash memo ry sector
overlap
a primary Flash memory sector. In case of over-
UPSD3212C, UPSD3212CV
lap, priority is given to the secondary Flash
memory sector.
6. SRAM, I/O, and Peripheral I/O spaces
overlap any other memory sector. Priority is given to the SRAM, I/O, or Peripheral I/O.
Example. FS0 is valid when the address is in the
range of 8000h to BFFFh, CSBOOT0 is valid from
8000h to 9FFFh, and RS0 is valid from 8000 h to
87FFh. Any address in the range of RS0 always
accesses the SRAM. Any address in the range of
CSBOOT0 greater than 87FFh (and less than
9FFFh) automatically addresses secondary Flash
memory segment 0. Any address greater than
9FFFh accesses the primary Flash me mory segment 0. You can see that half of the primary Flash
memory segment 0 and one-fou rth of secondary
Flash memory segment 0 cannot be accessed in
this example.
,
Note: An equation that defined FS1 to anywhere
in the range of 8000h to BFFFh would
,
Figure 44 shows the priority levels for all memory
components. Any component on a higher level can
overlap and has priority over any component on a
lower level. Components on the same level must
not
overlap. Level one has the highest priority and
level 3 has the lowest.
Figure 44. Priority Level of Memory and I/O
Components in the PSD MODULE
Highest Priority
Level 1
SRAM, I/O, or
Peripheral I/O
Level 2
Secondary
Non-Volatile Memory
Level 3
Primary Flash Memory
Lowest Priority
not
be valid.
may
AI02867D
93/152
Page 94
UPSD3212C, UPSD3212CV
Memory Select Co nfiguratio n in Pro gram and
Data Spaces. The MCU Core has separate ad-
dress spaces for Program memory and Data
memory. Any of the memories within the PSD
MODULE can reside in either space or both spaces. This is controlled t hrough manipulation of the
VM Register that resides in the CSIOP space.
The VM Register is set using PSDsoft Express to
have an initial value. It can subsequently be
changed by the MCU so that memory mapping
can be changed on-the-fly.
Table 66. VM Register
Bit 7
PIO_EN
0 = disable
PIO Mode
1= enable
PIO Mode
Bit 6Bit 5
not used not used
not used not used
Bit 4
Primary
FL_Data
0 = RD
can’t
access
Flash
memory
1 = RD
access
Flash
memory
Secondary Data
0 = R
access Secondary
Flash memory
1 = RD
Secondary Flash
memory
For example, you may wish to have SRAM and primary Flash memory in the Data space at Boot-up,
and secondary Flash memory in the Program
space at Boot-up, and later s wap t he p r imary and
secondary Flash memories. This is easily done
with the VM Register by using PSDsoft Express
Configuration to configure it for Boot-up and having the MCU change it when desired. Table 66 describes the VM Register.
Bit 3
D can’t
access
Bit 2
Primary
FL_Code
0 = PSEN
can’t
access
Flash
memory
1 = PSEN
access
Flash
memory
Bit 1
Secondary Code
0 = PSE
access Secondary
Flash memory
1 = PSEN
Secondary Flash
memory
N can’t
access
Bit 0
SRAM_Code
0 = PSEN
can’t
access
SRAM
1 = PSEN
access
SRAM
94/152
Page 95
UPSD3212C, UPSD3212CV
Separate Space Mode. Progra m space is sepa-
rated from Data space. For example, Program Select E nab le (PSEN
) is used to access the program
code from the primary Flash memory, while READ
Strobe (RD
) is used to access d ata from the sec ondary Flash memory, SRAM and I/O Port blocks.
This configuration requires the VM Register to be
set to 0Ch (see Figure 45).
Figure 45. Separate Space Mode
DPLD
RS0
CSBOOT0-1
FS0-FS3
PSEN
RD
Primary
Flash
Memory
CSCSCS
OEOE
Figure 46. Combined Space Mode
Combined Space Modes. The Program and
Data spaces are combined into one memory
space that allows the primary Flash memory, secondary Flash memory, and SRAM to be accessed
by either Program Select Enable (PSEN) or READ
Strobe (RD
). For example, to configure the primary Flash memory in Combin ed spac e, B its b2 and
b4 of the VM Register are set to '1' (see Figure 46).
Secondary
Flash
Memory
SRAM
OE
AI07433
RD
VM REG BIT 3
VM REG BIT 4
PSEN
VM REG BIT 1
VM REG BIT 2
VM REG BIT 0
DPLD
RS0
CSBOOT0-1
FS0-FS3
Primary
Flash
Memory
CSCSCS
OEOE
Secondary
RD
Flash
Memory
SRAM
OE
AI07434
95/152
Page 96
UPSD3212C, UPSD3212CV
Page Regis te r
The 8-bit Page Register increases the addressing
capability of the MCU Core by a factor of up to 256.
The contents of the register can also be read by
the MCU. The outputs of the Page Register
(PGR0-PGR7) are inputs to the DPLD decoder
and can be included in the Sector Select (FS0FS3, CSBOOT0-CSBOOT1), and SRAM Select
(RS0) equations.
Figure 47. Page Register
RESET
If memory paging is not needed, or if not all 8 page
register bits are needed for memory paging, then
these bits may be used in the CPLD for gen eral
logic.
Figure 47 shows the Page Register. The eight flipflops in the register are connected to the internal
data bus D0-D7. The MCU can write to or read
from the Page Register. The Page Register can be
accessed at address location CSIOP + E0h.
D0-D7
R/W
D0Q0
D1
D2
D3
D4
D5
D6
D7
Q1
Q2
Q3
Q4
Q5
Q6
Q7
PAGE
REGISTER
PGR0
PGR1
PGR2
PGR3
PGR4
PGR5
PGR6
PGR7
DPLD
AND
CPLD
PLD
INTERNAL PSD MODULE
SELECTS
AND LOGIC
AI05799
96/152
Page 97
PLDS
The PLDs bring programmable logic f unctionality
to the uPSD. After specifying the logic for the
PLDs in PSDsoft Express, the logic is programmed into the device and available upon Power-up.
Table 67. DPL D a nd CP LD I nputs
Number
Input Source Input Name
MCU Address Bus
MCU Control Signals
RESETRST
Power-down PDN 1
Port A Input
Macrocells
Port B Input
Macrocells
Port C Input
Macrocells
Port D Inputs
Page Register PGR7-PGR0 8
Macrocell AB
Feedback
Macrocell BC
Feedback
Flash memory
Program Status Bit
Note: 1. These inp uts are not avail able in the 52-pin package.
1
A15-A016
, RD, WR,
PSEN
ALE
1
PA7-PA0 8
PB7-PB0 8
PC7, PC4-PC2 4
PD2-PD1 2
MCELLAB.FB7FB0
MCELLBC.FB7FB0
Ready/Busy
1
of
Signals
4
8
8
UPSD3212C, UPSD3212CV
The PSD MODULE contains two PLDs: the Decode PLD (DPLD), and the Complex PLD (CPLD).
The PLDs are briefly discussed in the next few
paragraphs, and in more detail in the section entitled “Decode PLD (DPLD),” page 99, and the section entitled “Complex PLD (CPLD),” page 100.
Figure 48 shows the configuration of the PLDs.
The DPLD performs add ress decoding for Sel ect
signals for PSD MODULE components, such as
memory, registers, and I/O ports.
The CPLD can be used for logic functions, such as
loadable counters and shift registers, state machines, and encoding and decoding logic. These
logic functions can be cons tructed us ing the Output Macrocells (OMC), Input Macrocells (IMC),
and the AND Array. The CPLD can also b e used
to generate External Chip Select (ECS1-ECS2)
signals.
The AND Array is used to form product terms.
These product terms are specified using PSDsoft.
The PLD input signals consist of internal MCU signals and external inputs from the I/O ports. The input signals are shown in Table 67.
The Turbo Bit in PSD MODULE
The PLDs can minimize power consumption by
switching off when input s remain unchanged for
an extended time of about 70ns. Resetting the
Turbo Bit to '0' (Bit 3 of PMMR0) automatically
places the PLDs into standby if no inputs are
changing. Turning the T urbo Mode off increases
propagation delays while reducing power consumption. See the section entitled “POWER MANAGEMENT,” page 11 3, on how to set the Turbo
Bit.
Additionally, five bits are available in PMM R2 to
block MCU control signals from entering the PLDs.
This reduces power consumption and can be used
only when these MCU control signals are not used
in PLD logic equations.
Each of the two PLDs has unique characteristics
suited for its applications. They are described in
the following sections.
97/152
Page 98
UPSD3212C, UPSD3212CV
Figure 48. PLD Diagram
DATA
BUS
8
PAGE
REGISTER
73
16
PLD INPUT BUS
73
DIRECT MACROCELL INPUT TO MCU DATA BUS
DECODE PLD
OUTPUT MACROCELL FEEDBACK
CPLD
4
2
1
1
2
PT
ALLOC.
20 INPUT MACROCELL
PRIMARY FLASH MEMORY SELECTS
SECONDARY NON-VOLATILE MEMORY SELECTS
SRAM SELECT
CSIOP SELECT
PERIPHERAL SELECTS
DIRECT MACROCELL ACCESS FROM MCU DATA BUS
16 OUTPUT
MACROCELL
(PORT A,B,C)
MACROCELL
ALLOC.
I/O PORTS
MCELLAB
TO PORT A OR B
MCELLBC
TO PORT B OR C
EXTERNAL CHIP SELECTS
TO PORT D
1
8
8
2
20
INPUT MACROCELL & INPUT PORTS
2
PORT D INPUTS
Note: 1. Ports A is not availa bl e i n the 52-pin package
AI07435
98/152
Page 99
Decode PLD (DPLD)
The DPLD, shown in Figure 49, is used for decoding the address for PSD MODULE and external
components. The DPLD can be used to generate
the following decode signals:
– 4 Sector Select (FS0-FS3) signals for the prima-
ry Flash memory (three product terms each)
– 2 Sector Select (CSBOOT0-CSBOOT1) signals
for the secondary Flash memory (three product
terms each)
Note: 1. Port A inputs are not avail able in the 52-pin package
2. Inputs from the MCU module
AI07436
99/152
Page 100
UPSD3212C, UPSD3212CV
Complex PLD (CPLD)
The CPLD can be used to implement system logic
functions, such as loadable counters and shift registers, system mailboxes, ha ndshaking protocols,
state machines, and random logic. The CPLD can
also be used to generate External Chip Select
(ECS1-ECS2), routed to Port D.
Although External Chip Select (ECS1-ECS2) can
be produced by any Output Macrocell (OMC),
these External Chip Select (ECS1-ECS2) on Port
D do not consume any Output Macrocells (OMC).
As shown in Figure 48, the CPLD has the following
blocks:
■ 20 Input Macrocells (IMC)
■ 16 Output Macrocells (OMC)
■ Macrocell Allocat o r
■ Product Term Allocator
Figure 50. Macrocell and I/O Port
■ AND Array capable of generating up to 137
product terms
■ Four I/O Ports.
Each of the blocks are described in the sections
that fo llow.
The Input Macrocells (IMC) and Output Macrocells
(OMC) are connected t o the PSD MODULE in ternal data bus and can be directly acc essed by the
MCU. This enables the MCU software to load data
into the Output Macrocells (OMC) or read data
from both the Input and Output Macrocells (IMC
and OMC).
This feature allows efficient implementation of system logic and eliminat es the need to connec t the
data bus to the AND Array as required in most
standard PLD macrocell architectures.
PLD INPUT BUSPLD INPUT BUS
AND ARRAY
PRODUCT TERMS
FROM OTHER
MACROCELLS
CPLD MACROCELLS
PRODUCT TERM
ALLOCATOR
UP TO 10
PRODUCT TERMS
POLARITY
SELECT
PT
CLOCK
GLOBAL
CLOCK
CLOCK
SELECT
PT CLEAR
PT OUTPUT ENABLE (OE
MACROCELL FEEDBACK
I/O PORT INPUT
PT INPUT LATCH GATE/CLOCK
PT PRESET
MUX
MCU DATA IN
PR DI LD
D/T
D/T/JK FF
SELECT
CK
CL
)
MCU ADDRESS / DATA BUS
DATA
LOAD
CONTROL
MCU LOAD
MACROCELL
OUT TO
MUX
Q
COMB.
/REG
SELECT
MCU
CPLD
OUTPUT
MACROCELL
TO
I/O PORT
ALLOC.
TO OTHER I/O PORTS
I/O PORTS
LATCHED
ADDRESS OUT
DATA
D
Q
WR
CPLD OUTPUT
PDR
INPUT
Q
D
DIR
REG.
WR
INPUT MACROCELLS
ALE
MUXMUX
MUX
SELECT
Q
QD
I/O PIN
D
G
100/152
AI06602
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.