8-bit low-power, full-speed USB MCU with 16-Kbyte Flash,
LQFP64 14x14
SO24
QFN24
768-byte RAM, smartcard interface and timer
Features
Memories
■
Up to 16 Kbytes of ROM or High Density Flash
(HDFlash) program memory with read/write
protection, HDFlash In-Circuit and In-Application
Programming. 100 write/erase cycles
guaranteed, data retention: 40 years at 55°C
■ Up to 768 bytes of RAM including up to 128
bytes stack and 256 bytes USB buffer
Clock, reset and supply management
■ Low voltage reset
■ 2 power saving modes: Halt and Wait modes
■ PLL for generating 48 MHz USB clock using a
4 MHz crystal
Interrupt management
■ Nested Interrupt controller
USB (Universal Serial Bus) interface
■ 256-byte buffer for full speed bulk, control and
interrupt transfer types compliant with USB
specification (version 2.0)
■ On-Chip 3.3V USB voltage regulator and
transceivers with software power-down
■ 7 USB endpoints:
– One 8-byte Bidirectional Control Endpoint
– One 64-byte In Endpoint,
– One 64-byte Out Endpoint
– Four 8-byte In Endpoints
35 or 4 I/O ports
■ Up to 4 LED outputs with software
programmable constant current (3 or 7 mA).
■ 2 General purpose I/Os programmable as
interrupts
■ Up to 8 line inputs programmable as interrupts
■ Up to 20 outputs
■ 1 line assigned by default as static input after
reset
ST7SCR1E4, ST7SCR1R4
Datasheet − production data
ISO7816-3 UART interface
■ 4 MHz clock generation
■ Synchronous/Asynchronous protocols
(T=0, T=1)
■ Automatic retry on parity error
■ Programmable baud rate from 372 clock
pulses up to 11.625 clock pulses (D=32/F=372)
■ Card Insertion/Removal Detection
Smartcard power supply
■ Selectable card V
■ Internal step-up converter for 5V supplied
Smartcards (with a current of up to 55mA)
using only two external components.
■ Programmable Smartcard Internal Voltage
Regulator (1.8V to 3.0V) with current overload
protection and 4 KV ESD protection (Human
Body Model) for all Smartcard Interface I/Os
One 8-bit timer
■ Time Base Unit (TBU) for generating periodic
interrupts.
Development tools
■ Full hardware/software development package
ECOPACK® packages
Table 1.Device summary
ReferencePart number
ST7SCR1R4ST7FSCR1T1, ST7SCR1T1
ST7SCR1E4
1.8V, 3V, and 5V
CC
ST7FSCR1M1, ST7SCR1M1,
ST7SCR1U1
July 2012Doc ID 8951 Rev 61/121
This is information on a product in full production.
The ST7SCR and ST7FSCR devices are members of the ST7 microcontroller family
designed for USB applications. All devices are based on a common industry-standard 8-bit
core, featuring an enhanced instruction set.
The ST7SCR ROM devices are factory-programmed and are not reprogrammable.
The ST7FSCR versions feature dual-voltage Flash memory with Flash Programming
capability.
They operate at a 4 MHz external oscillator frequency.
Under software control, all devices can be placed in WAIT or HALT mode, reducing power
consumption when the application is in idle or stand-by state.
The enhanced instruction set and addressing modes of the ST7 offer both power and
flexibility to software developers, enabling the design of highly efficient and compact
application code. In addition to standard 8-bit data management, all ST7 microcontrollers
feature true bit manipulation, 8x8 unsigned multiplication and indirect addressing modes.
The devices include an ST7 core, up to 16 Kbytes of program memory, up to 512 bytes of
user RAM, up to 35 I/O lines and the following on-chip peripherals:
●USB full speed interface with 7 endpoints, programmable in/out configuration and
embedded 3.3V voltage regulator and transceivers (no external components are
needed).
●ISO7816-3 UART interface with programmable baud rate from 372 clock pulses up to
11.625 clock pulses
●Smartcard Supply Block able to provide programmable supply voltage and I/O voltage
levels to the smartcards
●Low voltage reset ensuring proper power-on or power-off of the device (selectable by
Note:C1, C2, C7 and C8 must be located close to the chip.
Refer to Section 6: Supply, reset and clock management and Section 14.4.3 Crystal
resonator oscillators.
Doc ID 8951 Rev 615/121
Register and memory mapST7SCR1E4, ST7SCR1R4
0000h
Interrupt & Reset Vectors
HW Registers
0040h
003Fh
(see Table 4)
FFDFh
FFE0h
FFFFh
(see Table 11)
C000h
033Fh
Program Memory
RAM
USB RAM
(16K Bytes)
Short Addressing
Stack (128 Bytes)
0100h
0180h
023Fh
0040h
00FFh
017Fh
16-bit Addressing RAM
RAM (192 Bytes)
( 192 Bytes)
023Fh
0240h
256 Bytes
(512 Bytes)
Unused
3 Register and memory map
As shown in Figure 7, the MCU is capable of addressing 64K bytes of memories and I/O
registers.
The available memory locations consist of 40 bytes of register locations, up to 512 bytes of
RAM and up to 16K bytes of user program memory. The RAM space includes up to 128
bytes for the stack from 0100h to 017Fh.
The highest address bytes contain the user reset and interrupt vectors.
IMPORTANT: Memory locations noted “Reserved” must never be accessed. Accessing a
reserved area can have unpredictable effects on the device.
Smartcard Interface Control Register
Smartcard Interface Status Register
Smartcard Contact Control Register
Smartcard Elementary Time Unit 1
Smartcard Elementary Time Unit 0
Smartcard Guard time 1
Smartcard Guard time 0
Smartcard Character Waiting Time 2
Smartcard Character Waiting Time 1
Smartcard Character Waiting Time 0
Smartcard Interrupt Enable Register
Smartcard Interrupt Pending Register
Smartcard Transmit Buffer Register
Smartcard Receive Buffer Register
USB Interrupt Status Register
USB Interrupt Mask Register
USB Control Register
Device Address Register
USB Status Register
Endpoint 0 Register
EP 0 Reception Counter Register
EP 0 Transmission Counter Register
EP 1 Transmission Register
EP 1 Transmission Counter Register
EP 2 Reception Register
EP 2 Reception Counter Register
EP 2 Transmission Register
EP 2 Transmission Counter Register
EP 3 Transmission Register
EP 3 Transmission Counter Register
EP 4 Transmission Register
EP 4 Transmission Counter Register
EP 5 Transmission Register
EP 5 Transmission Counter Register
Error Status Register
The ST7 dual voltage High Density Flash (HDFlash) is a non-volatile memory that can be
electrically erased as a single block or by individual sectors and programmed on a Byte-byByte basis using an external V
The HDFlash devices can be programmed and erased off-board (plugged in a programming
tool) or on-board using ICP (In-Circuit Programming) or IAP (In-Application Programming).
The array matrix organization allows each sector to be erased and reprogrammed without
affecting other sectors.
4.2 Main features
●Three Flash programming modes:
–Insertion in a programming tool. In this mode, all sectors including option bytes
can be programmed or erased.
–ICP (In-Circuit Programming). In this mode, all sectors including option bytes can
be programmed or erased without removing the device from the application board.
–IAP (In-Application Programming) In this mode, all sectors except Sector 0, can be
programmed or erased without removing the device from the application board
and while the application is running.
●ICT (In-Circuit Testing) for downloading and executing user application test patterns in
RAM
●Read-out protection
●Register Access Security System (RASS) to prevent accidental programming or
erasing
supply.
PP
4.3 Structure
The Flash memory is organized in sectors and can be used for both code and data storage.
Depending on the overall FLASH memory size in the microcontroller device, there are up to
three user sectors (see Ta b l e 5 ). Each of these sectors can be erased independently to
avoid unnecessary erasing of the whole Flash memory when only a partial erasing is
required.
The first two sectors have a fixed size of 4 Kbytes (see Figure 8). They are mapped in the
upper part of the ST7 addressing space so the reset and interrupt vectors are located in
Sector 0 (F000h-FFFFh).
Table 5.Sectors available in FLASH devices
Flash Memory Size (bytes)Available Sectors
4KSector 0
8KSectors 0,1
> 8KSectors 0,1, 2
Doc ID 8951 Rev 619/121
Flash program memoryST7SCR1E4, ST7SCR1R4
4 Kbytes
4 Kbytes
SECTOR 1
SECTOR 0
SECTOR 2
16K USER FLASH MEMORY SIZE
FFFFh
F000h
EFFFh
E000h
DFFFh
C000h
8Kbytes
ex.: user program
ex.: user data
ex.: user system library
+ IAP BootLoader
+ library
Figure 8.Memory map and sector address
4.4 ICP (In-circuit programming)
To perform ICP the microcontroller must be switched to ICC (In-Circuit Communication)
mode by an external controller or programming tool.
Depending on the ICP code downloaded in RAM, Flash memory programming can be fully
customized (number of bytes to program, program locations, or selection serial
communication interface for downloading).
When using an STMicroelectronics or third-party programming tool that supports ICP and
the specific microcontroller device, the user needs only to implement the ICP hardware
interface on the application board (see Figure 9). For more details on the pin locations, refer
to the device pinout description.
ICP needs six signals to be connected to the programming tool. These signals are:
●V
●V
●OSCIN: to force the clock during power-up
●ICCCLK: ICC output serial clock pin
●ICCDATA: ICC input serial data pin
●V
: device power supply ground
SS
: for reset by LVD
DD
: ICC mode selection and programming voltage.
PP
If ICCCLK or ICCDATA are used for other purposes in the application, a serial resistor has to
be implemented to avoid a conflict in case one of the other devices forces the signal level.
Note:To develop a custom programming tool, refer to the ST7 FLASH Programming and ICC
Reference Manual which gives full details on the ICC protocol hardware and software.
4.5 IAP (In-application programming)
This mode uses a BootLoader program previously stored in Sector 0 by the user (in ICP
mode or by plugging the device in a programming tool).
This mode is fully controlled by user software. This allows it to be adapted to the user
application, (user-defined strategy for entering programming mode, choice of
communications protocol used to fetch the data to be stored, etc.). For example, it is
20/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Flash program memory
ICP PROGRAMMING TOOL CONNECTOR
10kΩ
C
L2
C
L1
ICCDATA
ICCCLK
V
SS
V
PP
OSCIN
OSCOUT
ST7
HE10 CONNECTOR TYPE
T
OT
HE
A
PP
LICATION
V
DD
4.7kΩ
APPLICATION BOARD
1
246810
975 3
PROGRAMMING TOOL
ICC CONNECTOR
ICC Cable
possible to download code from the USB interface and program it in the Flash. IAP mode
can be used to program any of the Flash sectors except Sector 0, which is write/erase
protected to allow recovery in case errors occur during the programming operation.
Figure 9.Typical ICP interface
Note:If the ICCCLK or ICCDATA pins are only used as outputs in the application, no signal
isolation is necessary. As soon as the Programming Tool is plugged to the board, even if an
ICC session is not in progress, the ICCCLK and ICCDATA pins are not available for the
application. If they are used as inputs by the application, isolation such as a serial resistor
has to implemented in case another device forces the signal. Refer to the Programming Tool
documentation for recommended resistor values.
4.6 Program memory read-out protection
The read-out protection is enabled through an option bit.
For Flash devices, when this option is selected, the program and data stored in the Flash
memory are protected against read-out (including a re-write protection). When this
protection is removed by reprogramming the Option Byte, the entire Flash program memory
is first automatically erased and the device can be reprogrammed.
Refer to the Option Byte description for more details.
4.7 Related documentation
For details on Flash programming and ICC protocol, refer to the ST7 Flash Programming
Reference Manual and to the ST7 ICC Protocol Reference Manual
.
Doc ID 8951 Rev 621/121
Flash program memoryST7SCR1E4, ST7SCR1R4
4.8 Register description
FLASH control/status register (FCSR)
Read/Write
Reset Value: 0000 0000 (00h)
70
00000000
This register is reserved for use by Programming Tool software. It controls the FLASH
programming and erasing operations. For details on customizing FLASH programming
methods and In-Circuit Testing, refer to the ST7 FLASH Programming and ICC Reference
Manual.
22/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Central processing unit
5 Central processing unit
5.1 Introduction
This CPU has a full 8-bit architecture and contains six internal registers allowing efficient 8bit data manipulation.
5.2 Main features
●Enable executing 63 basic instructions
●Fast 8-bit by 8-bit multiply
●17 main addressing modes (with indirect addressing mode)
●Two 8-bit index registers
●16-bit stack pointer
●Low power HALT and WAIT modes
●Priority maskable hardware interrupts
●Non-maskable software/hardware interrupts
5.3 CPU registers
The 6 CPU registers shown in Figure 10 are not present in the memory mapping and are
accessed by specific instructions.
Accumulator (A)
The Accumulator is an 8-bit general purpose register used to hold operands and the results
of the arithmetic and logic calculations and to manipulate data.
Index registers (X and Y)
These 8-bit registers are used to create effective addresses or as temporary storage areas
for data manipulation. (The Cross-Assembler generates a precede instruction (PRE) to
indicate that the following instruction refers to the Y register.)
The Y register is not affected by the interrupt automatic procedures.
Program counter (PC)
The program counter is a 16-bit register containing the address of the next instruction to be
executed by the CPU. It is made of two 8-bit registers PCL (Program Counter Low which is
the LSB) and PCH (Program Counter High which is the MSB).
Doc ID 8951 Rev 623/121
Central processing unitST7SCR1E4, ST7SCR1R4
ACCUMULATOR
X INDEX REGISTER
Y INDEX REGISTER
STACK POINTER
CONDITION CODE REGISTER
PROGRAM COUNTER
70
1C1I1HI0NZ
RESET VALUE = RESET VECTOR @ FFFEh-FFFFh
70
70
70
0
7
158
PCH
PCL
15
8
70
RESET VALUE = STACK HIGHER ADDRESS
RESET VALUE =
1X1 1 X1XX
RESET VALUE = XXh
RESET VALUE = XXh
RESET VALUE = XXh
X = Undefined Value
Figure 10. CPU registers
Condition code register (CC)
Read/Write
Reset Value: 111x1xxx
70
11I1HI0NZC
The 8-bit Condition Code register contains the interrupt masks and four flags representative
of the result of the instruction just executed. This register can also be handled by the PUSH
and POP instructions.
These bits can be individually tested and/or controlled by specific instructions.
Arithmetic management bits
Bit 4 = H Half carry.
This bit is set by hardware when a carry occurs between bits 3 and 4 of the ALU during an
ADD or ADC instructions. It is reset by hardware during the same instructions.
0: No half carry has occurred.
1: A half carry has occurred.
This bit is tested using the JRH or JRNH instruction. The H bit is useful in BCD arithmetic
subroutines.
Bit 2 = N Negative.
This bit is set and cleared by hardware. It is representative of the result sign of the last
arithmetic, logical or data manipulation. It’s a copy of the result 7
0: The result of the last operation is positive or null.
1: The result of the last operation is negative
(i.e. the most significant bit is a logic 1).
This bit is accessed by the JRMI and JRPL instructions.
24/121Doc ID 8951 Rev 6
th
bit.
ST7SCR1E4, ST7SCR1R4Central processing unit
Bit 1 = Z Zero.
This bit is set and cleared by hardware. This bit indicates that the result of the last
arithmetic, logical or data manipulation is zero.
0: The result of the last operation is different from zero.
1: The result of the last operation is zero.
This bit is accessed by the JREQ and JRNE test instructions.
Bit 0 = C Carry/borrow.
This bit is set and cleared by hardware and software. It indicates an overflow or an
underflow has occurred during the last arithmetic operation.
0: No overflow or underflow has occurred.
1: An overflow or underflow has occurred.
This bit is driven by the SCF and RCF instructions and tested by the JRC and JRNC
instructions. It is also affected by the “bit test and branch”, shift and rotate instructions.
Interrupt Management Bits
Bit 5,3 = I1, I0 Interrupt
The combination of the I1 and I0 bits gives the current interrupt software priority.
Interrupt Software PriorityI1I0
Level 0 (main)10
Level 101
Level 200
Level 3 (= interrupt disable)11
These two bits are set/cleared by hardware when entering in interrupt. The loaded value is
given by the corresponding bits in the interrupt software priority registers (IxSPR). They can
be also set/cleared by software with the RIM, SIM, IRET, HALT, WFI and PUSH/POP
instructions.
See the interrupt management chapter for more details.
Stack Pointer (SP)
Read/Write
Reset Value: 017Fh
158
00000001
70
SP7SP6SP5SP4SP3SP2SP1SP0
The Stack Pointer is a 16-bit register which is always pointing to the next free location in the
stack. It is then decremented after data has been pushed onto the stack and incremented
before data is popped from the stack (see Figure 11).
Since the stack is 256 bytes deep, the 8 most significant bits are forced by hardware.
Following an MCU Reset, or after a Reset Stack Pointer instruction (RSP), the Stack Pointer
contains its reset value (the SP7 to SP0 bits are set) which is the stack higher address.
The least significant byte of the Stack Pointer (called S) can be directly accessed by a LD
instruction.
Note:When the lower limit is exceeded, the Stack Pointer wraps around to the stack upper limit,
without indicating the stack overflow. The previously stored information is then overwritten
and therefore lost. The stack also wraps in case of an underflow.
The stack is used to save the return address during a subroutine call and the CPU context
during an interrupt. The user may also directly manipulate the stack by means of the PUSH
and POP instructions. In the case of an interrupt, the PCL is stored at the first location
pointed to by the SP. Then the other registers are stored in the next locations as shown in
Figure 11.
●When an interrupt is received, the SP is decremented and the context is pushed on the
stack.
●On return from interrupt, the SP is incremented and the context is popped from the
stack.
A subroutine call occupies two locations and an interrupt five locations in the stack area.
Figure 11. Stack manipulation example
26/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Supply, reset and clock management
PLL_
MISCR4
ON
-
-
----
LOCK
4 MHz
INTERNAL
8 MHz
CLOCK (f
CPU
)
4 MHz
PLL
X 12
48 MHz
USB
48 MHz
DIV
(f
OSC
)
CLK_
SEL
6 Supply, reset and clock management
6.1 Clock system
6.1.1 General description
The MCU accepts either a 4 MHz crystal or an external clock signal to drive the internal
oscillator. The internal clock (f
which is 4 MHz.
) is derived from the internal oscillator frequency (f
CPU
OSC
),
After reset, the internal clock (f
) is provided by the internal oscillator (4 MHz frequency).
CPU
To activate the 48-MHz clock for the USB interface, the user must turn on the PLL by setting
the PLL_ON bit in the MISCR4 register. When the PLL is locked, the LOCK bit is set by
hardware.
The user can then select an internal frequency (f
) of either 4 MHz or 8 MHz by
CPU
programming the CLK_SEL bit in the MISCR4 register (refer to Section 10: Miscellaneous
registers).
The PLL provides a signal with a duty cycle of 50%.
The internal clock signal (f
) is also routed to the on-chip peripherals. The CPU clock
CPU
signal consists of a square wave with a duty cycle of 50%.
Figure 12. Clock, reset and supply block diagram
The internal oscillator is designed to operate with an AT-cut parallel resonant quartz in the
frequency range specified for f
. The circuit shown in Figure 14 is recommended when
osc
using a crystal, and Ta b le 6 lists the recommended capacitance. The crystal and associated
components should be mounted as close as possible to the input pins in order to minimize
output distortion and start-up stabilization time. The LOCK bit in the MISCR4 register can
also be used to generate the f
directly from f
CPU
if the PLL and the USB interface are not
OSC
active.
Doc ID 8951 Rev 627/121
Supply, reset and clock managementST7SCR1E4, ST7SCR1R4
OSCIN
OSCOUT
EXTERNAL
CLOCK
NC
OSCIN
OSCOUT
C
OSCIN
C
OSCOUT
Table 6.Recommended values for 4 MHz crystal resonator
Note:R
R
SMAX
C
OSCIN
C
OSCOUT
is the equivalent serial resistor of the crystal (see crystal specification).
SMAX
20 Ω25 Ω70 Ω
56pF47pF22pF
56pF47pF22pF
6.1.2 External clock
An external clock may be applied to the OSCIN input with the OSCOUT pin not connected,
as shown on Figure 13.
Figure 13. External clock source connections
Figure 14. Crystal resonator
6.2 Reset sequence manager (RSM)
6.2.1 Introduction
The reset sequence manager has two reset sources:
●Internal LVD reset (Low Voltage Detection) which includes both a power-on and a
voltage drop reset
●Internal watchdog reset generated by an internal watchdog counter underflow as
shown in Figure 16.
6.2.2 Functional description
The reset service routine vector is fixed at addresses FFFEh-FFFFh in the ST7 memory
map.
The basic reset sequence consists of 3 phases as shown in Figure 15.
28/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Supply, reset and clock management
DELAY 1
RUN
LVD
RESET
FETCH VECTOR (2 t
CPU
)
DELAY 2
LVD
RESET
INTERNAL
RESET
DELAY 1 = 30µs + 127 t
CPU
DELAY 2 = 512 t
CPU
V
DD
V
IT+
V
IT-
WATCHDOG
WATCHDOG UNDERFLOW
RESET
FETCH VECTOR (2 t
CPU
)
DELAY 1
WATCHDOG
RESET
DELAY 2
DELAY 1 = 30µs + 127 t
CPU
DELAY 2 = 512 t
CPU
RUN
1.A first delay of 30µs + 127 t
2. A second delay of 512 t
CPU
cycles during which the internal reset is maintained.
CPU
cycles after the internal reset is generated. It allows the
oscillator to stabilize and ensures that recovery has taken place from the Reset state.
3. Reset vector fetch (duration: 2 clock cycles)
Low voltage detector
The low voltage detector generates a reset when V
edge), as shown in Figure 15.
The LVD filters spikes on V
larger than t
DD
Supply and reset characteristics.
Note:It is recommended to make sure that the V
device is exiting from Reset, to ensure the application functions properly.
Figure 15. LVD RESET sequence
DD<VIT+
to avoid parasitic resets. See Section 14.3
g(VDD)
supply voltage rises monotonously when the
DD
(rising edge) or VDD<V
IT-
(falling
Figure 16. Watchdog RESET sequence
Doc ID 8951 Rev 629/121
InterruptsST7SCR1E4, ST7SCR1R4
7 Interrupts
7.1 Introduction
The CPU enhanced interrupt management provides the following features:
●Hardware interrupts
●Software interrupt (TRAP)
●Nested or concurrent interrupt management with flexible interrupt priority and level
management:
–Up to 4 software programmable nesting levels
–Up to 16 interrupt vectors fixed by hardware
–3 non maskable events: RESET, TRAP, TLI
This interrupt management is based on:
●Bit 5 and bit 3 of the CPU CC register (I1:0),
●Interrupt software priority registers (ISPRx),
●Fixed interrupt vector addresses located at the high addresses of the memory map
(FFE0h to FFFFh) sorted by hardware priority order.
This enhanced interrupt controller guarantees full upward compatibility with the standard
(not nested) CPU interrupt controller.
7.2 Masking and processing flow
The interrupt masking is managed by the I1 and I0 bits of the CC register and the ISPRx
registers which give the interrupt software priority level of each interrupt vector (see
Ta bl e 7 ). The processing flow is shown in Figure 17.
When an interrupt request has to be serviced:
●Normal processing is suspended at the end of the current instruction execution.
●The PC, X, A and CC registers are saved onto the stack.
●I1 and I0 bits of CC register are set according to the corresponding values in the ISPRx
registers of the serviced interrupt vector.
●The PC is then loaded with the interrupt vector of the interrupt to service and the first
instruction of the interrupt service routine is fetched (refer to “Interrupt Mapping” table
for vector addresses).
The interrupt service routine should end with the IRET instruction which causes the
contents of the saved registers to be recovered from the stack.
Note:As a consequence of the IRET instruction, the I1 and I0 bits will be restored from the stack
and the program in the previous level will resume.
30/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Interrupts
“IRET”
RESTORE PC, X, A, CC
STACK PC, X, A, CC
LOAD I1:0 FROM INTERRUPT SW REG.
FETCH NEXT
RESET
TLI
PENDING
INSTRUCTION
I1:0
FROM STACK
LOAD PC FROM INTERRUPT VECTOR
Y
N
Y
N
Y
N
Interrupt has the same or a
lower software priority
THE INTERRUPT
STAYS PENDING
than current one
Interrupt has a higher
software priority
than current one
EXECUTE
INSTRUCTION
INTERRUPT
PENDING
SOFTWARE
Different
INTERRUPTS
Same
HIGHEST HARDWARE
PRIORITY SERVICED
PRIORITY
HIGHEST SOFTWARE
PRIORITY SERVICED
I
Table 7.Interrupt software priority levels
Interrupt software priorityLevelI1I0
Level 0 (main)
Level 101
Level 200
Low
High
10
Level 3 (= interrupt disable)11
Figure 17. Interrupt processing flowchart
Servicing pending interrupts
As several interrupts can be pending at the same time, the interrupt to be taken into account
is determined by the following two-step process:
●the highest software priority interrupt is serviced,
●if several interrupts have the same software priority then the interrupt with the highest
hardware priority is serviced first.
Figure 18 describes this decision process.
Figure 18. Priority decision process
When an interrupt request is not serviced immediately, it is latched and then processed
when its software priority combined with the hardware priority becomes the highest one.
Doc ID 8951 Rev 631/121
InterruptsST7SCR1E4, ST7SCR1R4
Note:The hardware priority is exclusive while the software one is not. This allows the previous
process to succeed with only one interrupt.
RESET, TRAP and TLI can be considered as having the highest software priority in the
decision process.
Different interrupt vector sources
Two interrupt source types are managed by the CPU interrupt controller: the non-maskable
type (RESET, TLI, TRAP) and the maskable type (external or from internal peripherals).
Non-maskable sources
These sources are processed regardless of the state of the I1 and I0 bits of the CC register
(see Figure 17). After stacking the PC, X, A and CC registers (except for RESET), the
corresponding vector is loaded in the PC register and the I1 and I0 bits of the CC are set to
disable interrupts (level 3). These sources allow the processor to exit HALT mode.
●TLI (Top Level Hardware Interrupt)
This hardware interrupt occurs when a specific edge is detected on the dedicated TLI pin.
Caution:A TRAP instruction must not be used in a TLI service routine.
●TRAP (Non Maskable Software Interrupt)
This software interrupt is serviced when the TRAP instruction is executed. It will be serviced
according to the flowchart in Figure 17 as a TLI.
Caution:TRAP can be interrupted by a TLI.
●RESET
The RESET source has the highest priority in the CPU. This means that the first current
routine has the highest software priority (level 3) and the highest hardware priority.
See the RESET chapter for more details.
Maskable sources
Maskable interrupt vector sources can be serviced if the corresponding interrupt is enabled
and if its own interrupt software priority (in ISPRx registers) is higher than the one currently
being serviced (I1 and I0 in CC register). If any of these two conditions is false, the interrupt
is latched and thus remains pending.
●External Interrupts
External interrupts allow the processor to exit from HALT low power mode.
External interrupt sensitivity is software selectable through the register.
External interrupt triggered on edge will be latched and the interrupt request automatically
cleared upon entering the interrupt service routine.
If several input pins of a group connected to the same interrupt line are selected
simultaneously, these will be logically NANDed.
●Peripheral Interrupts
Usually the peripheral interrupts cause the Device to exit from HALT mode except those
mentioned in the “Interrupt Mapping” table.
A peripheral interrupt occurs when a specific flag is set in the peripheral status registers and
if the corresponding enable bit is set in the peripheral control register.
The general sequence for clearing an interrupt is based on an access to the status register
followed by a read or write to an associated register.
Note:The clearing sequence resets the internal latch. A pending interrupt (i.e. waiting for being
serviced) will therefore be lost if the clear sequence is executed.
32/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Interrupts
MAIN
IT4
IT2
IT1
TLI
IT1
MAIN
IT0
I1
HARDWARE PRIORITY
SOFTWARE
3
3
3
3
3
3/0
3
11
11
11
11
11
11 / 10
11
RIM
IT2
IT1
IT4
TLI
IT3
IT0
IT3
I0
10
PRIORITY
LEVEL
USED STACK = 10 BYTES
7.3 Interrupts and low power modes
All interrupts allow the processor to exit the WAIT low power mode. On the contrary, only
external and other specified interrupts allow the processor to exit from the HALT modes (see
column “Exit from HALT” in “Interrupt Mapping” table). When several pending interrupts are
present while exiting HALT mode, the first one serviced can only be an interrupt with exit
from HALT mode capability and it is selected through the same decision process shown in
Figure 18.
Note:If an interrupt, that is not able to Exit from HALT mode, is pending with the highest priority
when exiting HALT mode, this interrupt is serviced after the first one serviced.
7.4 Concurrent and nested management
The following Figure 19 and Figure 20 show two different interrupt management modes. The
first is called concurrent mode and does not allow an interrupt to be interrupted, unlike the
nested mode in Figure 20. The interrupt hardware priority is given in this order from the
lowest to the highest: MAIN, IT4, IT3, IT2, IT1, IT0, TLI. The software priority is given for
each interrupt.
Warning:A stack overflow may occur without notifying the software of
the failure.
Figure 19. Concurrent interrupt management
Doc ID 8951 Rev 633/121
InterruptsST7SCR1E4, ST7SCR1R4
MAIN
IT2
TLI
MAIN
IT0
IT2
IT1
IT4
TLI
IT3
IT0
HARDWARE PRIORITY
3
2
1
3
3
3/0
3
11
00
01
11
11
11
RIM
IT1
IT4
IT4
IT1
IT2
IT3
I1I0
11 / 10
10
SOFTWARE
PRIORITY
LEVEL
USED STACK = 20 BYTES
Figure 20. Nested interrupt management
7.5 Interrupt register description
CPU CC register interrupt bits
Read/Write
Reset Value: 111x 1010 (xAh)
70
11I1HI0NZC
Bit 5, 3 = I1, I0 Software Interrupt Priority
These two bits indicate the current interrupt software priority.
Table 8.Current interrupt software priority
Interrupt software priorityLevelI1I0
Level 0 (main)
Level 101
Level 200
Low
High
Level 3 (= interrupt disable*)11
These two bits are set/cleared by hardware when entering in interrupt. The loaded value is
given by the corresponding bits in the interrupt software priority registers (ISPRx).
They can be also set/cleared by software with the RIM, SIM, HALT, WFI, IRET and
PUSH/POP instructions (see “Interrupt Dedicated Instruction Set” table).
Note:TLI, TRAP and RESET events can interrupt a level 3 program.
Interrupt software priority registers (ISPRX)
Read/Write (bit 7:4 of ISPR3 are read only)
Reset Value: 1111 1111 (FFh)
10
34/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Interrupts
70
ISPR0I1_3I0_3I1_2I0_2I1_1I0_1I1_0I0_0
ISPR1I1_7I0_7I1_6I0_6I1_5I0_5I1_4I0_4
ISPR2I1_11I0_11I1_10I0_10I1_9I0_9I1_8I0_8
ISPR31111I1_13I0_13I1_12I0_12
These four registers contain the interrupt software priority of each interrupt vector.
●Each interrupt vector (except RESET and TRAP) has corresponding bits in these
registers where its own software priority is stored. This correspondence is shown in the
following table.
Table 9.Interrupt vectors and corresponding bits
Vector addressISPRx bits
FFFBh-FFFAhI1_0 and I0_0 bits*
FFF9h-FFF8hI1_1 and I0_1 bits
......
FFE1h-FFE0hI1_13 and I0_13 bits
●Each I1_x and I0_x bit value in the ISPRx registers has the same meaning as the I1
and I0 bits in the CC register.
●Level 0 can not be written (I1_x=1, I0_x=0). In this case, the previously stored value is
The RESET, TRAP and TLI vectors have no software priorities. When one is serviced, the I1
and I0 bits of the CC register are both set.
Note:Bits in the ISPRx registers which correspond to the TLI can be read and written but they are
not significant in the interrupt process management.
Caution:If the I1_x and I0_x bits are modified while the interrupt x is executed the following behavior
has to be considered: If the interrupt x is still pending (new interrupt or flag not cleared) and
the new software priority is higher than the previous one, the interrupt x is re-entered.
Otherwise, the software priority stays unchanged up to the next interrupt request (after the
IRET of the interrupt x).
Note:During the execution of an interrupt routine, the HALT, POPCC, RIM, SIM and WFI
instructions change the current software priority up to the next IRET instruction or one of the
previously mentioned instructions.
In order not to lose the current software priority level, the RIM, SIM, HALT, WFI and POP CC
instructions should never be used in an interrupt routine.
Table 11.Interrupt mapping
Source
N°
0ICP
1UARTISO7816-3 UART InterruptUIC
2USBUSB Communication Interrupt
3WAKUP1External Interrupt Port Cyes
4WAKUP2External Interrupt Port Ayes
5TIMTBU Timer InterruptTBUSRno
6
7ESUSPEnd suspend Interrupt
block
RESETReset
TRAPSoftware Interrupt
FLASH Start programming NMI
interrupt (TLI)
CARDDET
1)
Smartcard Insertion/Removal
Interrupt
Description
1)
Register
label
N/A
USBIST
R
USCUR
USBIST
R
Priority
order
Highest
Priority
Lowest
Priority
Exit
from
HALT
yes
yes
Address
vector
FFFEh-
FFFFh
FFFCh-
FFFDh
FFFAh-
FFFBh
no
FFF8h-
FFF9h
FFF6h-
FFF7h
FFF4h-
FFF5h
FFF2h-
FFF3h
FFF0h-
FFF1h
FFEEh-
FFEFh
FFECh-
FFEDh
8Not used
Note:This interrupt can be used to exit from USB suspend mode.
36/121Doc ID 8951 Rev 6
no
FFEAh-
FFEBh
ST7SCR1E4, ST7SCR1R4Power saving modes
8 Power saving modes
8.1 Introduction
To give a large measure of flexibility to the application in terms of power consumption, two
main power saving modes are implemented in the ST7.
After a RESET the normal operating mode is selected by default (RUN mode). This mode
drives the device (CPU and embedded peripherals) by means of a master clock which is
based on the main oscillator frequency.
From Run mode, the different power saving modes may be selected by setting the relevant
register bits or by calling the specific ST7 software instruction whose action depends on the
oscillator status.
8.2 Wait mode
WAIT mode places the MCU in a low power consumption mode by stopping the CPU.
This power saving mode is selected by calling the “WFI” ST7 software instruction.
All peripherals remain active. During WAIT mode, the I bit of the CC register is forced to 0, to
enable all interrupts. All other registers and memory remain unchanged. The MCU remains
in WAIT mode until an interrupt or Reset occurs, whereupon the Program Counter branches
to the starting address of the interrupt or Reset service routine.
The MCU will remain in WAIT mode until a Reset or an Interrupt occurs, causing it to wake
up.
Refer to Figure 21.
Doc ID 8951 Rev 637/121
Power saving modesST7SCR1E4, ST7SCR1R4
WFI INSTRUCTION
RESET
INTERRUPT
Y
N
N
Y
CPU CLOCK
OSCILLATOR
PERIPH. CLOCK
I-BIT
ON
ON
CLEARED
OFF
CPU CLOCK
OSCILLATOR
PERIPH. CLOCK
I-BIT
ON
ON
SET
ON
FETCH RESET VECTOR
OR SERVICE INTERRUPT
512 CPU CLOCK
CYCLES DELAY
IF RESET
Note: Before servicing an interrupt, the CC
register is pushed on the stack. The I-Bit is set
during the interrupt routine and cleared when
the CC register is popped.
Figure 21. WAIT mode flow chart
8.3 Halt mode
The HALT mode is the MCU lowest power consumption mode. The HALT mode is entered
by executing the HALT instruction. The internal oscillator is then turned off, causing all
internal processing to be stopped, including the operation of the on-chip peripherals.
Note:The PLL must be disabled before a HALT instruction.
When entering HALT mode, the I bit in the Condition Code Register is cleared. Thus, any of
the external interrupts (ITi or USB end suspend mode), are allowed and if an interrupt
occurs, the CPU clock becomes active.
The MCU can exit HALT mode on reception of either an external interrupt on ITi, an end
suspend mode interrupt coming from USB peripheral, or a reset. The oscillator is then
turned on and a stabilization time is provided before releasing CPU operation. The
stabilization time is 512 CPU clock cycles.
38/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Power saving modes
N
N
EXTERNAL
INTERRUPT*
RESET
HALT INSTRUCTION
512 CPU CLOCK
FETCH RESET VECTOR
OR SERVICE INTERRUPT
CYCLES DELAY
CPU CLOCK
OSCILLATOR
PERIPH. CLOCK
I-BIT
ON
ON
SET
ON
CPU CLOCK
OSCILLATOR
PERIPH. CLOCK
I-BIT
OFF
OFF
CLEARED
OFF
Y
Y
Note: Before servicing an interrupt, the CC
register is pushed on the stack. The I-Bit is set
during the interrupt routine and cleared when
the CC register is popped.
After the start up delay, the CPU continues operation by servicing the interrupt which wakes
it up or by fetching the reset vector if a reset wakes it up.
Figure 22. HALT mode flow chart
Doc ID 8951 Rev 639/121
I/O portsST7SCR1E4, ST7SCR1R4
9 I/O ports
9.1 Introduction
The I/O ports offer different functional modes:
●transfer of data through digital inputs and outputs
and for specific pins:
●alternate signal input/output for the on-chip peripherals.
●external interrupt detection
An I/O port is composed of up to 8 pins. Each pin can be programmed independently as
digital input (with or without interrupt generation) or digital output.
9.2 Functional description
Each port is associated to 4 main registers:
●Data Register (DR)
●Data Direction Register (DDR)
●Option Register (OR)
●Pull Up Register (PU)
Each I/O pin may be programmed using the corresponding register bits in DDR register: bit
X corresponding to pin X of the port. The same correspondence is used for the DR register.
Table 12.I/O pin functions
DDRMODE
0Input
1Output
Input modes
The input configuration is selected by clearing the corresponding DDR register bit.
In this case, reading the DR register returns the digital value applied to the external I/O pin.
Note:All the inputs are triggered by a Schmitt trigger.
When switching from input mode to output mode, the DR register should be written first to
output the correct value as soon as the port is configured as an output.
Interrupt function
When an I/O is configured in Input with Interrupt, an event on this I/O can generate an
external Interrupt request to the CPU. The interrupt sensitivity is given independently
according to the description mentioned in the ITRFRE interrupt register.
Each pin can independently generate an Interrupt request.
Each external interrupt vector is linked to a dedicated group of I/O port pins (see Interrupts
section). If more than one input pin is selected simultaneously as interrupt source, this is
logically ORed. For this reason if one of the interrupt pins is tied low, it masks the other
ones.
40/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4I/O ports
Output Mode
The pin is configured in output mode by setting the corresponding DDR register bit (see
Ta bl e 7 ).
In this mode, writing “0” or “1” to the DR register applies this digital value to the I/O pin
through the latch. Then reading the DR register returns the previously stored value.
Note:In this mode, the interrupt function is disabled.
Digital Alternate Function
When an on-chip peripheral is configured to use a pin, the alternate function is automatically
selected. This alternate function takes priority over standard I/O programming. When the
signal is coming from an on-chip peripheral, the I/O pin is automatically configured in output
mode (push-pull or open drain according to the peripheral).
When the signal is going to an on-chip peripheral, the I/O pin has to be configured in input
mode. In this case, the pin’s state is also digitally readable by addressing the DR register.
Note:Input pull-up configuration can cause an unexpected value at the input of the alternate
peripheral input.
When the on-chip peripheral uses a pin as input and output, this pin must be configured as
an input (DDR = 0).
Warning:The alternate function must not be activated as long as the
pin is configured as input with interrupt, in order to avoid
generating spurious interrupts.
9.3 I/O port implementation
The hardware implementation on each I/O port depends on the settings in the DDR register
and specific feature of the I/O port such as true open drain.
9.3.1 Port A
Table 13.Port A description
PORT A
InputOutput
PA[5:0]without pull-up *
PA6without pull-up-
*Reset State
I / O
push-pull or open drain with software selectable
pull-up
push-pull or open drain with software selectable pull-up
ST7SCR1E4, ST7SCR1R4I/O ports
DR
LATCH
DR SEL
V
DD
PA D
ALTERNATE ENABLE
ALTERNATE ENABLE
ALTERNATE ENABLE
ALTERNATE
PULL-UP
1)
OUTPUT
P-BUFFER
N-BUFFER
1
V
SS
V
DD
DIODES
DATA BUS
OM
LATCH
PULL_UP
LATCH
0
1
0
‘0’
Note 1: selectable by PAPUCR register
DR SEL
PA D
ALTERNATE INPUT
V
DD
DIODES
CMOS SCHMITT TRIGGER
DATA BUS
PULL-UP
V
DD
Figure 25. Port B and D configuration
9.3.3 Port C
Table 15.Port C description
PORT CInput
PC[7:0]with pull-up
Figure 26. Port C configuration
9.4 Register description
Data registers (PxDR)
Port A Data Register (PADR): 0011h
Port B Data Register (PBDR): 0015h
Port C Data Register (PCDR): 0018h
Doc ID 8951 Rev 643/121
I/O portsST7SCR1E4, ST7SCR1R4
Port D Data Register (PCDR): 0019h
Read/Write
Reset Value Port A: 0000 0000 (00h)
Reset Value Port B: 0000 0000 (00h)
Reset Value Port C: 0000 0000 (00h)
Reset Value Port D: 0000 0000 (00h)
70
D7D6D5D4D3D2D1D0
Bits 7:0 = D[7:0] Data Register 8 bits.
The DR register has a specific behavior according to the selected input/output configuration.
Writing the DR register is always taken in account even if the pin is configured as an input.
Reading the DR register returns either the DR register latch content (pin configured as
output) or the digital value applied to the I/O pin (pin configured as input).
DATA DIRECTION REGISTER (PADDR)
Port A Data Direction Register (PADDR): 0012h
Read/Write
Reset Value Port A: 0000 0000 (00h)
70
DD7DD6DD5DD4DD3DD2DD1DD0
Bits 7:0 = DD7-DD0 Data Direction Register 8 bits.
The DDR register gives the input/output direction configuration of the pins. Each bits is set
and cleared by software.
0: Input mode
1: Output mode
OPTION REGISTER (PxOR)
Port x Option Register
PxOR with x = A, B, or D
Port A Option Register (PAOR): 0013h
Port B Option Register (PBOR): 0016h
Port D Option Register (PDOR): 001Ah
Read/Write
Reset Value: 0000 0000 (00h)
70
OM7OM6OM5OM4OM3OM2OM1OM0
44/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4I/O ports
Bits 7:0 = OM[7:0] Option register 8 bits.
The OR register allows to distinguish in output mode if the push-pull or open drain
configuration is selected.
Each bit is set and cleared by software.
0: Output open drain
1: Output push-pull
PULL UP CONTROL REGISTER (PxPUCR)
Port x Pull Up Register
PxPUCR with x = A, B, or D
Port A Pull up Register (PAPUCR): 0014h
Port B Pull up Register (PBPUCR): 0017h
Port D Pull up Register (PDPUCR): 001Bh
Read/Write
Reset Value: 0000 0000 (00h)
70
PU7PU6PU5PU4PU3PU2PU1PU0
Bits 7:0 = PU[7:0] Pull up register 8 bits.
The PU register is used to control the pull up.
Each bit is set and cleared by software.
0: Pull up inactive
1: Pull up active
Table 16.I/O ports register map
Address
(Hex.)
11
12
13
14
15
16
Register
label
PADR
Reset Value
PADDR
Reset Value
PAOR
Reset Value
PAPUCR
Reset Value
PBDR
Reset Value
PBOR
Reset Value
765 43210
MSB
000 0000
MSB
000 0000
MSB
000 0000
MSB
000 0000
MSB
000 0000
MSB
000 0000
LSB
0
LSB
0
LSB
0
LSB
0
LSB
0
LSB
0
Doc ID 8951 Rev 645/121
I/O portsST7SCR1E4, ST7SCR1R4
Table 16.I/O ports register map (continued)
Address
(Hex.)
17
18
19
1A
1B
Register
label
PBPUCR
Reset Value
PCDR
Reset Value
PDDR
Reset Value
PDOR
Reset Value
PDPUCR
Reset Value
765 43210
MSB
000 0000
MSB
000 0000
MSB
000 0000
MSB
000 0000
MSB
000 0000
LSB
0
LSB
0
LSB
0
LSB
0
LSB
0
46/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Miscellaneous registers
10 Miscellaneous registers
Miscellaneous register 1 (MISCR1)
Reset Value: 0000 0000 (00h)
Read/Write
70
ITM7ITM6ITM5ITM4ITM3ITM2ITM1ITM0
Writing the ITIFREC register enables or disables external interrupt on Port C. Each bit can
be masked independently. The ITMx bit masks the external interrupt on PC.x.
Bits[7:0] = ITM [7:0] Interrupt Mask
0: external interrupt disabled
1: external interrupt enabled
Miscellaneous register 2 (MISCR2)
Reset Value: 0000 0000 (00h)
Read/Write
70
-
CRD
IRM
ITM14ITM13ITM12ITM11ITM10ITM9
Writing the ITIFREA register enables or disables external interrupt on port A.
Bit 7 = Reserved.
Bit 6 = CRDIRM CRD Insertion/Removal Interrupt Mask
0: CRDIR interrupt disabled
1: CRDIR interrupt enabled
Bits [5:0] = ITM [14:9] Interrupt Mask
Bit x of MISCR2 masks the external interrupt on port A.x.
Bit x = ITM n Interrupt Mask n
0: external interrupt disabled on PA.x.
1: external interrupt enabled on PA.x.
Miscellaneous register 3 (MISCR3)
Reset Value: 0000 0000 (00h)
Doc ID 8951 Rev 647/121
Miscellaneous registersST7SCR1E4, ST7SCR1R4
Read/Write
70
CTRL1_ACTRL0_ACTRL1_CCTRL0_C----
This register is used to configure the edge and the level sensitivity of the Port A and Port C
external interrupt. This means that all bits of a port must have the same sensitivity.
If a write access modifies bits 7:4, it clears the pending interrupts.
CTRL0_C, CTRL1_C: Sensitivity on port C
CTRL0_A, CTRL1_A: Sensitivity on port A
CTRL1_X CTRL0_XExternal interrupt sensitivity
00Falling edge & low level
01Rising edge only
10Falling edge only
11Rising and falling edge
Miscellaneous register 4 (MISCR4)
Reset Value: 0000 0000 (00h).
Read/Write
70
-PLL_ONCLK_SEL----LOCK
Bit 7 = Reserved.
Bit 6 = PLL_ON PLL Activation
0: PLL disabled
1: PLL enabled
Note: The PLL must be disabled before a HALT instruction.
Bit 5 = CLK_SEL Clock Selection
This bit is set and cleared by software.
0: CPU frequency = 4MHz
1: CPU frequency = 8MHz
Bits 4:1 = Reserved.
Bit 0 = LOCK PLL status bit
0: PLL not locked. f
1: PLL locked. f
48/121Doc ID 8951 Rev 6
CPU
CPU
= f
external clock frequency.
OSC
= 4 or 8 MHz depending on CLKSEL bit.
ST7SCR1E4, ST7SCR1R4Miscellaneous registers
Table 17.Register map and reset values
Address
(Hex.)
001C
001D
001E
001Fh
s
Register
label
MISCR1
Reset Value
MISCR2
Reset Value
MISCR3
Reset Value
MISCR4
Reset Value
7 6 5 4 3210
ITM7
0
ITM6
0
00
CTRL1_A0CTRL0_A0CTRL1_C0CTRL0_C
0
PLL_ON0RST_IN0CLK_SE
ITM5
0
ITM14
0
ITM4
0
ITM30ITM20ITM1
0
ITM0
0
ITM130ITM120ITM110ITM100ITM9
0
0
0L
0000
000
LOCK
0
Doc ID 8951 Rev 649/121
LEDsST7SCR1E4, ST7SCR1R4
11 LEDs
Each of the four available LEDs can be selected using the LED_CTRL register. Two types of
LEDs are supported: 3mA and 7mA.
LED_CTRL register
Reset Value: 0000 0000 (00h)
Read/Write
70
LD3LD2LD1LD0LD3_ILD2_ILD1_ILD0_I
Bits 7:4 = LDx LED Enable
0: LED disabled
1: LED enabled
Bits 3:0 = LDx_I Current selection on LDx
0: 3mA current on LDx pad
1: 7mA current on LDx pad
50/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
12 On-chip peripherals
12.1 Watchdog timer (WDG)
12.1.1 Introduction
The Watchdog timer is used to detect the occurrence of a software fault, usually generated
by external interference or by unforeseen logical conditions, which causes the application
program to abandon its normal sequence. The Watchdog circuit generates an MCU reset on
expiry of a programmed time period, unless the program refreshes the counter’s contents
before the T6 bit becomes cleared.
12.1.2 Main features
●Programmable free-running downcounter (64 increments of 65536 CPU cycles)
●Programmable reset
●Reset (if watchdog activated) when the T6 bit reaches zero
●Hardware Watchdog selectable by option byte
●Watchdog Reset indicated by status flag
12.1.3 Functional description
The counter value stored in the CR register (bits T[6:0]), is decremented every 65,536
machine cycles, and the length of the timeout period can be programmed by the user in 64
increments.
If the watchdog is activated (the WDGA bit is set) and when the 7-bit timer (bits T[6:0]) rolls
over from 40h to 3Fh (T6 becomes cleared), it initiates a reset cycle pulling low the reset pin
for typically 500ns.
The application program must write in the CR register at regular intervals during normal
operation to prevent an MCU reset. This downcounter is free-running: it counts down even if
the watchdog is disabled. The value to be stored in the CR register must be between FFh
and C0h (see Table 18).
●The WDGA bit is set (watchdog enabled)
●The T6 bit is set to prevent generating an immediate reset
●The T[5:0] bits contain the number of increments which represents the time delay
before the watchdog produces a reset.
.)
Table 18.Watchdog timing (f
CR register initial valueWDG timeout period (ms)
MaxFFh524.288
MinC0h8.192
= 8 MHz)
CPU
Doc ID 8951 Rev 651/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
RESET
WDGA
7-BIT DOWNCOUNTER
f
CPU
T6
T0
CLOCK DIVIDER
WATCHDOG CONTROL REGISTER (CR)
÷65536
T1
T2
T3
T4
T5
Figure 27. Watchdog block diagram
12.1.4 Software watchdog option
If Software Watchdog is selected by option byte, the watchdog is disabled following a reset.
Once activated it cannot be disabled, except by a reset.
The T6 bit can be used to generate a software reset (the WDGA bit is set and the T6 bit is
cleared).
12.1.5 Hardware watchdog option
If Hardware Watchdog is selected by option byte, the watchdog is always active and the
WDGA bit in the CR is not used.
12.1.6 Low power modes
WAIT Instruction
No effect on Watchdog.
HALT Instruction
Halt mode can be used when the watchdog is enabled. When the oscillator is stopped, the
WDG stops counting and is no longer able to generate a reset until the microcontroller
receives an external interrupt or a reset.
If an external interrupt is received, the WDG restarts counting after 514 CPU clocks. In the
case of the Software Watchdog option, if a reset is generated, the WDG is disabled (reset
state).
Recommendations
●Make sure that an external event is available to wake up the microcontroller from Halt
mode.
●Before executing the HALT instruction, refresh the WDG counter, to avoid an
unexpected WDG reset immediately after waking up the microcontroller.
●When using an external interrupt to wake up the microcontroller, reinitialize the
corresponding I/O as Input before executing the HALT instruction. The main reason for
52/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
this is that the I/O may be wrongly configured due to external interference or by an
unforeseen logical condition.
●The opcode for the HALT instruction is 0x8E. To avoid an unexpected HALT instruction
due to a program counter failure, it is advised to clear all occurrences of the data value
0x8E from memory. For example, avoid defining a constant in ROM with the value
0x8E.
●As the HALT instruction clears the I bit in the CC register to allow interrupts, the user
may choose to clear all pending interrupt bits before executing the HALT instruction.
This avoids entering other peripheral interrupt routines after executing the external
interrupt routine corresponding to the wake-up event (reset or external interrupt).
12.1.7 Interrupts
None.
12.1.8 Register description
Control register (CR)
Read/Write
Reset Value: 0111 1111 (7Fh)
70
WDGAT6T5T4T3T2T1T0
Bit 7 = WDGA Activation bit.
This bit is set by software and only cleared by hardware after a reset. When WDGA = 1, the
watchdog can generate a reset.
0: Watchdog disabled
1: Watchdog enabled
Note:This bit is not used if the hardware watchdog option is enabled by option byte.
Bit 6:0 = T[6:0] 7-bit timer (MSB to LSB).
These bits contain the decremented value. A reset is produced when it rolls over from 40h to
3Fh (T6 becomes cleared).
12.2 Time base unit (TBU)
12.2.1 Introduction
The Timebase unit (TBU) can be used to generate periodic interrupts.
Doc ID 8951 Rev 653/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
TBU 8-BIT UPCOUNTER (TBUCV REGISTER)
INTERRUPT REQUEST
TBU PRESCALER
f
CPU
TBUCSR REGISTER
PR1 PR0PR2TCENITEOVF
MSB
LSB
0
0
1
TBU
0
12.2.2 Main features
●8-bit upcounter
●Programmable prescaler
●Period between interrupts: max. 8.1ms (at 8 MHz f
●Maskable interrupt
CPU
)
12.2.3 Functional description
The TBU operates as a free-running upcounter.
When the TCEN bit in the TBUCSR register is set by software, counting starts at the current
value of the TBUCV register. The TBUCV register is incremented at the clock rate output
from the prescaler selected by programming the PR[2:0] bits in the TBUCSR register.
When the counter rolls over from FFh to 00h, the OVF bit is set and an interrupt request is
generated if ITE is set.
The user can write a value at any time in the TBUCV register.
12.2.4 Programming example
In this example, timer is required to generate an interrupt after a delay of 1 ms.
Assuming that f
is 8 MHz and a prescaler division factor of 256 will be programmed
CPU
using the PR[2:0] bits in the TBUCSR register, 1 ms = 32 TBU timer ticks.
In this case, the initial value to be loaded in the TBUCV must be (256-32) = 224 (E0h).
ld A, E0h
ld TBUCV, A ; Initialize counter value
ld A 1Fh ;
ld TBUCSR, A; Prescaler factor = 256,
; interrupt enable,
; TBU enable
Figure 28. TBU block diagram
54/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
12.2.5 Low power modes
Mode Description
WAITNo effect on TBU
HALTTBU halted.
12.2.6 Interrupts
Interrupt eventEvent flag
Counter Overflow EventOVFITEYesNo
Enable control
bit
Exit from WaitExit from Halt
Note:The OVF interrupt event is connected to an interrupt vector (see Interrupts chapter).
It generates an interrupt if the ITE bit is set in the TBUCSR register and the I-bit in the CC
register is reset (RIM instruction).
12.2.7 Register description
TBU counter value register (TBUCV)
Read/Write
Reset Value: 0000 0000 (00h)
70
CV7CV6CV5CV4CV3CV2CV1CV0
Bits 7:0 = CV[7:0] Counter Value
This register contains the 8-bit counter value which can be read and written anytime by
software. It is continuously incremented by hardware if TCEN=1.
TBU control/status register (TBUCSR)
Read/Write
Reset Value: 0000 0000 (00h)
70
00OVFITETCENPR2PR1PR0
Bits [7:6] = Reserved. Forced by hardware to 0.
Bit 5 = OVF Overflow Flag
This bit is set only by hardware, when the counter value rolls over from FFh to 00h. It is
cleared by software reading the TBUCSR register. Writing to this bit does not change the bit
value.
0: No overflow
1: Counter overflow
Doc ID 8951 Rev 655/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
Bit 4 = ITE Interrupt enabled.
This bit is set and cleared by software.
0: Overflow interrupt disabled
1: Overflow interrupt enabled. An interrupt request is generated when OVF=1.
Bit 3 = TCEN TBU Enable.
This bit is set and cleared by software.
0: TBU counter is frozen and the prescaler is reset.
1: TBU counter and prescaler running.
Bits 2:0 = PR[2:0] Prescaler Selection
These bits are set and cleared by software to select the prescaling factor.
PR2PR1PR0Prescaler Division Factor
0002
0014
0108
01116
10032
10164
110128
111256
12.3 USB interface (USB)
12.3.1 Introduction
The USB Interface implements a full-speed function interface between the USB and the ST7
microcontroller. It is a highly integrated circuit which includes the transceiver, 3.3 voltage
regulator, SIE and USB Data Buffer interface. No external components are needed apart
from the external pull-up on USBDP for full speed recognition by the USB host.
12.3.2 Main features
●USB Specification Version 1.1 Compliant
●Supports Full-Speed USB Protocol
●Seven Endpoints (including default endpoint)
●CRC generation/checking, NRZI encoding/decoding and bit-stuffing
●USB Suspend/Resume operations
●On-Chip 3.3V Regulator
●On-Chip USB Transceiver
56/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
CPU
Transceiver
3.3V
Voltage
Regulator
SIE
ENDPOINT
BUFFER
USB
Address,
and interrupts
USBDM
USBDP
USBVCC
48 MHz
REGISTERS
REGISTERS
data busses
USBGND
BUFFER
USB
DATA
INTERFACE
12.3.3 Functional description
The block diagram in Figure 29, gives an overview of the USB interface hardware.
For general information on the USB, refer to the “Universal Serial Bus Specifications”
document available at http//:www.usb.org.
Serial interface engine
The SIE (Serial Interface Engine) interfaces with the USB, via the transceiver.
The SIE processes tokens, handles data transmission/reception, and handshaking as
required by the USB standard. It also performs frame formatting, including CRC generation
and checking.
Endpoints
The Endpoint registers indicate if the microcontroller is ready to transmit/receive, and how
many bytes need to be transmitted.
Data transfer to/from USB data buffer memory
When a token for a valid Endpoint is recognized by the USB interface, the related data
transfer takes place to/from the USB data buffer. At the end of the transaction, an interrupt is
generated.
Interrupts
By reading the Interrupt Status register, application software can know which USB event has
occurred.
Figure 29. USB block diagram
USB endpoint RAM buffers
There are seven Endpoints including one bidirectional control Endpoint (Endpoint 0), five IN
Endpoints (Endpoint 1, 2, 3, 4, 5) and one OUT endpoint (Endpoint 2).
Endpoint 0 is 2 x 8 bytes in size, Endpoint 1, 3, 4, and Endpoint 5 are 8 bytes in size and
Endpoint 2 is 2 x 64 bytes in size.
Doc ID 8951 Rev 657/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
Endpoint 2 Buffer OUT
Endpoint 1 Buffer IN
Endpoint 0 Buffer IN
Endpoint 0 Buffer OUT
Endpoint 2 Buffer IN
8 Bytes
8 Bytes
8 Bytes
64 Bytes
64 Bytes
Endpoint 3 Buffer IN
8 Bytes
Endpoint 5 Buffer IN
Endpoint 4 Buffer IN
8 Bytes
8 Bytes
Figure 30. Endpoint buffer size
12.3.4 Register description
Interrupt status register (USBISTR)
Read/Write
Reset Value: 0000 0000 (00h)
70
CTR0SOVRERRORSUSPESUSPRESETSOF
These bits cannot be set by software. When an interrupt occurs these bits are set by
hardware. Software must read them to determine the interrupt type and clear them after
servicing.
Note:The CTR bit (which is an OR of all the endpoint CTR flags) cannot be cleared directly, only
by clearing the CTR flags in the Endpoint registers.
Bit 7 = CTR Correct Transfer.
This bit is set by hardware when a correct transfer operation is performed. This bit is an OR
of all CTR flags (CTR0 in the EP0R register and CTR_RX and CTR_TX in the EPnRXR and
EPnTXR registers). By looking in the USBSR register, the type of transfer can be
determined from the PID[1:0] bits for Endpoint 0. For the other Endpoints, the Endpoint
number on which the transfer was made is identified by the EP[1:0] bits and the type of
transfer by the IN/OUT bit.
0: No Correct Transfer detected
1: Correct Transfer detected
Note:A transfer where the device sent a NAK or STALL handshake is considered not correct (the
host only sends ACK handshakes). A transfer is considered correct if there are no errors in
the PID and CRC fields, if the DATA0/DATA1 PID is sent as expected, if there were no data
overruns, bit stuffing or framing errors.
58/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Bit 6 = Reserved, forced by hardware to 0.
Bit 5 = SOVR Setup Overrun.
This bit is set by hardware when a correct Setup transfer operation is performed while the
software is servicing an interrupt which occurred on the same Endpoint (CTR0 bit in the
EP0R register is still set when SETUP correct transfer occurs).
0: No SETUP overrun detected
1: SETUP overrun detected
When this event occurs, the USBSR register is not updated because the only source of the
SOVR event is the SETUP token reception on the Control Endpoint (EP0).
Bit 4 = ERR Error.
This bit is set by hardware whenever one of the errors listed below has occurred:
0: No error detected
1: Timeout, CRC, bit stuffing, nonstandard
framing or buffer overrun error detected
Note:Refer to the ERR[2:0] bits in the USBSR register to determine the error type.
Bit 3 = SUSP Suspend mode request.
This bit is set by hardware when a constant idle state is present on the bus line for more
than 3 ms, indicating a suspend mode request from the USB.
The suspend request check is active immediately after each USB reset event and is
disabled by hardware when suspend mode is forced (FSUSP bit in the USBCTLR register)
until the end of resume sequence.
Bit 2 = ESUSP End Suspend mode.
This bit is set by hardware when, during suspend mode, activity is detected that wakes the
USB interface up from suspend mode.
This interrupt is serviced by a specific vector, in order to wake up the ST7 from HALT mode.
0: No End Suspend detected
1: End Suspend detected
Bit 1 = RESET USB reset.
This bit is set by hardware when the USB reset sequence is detected on the bus.
0: No USB reset signal detected
1: USB reset signal detected
Note:The DADDR, EP0R, EP1RXR, EP1TXR, EP2RXR and EP2TXR registers are reset by a
USB reset.
Doc ID 8951 Rev 659/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
Bit 0 = SOF Start of frame.
This bit is set by hardware when a SOF token is received on the USB.
0: No SOF received
1: SOF received
Note:To avoid spurious clearing of some bits, it is recommended to clear them using a load
instruction where all bits which must not be altered are set, and all bits to be cleared are
reset. Avoid read-modify-write instructions like AND, XOR...
Interrupt mask register (USBIMR)
Read/Write
Reset Value: 0000 0000 (00h)
70
CTRM0SOVRMERRMSUSPM
ESUSP
M
RESETMSOFM
These bits are mask bits for all the interrupt condition bits included in the USBISTR register.
Whenever one of the USBIMR bits is set, if the corresponding USBISTR bit is set, and the Ibit in the CC register is cleared, an interrupt request is generated. For an explanation of
each bit, please refer to the description of the USBISTR register.
Control register (USBCTLR)
Read/Write
Reset value: 0000 0110 (06h)
70
RSM
USB_
RST
00RESUMEPDWNFSUSPFRES
Bit 7 = RSM Resume Detected
This bit shows when a resume sequence has started on the USB port, requesting the USB
interface to wake-up from suspend state. It can be used to determine the cause of an
ESUSP event.
0: No resume sequence detected on USB
1: Resume sequence detected on USB
Bit 6 = USB_RST USBReset detected.
This bit shows that a reset sequence has started on the USB. It can be used to determine
the cause of an ESUSP event (Reset sequence).
0: No reset sequence detected on USB
1: Reset sequence detected on USB
Bits [5:4] = Reserved, forced by hardware to 0.
60/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Bit 3 = RESUME Resume.
This bit is set by software to wake-up the Host when the ST7 is in suspend mode.
0: Resume signal not forced
1: Resume signal forced on the USB bus.
Software should clear this bit after the appropriate delay.
Bit 2 = PDWN Power down.
This bit is set by software to turn off the 3.3V on-chip voltage regulator that supplies the
external pull-up resistor and the transceiver.
0: Voltage regulator on
1: Voltage regulator off
Note:After turning on the voltage regulator, software should allow at least 3 µs for stabilization of
the power supply before using the USB interface.
Bit 1 = FSUSP Force suspend mode.
This bit is set by software to enter Suspend mode. The ST7 should also be put in Halt mode
to reduce power consumption.
0: Suspend mode inactive
1: Suspend mode active
When the hardware detects USB activity, it resets this bit (it can also be reset by software).
Bit 0 = FRES Force reset.
This bit is set by software to force a reset of the USB interface, just as if a RESET sequence
came from the USB.
0: Reset not forced
1: USB interface reset forced.
The USB is held in RESET state until software clears this bit, at which point a “USB-RESET”
interrupt will be generated if enabled.
Device address register (DADDR)
Read/Write
Reset Value: 0000 0000 (00h)
70
0ADD6ADD5ADD4ADD3ADD2ADD1ADD0
Bit 7 = Reserved, forced by hardware to 0.
Bits 6:0 = ADD[6:0] Device address, 7 bits.
Software must write into this register the address sent by the host during enumeration.
Doc ID 8951 Rev 661/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
Note:This register is also reset when a USB reset is received or forced through bit FRES in the
USB token PIDs are encoded in four bits. PID[1:0] correspond to the most significant bits of
the PID field of the last token PID received by Endpoint 0.
The least significant PID bits have a fixed value of 01.
When a CTR interrupt occurs on Endpoint 0 (see register USBISTR) the software should
read the PID[1:0] bits to retrieve the PID name of the token received.
The USB specification defines PID bits as:
PID1PID0PID name
00OUT
10IN
11SETUP
Bit 5 = IN/OUT Last transaction direction for Endpoint 1, 2, 3, 4 or 5.
This bit is set by hardware when a CTR interrupt occurs on Endpoint 1, 2, 3, 4 or 5.
0: OUT transaction
1: IN transaction
Bits 4:3 = Reserved, forced by hardware to 0.
Bits 2:0 = EP[2:0] Endpoint number.
These bits identify the endpoint which required attention.
000 = Endpoint 0
001 = Endpoint 1
010 = Endpoint 2
011 = Endpoint 3
100 = Endpoint 4
101 = Endpoint 5
62/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Error status register (ERRSR)
Read only
Reset Value: 0000 0000 (00h)
70
00000ERR2ERR1ERR0
Bits 7:3 = Reserved, forced by hardware to 0.
Bits 2:0 = ERR[2:0] Error type.
These bits identify the type of error which occurred.
ERR2ERR1ERR0Meaning
000No error
001Bitstuffing error
010CRC error
011
EOP error (unexpected end of packet or SE0 not followed
by J-state)
100PID error (PID encoding error, unexpected or unknown PID)
101
111Other error (wrong packet, timeout error)
Memory over / underrun (memory controller has not
answered in time to a memory data request)
Note:These bits are set by hardware when an error interrupt occurs and are reset automatically
when the error bit (USBISTR bit 4) is cleared by software.
Endpoint 0 register (EP0R)
Read/Write
Reset value: 0000 0000(00h)
70
CTR0DTOG_TX
STAT_
TX1
STAT_
TX0
0DTOG_RX
STAT_
RX1
STAT_
RX0
This register is used for controlling Endpoint 0.
Bits 6:4 and bits 2:0 are also reset by a USB reset, either received from the USB or forced
through the FRES bit in USBCTLR.
Bit 7 = CTR0 Correct Transfer.
This bit is set by hardware when a correct transfer operation is performed on Endpoint 0.
This bit must be cleared after the corresponding interrupt has been serviced.
0: No CTR on Endpoint 0
1: Correct transfer on Endpoint 0
Doc ID 8951 Rev 663/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
Bit 6 = DTOG_TXData Toggle, for transmission transfers.
It contains the required value of the toggle bit (0=DATA0, 1=DATA1) for the next transmitted
data packet. This bit is set by hardware on reception of a SETUP PID. DTOG_TX toggles
only when the transmitter has received the ACK signal from the USB host. DTOG_TX and
also DTOG_RX are normally updated by hardware, on receipt of a relevant PID. They can
be also written by the user, both for testing purposes and to force a specific (DATA0 or
DATA1) token.
Bits 5:4 = STAT_TX [1:0]Status bits, for transmission transfers.
These bits contain the information about the endpoint status, which are listed below
Table 19.Transmission status encoding
STAT_TX1STAT_TX0Meaning
DISABLED: no function can be executed on this
00
endpoint and messages related to this endpoint are
ignored.
01
10
11
STALL: the endpoint is stalled and all transmission
requests result in a STALL handshake.
NAK: the endpoint is NAKed and all transmission
requests result in a NAK handshake.
VALID: this endpoint is enabled (if an address match
occurs, the USB interface handles the transaction).
These bits are written by software. Hardware sets the STAT_TX and STAT_RX bits to NAK
when a correct transfer has occurred (CTR=1) addressed to this endpoint; this allows
software to prepare the next set of data to be transmitted.
Bit 3 = Reserved, forced by hardware to 0.
Bit 2 = DTOG_RX Data Toggle, for reception transfers.
It contains the expected value of the toggle bit (0=DATA0, 1=DATA1) for the next data
packet. This bit is cleared by hardware in the first stage (Setup Stage) of a control transfer
(SETUP transactions start always with DATA0 PID). The receiver toggles DTOG_RX only if it
receives a correct data packet and the packet’s data PID matches the receiver sequence bit.
Bits 1:0 = STAT_RX [1:0]Status bits, for reception transfers.
These bits contain the information about the endpoint status, which are listed below:
Table 20.Reception status encoding
STAT_RX1STAT_RX0Meaning
DISABLED: no function can be executed on this
00
01
64/121Doc ID 8951 Rev 6
endpoint and messages related to this endpoint are
ignored.
STALL: the endpoint is stalled and all reception
requests result in a STALL handshake.
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Table 20.Reception status encoding
STAT_RX1STAT_RX0Meaning
10
11
NAK: the endpoint is NAKed and all reception requests
result in a NAK handshake.
VALID: this endpoint is enabled (if an address match
occurs, the USB interface handles the transaction).
These bits are written by software. Hardware sets the STAT_RX and STAT_TX bits to NAK
when a correct transfer has occurred (CTR=1) addressed to this endpoint, so the software
has the time to examine the received data before acknowledging a new transaction.
Note:If a SETUP transaction is received while the status is different from DISABLED, it is
acknowledged and the two directional status bits are set to NAK by hardware.
When a STALL is answered by the USB device, the two directional status bits are set to
STALL by hardware.
This register is used for controlling Endpoint 1, 2, 3, 4 or 5 transmission. Bits 2:0 are also
reset by a USB reset, either received from the USB or forced through the FRES bit in the
USBCTLR register.
STAT_
TX0
Bits [7:4] = Reserved, forced by hardware to 0.
Bit 3 = CTR_TX Correct Transmission Transfer.
This bit is set by hardware when a correct transfer operation is performed in transmission.
This bit must be cleared after the corresponding interrupt has been serviced.
0: No CTR in transmission on Endpoint 1, 2, 3, 4 or 5
1: Correct transfer in transmission on Endpoint 1, 2, 3, 4 or 5
Bit 2 = DTOG_TXData Toggle, for transmission transfers.
This bit contains the required value of the toggle bit (0=DATA0, 1=DATA1) for the next data
packet. DTOG_TX toggles only when the transmitter has received the ACK signal from the
USB host. DTOG_TX and DTOG_RX are normally updated by hardware, at the receipt of a
relevant PID. They can be also written by the user, both for testing purposes and to force a
specific (DATA0 or DATA1) token.
Bits [1:0] = STAT_TX [1:0]Status bits, for transmission transfers.
These bits contain the information about the endpoint status, which is listed below
Doc ID 8951 Rev 665/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
Table 21.Transmission status encoding
STAT_TX1STAT_TX0Meaning
00
01
10
11VALID: this endpoint is enabled for transmission.
DISABLED: transmission transfers cannot be
executed.
STALL: the endpoint is stalled and all transmission
requests result in a STALL handshake.
NAK: the endpoint is naked and all transmission
requests result in a NAK handshake.
These bits are written by software, but hardware sets the STAT_TX bits to NAK when a
correct transfer has occurred (CTR=1) addressed to this endpoint. This allows software to
prepare the next set of data to be transmitted.
Endpoint 2 reception register (EP2RXR)
Read/Write
Reset value: 0000 0000 (00h)
70
0000CTR_RXDTOG_RX
STAT_
RX1
STAT_
RX0
This register is used for controlling Endpoint 2 reception. Bits 2:0 are also reset by a USB
reset, either received from the USB or forced through the FRES bit in the USBCTLR
register.
Bits [7:4] = Reserved, forced by hardware to 0.
Bit 3 = CTR_RX Reception Correct Transfer.
This bit is set by hardware when a correct transfer operation is performed in reception. This
bit must be cleared after that the corresponding interrupt has been serviced.
Bit 2 = DTOG_RX Data Toggle, for reception transfers.
It contains the expected value of the toggle bit (0=DATA0, 1=DATA1) for the next data
packet.
The receiver toggles DTOG_RX only if it receives a correct data packet and the packet’s
data PID matches the receiver sequence bit.
Bits [1:0] = STAT_RX [1:0]Status bits, for reception transfers.
These bits contain the information about the endpoint status, which is listed below:
66/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Table 22.Reception status encoding
STAT_RX1STAT_RX0Meaning
00DISABLED: reception transfers cannot be executed.
01
STALL: the endpoint is stalled and all reception
requests result in a STALL handshake.
10
11VALID: this endpoint is enabled for reception.
NAK: the endpoint is naked and all reception requests
result in a NAK handshake.
These bits are written by software, but hardware sets the STAT_RX bits to NAK when a
correct transfer has occurred (CTR=1) addressed to this endpoint, so the software has the
time to examine the received data before acknowledging a new transaction.
Reception counter register (CNT0RXR)
Read/Write
Reset Value: 0000 0000 (00h)
70
0000CNT3CNT2CNT1CNT0
This register contains the allocated buffer size for endpoint 0 reception, setting the
maximum number of bytes the related endpoint can receive with the next OUT or SETUP
transaction. At the end of a reception, the value of this register is the max size decremented
by the number of bytes received (to determine the number of bytes received, the software
must subtract the content of this register from the allocated buffer size).
This register contains the number of bytes to be transmitted by Endpoint 0, 1, 3, 4 or 5 at the
next IN token addressed to it.
Reception counter register (CNT2RXR)
Read/Write
Reset Value: 0000 0000 (00h)
70
0CNT6CNT5CNT4CNT3CNT2CNTCNT0
This register contains the allocated buffer size for endpoint 2 reception, setting the
maximum number of bytes the related endpoint can receive with the next OUT transaction.
Doc ID 8951 Rev 667/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
At the end of a reception, the value of this register is the max size decremented by the
number of bytes received (to determine the number of bytes received, the software must
subtract the content of this register from the allocated buffer size).
Transmission counter register (CNT2TXR)
Read/Write
Reset Value 0000 0000 (00h)
70
0CNT6CNT5CNT4CNT3CNT2CNT1CNT0
This register contains the number of bytes to be transmitted by Endpoint 2 at the next IN
token addressed to it.
Table 23.USB register map and reset values
Address
(Hex.)
20
21
22
23
24
25
26
27
Register
name
USBISTR
Reset Value
USBIMR
Reset Value
USBCTLR
Reset Value
DADDR
Reset Value
USBSR
Reset Value
EP0R
Reset Value
CNT0RXR
Reset Value
CNT0TXR
Reset Value
76543210
CTR
0
CTRM
0
RSM
0
0
PID1
0
CTR0
0
00 0 0
00 0 0
0
0
0
0
USB_RS
T
0
ADD6
0
PID00IN /OUT
DTOG_T
X
0
SOVR
SOVRM0ERRM0SUSPM0ESUSPM0RESETM0SOFM
ADD5
STAT_TX
ERR
0
00
0
0
1
0
0
ADD4
0
00
STAT_TX
0
0
SUSP0ESUSP0RESET
RESUM
ADD3
CNT3
CNT3
E
0
0
0
0
0
0
PDWN1FSUSP
ADD2
0
EP2
0
DTOG_R
X
0
CNT2
0
CNT2
0
ADD1
EP1
STAT_RX
CNT1
CNT1
SOF
0
1
0
0
1
0
0
0
0
0
FRES
0
ADD0
0
EP0
0
STAT_RX
0
0
CNT0
0
CNT0
0
EP1TXR
28
Reset Value
CNT1TXR
29
Reset Value
EP2RXR
2A
Reset Value
CNT2RXR
2B
Reset Value
68/121Doc ID 8951 Rev 6
00 0 0
00 0 0
00 0 0
0
CNT6
0
CNT5
0
CNT4
0
CTR_TX
0
CNT3
0
CTR_RX
0
CNT3
0
DTOG_T
X
0
CNT2
0
DTOG_R
X
0
CNT2
0
STAT_TX
1
0
CNT1
0
STAT_RX
1
0
CNT1
0
STAT_TX
0
0
CNT0
0
STAT_RX
0
0
CNT0
0
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Table 23.USB register map and reset values (continued)
Address
(Hex.)
2C
2D
2E
2F
30
31
32
33CNT5TXR0000
34ERRSR00000
Register
name
EP2TXR
Reset Value
CNT2TXR
Reset Value
EP3TXR
Reset Value
CNT3TXR
Reset Value
EP4TXR
Reset Value
CNT4TXR
Reset Value
EP5TXR
Reset Value
76543210
00 0 0
0
00 0 0
00 0 0
00 0 0
00 0 0
00 0 0
CNT6
0
CNT5
0
CNT4
0
CTR_TX
0
CNT3
0
CTR_TX
0
CNT3
0
CTR_TX
0
CNT3
0
CTR_TX
0
CNT3
0
DTOG_T
X
0
CNT2
0
DTOG_T
X
0
CNT2
0
DTOG_T
X
0
CNT2
0
DTOG_T
X
0
CNT2
0
ERR2
0
STAT_TX
1
0
CNT1
0
STAT_TX
1
0
CNT1
0
STAT_TX
1
0
CNT1
0
STAT_TX
1
0
CNT1
0
ERR1
0
STAT_TX
0
0
CNT0
0
STAT_TX
0
0
CNT0
0
STAT_TX
0
0
CNT0
0
STAT_TX
0
0
CNT0
0
ERR0
0
12.4 Smartcard interface (CRD)
12.4.1 Introduction
The Smartcard Interface (CRD) provides all the required signals for acting as a smartcard
interface device.
The interface is electrically compatible with (and certifiable to) the ISO7816, EMV, GSM and
WHQL standards.
Both synchronous (e.g. memory cards) and asynchronous smartcards (e.g. microprocessor
cards) are supported.
The CRD generates the required voltages to be applied to the smartcard lines.
The power-off sequence is managed by the CRD.
Card insertion or card removal is detected by the CRD using a card presence switch
connected to the external CRDDET pin. If a card is removed, the CRD automatically
deactivates the smartcard using the ISO7816 deactivation sequence.
An maskable interrupt is generated when a card is inserted or removed.
Doc ID 8951 Rev 669/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
CLK
SEL
CRD
CLK
CRDCCR
IO
CRD
CRD CRD
RST VCC
C8
CRD
C4
CRD
CRDIO
CRDC4
CRDC8
CRDRST
CRDCLK
CRDDET
0
1
UART SHIFT REGISTER
CRDRXB
CRDTXB
UART RECEIVE BUFFER
UART TRANSMIT BUFFER
CARD DETECTION
CARD INSERTION/
CRDVCC
POWER-OFF LOGIC
CLOCK
CONTROL
UART BIT
11-BIT
4 MHz
ETU COUNTER
9-BIT GUARDTIME COUNTER
24-BIT WAITING TIME COUNTER
PARITY GENERATION/CHECKING
COMMUNICATIONS CONTROL
CRD INTERRUPT
LOGIC
REMOVAL INTERRUPT
Any malfunction is reported to the microcontroller via the Smartcard Interrupt Pending
Register (CRDIPR) and Smartcard Status (CRDSR) Registers.
12.4.2 Main features
●Support for ISO 7816-3 standard
●Character mode
●1 transmit buffer and 1 receive buffer
●4-MHz fixed card clock
●11-bit etu (elementary time unit) counter
●9-bit guardtime counter
●24-bit general purpose waiting time counter
●Parity generation and checking
●Automatic character repetition on parity error detection in transmission mode
●Automatic retry on parity error detection in reception mode
●Card power-off deactivation sequence generation
●Manual mode for driving the card I/O directly for synchronous protocols
12.4.3 Functional description
70/121Doc ID 8951 Rev 6
Figure 31 gives an overview of the smartcard interface.
Figure 31. Smartcard interface block diagram
Power supply management
Smartcard Power Supply Selection
The Smartcard interface consists of a power supply output on the CRDVCC pin and a set of
card interface I/Os which are powered by the same rail.
ST7SCR1E4, ST7SCR1R4On-chip peripherals
The card voltage (CRDVCC) is user programmable via the VCARD [1:0] bits in the CRDCR
register (refer to the Smartcard Interface section).
Four card supply voltages can be selected: 5 V, 3 V, 1.8 V or 0 V. The internal step-up
converter must be activated to supply the 5 V card voltage. To enable the step-up converter,
the user must turn on the PLL by setting the PLL_ON bit in the MISCR4 register. The stepup converter switching frequency is then of 750 kHz (f
= 4 MHz).
OSC
Current Overload Detection and Card Removal
For each voltage, when an overload current is detected (refer to section 12.4 on page 69), or
when a card is removed, the CRDVCC power supply output is directly connected to ground.
I/O driving modes
Smartcard I/Os are driven in two principal modes:
●UART mode (i.e. when the UART bit of the
CRDCR register is set)
●Manual mode, driven directly by software using the Smartcard Contact register (i.e.
when the UART bit of the CRDCR register is reset).
Card power-on activation must driven by software.
Card deactivation is handled automatically by the Power-off functional state machine
hardware.
UART mode
Two registers are connected to the UART shift register: CRDTXB for transmission and
CRDRXB for reception. They act as buffers to off-load the CPU.
A parity checker and generator is coupled to the shifter.
Character repetition and retry are supported.
The UART is in reception mode by default and switches automatically to transmission mode
when a byte is written in the buffer.
Priority is given to transmission.
Elementary Time Unit Counter
This 11-bit counter controls the working frequency of the UART. The operating frequency of
the clock is the same as the card clock frequency (i.e. 4 MHz).
A compensation mode can be activated via the COMP bit of the CRDETU1 register to allow
a frequency granularity down to a half-etu.
Note:The decimal value is limited to a half clock cycle. The bit duration is not fixed. It alternates
between n clock cycles and n-1 clock cycles, where n is the value to be written in the
CRDETU register. The character duration (10 bits) is also equal to 10*(n - ½) clock cycles
This is precise enough to obtain the character duration specified by the ISO7816-3
standard.
For example, if F=372 and D=32 (F being the clock rate conversion factor and D the baud
rate adjustment), then etu =11.625 clock cycles.
To achieve this clock rate, compensation mode must be activated and the etu duration must
be programmed to 12 clock cycles.
The result will be an average character duration of 11.5 clock cycles (for 10 bits).
Doc ID 8951 Rev 671/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
12cy
11cy
12cy
11cy
12cy
11cy
12cy
11cy
12cy
11cy
Start bit
Data bits
Parity bit
UART
CRDIO
Working Clock
F=372
D= 32
See Figure 32.
Guardtime counter
The guardtime counter is a 9-bit counter which manages the character frame. It controls the
duration between two consecutive characters in transmission.
It is incremented at the etu rate.
No guardtime is inserted for the first character transmitted.
The guardtime between the last byte received from the card and the next byte transmitted by
the reader must be handled by software.
Figure 32. Compensation mode
Waiting time counter
The Waiting Time counter is a 24-bit counter used to generate a timeout signal.
The elementary time unit counter acts as a prescaler to the Waiting Time counter which is
incremented at the etu rate.
The Waiting Time Counter can be used in both UART mode and Manual mode and acts in
different ways depending on the selected mode.
The CRDWT2, CRDWT1 and CRDWT0 are load registers only, the counter itself is not
directly accessible.
UART mode
The load conditions are either:
●A Start bit is detected while UART bit =1 and the WTEN bit =1.
or
●A write access to the CRDWT2 register is performed while the UART bit = 1 and the
WTEN bit = 0. In this case, the Waiting Time counter can be used as a general purpose
timer.
In UART mode, if the WTEN bit of the CRDCR register is set, the counter is loaded
automatically on start bit detection. Software can change the time out value on-the-fly by
writing to the CRDWT registers. For example, in T=1 mode, software must load the Block
Waiting Time (BWT) time-out in the CRDWT registers before the start bit of the last
transmitted character.
72/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
BWT
CWT
Reader
Smartcard
Firmware must program BWT
Firmware must program CWT
TXC Interrupt
Start bit
Waiting Time Counter
loaded on start bit
CHAR0
CHAR1
CHARn
CHAR0
CHAR1
Then, after transmission of this last character, signalled by the TXC interrupt, software must
write the CWT value (Character Waiting Time) in the CRDWT registers. See example in
Figure 33.
Manual mode
The load conditions are:
●A write access to the CRDWT2 register is performed while the UART bit = 0 and the
WTEN bit = 0
In Manual mode, if the WTEN bit of the CRDCR register is reset, the timer acts as a general
purpose timer. The timer is loaded when a write access to the CRDWT2 register occurs.
The timer starts when the WTEN bit = 1.
Interrupt generator
The Smartcard Interface has 2 interrupt vectors:
●Card Insertion/Removal Interrupt
●CRD Interrupt
The CRD interrupt is cleared when software reads the CRDIPR register. The Card
Insertion/Removal is an external interrupt and is cleared automatically by hardware at the
end of the interrupt service routine (IRET instruction).
If an interrupt occurs while the CRDIPR register is being read, the corresponding bit will be
set by hardware after the read access is done.
Figure 33. Waiting time counter example
Card detection mechanism
The CRDDET bit in the CRDCR Register indicates if the card presence detector (card
switch) is open or closed when a card is inserted. When the CRDIRF bit of the CRDSR is
set, it indicates that a card is present.
To be able to power-on the smartcard, card presence is mandatory. Removing the
smartcard will automatically start the ISO7816-3 card deactivation sequence (see Section
Card deactivation sequence).
Doc ID 8951 Rev 673/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
CRDDET
CRD
CRDSR
1
0
CARD INSERTION/REMOVAL
0
7
IRF
DET
CRDCR
0
7
CNF
CRD
MISCR2
0
7
IRM
Pull-up
EDGE DETECTOR
Interrupt Request
SMARTCARD INTERFACE (CRD)
There is no hardware debouncing: The CRDIRF bit changes whenever the level on the
CRDDET pin changes. The card switch can generate an interrupt which can be used to
wake up the device from suspend mode and for software debouncing.
Three different cases can occur:
●The microcontroller is in run mode, waiting for card insertion:
Card insertion generates an interrupt and the CRDIRF bit in the CRDSR register is set.
Debouncing is managed by software. After the time required for debouncing, if the
CRDIRF bit is set, the CRDVCC bit in the CRDCR register is set by software to apply
the selected voltage to the CRDVCC pin
●The microcontroller is in suspend mode and a card is inserted:
The ST7 is woken up by the interrupt. The card insertion is then handled in the same
way as in the previous case.
●The card is removed:
–The CRDIRF bit is reset without hardware debouncing
–A Card Insertion/Removal interrupt is generated, (if enabled by the CRDIRM bit in
the MISCR2 register)
–The CRDVCC bit is immediately reset by hardware, starting the card deactivation
sequence.
Figure 34. Card detection block diagram
74/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
CRDVCC pin
CRDRST pin
CRDCLK pin
CRDIO pin
CRDC4 pin
CRDC8 pin
8 CPU Clk cycles
Card deactivation sequence
This sequence can be activated in two different ways:
●Automatically as soon as the card presence detector detects a card removal (via the
CRDIRF bit in the CRDSR register, refer to <Blue HT>Section ).
●By software, writing the CRDVCC bit in the CRDCR register, for example:
–If there is a smartcard current overflow (i.e. when the IOVFF bit in the CRDSR
register is set)
–If the voltage is not within the specified range (i.e. when the VCARDOK bit in the
CRDSR register is cleared), but software must clear the CRDVCC bit in the
CRDCCR register to start the deactivation sequence.
When the CRDVCC bit is cleared, this starts the deactivation sequence. CRDCLK, CRDIO,
CRDC4 and CRDC8 pins are then deactivated as shown in Figure 35.
Figure 35. Card deactivation sequence
Doc ID 8951 Rev 675/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
CRDVCC
CRD
CRDCCR
BLOCK
0
7
VCC
CRDCR
07
IRF
CRDSR
0
7
CRD
VCARD
1
POWER OFF
IOVF
OK
CRDIER
0
7
CRDIPR
0
7
IOVP
VCRD
SMARTCARD
POWER SUPPLY
BLOCK
5V
VCARDOK Interrupt Request
IOVF Interrupt Request
2
2
Card voltage selection
2
IOVM
VCRD
P
M
VCARD
0
VCARD
11
00
00
VCARD[1:0]
CRDVCC
VCARDOK
VCRDP Interrupt
V
CARDOK
11
VCRDP Interrupt
Software Power-Off
Voltage Error
Power-On
Power-On
t
OFF
t
ONt
ON
t
OFF
0.4V
Figure 36. Card voltage selection and power OFF block diagram
Figure 37. Power off timing diagram
Note:Refer to the Electrical Characteristics section for the values of t
ON
and t
OFF
.
76/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
CLK
4 MHz
1
0
SEL
CRD
CLK
CRDCCR
POWER OFF
BLOCK
CRDCLK
ISOCLK
DIV
PLLPLL
OSC
4 MHz
Figure 38. Card clock selection block diagram
12.4.4 Register description
Smartcard interface control register (CRDCR)
Read/Write
Reset Value: 0000 0000 (00h)
70
CRD
RST
CRD DETVCARD 1VCARD 0U ARTWT ENC REPCO NV
Bit 7 = CRDRST Smartcard Interface Reset.
This bit is set by software to reset the UART of the Smartcard interface.
0: No Smartcard UART Reset
1: Smartcard UART Reset
Bit 6 = CRDDET Card Presence Detector.
This bit is set and cleared by software to configure the card presence detector switch.
0: Switch open if no card is present
1: Switch closed if no card is present
Bits [5:4] = VCARD[1:0] Card voltage selection.
These bits select the card voltage.
Bit 1Bit 0Vcard
000V
011.8V
103V
115V
Bit 3 = UART UART Mode Selection.
This bit is set and cleared by software to select UART or manual mode.
0: CRDIO pin is a copy of the CRDIO bit in the CRDCCR register (Manual mode).
Doc ID 8951 Rev 677/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
1: CRDIO pin is the output of the smartcard UART (UART mode).
Caution: Before switching from Manual mode to UART mode, software must set the CRDIO
bit in the CRDCCR register.
Bit 2 = WTEN Waiting Time Counter enable.
0: Waiting Time counter stopped. While WTEN = 0, a write access to the CRDWT2 register
loads the Waiting time counter with the load value held in the CRDWT0, CRDWT1 and
CRDWT2 registers.
1: Start counter. In UART mode, the counter is automatically reloaded on start bit detection.
Bit 1 = CREPAutomatic character repetition in case of parity error.
0: In reception mode: no parity error signal indication (no retry on parity error).
In transmission mode: no error signal processing. No retransmission of a refused character
on parity error.
1: Automatic parity management:
In transmission mode: up to 4 character repetitions on parity error.
In reception mode: up to 4 retries are made on parity error.
The PARF parity error flag is set by hardware if a parity error is detected.
If the transmitted character is refused, the PARF bit is set (but the TXCF bit is reset) and an
interrupt is generated if the PARM bit is set.
Note:If CREP=1, the PARF flag is set at the 5th error (after 4 character repetitions or 4 retries).
If CREP=0, the PARF bit is set after the first parity error.
Bit 0 = CONVISO convention selection.
0: Direct convention, the B0 bit (LSB) is sent first, a ’1’ is a level 1 on the Card I/O pin, the
parity bit is added after the B7 bit.
1: Inverse convention, the B7 bit (MSB) is sent first, a ’1’ is a level 0 on Card I/O pin, the
parity bit is added after the B0 bit.
Note:To detect the convention used by any card, apply the following rule. If a card uses the
convention selected by the reader, an RXC event occurs at answer to reset. Otherwise a
parity error also occurs.
Smartcard interface status register (CRDSR)
Read only (Read/Write on some bits)
Reset Value: 1000 0000 (80h)
70
TXBEF
CRD
IRF
IOVF
VCARD
OK
WTFTXCFRXCFPAR F
78/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Bit 7 =TxBEF Transmit Buffer Empty Flag.
- Read only
0: Transmit buffer is not empty
1: Transmit buffer is empty
Bit 6 = CRDIRF Card Insertion/Removal Flag.
- Read only
0: No card is present
1: A card is present
Bit 5 = IOVF Card Overload Current Flag.
- Read only
0: No card overload current
1: Card overload current
Bit 4 = VCARDOK Card voltage status Flag.
- Read only
0: The card voltage is not in the specified range
1: The card voltage is within the specified range
Bit 3 = WTF Waiting Time Counter overflow Flag.
- Read only
0: The WT Counter has not reached its maximum value
1: The WT Counter has reached its maximum value
Bit 2 = TXCF Transmitted character Flag.
- Read/Write
This bit is set by hardware and cleared by software.
0: No character transmitted
1: A character has been transmitted
Bit 1 = RXCF Received character Flag.
- Read only
This bit is set by hardware and cleared by hardware when the CRDRXB buffer is read.
0: No character received
1: A character has been received
Doc ID 8951 Rev 679/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
Bit 0 = PARF Parity Error Flag.
- Read/Write
This bit is set by hardware and cleared by software.
0: No parity error
1: Parity error
Note:When a character is received, the RXCF bit is always set.When a character is received with
a parity error, the PARF bit is also set.
Smartcard contact control register (CRDCCR)
Read/Write
Reset Value: 00xx xx00 (xxh)
70
CLK SEL-CRD C8CRD C4
CRD
IO
CRD CLKCRD RSTCRD VCC
Note:To modify the content of this register, the LD instruction must be used (do not use the BSET
and BRES instructions).
Bit 7 = CLKSEL Card clock selection.
This bit is set and cleared by software.
0: The signal on the CRDCLK pin is a copy of the CRDCLK bit.
1: The signal on the CRDCLK pin is a 4MHz frequency clock.
Note:To start the clock at a known level, the CRDCLK bit should be changed before the CLKSEL
bit.
Bit 6 = Reserved, must be kept cleared.
Bit 5 = CRDC8 CRDC8 pin control.
Reading this bit returns the value present on the CRDC8 pin. Writing this bit outputs the bit
value on the pin.
Bit 4 = CRDC4 CRDC4 pin control
Reading this bit returns the value present on the CRDC4 pin. Writing this bit outputs the bit
value on the pin.
Bit 3 = CRDIO CRDIO pin control.
This bit is active only if the UART bit in the CRDCR Register is reset. Reading this bit returns
the value present on the CRDIO pin.
If the UART bit is reset:
●Writing “0” forces a low level on the CRDIO pin
●Writing “1” forces the CRDIO pin to open drain Hi-Z.
80/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
I/O PIN
DATA B US
CRDCCR
REGISTER
Bit 2 = CRDCLK CRDCLK pin control
This bit is active only if the CLKSEL bit of the CRDCCR register is reset. Reading this bit
returns the value present in the register (not the CRDCLK pin value).
When the CLKSEL bit is reset:
0: Level 0 to be applied on CRDCLK pin.
1: Level 1 to be applied on CRDCLK pin.
Note:To ensure that the clock stops at a given value, write the desired value in the CRDCLK bit
prior to changing the CLKSEL bit from 1 to 0.
Bit 1 = CRDRST CRDRST pin control.
Reading this bit returns the value present on the CRDRST pin. Writing this bit outputs the bit
value on the pin.
Bit 0 = CRDVCC CRDVCC Pin Control.
This bit is set and cleared by software and forced to 0 by hardware when no card is present
(CRDIRF bit=0).
0: No voltage to be applied on the CRDVCC pin.
1: The selected voltage must be applied on the CRDVCC pin.
Figure 39. Smartcard I/O pin structure
Smartcard elementary time unit register (CRDETUx)
CRDETU1
Read/Write
Reset Value: 0000 0001 (01h)
70
COMP0000ETU10ETU9ETU8
Bit 7 = COMP Elementary Time Unit Compensation.
0: Compensation mode disabled.
Doc ID 8951 Rev 681/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
1: Compensation mode enabled. To allow non integer value, one clock cycle is subtracted
from the ETU value on odd bits. See Figure 32.
Bit [6:3] = Reserved
Bits 2:0 = ETU [10:8] ETU value in card clock cycles.
Writing CRDETU1 register reloads the ETU counter.
CRDETU0
Read/Write
Reset Value: 0111 0100 (74h)
70
ETU7ETU6ETU5ETU4ETU3ETU2ETU1ETU0
Bits 7:0 = ETU [7:0]ETU value in card clock cycles.
Note:The value of ETU [10:0] must in the range 12 to 2047. To write 2048, clear all the bits.
Guardtime register (CRDGTx)
CRDGT1
Read/Write
Reset Value: 0000 0000 (00h)
70
0000000GT8
CRDGT0
Read/Write
Reset Value: 0000 1100 (0Ch)
70
GT7GT6GT5GT4GT3GT2GT1GT0
Software writes the Guardtime value in this register. The value is loaded at the end of the
current Guard period.
GT: Guard Time: Minimum time between two consecutive start bits in transmission mode.
Value expressed in Elementary Time Units (from 11 to 511).
The Guardtime between the last byte received from the card and the next byte transmitted
by the reader must be handled by software.
82/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Character waiting time register (CRDWTx)
CRDWT2
Read/Write
WT
21
.
WT
20
WT
19
WT
18
WT
17
WT
16
Reset Value: 0000 0000 (00h)
70
WT 23
WT
22
CRDWT1
Read/Write
Reset Value: 0010 0101 (25h)
70
WT
15
WT
14
WT
13
WT
12
WT
11
WT
10
WT9WT8
CRDWT0
Read/Write
Reset Value: 1000 0000 (80h)
70
WT 7WT6WT5WT4WT3WT2WT1WT0
WT: Character waiting time value expressed in ETU (0 / 16777215).
The CRDWT0, CRDWT1 and CRDWT2 registers hold the load value of the Waiting Time
counter.
Note:A read operation does not return the counter value.
This counter can be used as a general purpose timer.
If the WTEN bit of the CRDCR register is reset, the counter is reloaded when a write access
in the CRDWT2 register occurs. It starts when the WTEN bit is set.
If the WTEN bit in the CRDCR register is set and if UART mode is activated, the counter
acts as an autoreload timer. The timer is reloaded when a start bit is sent or detected. An
interrupt is generated if the timer overflows between two consecutive start bits.
Note:When loaded with a 0 value, the Waiting Time counter stays at 0 and the WTF bit = 1.
Smartcard interrupt enable register (CRDIER)
Read/Write
Reset Value: 0000 0000 (00h)
70
TXBEM-IOVFMVCRDMWTMTXCMRXCMPARM
Doc ID 8951 Rev 683/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
Bit 7 = TXBEM Transmit buffer empty interrupt mask.
This bit is set and cleared by software to enable or disable the TXBE interrupt.
0: TXBE interrupt disabled
1: TXBE interrupt enabled
Bit 6 = Reserved.
Bit 5 = IOVFM Card Overload Current Interrupt Mask.
This bit is set and cleared by software to enable or disable the IOVF interrupt.
0: IOVF interrupt disabled
1: IOVF interrupt enabled
Bit 4= VCRDM Card Voltage Error Interrupt Mask.
This bit is set and cleared by software to enable or disable the VCRD interrupt.
0: VCRD interrupt disabled
1: VCRD interrupt enabled
Bit 3 = WTM Waiting Timer Interrupt Mask.
This bit is set and cleared by software to enable or disable the Waiting Timer overflow
interrupt.
0: WT interrupt disabled
1: WT interrupt enabled
Bit 2 =TXCM Transmitted Character Interrupt Mask
This bit is set and cleared by software to enable or disable the TXC interrupt.
0: TXC interrupt disabled
1: TXC interrupt enabled
Bit 1 =RXCM Received Character Interrupt Mask
This bit is set and cleared by software to enable or disable the RXC interrupt.
0: RXC interrupt disabled
1: RXC interrupt enabled
Bit 0 = PARM Parity Error Interrupt. Mask
This bit is set and cleared by software to enable or disable the parity error interrupt for parity
error.
0: PAR interrupt disabled
1: PAR error interrupt enabled
84/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Smartcard interrupt pending register (CRDIPR)
Read Only
Reset Value: 0000 0000 (00h)
70
TXBEP-IOVFPVCRDPWTPTXCPRXCPPARP
This register indicates the interrupt source. It is cleared after a read operation.
Bit 7 = TXBEP Transmit buffer empty interrupt pending.
This bit is set by hardware when a TXBE event occurs and the TXBEM bit is set.
0: No TXBE interrupt pending
1: TXBE interrupt pending
Bit 6 = Reserved.
Bit 5 = IOVF Card Overload Current interrupt pending.
This bit is set by hardware when a IOVF event occurs and the IOVFM bit is set.
0: No IOVF interrupt pending
1: IOVF interrupt pending
Bit 4 = VCRDP Card Voltage Error interrupt pending.
This bit is set by hardware when the VCARDOK bit goes from 1 to 0 while the VCRDM bit is
set.
0: No VCRD interrupt pending.
1: VCRD interrupt pending.
Bit 3 = WTP Waiting Timer Overflow interrupt pending.
This bit is set by hardware when a WTP event occurs and the WTPM bit is set.
0: No WT interrupt pending
1: WT interrupt pending
Bit 2 = TXCP Transmitted character interrupt pending.
This bit is set by hardware when a character is transmitted and the TXCM bit is set. It
indicates that the CRDTXB buffer can be loaded with the next character to be transmitted.
0: No TXC interrupt pending
1: TXC interrupt pending
Bit 1 = RXCP Received character interrupt pending.
This bit is set by hardware when a character is received and the RXCM bit is set. It indicates
that the CRDRXB buffer can be read.
Doc ID 8951 Rev 685/121
On-chip peripheralsST7SCR1E4, ST7SCR1R4
0: No RXC interrupt pending
1: RXC interrupt pending
Bit 0 = PARP Parity Error interrupt pending.
This bit is set by hardware when a PAR event occurs and the PARM bit is set.
0: No PAR interrupt pending
1: PAR interrupt pending
Smartcard transmit buffer (CRDTXB)
Read/Write
Reset Value: 0000 0000 (00h)
70
TB7TB6TB5TB4TB3TB2TB1TB0
This register is used to send a byte to the smartcard.
Smartcard receive buffer (CRDRXB)
Read
Reset Value: 0000 0000 (00h)
70
RB7RB6RB5RB4RB3RB2RB1RB0
This register is used to receive a byte from the smartcard.
Table 24.Register map and reset values
Address
(Hex.)
00
01
02
03
04
Register
label
CRDCR
Reset
Val ue
CRDSR
Reset
Val ue
CRDCCR
Reset
Val ue
CRDETU1
Reset
Val ue
CRDETU0
Reset
Val ue
7 654321 0
CRDRS
TXBEF
CLKSEL
COMP
ETU7
DETCN
T
0
CRDIR
1
0
0
ETU61ETU51ETU41ETU30ETU21ETU10ETU0
0
VCAR
F
0
F
0
0
0
IOVF
CRDC
-
-
VCARD
D1
0
VCARD
0
CRDC4xCRDIO
8
x
-
0
0
0
OK
0
-
0
UART0WTEN0CREP0CONV
0
WTF0TXCF0RXCF0PA RF
0
CRDCL
x
-
ETU101ETU90ETU8
0
CRDRS
K
0
CRDVC
T
x
C
0
0
0
86/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4On-chip peripherals
Table 24.Register map and reset values (continued)
Address
(Hex.)
05
06
07
08
09
0A
0B
0C
0D
Register
label
CRDGT1
Reset
Val ue
CRDGT0
Reset
Val ue
CRDWT2
Reset
Val ue
CRDWT1
Reset
Val ue
CRDWT0
Reset
Val ue
CRDIER
Reset
Val ue
CRDIPR
Reset
Val ue
CRDTXB
Reset
Val ue
CRDRXB
Reset
Val ue
7 654321 0
-
0
GT7
0
WT230WT220WT210WT200WT190WT180WT170WT16
WT150WT140WT131WT120WT110WT101WT9
WT7
1
TXBEM
0
TXBEP
0
TB7
0
RB7
0
-
0
GT60GT5
WT60WT50WT40WT30WT20WT1
-
0
-
0
TB6
0
RB60RB5
-
0
0
IOVM0VCRDM0WTM0TXCM0RXCM0PA RM
IOVP
0
TB5
0
0
-
0
GT4
0
VCRDP
TB4
0
RB4
0
-
0
GT31GT2
WTP0TXCP0RXCP0PA RP
TB3
0
RB30RB2
-
0
1
TB2
0
0
-
0
GT1
0
0
0
TB1
0
RB1
0
GT8
0
GT0
0
0
WT8
1
WT0
0
0
0
TB0
0
RB0
0
Doc ID 8951 Rev 687/121
Instruction setST7SCR1E4, ST7SCR1R4
13 Instruction set
13.1 CPU addressing modes
The CPU features 17 different addressing modes which can be classified in 7 main groups:
Addressing modeExample
Inherentnop
Immediateld A,#$55
Directld A,$55
Indexedld A,($55,X)
Indirectld A,([$55],X)
Relativejrne loop
Bit operationbset byte,#5
The CPU Instruction set is designed to minimize the number of bytes required per
instruction: To do so, most of the addressing modes may be subdivided in two sub-modes
called long and short:
●Long addressing mode is more powerful because it can use the full 64-Kbyte address
space, however it uses more bytes and more CPU cycles.
●Short addressing mode is less powerful because it can generally only access page
zero (0000h - 00FFh range), but the instruction size is more compact, and faster. All
memory to memory instructions use short addressing modes only (CLR, CPL, NEG,
BSET, BRES, BTJT, BTJF, INC, DEC, RLC, RRC, SLL, SRL, SRA, SWAP)
The ST7 Assembler optimizes the use of long and short addressing modes.
All Inherent instructions consist of a single byte. The opcode fully specifies all the required
information for the CPU to process the operation.
Inherent instructionFunction
NOPNo operation
TRAPS/W Interrupt
WFIWait For Interrupt (Low Power Mode)
HALTHalt Oscillator (Lowest Power Mode)
RETSub-routine Return
IRETInterrupt Sub-routine Return
Length
(bytes)
SIMSet Interrupt Mask (level 3)
RIMReset Interrupt Mask (level 0)
SCFSet Carry Flag
RCFReset Carry Flag
RSPReset Stack Pointer
LDLoad
CLRClear
PUSH/POPPush/Pop to/from the stack
INC/DECIncrement/Decrement
TNZTest Negative or Zero
CPL, NEG1 or 2 Complement
MULByte Multiplication
SLL, SRL, SRA, RLC, RRCShift and Rotate Operations
SWAPSwap Nibbles
Doc ID 8951 Rev 689/121
Instruction setST7SCR1E4, ST7SCR1R4
13.1.2 Immediate
Immediate instructions have two bytes, the first byte contains the opcode, the second byte
contains the operand value.
Immediate instructionFunction
LDLoad
CPCompare
BCPBit Compare
AND, OR, XORLogical Operations
ADC, ADD, SUB, SBCArithmetic Operations
13.1.3 Direct
In Direct instructions, the operands are referenced by their memory address.
The direct addressing mode consists of two sub-modes:
Direct (short)
The address is a byte, thus requires only one byte after the opcode, but only allows 00 - FF
addressing space.
Direct (long)
The address is a word, thus allowing 64 Kbyte addressing space, but requires 2 bytes after
the opcode.
13.1.4 Indexed (No Offset, Short, Long)
In this mode, the operand is referenced by its memory address, which is defined by the
unsigned addition of an index register (X or Y) with an offset.
The indirect addressing mode consists of three sub-modes:
Indexed (No Offset)
There is no offset, (no extra byte after the opcode), and allows 00 - FF addressing space.
Indexed (Short)
The offset is a byte, thus requires only one byte after the opcode and allows 00 - 1FE
addressing space.
Indexed (long)
The offset is a word, thus allowing 64 Kbyte addressing space and requires 2 bytes after the
opcode.
13.1.5 Indirect (Short, Long)
The required data byte to do the operation is found by its memory address, located in
memory (pointer).
90/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Instruction set
The pointer address follows the opcode. The indirect addressing mode consists of two submodes:
Indirect (short)
The pointer address is a byte, the pointer size is a byte, thus allowing 00 - FF addressing
space, and requires 1 byte after the opcode.
Indirect (long)
The pointer address is a byte, the pointer size is a word, thus allowing 64 Kbyte addressing
space, and requires 1 byte after the opcode.
13.1.6 Indirect indexed (Short, Long)
This is a combination of indirect and short indexed addressing modes. The operand is
referenced by its memory address, which is defined by the unsigned addition of an index
register value (X or Y) with a pointer value located in memory. The pointer address follows
the opcode.
The indirect indexed addressing mode consists of two sub-modes:
Indirect indexed (Short)
The pointer address is a byte, the pointer size is a byte, thus allowing 00 - 1FE addressing
space, and requires 1 byte after the opcode.
Indirect indexed (Long)
The pointer address is a byte, the pointer size is a word, thus allowing 64 Kbyte addressing
space, and requires 1 byte after the opcode.
Table 26.Instructions supporting direct, indexed, indirect and indirect indexed
SLL, SRL, SRA, RLC, RRCShift and Rotate Operations
SWAPSwap Nibbles
CALL, JPCall or Jump subroutine
13.1.7 Relative mode (Direct, Indirect)
This addressing mode is used to modify the PC register value, by adding an 8-bit signed
offset to it.
Available relative direct/indirect instructionsFunction
JRxxConditional Jump
CALLRCall Relative
The relative addressing mode consists of two sub-modes:
Relative (Direct)
The offset is following the opcode.
Relative (Indirect)
The offset is defined in memory, which address follows the opcode.
13.2 Instruction groups
The ST7 family devices use an Instruction Set consisting of 63 instructions. The instructions
may be subdivided into 13 main groups as illustrated in the following table:
Load and TransferLDCLR
Stack operationPUSHPOPRSP
Increment/DecrementINCDEC
Compare and TestsCPTNZBCP
Logical operationsANDORXORCPLNEG
Bit OperationBSETBRES
Conditional Bit Test and BranchBTJTBTJF
Arithmetic operationsADCADDSUBSBCMUL
Shift and RotatesSLLSRLSRARLCRRCSWAPSLA
Unconditional Jump or CallJRAJRTJRFJPCALL CALLRNOP RET
Conditional BranchJRxx
Interruption managementTRAPWFIHALTIRET
Condition Code Flag modificationSIMRIMSCFRCF
92/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Instruction set
Using a pre-byte
The instructions are described with one to four opcodes.
In order to extend the number of available opcodes for an 8-bit CPU (256 opcodes), three
different prebyte opcodes are defined. These prebytes modify the meaning of the instruction
they precede.
The whole instruction becomes:
PC-2End of previous instruction
PC-1Prebyte
PCopcode
PC+1Additional word (0 to 2) according to the number of bytes required to compute the
effective address
These prebytes enable instruction in Y as well as indirect addressing modes to be
implemented. They precede the opcode of the instruction in X or the instruction using direct
addressing mode. The prebytes are:
PDY 90Replace an X based instruction using immediate, direct, indexed, or inherent
addressing mode by a Y one.
PIX 92Replace an instruction using direct, direct bit, or direct relative addressing mode to an
instruction using the corresponding indirect addressing mode.
It also changes an instruction using X indexed addressing mode to an instruction using
indirect X indexed addressing mode.
PIY 91Replace an instruction using X indirect indexed addressing mode by a Y one.
Table 27.Instruction set overview
MnemoDescription
ADCAdd with CarryA = A + M + CAMHNZC
ADDAdditionA = A + MAMHNZC
ANDLogical AndA = A . MAMNZ
BCP
BRESBit Resetbres Byte, #3M
BSETBit Setbset Byte, #3M
BTJFJump if bit is false (0)
BTJTJump if bit is true (1)
CALLCall subroutine
CALLR
CLRClearreg, M01
CPArithmetic Comparetst(Reg - M)regMNZC
Bit compare A,
Memory
Call subroutine
relative
Function/
Example
tst (A . M)AMNZ
btjf Byte, #3,
Jmp1
btjt Byte, #3,
Jmp1
DstSrcI1HI0NZC
MC
MC
Doc ID 8951 Rev 693/121
Instruction setST7SCR1E4, ST7SCR1R4
Table 27.Instruction set overview (continued)
MnemoDescription
CPLOne ComplementA = FFH-Areg, MNZ1
DECDecrementdec Yreg, MNZ
HALTHalt10
IRET
INCIncrementinc Xreg, MNZ
JPAbsolute Jumpjp [TBL.w]
JRAJump relative always
JRTJump relative
JRFNever jump jrf *
JRIH
JRIL
JRHJump if H = 1H = 1 ?
JRNHJump if H = 0H = 0 ?
JRMJump if I1:0 = 11I1:0 = 11 ?
Interrupt routine
return
Jump if ext. INT pin =
1
Jump if ext. INT pin =
0
Function/
Example
Pop CC, A, X, PCI1HI0NZC
(ext. INT pin high)
(ext. INT pin low)
DstSrcI1HI0NZC
JRNMJump if I1:0 <> 11I1:0 <> 11 ?
JRMIJump if N = 1 (minus) N = 1 ?
JRPLJump if N = 0 (plus)N = 0 ?
JREQJump if Z = 1 (equal) Z = 1 ?
JRNE
JRCJump if C = 1C = 1 ?
JRNCJump if C = 0C = 0 ?
JRULTJump if C = 1Unsigned <
JRUGE Jump if C = 0
JRUGT Jump if (C + Z = 0)Unsigned >
Jump if Z = 0 (not
equal)
Z = 0 ?
Jmp if unsigned
>=
94/121Doc ID 8951 Rev 6
ST7SCR1E4, ST7SCR1R4Instruction set
MnemoDescription
JRULEJump if (C + Z = 1)Unsigned <=
LDLoaddst <= srcreg, MM, regNZ
MULMultiplyX,A = X * AA, X, Y X, Y, A00
NEGNegate (2's compl)neg $10reg, MNZC
NOPNo Operation
OROR operationA = A + MAMNZ
POPPop from the Stack
PUSHPush onto the Stackpush YM
RCFReset carry flagC = 00
RETSubroutine Return
RIMEnable InterruptsI1:0 = 10 (level 0)10
RLCRotate left true CC <= A <= Creg, MNZC
RRCRotate right true CC => A => Creg, MNZC
RSPReset Stack PointerS = Max allowed
SBCSubtract with CarryA = A - M - CAMNZC
SCFSet carry flagC = 11
SIMDisable InterruptsI1:0 = 11 (level 3)11
SLAShift left ArithmeticC <= A <= 0reg, MNZC
SLLShift left LogicC <= A <= 0reg, MNZC
SRLShift right Logic0 => A => Creg, M0ZC
SRAShift right ArithmeticA7 => A => Creg, MNZC
SUBSubtractionA = A - MAMNZC
SWAPSWAP nibbles
TNZTest for Neg & Zerotnz lbl1NZ
TRAPS/W trapS/W interrupt11
WFIWait for Interrupt10
XORExclusive ORA = A XOR MAMNZ
Function/
Example
pop regregM
pop CCCCMI1HI0NZC
A7-A4 <=> A3A0
DstSrcI1HI0NZC
reg,
CC
reg, MNZ
Doc ID 8951 Rev 695/121
Electrical characteristicsST7SCR1E4, ST7SCR1R4
14 Electrical characteristics
14.1 Absolute maximum ratings
This product contains devices for protecting the inputs against damage due to high static
voltages, however it is advisable to take normal precautions to avoid applying any voltage
higher than the specified maximum rated voltages.
For proper operation it is recommended that V
V
. Reliability is enhanced if unused inputs are connected to an appropriate logic voltage
DD
level (V
or VSS).
DD
Power Considerations. The average chip-junction temperature, T
and VO be higher than VSS and lower than
I
, in Celsius can be
J
obtained from:
T
=TA + PD x RthJA
J
Where:T
=Ambient Temperature.
A
RthJA =Package thermal resistance junction-to ambient).
P
P
P
= P
D
INT
PORT
INT
+ P
PORT
.
=IDD x VDD (chip internal power).
=Port power dissipation determined by the user)
Stresses above those listed as “absolute maximum ratings” may cause permanent damage
to the device. This is a stress rating only and functional operation of the device at these
conditions is not implied. Exposure to maximum rating for extended periods may affect
device reliability.
SymbolRatings ValueUnit
- V
V
DD
SS
V
IN
V
OUT
ESDESD susceptibility2000V
Supply voltage6.0V
Input voltageVSS - 0.3 to VDD + 0.3V
Output voltageVSS - 0.3 to VDD + 0.3V
ESDCardESD susceptibility for card pads4000V
I
VDD_i
I
VSS_i
Total current into V
Total current out of V
(source)250
DD_i
(sink)250
SS_i
Warning:Direct connection to VDD or VSS of the I/O pins could damage the
device in case of program counter corruption (due to unwanted
change of the I/O configuration). To guarantee safe conditions,
this connection has to be done through a typical 10KΩ pull-up or
pull-down resistor.
96/121Doc ID 8951 Rev 6
mA
ST7SCR1E4, ST7SCR1R4Electrical characteristics
Table 28.Thermal characteristics
SymbolRatings ValueUnit
R
PD
T
T
thJA
Jmax
STG
max
Package thermal resistanceLQFP64
SO24
QFN24
Max. junction temperature150°C
Storage temperature range-65 to +150°C
Power dissipationQFN24
SO24
60
80
42
600
500
14.2 Recommended operating conditions
GENERAL
SymbolParameter ConditionsMinTypMaxUnit
V
fOSCExternal clock source4MHz
T
Table 29.Current injection on i/o port and control pins
Supply voltage4.05.5V
DD
Ambient temperature range 070°C
A
(Operating conditions TA = 0 to +70°C unless otherwise specified)
°C/W
mW
SymbolParameter ConditionsMinTypMaxUnit
I
INJ+
Total positive injected current
(1,2)
V
EXTERNAL
(Standard I/Os)
V
EXTERNAL
> V
> V
DD
CRDVCC
20mA
(Smartcard I/Os)
I
INJ-
Total negative injected current
(3)
V
EXTERNAL
Digital pins
< V
SS
20mA
Analog pins
Note:Positive injection
The IINJ+ is done through protection diodes insulated from the substrate of the die.
For SmartCard I/Os, VCRDVCC has to be considered.
Negative injection
The I
is done through protection diodes NOT INSULATED from the substrate of the die.
INJ-
The drawback is a small leakage (few µA) induced inside the die when a negative injection is
performed. This leakage is tolerated by the digital structure, but it acts on the analog line
according to the impedance versus a leakage current of few µA (if the MCU has an AD
converter). The effect depends on the pin which is submitted to the injection. Of course,
external digital signals applied to the component must have a maximum impedance close to
50K
Ω
.
Location of the negative current injection:
Doc ID 8951 Rev 697/121
Electrical characteristicsST7SCR1E4, ST7SCR1R4
Pure digital pins can tolerate 1.6mA. In addition, the best choice is to inject the current as far
as possible from the analog input pins.
Note:When several inputs are submitted to a current injection, the maximum I