This document is provided as a supplement to the MAXQ Family User’s Guide, covering new or modified features
specific to the MAXQ8913. This document must be used in conjunction with the MAXQ Family User’s Guide, available
on our website at www.maxim-ic.com/MAXQUG. Addenda are arranged by section number, which correspond to
sections in the MAXQ Family User’s Guide. Additions and changes, with respect to the MAXQ Family User’s Guide,
are contained in this document, and updates/additions are added when available.
M
The MAXQ8913 is a low-power, high-performance, 16-bit, RISC microcontroller based on the MAXQ
design. It is targeted specifically for dual-axis optical image stabilization (OIS) applications and includes a wide range
of peripherals including a 7-channel, 12-bit successive-approximation analog-to-digital converter (SAR ADC), two
10-bit and two 8-bit digital-to-analog converters (DACs), four op amps for ADC input conditioning, two programmable
current sinks, and support for an external D-class audio amplifier. The MAXQ8913 is uniquely suited for any application
that requires high performance and low-power operation.
1.1 References
Refer to the MAXQ Family User’s Guide for the following information:
• Description of the core architecture, instruction set, and memory mapping common to all MAXQ microcontrollers.
• Definitions and functions of the common system register set, including accumulators, data pointers, loop counters,
and general-purpose registers.
• Descriptions of common clock generation, interrupt handling, and reset/power-management modes.
• Descriptions and programming examples for common MAXQ peripherals found on the MAXQ8913 including the
serial universal synchronous/asynchronous receiver-transmitter (USART), SPIK interface, and hardware multiplier.
• Description of the test access port (TAP) and in-circuit debug interface.
• Description of the in-system programming mode.
The MAXQ8913 data sheet, which contains electrical/timing specifications and pin descriptions, is available at
www.maxim-ic.com/MAXQ8913.
Errata sheets for the MAXQ8913 and other MAXQ microcontrollers are available at www.maxim-ic.com/errata.
For more information on other MAXQ microcontrollers, development hardware and software, frequently asked questions, and software examples, visit the MAXQ page at www.maxim-ic.com/MAXQ.
architecture
MAXQ is a registered trademark of Maxim Integrated Products, Inc.
SPI is a trademark of Motorola, Inc.
Maxim Integrated
1-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 2: ARCHITECTURE
The MAXQ8913 shares the common architecture features with other members of the MAXQ microcontroller family.
Details are discussed in the following sections.
2.1 Instruction Set
This device uses the standard 16-bit MAXQ20 core instruction set as described in the MAXQ Family User’s Guide.
2.2 Harvard Memory Architecture
Program memory, data memory, and register space follow the Harvard architecture model. Each type of memory
is kept separate and is accessed by a separate bus, allowing different word lengths for different types of memory.
Registers can be either 8 bits or 16 bits in width. Program memory is 16 bits in width to accommodate the standard
MAXQ20 16-bit instruction set. Data memory is also 16 bits in width, but can be accessed in 8-bit or 16-bit modes for
maximum flexibility.
The MAXQ8913 includes a flexible memory-management unit (MMU) that allows code to be executed from either the
program flash, the utility ROM, or the internal data SRAM. Any of these three memory spaces can also be accessed in
data space at any time, with the single restriction that the physical memory area that is currently being used as program
space cannot be simultaneously read from in data space.
2.3 Register Space
The MAXQ8913 contains the standard set of MAXQ20 system registers as described in the MAXQ Family User’s Guide,
but with differences noted in this guide where they exist.
Peripheral register space (modules 0 to 3) contains registers that are used to access the following peripherals:
• 12-bit SAR ADC converter with up to seven single-ended or three differential input channels
• Four DAC output channels (two 10-bit, two 8-bit)
• Two programmable current sink outputs
• External D-amplifier support
• Internal temperature sensor (read through ADC channel 6)
• General-purpose 8-bit I/O ports (P0 and P1)
• External interrupts (up to 11)
• Programmable Type B timer/counter
• Serial USART interface
2
• I
C interface
• SPI interfaces (master/slave)
• Hardware multiplier/accumulator
The lower 8 bits of all registers in modules 0 to 3 (as well as the AP module M8) are bit addressable.
Maxim Integrated
2-1
OOh
O1h
O2h
O3h
O4h
O5h
O6h
O7h
O8h
O9h
0Ah
OBh
OCh
ODh
OEh
OFh
10h
REGISTER INDEX
11h
12h
13h
14h
15h
16h
17h
18h
19h
1Ah
1Bh
1Ch
1Dh
1Eh
1Fh
REGISTER MODULE
M0M1M2M3M4M8M9
PO0
PO1
EIFO
EIEO
EIF1
EIE1
SVM
EIES0
EIES1
PWCN
PID0
PD0
PD1
SCONADST
SBUF
SPICN0
SPIB0
I2CCN
I2CST
I2CBUF
I2CIE
SMD
SPICK0
I2CCK
I2CTO
I2CSLA
MCNT
MA
ADADDR
MB
DAC1OUT
DAC2OUT
MC2
DAC3OUT
MC1
DAC4OUTIC
MC0
TB0CN
PR
AMPCNIMR
TBOR
ISINKCN
ADCNSCPIOMC1R
ADDATAPI1MC0R
TBOV
OPMCNSPICF0
TBOC
DACENIIR
TEMPEN
APA[O]IP
APCA[1]
PSF
CKCN
WDCN
MAXQ Family User’s Guide:
MAXQ8913 Supplement
A[2]
A[3]
A[4]
A[5]
A[6]
A[7]
A[8]
A[9]
A[10]
A[11]
A[12]
A[13]
A[14]
A[15]
M11
PFX
M12M13M14M15
SP
IV
OFFSDP[O]
DPC
GR
LC[0]GRL
BPLC[1]DP[1]
GRS
GRH
GRXL
BP[OFFS]
RESERVED
OR
OP CODE
8-CHANNEL,
12-BIT
SAR ADC
PORT PINS
(GPIO)
DACs,
ANALOG
FUNCTIONS
Figure 2-1. MAXQ8913 System and Peripheral Register Map
2-2
INTERRUPT
CONTROL
HARDWARE
MULTIPLIER
SERIAL,
SPI, I
TIMERS
2
C
ACC
ARRAY,
CONTROL
OTHER
FUNCTIONS
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
2.4 Memory Organization
As with all MAXQ microcontrollers, the MAXQ8913 contains logically separate program and data memory spaces. All
memory is internal, and physical memory segments (other than the stack and register memories) can be accessed as
either program memory or as data memory, but not both at once.
The MAXQ8913 contains the following physical memory segments.
2.4.1 Register Space
As described in the MAXQ Family User’s Guide, register space on MAXQ microcontrollers consists of 16 register modules, each of which could contain up to 32 registers. Of these possible 16 register modules, only 11 are used on the
MAXQ8913: seven for system registers and four for peripheral registers.
2.4.2 Program Stack
The MAXQ8913 provides a 16 x 16 hardware stack to support subroutine calls and system interrupts. This stack is used
automatically by CALL/RET and PUSH/POP instructions, and can also be accessed directly through the SP register as
described in the MAXQ Family User’s Guide.
When using the in-circuit debugging features, one word of the stack must be reserved to store the return location when
execution branches into the debugging routines in the utility ROM. If in-circuit debug is not used, the entire stack is
available for application use.
2.4.3 Data SRAM
The MAXQ8913 contains up to 2048 words (4KB) of on-chip data SRAM, which can be mapped into either program or
data space. The contents of this SRAM are indeterminate after power-on reset, but are maintained during stop mode
and across non-POR resets.
When using the in-circuit debugging features, the highest 19 bytes of the SRAM must be reserved for saved state storage and working space for the debugging routines in the utility ROM. If in-circuit debug is not used, the entire SRAM
is available for application use.
2.4.4 Program Flash
The MAXQ8913 contains 32KWords (32K x 16) of flash memory, which normally serves as program memory. When
executing from the data SRAM or utility ROM, this memory is mapped to data space (as 32KWords or 64KB) and can
be used for lookup tables and similar functions.
Since program memory is mapped into data space starting at address 8000h, only half the available program memory
can be mapped into data space at one time when operating in byte-access mode. The CDA0 (code data access) bit
is used to control which half of program memory is available in data space as shown in Figure 2-3 and Figure 2-4, and
as described in the MAXQ Family User’s Guide. When operating in word-access mode, the entire 32KWord program
memory can be mapped into data space at once.
Flash memory mapped into data space can be read from directly, like any other type of data memory. However, writing
to flash memory must be done indirectly by calling the in-application functions provided by the utility ROM. See Section 25:Utility ROM for more details.
2.5 Program and Data Memory Mapping
Figures 2-2, 2-3, and 2-4 show the mapping of physical memory segments into the program and data memory space.
The mapping of memory segments into program space is always the same. The mapping of memory segments into
data space varies depending on which memory segment is currently being executed from.
In all cases, whichever memory segment is currently being executed from in program space may not be accessed in
data space.
Maxim Integrated
2-3
MAXQ Family User’s Guide:
MAXQ8913 Supplement
DATA SPACE
(BYTE MODE)
4K x 8
UTILITY ROM
4K x 8
DATA SRAM
EXECUTING FROM
PROGRAM
SPACE
2K x 16
DATA SRAM
2K x 16
UTILITY ROM
32K x 16
PROGRAM FLASH
FFFFh
A7FFh
A000h
87FFh
8000h
7FFFh
0000h
Figure 2-2. Memory Map When Executing from Program Flash Memory
DATA SPACE
(WORD MODE)
FFFFhFFFFh
8FFFh
8000h
0FFFh
0000h
2K x 16
UTILITY ROM
2K x 16
DATA SRAM
87FFh
8000h
07FFh
0000h
EXECUTING FROM
PROGRAM
SPACE
2K x 16
DATA SRAM
2K x 16
UTILITY ROM
16K x 16
PROGRAM FLASH
(PAGE 1)
16K x 16
PROGRAM FLASH
(PAGE 0)
DATA SPACE
(BYTE MODE, CDA0 = 0)
FFFFhFFFFh
A7FFh
A000h
87FFh
8000h
7FFFh
4000h
3FFFh
0000h
32K x 8
LOWER HALF
(PAGE 0) OF
PROGRAM FLASH
MEMORY
8000h
0FFFh
4K x 8
DATA SRAM
0000h
DATA SPACE
(BYTE MODE, CDA0 = 1)
32K x 8
UPPER HALF
(PAGE 1) OF
PROGRAM FLASH
MEMORY
4K x 8
DATA SRAM
FFFFh
8000h
0FFFh
0000h
DATA SPACE
(WORD MODE)
FFFFh
32K x 16
PROGRAM FLASH
8000h
07FFh
2K x 16
DATA SRAM
0000h
Figure 2-3. Memory Map When Executing from Utility ROM
2-4
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
EXECUTING FROM
PROGRAM
SPACE
2K x 16
DATA SRAM
2K x 16
UTILITY ROM
16K x 16
PROGRAM FLASH
(PAGE 1)
16K x 16
PROGRAM FLASH
(PAGE 0)
DATA SPACE
(BYTE MODE, CDA0 = 0)
FFFFhFFFFh
A7FFh
A000h
87FFh
4K x 8
UTILITY ROM
8000h
7FFFh
4000h
3FFFh
0000h
32K x 8
LOWER HALF
(PAGE 0) OF
PROGRAM FLASH
MEMORY
8000h
7FFFh
0000h
DATA SPACE
(BYTE MODE, CDA0 = 1)
4K x 8
UTILITY ROM
32K x 8
UPPER HALF
(PAGE 1) OF
PROGRAM FLASH
MEMORY
FFFFh
8000h
7FFFh
0000h
DATA SPACE
(WORD MODE)
FFFFh
87FFh8FFFh8FFFh
2K x 8
UTILITY ROM
8000h
7FFFh
32K x 16
PROGRAM FLASH
0000h
Figure 2-4. Memory Map When Executing from Data SRAM
2.6 Clock Generation
All functional modules in the MAXQ8913 are synchronized to a single system clock. This system clock can be generated from one of the following clock sources:
• External high-frequency clock
• Internal high-frequency oscillator using external crystal or resonator circuit
• Internal 1MHz ring oscillator
The MAXQ8913 does not support an external RC relaxation oscillator circuit or the 32kHz crystal input described in
the MAXQ Family User’s Guide.
The following registers and bits are used to control clock generation and selection. For more information, see the register descriptions in this guide and in the MAXQ Family User’s Guide.
2.6.1 External High-Frequency Oscillator Circuit
The high-frequency oscillator operates as described in Section 2.7: Clock Generation of the MAXQ Family User’s
Guide. If used, the external crystal or resonator circuit for this oscillator should be connected between the HFXIN and
HFXOUT pins.
The high-frequency oscillator can be disabled by setting HFXD (PWCN.0) to 1; this is only allowed if the high-frequency
oscillator is not currently being used as the clock source (RGMD and RGSL must both equal 1). In this configuration,
an external clock can be used to directly drive HFXIN; refer to the MAXQ8913 data sheet for more details.
Maxim Integrated
2-5
MAXQ Family User’s Guide:
MAXQ8913 Supplement
POWER-ON
RESET
STOP
CRYSTAL KLL
HF
CRYSTAL
1MHz
INTERNAL
RING OSC
ENABLE
RESETXDOG COUNT
XDOG
STARTUP
TIMER
CLK INPUT
MUX
GLITCH-FREE
XDOG DONE
MAXQ8913
CLOCK
DIVIDER
GLITCH-FREE
DIV 1
DIV 2
SELECTOR
MUX
DIV 4
DIV 8
PMM
DEFAULT
RING SELECT
RESET DOG
WATCHDOG
TIMER
ENABLE
CLOCK
GENERATION
RWT
RESET
WATCHDOG RESET
WATCHDOG INTERRUPT
SYSTEM CLOCK
SWB
SWITCHBACK SOURCES
RESET
STOP
STOP
POWER-ON
RESET
INPUT
CRYSTAL
MONITOR
ENABLE
RGMD
POWER-ON RESET
XDOG DONE
RGSL
Figure 2-5. MAXQ8913 Clock Sources
2.6.2 Ring Oscillator
The MAXQ8913 contains an internal ring oscillator that can optionally be used as a system clock. The ring oscillator
operates at a frequency of approximately 1MHz (refer to the MAXQ8913 data sheet for details).
On power-on reset, the ring oscillator is automatically enabled as the system clock source while the high-frequency
oscillator warms up. Once the warmup count for the high-frequency oscillator has completed, the clock source switches to the high-frequency oscillator automatically. If no external crystal or resonator circuit is provided at HFXIN, the
switchover never occurs, and the clock runs from the ring oscillator indefinitely.
To explicitly select the ring oscillator as the system clock source, the RGSL bit (CKCN.6) must be set to 1. Setting this
bit switches over the system clock source to the ring oscillator following a 10-cycle delay of the 1MHz ring clock. The
RGMD (CKCN.5) bit indicates the current system clock source. If the ring oscillator is currently providing the system
clock, RGMD reads as 1; otherwise, RGMD reads as 0.
2-6
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Table 2-1. System Clock Generation and Control Registers
REGISTERADDRESSBIT(S)FUNCTION
000: System clock = high-frequency clock divided by 1.
001: System clock = high-frequency clock divided by 2.
010: System clock = high-frequency clock divided by 4.
011: System clock = high-frequency clock divided by 8.
1xx: System clock = high-frequency clock/256.
CKCNM8[0Eh]
[2:0]—PMME,
CD[1:0]
CKCNM8[0Eh]5—RGMD
CKCNM8[0Eh]6—RGSL
PWCNM0[0Ch]0—HFXD
0: System clock is being provided by an external source.
1: System clock is being provided by the ring oscillator.
0: Selects an external source for system clock generation.
1: Selects the ring oscillator for system clock generation.
0: High-frequency oscillator operates normally (default).
1: Disables the high-frequency oscillator, allowing an external clock to be
provided at HFXIN.
Because the RGSL bit is cleared by power-on reset only, if this bit is set before entering stop mode, the ring oscillator
is still used as the system clock source when stop mode is exited. In this case, a 10-ring oscillator cycle warmup delay
is required when exiting stop mode before execution resumes using the ring oscillator as the system clock source.
When the system clock source is switched back from the ring oscillator to the high-frequency oscillator by clearing
RGSL to 0, the ring oscillator is still used as the system clock source until the warmup period has completed for the
high-frequency oscillator. This is reflected by the value of the RGMD bit, which remains at 1 until the warmup for the
high-frequency oscillator has completed and the clock switches over, at which point RGMD switches to 0.
2.7 Interrupts
In general, interrupt handling on the MAXQ8913 operates as described in the MAXQ Family User’s Guide. All interrupt
sources have the same priority, and all interrupts cause program execution to branch to the location specified by the
Interrupt Vector (IV) register, which defaults to 0000h.
Table 2-2 lists all possible interrupt sources for the MAXQ8913, along with their corresponding module interrupt enable
bits, local interrupt enable bits, and interrupt flags.
• Each module interrupt enable bit, when cleared to 0, blocks interrupts originating in that module from being acknowledged. When the module interrupt enable bit is set to 1, interrupts from that module are acknowledged (unless all
interrupts have been disabled globally).
• Each local interrupt enable bit, when cleared to 0, disables the corresponding interrupt. When the local interrupt-
enable bit is set to 1, the interrupt is triggered whenever its interrupt flag is set to 1 by hardware or by software.
• Each interrupt flag bit, when set to 1, causes its corresponding interrupt to trigger. Interrupt flag bits are typically set
by hardware and must be cleared by software (generally in the interrupt handler routine).
Note that for an interrupt to fire, the following five conditions must exist:
• Interrupts must be enabled globally by setting IGE (IC.0) to 1.
• The module interrupt enable bit for the interrupt source’s module must be set to 1.
• The local interrupt enable bit for the specific interrupt source must be set to 1.
• The interrupt flag for the interrupt source must be set to 1. Typically, this is done by hardware when the condition
that requires interrupt service occurs.
• The interrupt-in-service (INS) bit must be cleared to 0. This bit is set automatically upon vectoring to the interrupt
handler (IV) address and cleared automatically upon exit (RETI/POPI), so the only reason to clear this bit manually
(inside the interrupt handler routine) is to allow nested interrupt handling.
Maxim Integrated
2-7
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Table 2-2. Interrupt Sources and Control Bits
INTERRUPTMODULE ENABLE BITLOCAL ENABLE BITINTERRUPT FLAG
C START Condition InterruptIM1 (IMR.1)I2CSRI (I2CST.0)I2CSRIE (I2CIE.0)
I
2
C Transmit Complete InterruptIM1 (IMR.1)I2CTXI (I2CST.1)I2CTXIE (I2CIE.1)
I
2
C Receive Ready InterruptIM1 (IMR.1)I2CRXI (I2CST.2)I2CRXIE (I2CIE.2)
I
2
C Clock Stretch InterruptIM1 (IMR.1)I2CSTRI (I2CST.3)I2CSTRIE (I2CIE.3)
I
2
C Timeout InterruptIM1 (IMR.1)I2CTOI (I2CST.4)I2CTOIE (I2CIE.4)
I
2
C Slave Address Match InterruptIM1 (IMR.1)I2CAMI (I2CST.5)I2CAMIE (I2CIE.5)
I
2
C Arbitration Loss InterruptIM1 (IMR.1)I2CALI (I2CST.6)I2CALIE (I2CIE.6)
I
2
C NACK InterruptIM1 (IMR.1)I2CNACKI (I2CST.7)I2CNACKIE (I2CIE.7)
I
2
C General Call Address InterruptIM1 (IMR.1)I2CGCI (I2CST.8)I2CGCIE (I2CIE.8)
I
2
C Receiver Overrun InterruptIM1 (IMR.1)I2CROI (I2CST.9)I2CROIE (I2CIE.9)
I
2
C STOP Condition InterruptIM1 (IMR.1)I2CSPI (I2CST.11)I2CSPIE (I2CIE.11)
I
Type B Timer—External TriggerIM2 (IMR.2)EXFB (TBCN.6)ETB (TBCN.1)
Type B Timer—OverflowIM2 (IMR.2)TFB (TBCN.7)ETB (TBCN.1)
ADC Data Available InterruptIM3 (IMR.3)ADDAIE (ADCN.5)ADDAI (ADST.5)
Amplifier InterruptIM3 (IMR.3)AMPIE (AMPCN.4)AMPIF (AMPCN.5)
2.8 Reset Conditions
There are four possible reset sources for the MAXQ8913. While in the reset state, the enabled system clock oscillator
continues running, but no code execution occurs. Once the reset condition has been removed or has completed, code
execution resumes at address 8000h for all reset types.
2-8
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
SUPPLY AT
V
DVDD
V
RST
T1
1MHz
RING OSCILLATOR
INTERNAL
RESET
RGMD
Figure 2-6. Power-On Reset Timing
T1 = STARTUP TIME PLUS 10 RING OSCILLATOR CYCLES
T2
T2 = 8192 EXTERNAL OSCILLATOR CYCLES
2.8.1 Power-On Reset
When power is first applied to the MAXQ8913, or when the supply voltage at DVDD drops below the V
processor is held in a power-on reset state. See Figure 2-6. For the MAXQ8913 to exit power-on reset, the following
two conditions must apply:
• The supply voltage at DVDD is above the power-on reset level V
RST.
• The ring oscillator has completed a 10-cycle delay.
level, the
RST
2.8.2 Watchdog Timer Reset
The watchdog timer on the MAXQ8913 functions as described in the MAXQ Family User’s Guide.
2.8.3 External Reset
External reset through the RST input is a synchronous reset source. After the external reset low has been removed and
sampled, execution resumes following a delay of four clock cycles, as shown in Figure 2-7.
Maxim Integrated
2-9
CLOCK
RST
RESET SAMPLING
INTERNAL RESET
Figure 2-7. External Reset Timing
MAXQ Family User’s Guide:
MAXQ8913 Supplement
FIRST
INSTRUCTION
FETCH
2.9 Power-Management Features
The MAXQ8913 provides the following features to assist in power management:
• Divide-by-256 (PMM) mode to reduce current consumption.
• Switchback mode to exit PMM mode automatically when rapid processing is required.
• Ultra-low-power stop mode.
• Selective regulator and brownout detection disable during stop mode.
Table 2-3 shows the system registers and bits used to control power-management features. For more information, see
the register descriptions in this document and in the MAXQ Family User’s Guide.
Table 2-3. System Power-Management Registers
REGISTERADDRESSBITFUNCTION
00: System clock = selected clock source divided by 1.
CKCNM8[0Eh][1:0]—CD[1:0]
CKCNM8[0Eh]2—PMME
CKCNM8[0Eh]3—SWB
CKCNM8[0Eh]4—STOPWhen set to 1, causes the processor to enter stop mode.
PWCNM0[0Ch]0—HFXD
PWCNM0[0Ch]6—REGEN
PWCNM0[0Ch]7—BOD
01: System clock = selected clock source divided by 2.
10: System clock = selected clock source divided by 4.
11: System clock = selected clock source divided by 8.
0: System clock is determined by the settings of CD[1:0].
1: System clock = selected clock source divided by 256.
When set to 1, enables automatic switchback from PMM (divide-by-256
mode) to normal clock-divide mode under certain conditions.
0: Enables the high-frequency oscillator.
1: Disables the high-frequency oscillator, allowing an external clock to be
provided at HFXIN.
0: Internal regulator is shut down during stop mode.
1: Internal regulator remains powered on during stop mode.
0: Brownout detection remains enabled during stop mode.
1: Brownout detection is enabled during stop mode.
2-10
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
2.9.1 Divide-by-256 Mode (PMM)
In this power-management mode, all operations continue as normal, but at a reduced clock rate (the selected clock
source divided by 256).
This power-management mode is entered by setting the PMME bit (CKCN.2) to 1 and CD[1:0] to 0. When PMM mode
is exited (either by clearing the PMME bit or as a result of a switchback trigger), system operation reverts to divideby-1 mode.
2.9.2 Switchback Mode
As described in the MAXQ Family User’s Guide, switchback mode is used to provide an automatic exit from powermanagement mode when a higher clock rate is required to respond to I/O, such as USART activity, SPI activity, or an
external interrupt.
Switchback mode is enabled when the SWB (CKCN.3) bit is set to 1 and the PMME (CKCN.2) bit is set to 1 (the system
is in the PMM mode). If switchback is enabled, the PMME bit is cleared (causing the system to exit power-management
mode) when any of the following conditions occur:
• An external interrupt condition occurs on an INTn pin and the corresponding external interrupt is enabled.
• An active-low transition occurs on the RX pin and the USART is enabled to receive data.
• The SBUF register is written to transmit a byte over the USART.
• The SPIB register is written to transmit a byte with the SPI interface enabled in master mode.
• The SSEL signal is asserted low with the SPI interface enabled in slave mode.
• A START condition occurs on the I
• The supply voltage drops below the supply voltage monitor (SVM) threshold, and the SVM interrupt is triggered.
• An ADC conversion is initiated by setting ADCONV to 1.
• Active debug mode is entered either by a breakpoint match or direct issuance of the debug command from back-
ground mode.
As described in the MAXQ Family User’s Guide, if any of these conditions is true (a switchback source is active) and
the SWB bit has been set, the PMME bit cannot be set to enter power-management mode.
2
C bus and the I2C START interrupt is triggered.
2.9.3 Stop Mode
Stop mode disables all clocked circuits within the MAXQ8913 and halts the processor completely. All on-chip clocks,
timers, serial ports, and other peripherals are stopped, and no code execution occurs. Once in stop mode, the
MAXQ8913 is in a near-static state, with power consumption determined largely by leakage currents.
Stop mode is invoked by setting the STOP bit to 1. The MAXQ8913 enters stop mode immediately when the STOP bit
is set. Entering stop mode does not affect the setting of the clock control bits; this allows the system to return to its
original operating frequency following stop mode removal.
The processor exits stop mode if any of the following conditions occur. In order to exit stop mode by means of an interrupt, the interrupt must be enabled globally, by module, and locally prior to entering stop mode.
• External reset (from the RST pin)
• Power-on/brownout reset
• External interrupt
2
• I
C START interrupt
• Supply voltage monitor interrupt (SVMSTOP must be set to 1)
Note that exiting stop mode through external reset or power-on reset causes the processor to undergo a normal reset
cycle, as opposed to resuming execution at the point at which it entered stop mode. Exiting stop mode by means of an
interrupt causes the processor to vector to the interrupt handler routine at IV. Following the completion of the interrupt
handler, execution resumes at the instruction following the one that caused the entry into stop mode.
Maxim Integrated
2-11
MAXQ Family User’s Guide:
MAXQ8913 Supplement
When the processor exits stop mode, program execution resumes using the previously selected clock source following a 10-ring oscillator cycle delay plus any additional delay time required to enable the internal regulator and other
circuitry (refer to the IC data sheet for details).
• If RGSL = 1, the processor continues running from the ring oscillator indefinitely.
• If RGSL = 0, the processor continues running from the ring oscillator until the high-frequency clock source completes
its warmup count (8192 cycles for external crystal oscillator, 10 cycles for external clock input), at which point it
switches over to the high-frequency clock automatically.
2-12
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 3: PROGRAMMING
Refer to Section 3: Programming of the MAXQ Family User’s Guide for examples of general program operations involv-
ing the MAXQ core. The MAXQ8913 contains the MAXQ20 (16-bit accumulator version) of the MAXQ core.
Maxim Integrated
3-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 4: SYSTEM REGISTER DESCRIPTIONS
Refer to Section 4: System Register Descriptions of the MAXQ Family User’s Guide for functional descriptions of the
registers and bits in Table 4-1.
Note: Register names that appear in italics indicate read-only registers. Register names that appear in bold indicate 16-bit registers. All other registers are 8 bits in width.
Note: Bits marked as “s” have special behavior upon reset; see the register descriptions for details.
1514131211109876543210
1000000000000000
BIT
BIT
00
4-2
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
4.1 System Register Descriptions
This section details the functionality of any system register contained in the MAXQ8913 that operates differently from its
description in the MAXQ Family User’s Guide. Addresses for all system and peripheral registers are given as “Mx[yy],”
where x is the module number (from 0 to 15 decimal) and yy is the register index (from 00h to 1Fh hexadecimal). Fields
in the bit definition tables are defined as follows:
• Name: Symbolic names of bits or bit fields in this register.
• Reset: The value of each bit in this register following a standard reset. If this field reads “unchanged,” the given bit
is unaffected by standard reset. If this field reads “s,” the given bit does not have a fixed 0 or 1 reset value because
its value is determined by another internal state or external condition.
• POR: If present this field defines the value of each bit in this register following a power-on reset (as opposed to a
standard reset). Some bits are unaffected by standard resets and are set/cleared by POR only.
• Access: Bits can be read-only (r) or read/write (rw). Any special restrictions or conditions that could apply when
reading or writing this bit are detailed in the bit description.
4.1.1 Processor Status Flags Register (PSF, M8[04h])
Bit #
NameZS—GPF1GPF0OVCE
Reset00000000
Accessrrrrwrwrwrwrw
76543210
This register operates as described in the MAXQ Family User’s Guide, with the exception that the overflow bit (OV)
can be written by software.
4.1.2 Interrupt Mask Register (IMR, M8[06h])
Bit #
NameIMS———IM3IM2IM1IM0
Reset00000000
Accessrwrrrrwrwrwrw
The first four bits in this register are interrupt mask bits for modules 0 to 3, one bit per module. The eighth bit, IMS,
serves as a mask for any system module interrupt sources. Setting a mask bit allows the enabled interrupt sources for
the associated module or system (with IMS) to generate interrupt requests. Clearing the mask bit effectively disables
all interrupt sources associated with that module or, in the case of IMS, all system interrupt sources. The IMR register
is intended to facilitate user-definable interrupt prioritization.
Bit 7: System Module Interrupt Mask (IMS)
Bits 6:4: Reserved
Bit 3: Module 3 Interrupt Mask (IM3)
Bit 2: Module 2 Interrupt Mask (IM2)
Bit 1: Module 1 Interrupt Mask (IM1)
Bit 0: Module 0 Interrupt Mask (IM0)
76543210
Maxim Integrated
4-3
4.1.3 System Control Register (SC, M8[08h])
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bit #
NameTAP——CDA0——PWL—
Reset100000Unchanged0
POR10000010
Accessrwrrrrrrwr
Bit 7: Test Access (Debug) Port Enable (TAP)
0 = Debug port functions are disabled, and P0.0 to P0.3 can be used as general-purpose I/O pins.
1 = Port pins P0.0 to P0.3 are enabled to act as debug port (JTAG) inputs and outputs.
Bits 6:5, 3:2, 0: Reserved
Bit 4: Code Data Access (CDA0). Setting this bit to 0 or 1 enables access to either the low or high page of program
memory in data space when accessing data in byte mode, as shown in Figure 2-3 and Figure 2-4. When accessing
data space in word mode, the setting of this bit has no effect.
Bit 1: Password Lock (PWL). This bit defaults to 1 on power-on reset only. When this bit is 1, it requires a 32-byte
password to be matched with the password in the program space (words 10h to 1Fh) before allowing access to the
ROM loader’s utilities for read/write of program memory and debug functions. Clearing this bit to 0 disables the password protection to the ROM loader.
Bit #
NameIIS———II3II2II1II0
Reset00000000
Accessrrrrrrrr
76543210
The first three bits in this register indicate interrupts pending in modules 0 to 3, one bit per module. The eighth bit, IIS,
indicates a pending system interrupt (from the watchdog timer or other system function). The interrupt pending flags
are set only for enabled interrupt sources waiting for service. The interrupt pending flag is cleared when the pending
interrupt source(s) within that module are disabled or when the interrupt flag(s) are cleared by software.
Bit 7: Interrupt Pending Flag for System Modules (IIS)
Bits 6:4: Reserved
Bit 3: Interrupt Pending Flag for Module 3 (II3)
Bit 2: Interrupt Pending Flag for Module 2 (II2)
Bit 1: Interrupt Pending Flag for Module 1 (II1)
Bit 0: Interrupt Pending Flag for Module 0 (II0)
4-4
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
4.1.5 System Clock Control Register (CKCN, M8[0Eh])
Bit #
Name—RGSLRGMDSTOPSWBPMMECD1CD0
Reset10000000
Accessrrwrrwrwrwrw*rw*
*Unrestricted read access. This bit can only be modified when PMME = 0.
The CKCN register bit settings determine the system clock source and clock divider as described in Table 4-4.
Bit 7: Reserved
Bit 6: Ring Oscillator Select (RGSL)
0 = Selects the high-frequency clock source (external crystal/resonator or external clock input) as the system clock source.
1 = Selects the ring oscillator as the system clock source.
Bit 5: Ring Oscillator Mode (RGMD). This read-only status bit indicates the clock source that is currently being used.
0 = The high-frequency clock (external crystal or external clock input) is currently being used as the system clock
source, because the ring oscillator is not selected (RGSL = 0).
1 = The ring oscillator is currently being used as the system clock source. This is either because it is selected as the
clock source (RGSL = 1), or because the high-frequency clock source is in the process of warming up.
Bit 4: Stop-Mode Select (STOP). Setting this bit to 1 causes the processor to enter stop mode. This does not change
the currently selected clock-divide ratio.
Bit 3: Switchback Enable (SWB). Setting this bit to 1 enables switchback mode. If power-management mode (divide
by 256) is active and switchback is enabled, the PMME bit is cleared to 0 when any of the following conditions occur.
• An external interrupt is generated based on an edge detect.
• The serial port is enabled to receive data and detects a low condition on its data receive pin.
• The serial port has a byte written to its buffer register by software.
• The SPI interface is enabled in master mode, and the SPIB register is written by software.
• The SPI interface is enabled is slave mode, and an external master drives the SSEL line low.
• A START condition occurs on the I
• The power supply drops below the SVM threshold, causing an SVM interrupt to be generated.
• An ADC conversion is initiated by software by setting the ADCONV bit to 1.
• Debug mode is entered through command entry or a breakpoint match.
Triggering a switchback condition only clears the PMME bit; the settings of CD0 and CD1 remain the same. When
power-management mode is active, the SWB bit cannot be set to 1 as long as any of the above conditions are true.
Bit 2: Power-Management Mode Enable (PMME)
Bits 1:0: Clock Divide 1:0 (CD[1:0]). These three bits control the divide ratio or enable power-management mode for
the system clock as shown in Table 4-4. CD0 and CD1 can always be read, and they can be written as long as PMME
= 0.
Setting the PMME bit to 1 activates PMM mode. While PMME is set to 1, CD0 and CD1 cannot be changed; their values
determine the clock-divide ratio that is used when the processor exits power-management mode.
76543210
2
C bus, causing an I2C START interrupt to be generated.
Note: Register names that appear in italics indicate registers in which all bits are read-only. Register names that appear in bold
indicate 16-bit registers. All other registers are 8 bits in width.
Note: Bits marked as “s” have special behavior upon reset; see the register descriptions for details.
1514131211109876543210
0000000000000000
BIT
0000
00000
0
5-4
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 6: GENERAL-PURPOSE I/O MODULE
The MAXQ8913 provides up to 12 port pins for general-purpose I/O that are grouped into logical ports P0 and P1. Each
of these port pins has the following features:
• CMOS output drivers
• Schmitt trigger inputs
• Optional weak pullup to DVDD when operating in input mode
For the eight GPIO pins located in port 0 (P0.0 to P0.7) the Schmitt trigger inputs can be explicitly disabled on a pinby-pin basis by setting bits in the PID0 register.
Many of the port pins on the MAXQ8913 are also multiplexed with special and alternate functions as listed below.
All these functions are disabled by default with the exception of the debug port interface pins, which are enabled by
default following any reset. The behavior of these functions breaks down into two overall categories.
• Special functions override the PD and PO settings for the port pin when they are enabled. Once the special function takes control, normal control of the port pin is lost until the special function completes its task or is disabled.
Examples of special functions include serial port transmit and I
• Alternate functions operate in parallel with the PD and PO settings for the port pin, and generally consist of input-
only functions such as external interrupts. When an alternate function is enabled for a port pin, the port pin’s output
state is still controlled in the usual manner.
2
C clock and data.
Table 6-1. Port Pin Special and Alternate Functions
Mode 0: SBUF is written or REN is set to 1
(until serial transmission completes)
Maxim Integrated
6-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Table 6-1. Port Pin Special and Alternate Functions (continued)
PORT PINFUNCTION TYPEFUNCTIONENABLED WHEN
Mode 0: REN set to 1 (until serial transmis-
P1.1SpecialSerial Port 0 Transmit/Clock
2
P1.1SpecialSDA—I
P1.2AlternateExternal Interrupt 10(EIE1.2) EX10 = 1
P1.2AlternateType B Timer 0 Input A (Counter Input)C/TB = 1
P1.2SpecialType B Timer 0 Output A (Clock Output)C/TB = 0 and TB0E = 1
P1.3AlternateExternal Interrupt 11(EIE1.3) EX11 = 1
P1.3AlternateType B Timer 0 Input BEXENB = 1
P1.3SpecialType B Timer 0 Output B (Compare Output)TBCR:TBCS<>00b
C Data LineI2CEN = 1 (overrides serial port Tx)
The port pins on the MAXQ8913 operate the same as standard MAXQ port pins, with input/output states defined in
Table 6-2. Refer to the IC data sheet for specific voltage and current characteristics of port pins in input or output mode.
sion completes)
Mode 1/2/3: SBUF is written (until serial
transmission completes)
Table 6-2. P1[3:0] Input/Output States (in Standard Mode)
PD1.yPO1.yPORT PIN MODEPORT PIN (Px.y) STATEPI1.x READ VALUE
The port pins P0[7:0] on the MAXQ8913 have an additional operating mode available that allows the Schmitt input
triggers on individual pins to be enabled or disabled. When PID0.x is set to 1, the corresponding input bit PI0.x always
reads 0, regardless of the logic level that is currently present at the pin. When PID0.x is set to 0, the input bit PI0.x
operates normally.
Table 6-3. P0[7:0] Input/Output States (in Standard Mode)
PD0.xPO0.xPID0.xPORT PIN MODEPORT PIN (Px.y) STATEPI0.x READ VALUE
6.1 GPIO and External Interrupt Register Descriptions
The following peripheral registers are used to control the general-purpose I/O and external interrupt features specific
to the MAXQ8913. Addresses of registers are given as “Mx[yy],” where x is the module number (from 0 to 15 decimal)
and yy is the register index (from 00h to 1Fh hexadecimal). Fields in the bit definition tables are defined as follows:
• Name: Symbolic names of bits or bit fields in this register.
• Reset: The value of each bit in this register following a standard reset. If this field reads “unchanged,” the given bit
is unaffected by standard reset. If this field reads “s,” the given bit does not have a fixed 0 or 1 reset value because
its value is determined by another internal state or external condition.
• POR: If present this field defines the value of each bit in this register following a power-on reset (as opposed to a
standard reset). Some bits are unaffected by standard resets and are set/cleared by POR only.
• Access: Bits can be read-only (r) or read/write (rw). Any special restrictions or conditions that could apply when
reading or writing this bit are detailed in the bit description.
6.1.1 Port 0 Direction Register (PD0, M0[10h])
Bit #
NamePD0
Reset00000000
Accessrwrwrwrwrwrwrwrw
76543210
Each of the bits in this register controls the input/output direction of a port pin (P0.0 to P0.7) as follows:
0 = The port pin is in input mode, either with a weak pullup (if PO = 1) or three-stated (if PO = 0).
1 = The port pin is in output mode, with the output level to drive given by PO.
6.1.2 Port 1 Direction Register (PD1, M0[11h])
Bit #
Name————PD1
Reset00000000
Accessrwrwrwrwrwrwrwrw
Each of the bits in this register controls the input/output direction of a port pin (P1.0 to P1.3) as follows:
0 = The port pin is in input mode, either with a weak pullup (if PO = 1) or three-stated (if PO = 0).
1 = The port pin is in output mode, with the output level to drive given by PO.
76543210
6.1.3 Port 0 Input Disable Register (PID0, M0[0Dh])
Bit #
NamePID0
Reset00000000
Accessrwrwrwrwrwrwrwrw
Each of the bits in this register controls the Schmitt trigger enable of a port pin (P0.0 to P0.7) as follows:
0 = The input Schmitt trigger is enabled; the port pin operates normally.
1 = The input Schmitt trigger is disabled; the port pin cannot be used for input.
76543210
Maxim Integrated
6-3
MAXQ Family User’s Guide:
MAXQ8913 Supplement
6.1.4 Port 0 Output Register (PO0, M0[00h])
Bit #
NamePO0
Reset11111111
Accessrwrwrwrwrwrwrwrw
This register stores the data that is output on any of the pins of port 0 that have been defined as output pins. If the port
pins are in input mode, this register controls the weak pullup for each pin. Changing the data direction of any pins for
this port (through register PD0) does not affect the value in this register.
6.1.5 Port 1 Output Register (PO1, M0[01h])
Bit #
Name————PO1
Reset00001111
Accessrrrrrwrwrwrw
This register stores the data that is output on any of the pins of port 1 that have been defined as output pins. If the port
pins are in input mode, this register controls the weak pullup for each pin. Changing the data direction of any pins for
this port (through register PD1) does not affect the value in this register.
76543210
76543210
6.1.6 Port 0 Input Register (PI0, M0[08h])
Bit #
NamePI0
Resetssssssss
Accessrrrrrrrr
Each of the read-only bits in this register reflects the logic state present at the corresponding port pin, unless the
Schmitt trigger for that pin has been disabled by setting PID0.x to 1.
76543210
6.1.7 Port 1 Input Register (PI1, M0[09h])
Bit #
Name————PI1
Reset0000ssss
Accessrrrrrrrr
Each of the read-only bits in this register reflects the logic state present at the corresponding port pin.
76543210
6-4
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
6.1.8 External Interrupt Flag 0 Register (EIF0, M0[02h])
Bit #
NameIE7IE6IE5IE4IE3IE2IE1IE0
Reset00000000
Accessrwrwrwrwrwrwrwrw
Each bit in this register is set when a negative or positive edge (depending on the ITn bit setting) is detected on the corresponding interrupt pin. Once an external interrupt has been detected, the interrupt flag bit remains set until cleared
by software or a reset. Setting any of these bits causes the corresponding interrupt to trigger if it is enabled to do so.
Bit 7: External Interrupt 7 Edge Detect (IE7)
Bit 6: External Interrupt 6 Edge Detect (IE6)
Bit 5: External Interrupt 5 Edge Detect (IE5)
Bit 4: External Interrupt 4 Edge Detect (IE4)
Bit 3: External Interrupt 3 Edge Detect (IE3)
Bit 2: External Interrupt 2 Edge Detect (IE2)
Bit 1: External Interrupt 1 Edge Detect (IE1)
Bit 0: External Interrupt 0 Edge Detect (IE0)
76543210
6.1.9 External Interrupt Flag 1 Register (EIF1, M0[04h])
Bit #
Name————IE11IE10IE9IE8
Reset00000000
Accessrrrrrwrwrwrw
76543210
Each bit in this register is set when a negative or positive edge (depending on the ITn bit setting) is detected on the corresponding interrupt pin. Once an external interrupt has been detected, the interrupt flag bit remains set until cleared
by software or a reset. Setting any of these bits causes the corresponding interrupt to trigger if it is enabled to do so.
Bit #
NameEX7EX6EX5EX4EX3EX2EX1EX0
Reset00000000
Accessrwrwrwrwrwrwrwrw
Each bit in this register controls the enable for one external interrupt. If the bit is set to 1, the interrupt is enabled (if it
is not otherwise masked). If the bit is set to 0, its corresponding interrupt is disabled.
Bit #
Name————EX11EX10EX9EX8
Reset00000000
Accessrrrrrwrwrwrw
76543210
Each bit in this register controls the enable for one external interrupt. If the bit is set to 1, the interrupt is enabled (if it
is not otherwise masked). If the bit is set to 0, its corresponding interrupt is disabled.
Bit #
Name————IT11IT10IT9IT8
Reset00000000
Accessrrrrrwrwrwrw
76543210
Each bit in this register controls the edge select mode for an external interrupt as follows:
0 = The external interrupt triggers on a rising (positive) edge.
1 = The external interrupt triggers on a negative (falling) edge.
Bits 7:4: Reserved
Bit 3: Edge Select for External Interrupt 11 (IT11)
Bit 2: Edge Select for External Interrupt 10 (IT10)
Bit 1: Edge Select for External Interrupt 9 (IT9)
Bit 0: Edge Select for External Interrupt 8 (IT8)
Maxim Integrated
6-7
MAXQ Family User’s Guide:
MAXQ8913 Supplement
6.2 Port Pin Examples
6.2.1 Port Pin Example 1: Driving Outputs on Port 0
move PO0, #000h ; Set all outputs low
move PD0, #0FFh ; Set all P0 pins to output mode
6.2.2 Port Pin Example 2: Receiving Inputs on Port 0
move PO0, #0FFh ; Set weak pullups ON on all pins
move PD0, #000h ; Set all P0 pins to input mode
nop ; Wait for external source to drive P0 pins
move Acc, PI0 ; Get input values from P0 (will return FF if
; no other source drives the pins low)
6-8
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 7: TIMER/COUNTER 0 MODULE
The MAXQ8913 does not provide this peripheral module.
Maxim Integrated
7-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 8: TIMER/COUNTER 1 MODULE
The MAXQ8913 does not provide this peripheral module.
Maxim Integrated
8-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 9: TIMER/COUNTER 2 MODULE
The MAXQ8913 does not provide this peripheral module.
Maxim Integrated
9-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 10: SERIAL I/O MODULE
The MAXQ8913 provides one serial universal synchronous/asynchronous receiver-transmitter (USART) interface that
operates as described in the MAXQ Family User’s Guide.
10.1 Serial USART I/O Pins and Control Registers
Table 10-1. Serial USART Input and Output Pins
SERIAL USART FUNCTIONPINMULTIPLEXED WITH GPIO
RX: Serial ReceiveM3P1.1
TX: Serial TransmitN4P1.0
Table 10-2. Serial USART Control Registers
REGISTERADDRESSFUNCTION
SCONM1[00h]Serial Port Control Register. Serial port mode, receive enable, 9th bit control, and interrupt flags.
SBUFM1[01h]Serial Port Data Buffer. Input and output data buffer.
SMDM1[08h]Serial Port Mode Register. Controls baud rate, interrupt enable, and framing error detection.
PRM1[09h]Serial Port Phase Register. Contains counter reload value for baud-rate generation.
10.2 Serial USART Code Examples
10.2.1 Serial USART Example: Echo Characters in 10-Bit Asynchronous Mode
move SCON.6, #1 ; Set to mode 1 (10-bit asynchronous)
move SCON.4, #1 ; Enable receiver
move SMD.1, #1 ; Baud rate = 16 x baud clock
move PR, #007DDh ; P = 2^21 * 9600 / 10.000MHz
move SCON.0, #0 ; Clear received character flag
move SCON.1, #0 ; Clear transmit character flag
;==============================================================================
;=
;= TxChar - Outputs a character to serial port.
;=
;= Inputs : Acc - Character to send.
;=
TxChar:
move SBUF, Acc ; Send character
TxChar_Loop:
move C, SCON.1 ; Check transmit flag
sjump NC, TxChar_Loop ; Stall until last transmit has completed
move SCON.1, #0 ; Clear the transmit flag
ret
;==============================================================================
;=
;= RxChar - Receives a character from serial port.
;=
;= Outputs : Acc - Character received.
;=
RxChar:
move C, SCON.0 ; Wait for receive flag to be set to 1
sjump NC, RxChar
move Acc, SBUF ; Get received character
move SCON.0, #0 ; Clear receive interrupt flag
ret
10-2
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 11: SERIAL PERIPHERAL INTERFACE
(SPI) MODULE
The MAXQ8913 provides a serial peripheral interface (SPI) module, which operates as described in the MAXQ Family
User’s Guide with the following additions:
• The maximum clock rate when operating in slave mode is the system clock divided by 4.
• The SPI configuration register (SPICF) contains an additional bit, slave active select (SAS, SPICF.6). This bit allows
the sense of the slave-select input to be changed from active low (SAS = 0, default) to active high (SAS = 1).
waitXfer:
move C, SPICN.6 ; Wait for transfer to complete
jump NC, waitXfer
move SPICN.6, #0 ; Clear transfer flag
ret
Maxim Integrated
11-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
11.2.2 SPI Example 2: Receiving Data in Slave Mode
move SPICN, #01h ; Enable SPI in slave mode
move SPICF, #00h ; Sample data at clock rising edge, 8 bit character
call getByte
move A[0], GR
call getByte
move A[1], GR
call getByte
move A[2], GR
call getByte
move A[3], GR
...
getByte:
move C, SPICN.6 ; Wait for transfer to complete
jump NC, getByte
move SPICN.6, #0 ; Clear transfer flag
move GR, SPIB ; Get character
ret
11-2
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 12: HARDWARE MULTIPLIER MODULE
The MAXQ8913 provides a hardware multiplier module that provides the following features (detailed in the MAXQ
Family User’s Guide):
• Completes a 16-bit x 16-bit multiply-accumulate or multiply-subtract operation in a single cycle
• Includes 48-bit accumulator
• Supports seven different multiplication operations:
Unsigned 16-bit multiply
Unsigned 16-bit multiply and accumulate
Unsigned 16-bit multiply and subtract
Signed 16-bit multiply
Signed 16-bit multiply and negate
Signed 16-bit multiply and accumulate
Signed 16-bit multiply and subtract
12.1 Hardware Multiplier Control Registers
The associated registers for this module are listed in Table 12-1.
Table 12-1. Hardware Multiplier Control Registers
REGISTERADDRESSFUNCTION
MCNTM2[00h]Multiplier Control Register. Controls the operation and mode selection for the multiplier.
MAM2[01h]Multiplier Operand A Register. Input register for the multiplier operations.
MBM2[02h]Multiplier Operand B Register. Input register for the multiplier operations.
MC2M2[03h]Multiplier Accumulate Register 2. Contains bits 32 to 47 of the accumulator.
MC1M2[04h]Multiplier Accumulate Register 1. Contains bits 16 to 31 of the accumulator.
MC0M2[05h]Multiplier Accumulate Register 0. Contains bits 0 to 15 of the accumulator.
MC1RM2[08h]Multiplier Read Register 1. Contains bits 16 to 31 of the last multiply operation result.
MC0RM2[09h]Multiplier Read Register 0. Contains bits 0 to 15 of the last multiply operation result.
12.2 Hardware Multiplier Code Examples
12.2.1 Hardware Multiplier Example: Multiply and Square/Accumulate
The MAXQ8913 does not provide this peripheral module.
Maxim Integrated
13-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 14: REAL-TIME CLOCK MODULE
The MAXQ8913 does not provide this peripheral module.
Maxim Integrated
14-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 15: TEST ACCESS PORT (TAP)
The JTAG/TAP port on the MAXQ8913 is multiplexed with port pins P0.0, P0.1, P0.2, and P0.3. These pins default to the
JTAG/TAP function on reset, which means that the part is always ready for in-circuit debugging or in-circuit programming operations following any reset.
Once an application has been loaded and starts running, the JTAG/TAP port can still be used for in-circuit debugging
operations. If in-circuit debugging functionality is not needed, the associated port pins can be reclaimed for application use by setting the TAP (SC.7) bit to 0. This disables the JTAG/TAP interface and allows the four pins to operate
as normal port pins.
Maxim Integrated
15-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 16: IN-CIRCUIT DEBUG MODE
The MAXQ8913 provides an in-circuit debugging interface through the debug port as described in the MAXQ Family
User’s Guide. This interface provides the following functions for use in debugging application software:
• Single-step (trace) execution
• Four program address breakpoints
• Two breakpoints configurable as data address or register address breakpoints
• Register read and write
• Program stack read
• Data memory read and write
• Optional password protection
The following sections provide specific notes on the operation of the MAXQ8913 in debugging mode.
16.1 Register Read and Write Commands
Any register location can be read or written using these commands, including reserved locations and those used for
op code support. No protection is provided by the debugging interface, and avoiding side effects is the responsibility
of the host system communicating with the MAXQ8913.
Writing to the IP register alters the address that execution resumes at once the debugging engine exits.
In general, reading a register through the debug interface returns the value that was in that register before the debugging engine was invoked. An exception to this rule is the SP register; reading the SP register through the debug interface actually returns the value (SP+1).
16.2 Data Memory Read Command
When invoking this command, ICDA should be set to the word address of the starting location to read from, and ICDD
should be set to the number of words. The input address must be based on the utility ROM memory map, as shown
in Figure 2-3.
Data memory words returned by this command are output LSB first.
16.3 Data Memory Write Command
When invoking this command, ICDA should be set to the word address of the location to write to, and ICDD should be
set to the data word to write. The input address must be based on the utility ROM memory map, as shown in Figure 2-3.
16.4 Program Stack Read Command
When invoking this command, ICDA should be set to the address of the starting stack location (value of SP) to read
from, and ICDD should be set to the number of words. The address given in ICDA is the highest value that is used, as
words are popped off the stack and returned in descending order.
Stack words returned by this command are output LSB first.
16.5 Read Register Map Command
This command outputs all peripheral registers in the range M0[00h] to M4[1Fh], along with a fixed set of system registers. The following formatting rules apply to the returned data:
• System registers are output as 8 bits or 16 bits, least significant byte first.
• All peripheral registers are output as 16 bits, least significant byte first. The top byte of 8-bit registers are returned
as 00h.
• Nonimplemented and reserved peripheral registers in the range M0[00h] to M4[1Fh] are represented as empty word
values in Table 16-1. These values should be ignored.
• Registers SBUF, SPIB, I2CBUF, and ADDATA are not read, and their values are returned as 0000h.
Maxim Integrated
16-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
The first byte output by this command is the value 160 (0A0h), which represents the number of peripheral register
words output. Table 16-1 lists the remaining 352 bytes output by this command. Values shown as “—” are don’t care
values that should be ignored by the debugging host.
ADDENDUM TO SECTION 17: IN-SYSTEM PROGRAMMING (JTAG)
The MAXQ8913 provides a JTAG-compatible debug port interface for in-system programming (bootloader) operations.
In order to use this interface for in-system programming, the SPE bit must be set through the debug port. This is done
while the device is held in reset, using the system programming instruction as described in the MAXQ Family User’s Guide.
17.1 JTAG Bootloader Protocol
The only bootloader interface supported for the MAXQ8913 is the debug port. When using the debug port, the clock
rate (TCK) must be kept below 1/8 the system clock rate.
All bootloader commands begin with a single command byte. The high four bits of this command byte define the command family (from 0 to 15), while the low four bits define the specific command within that family.
All commands (except for those in Family 0) follow this format:
BYTE 1BYTE 2BYTE 3BYTE 4(LENGTH) BYTES/WORDS
CommandLengthParam 1Param 2Data
After each command has completed, the loader outputs a “prompt” byte to indicate that it has finished the operation.
The prompt byte is the single character “>” (byte value 03Eh).
Bootloader commands that fail for any reason set the bootloader status byte to an error code value describing the
reason for the failure. This status byte can be read by means of the Get Status command (04h).
Table 17-1. Bootloader Status Codes
STATUS
VALUE
00No Error. The last command completed successfully.
01Family Not Supported. An attempt was made to use a command from a family the bootloader does not support.
02Invalid Command. An attempt was made to use a nonexistent command within a supported command family.
03
04Bad Parameter. The parameter (address or otherwise) passed to the command was out of range or otherwise invalid.
05Verify Failed. The verification step failed on a Load/Verify or Verify command.
06Unknown Register. An attempt was made to read from or write to a nonexistent register.
07
08Master Erase Failed. The bootloader was unable to perform master erase.
All commands in Family 0 can be executed without first matching the password. All other commands (in families 1x
through Fx) are password protected; the password must first be matched before these commands can be executed.
A special case exists when the program memory has not been initialized (following master erase). If the password
(stored in word locations 0010h to 001Fh in program memory) is all 0000h words or all FFFFh words, the bootloader
treats the password as having been matched and automatically unlocks the password bit. This allows access to
password-protected commands following master erase (when no password has been set in program memory).
When providing addresses for code or data read or write to bootloader commands, all addresses run from 0000h to
(memory size – 1).
No Password Match. An attempt was made to use a password-protected command without first matching a valid
password. Or, the Match Password command was called with an incorrect password value.
Word Mode Not Supported. An attempt was made to set word-mode access, but the bootloader supports byte-
mode access only.
FUNCTION
Maxim Integrated
17-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
17.2 Family 0 Commands (Not Password Protected)
Command 00h—No Operation
I/OBYTE 1
Input
Output
Command 01h—Exit Loader
This command causes the bootloader command loop to exit. Upon exit, the MAXQ8913 clears the SPE bit and resets
itself internally. Following the internal reset, execution jumps to the beginning of application code at address 0000h.
I/OBYTE 1
Input
Output
Command 02h—Master Erase
This command erases (programs to FFFFh) all words in the program flash memory and writes all words in the data
SRAM to zero. After this command completes, the password lock bit is automatically cleared, allowing access to all
bootloader commands.
00h
01h
I/OBYTE 1
Input
Output
02h
Command 03h—Password Match
This command accepts a 32-byte password value, which is matched against the password in program memory (in byte
mode) from addresses 0020h to 003Fh. If the value matches, the password lock is cleared.
I/OBYTE 1BYTES 2 TO 33BYTE 34BYTE 35
Input
Output
03h32-Byte Password Value00h00h
03Eh
Command 04h—Get Status
The status code returned by this command is defined in Table 17-1. The flags byte contains the bit status flags as
shown in Table 17-2.
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5
Input
Output
04h00h00h00h00h
FlagsStatus Code03Eh
17-2
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Table 17-2. Bootloader Status Flags
FLAG BITFUNCTION
Password Lock
0
1
2
3 to 8Reserved
Command 05h—Get Supported Commands
The SupportL (LSB) and SupportH (MSB) bytes form a 16-bit value that indicates which command families this bootloader supports. If bit 0 is set to 1, it indicates that Family 0 is supported. If bit 1 is set to 1, it indicates that Family 1
is supported, and so on. For the MAXQ8913, the value returned is 403Fh, indicating that command families 0, 1, 2, 3,
4, 5, and E are supported.
The CodeLen and DataLen bytes return the fixed block lengths used by the Load/Dump/Verify Fixed Length commands
for code and data space, respectively. Because fixed block load is not supported on the MAXQ8913, both these values
are returned as 00h.
0 = The password is unlocked or had a default value; password-protected commands can be used.
1 = The password is locked. Password-protected commands cannot be used.
Word/Byte Mode
0 = The bootloader is currently in byte mode for memory reads/writes.
1 = The bootloader is currently in word mode for memory reads/writes. (Note: The MAXQ8913 supports byte mode
only.)
Word/Byte Mode Supported
0 = The bootloader supports byte mode only.
1 = The bootloader supports word mode as well as byte mode. (Note: The MAXQ8913 supports byte mode only.)
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5BYTE 6BYTE 7
Input
Output
05h00h00h00h00h00h00h
SupportLSupportHCodeLenDataLen03Eh
Command 06h—Get Code Size
This command returns SizeH:SizeL, which represents the size of available code memory in words minus 1. If this command is unsupported, the return value is 0000h, meaning “unknown amount of memory.”
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5
Input
Output
06h00h00h00h00h
SizeLSizeH03Eh
Command 07h—Get Data Size
This command returns SizeH:SizeL, which represents the size of available data memory in words minus 1. If this command is unsupported, the return value is 0000h, meaning “unknown amount of memory.”
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5
Input
Output
07h00h00h00h00h
SizeLSizeH03Eh
Maxim Integrated
17-3
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Command 08h—Get Loader Version
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5
Input
Output
Command 09h—Get Utility ROM Version
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5
Input
Output
Command 0Ah—Set Word/Byte-Mode Access
The mode byte should be 0 to set byte-access mode or 1 to set word-access mode. The current access mode is
returned in the status flag byte by command 04h, as well as a flag to indicate whether word-access mode is supported
by this particular bootloader. Note: The MAXQ8913 supports byte mode only.
I/OBYTE 1BYTE 2BYTE 3BYTE 4
Input
Output
08h00h00h00h00h
VersionLVersionH03Eh
09h00h00h00h00h
VersionLVersionH03Eh
0AhMode00h00h
03Eh
Command 0Dh—Get ID Information
For the MAXQ8913, the information returned by this command is a zero-terminated ROM banner string.
I/OBYTE 1(VARIABLE)LAST BYTE
Input
Output
0Dh00h, 00h, 00h . . .00h
Device-Dependent Information03Eh
17.3 Family 1 Commands: Load Variable Length (Password Protected)
Command 10h—Load Code Variable Length
This command programs (Length) bytes of data into the program flash starting at byte address (AddressH:AddressL),
with the following restrictions.
• The low bit of the address is always forced to zero, since instructions in program flash must be word aligned.
• In byte mode, if an odd number of bytes is input, the final word written to the program flash has its most significant
byte set to 00h by default.
• Memory locations in flash that have previously been loaded must be erased (using the Master Erase command, the
Erase Code Fixed Length command, or the flashErasePage or flashEraseAll utility ROM routines) before they can
be loaded with a different value.
• In keeping with standard MAXQ little-endian memory architecture, the least significant byte of each word is loaded
first. For example, if one loads bytes (11h, 22h, 33h, 44h) starting at address 0000h, the first two words of program
space are written to (2211h, 4433h).
I/OBYTE 1BYTE 2BYTE 3BYTE 4
Input
Output
10hLengthAddressLAddressHData to load00h00h
(LENGTH)
BYTES
BYTE
LENGTH+5
BYTE
LENGTH+6
03Eh
17-4
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Command 11h—Load Data Variable Length
This command writes (Length) bytes of data into the data SRAM starting at byte address (AddressH:AddressL).
I/OBYTE 1BYTE 2BYTE 3BYTE 4
Input
Output
11hLengthAddressLAddressHData to load00h00h
(LENGTH)
BYTES
BYTE
LENGTH+5
BYTE
LENGTH+6
03Eh
17.4 Family 2 Commands: Dump Variable Length (Password Protected)
Command 20h—Dump Code Variable Length
This command has a slightly different format depending on the length of the dump requested. It returns the contents
of the program flash memory: (Length) or (LengthH:LengthL) bytes starting at byte address (AddrH:AddrL).
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5BYTE 6
Input (to
dump
< 256 bytes)
Output
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5BYTE 6BYTE 7
Input (to
dump
256+ bytes)
Output
20h1AddrLAddrHLength00h00h...00h
20h2AddrLAddrHLengthLLengthH00h00h...00h
(LENGTH)
BYTES
Memory
contents
(LENGTH)
BYTES
Memory
contents
BYTE
LENGTH+7
03Eh
BYTE
LENGTH+8
03Eh
Command 21h—Dump Data Variable Length
This command has a slightly different format depending on the length of the dump requested. It returns the contents
of the data SRAM: (Length) or (LengthH:LengthL) bytes starting at byte address (AddrH:AddrL).
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5BYTE 6
Input (to
dump
< 256 bytes)
Output
I/OBYTE 1BYTE 2BYTE 3BYTE 4BYTE 5BYTE 6BYTE 7
Input (to
dump
256+ bytes)
Output
Maxim Integrated
(LENGTH)
BYTES
21h1AddrLAddrHLength00h00h...00h
Memory
contents
(LENGTH)
BYTES
21h2AddrLAddrHLengthLLengthH00h00h...00h
Memory
contents
BYTE
LENGTH+7
03Eh
BYTE
LENGTH+8
03Eh
17-5
MAXQ Family User’s Guide:
MAXQ8913 Supplement
17.5 Family 3 Commands: CRC Variable Length (Password Protected)
Command 30h—CRC Code Variable Length
This command has a slightly different format depending on the length of the CRC requested. It returns the CRC-16
value (CrcH:CrcL) of the program flash: (Length) or (LengthH:LengthL) bytes/words starting at (AddrH:AddrL).
This command has a slightly different format depending on the length of the CRC requested. It returns the CRC-16
value (CrcH:CrcL) of the data SRAM: (Length) or (LengthH:LengthL) bytes/words starting at (AddrH:AddrL).
17.6 Family 4 Commands: Verify Variable Length (Password Protected)
Command 40h—Verify Code Variable Length
This command operates in the same manner as the “Load Code Variable Length” command, except that instead of
programming the input data into flash memory, it verifies that the input data matches the data already in code space.
If the data does not match, the status code is set to reflect this failure.
I/OBYTE 1BYTE 2BYTE 3BYTE 4
Input
Output
40hLengthAddressLAddressHData to verify00h00h
(LENGTH)
BYTES
Command 41h—Verify Data Variable Length
This command operates in the same manner as the “Load Data Variable Length” command, except that instead of
writing the input data into data SRAM, it verifies that the input data matches the data already in data space. If the data
does not match, the status code is set to reflect this failure.
I/OBYTE 1BYTE 2BYTE 3BYTE 4
Input
Output
41hLengthAddressLAddressHData to verify00h00h
(LENGTH)
BYTES
BYTE
LENGTH+5
BYTE
LENGTH+5
BYTE
LENGTH+6
03Eh
BYTE
LENGTH+6
03Eh
17-6
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
17.7 Family 5 Commands: Load and Verify Variable Length (Password Protected)
Command 50h—Load and Verify Code Variable Length
This command combines the functionality of the “Load Code Variable Length” and “Verify Code Variable Length”
commands.
I/OBYTE 1BYTE 2BYTE 3BYTE 4
Input
Output
50hLengthAddressLAddressH
(LENGTH)
BYTES
Data to load
and verify
BYTE
LENGTH+5
00h00h
BYTE
LENGTH+6
03Eh
Command 51h—Load and Verify Data Variable Length
This command combines the functionality of the “Load Data Variable Length” and “Verify Data Variable Length”
commands.
I/OBYTE 1BYTE 2BYTE 3BYTE 4
Input
Output
51hLengthAddressLAddressH
(LENGTH)
BYTES
Data to load
and verify
BYTE
LENGTH+5
00h00h
BYTE
LENGTH+6
03Eh
17.8 Family E Commands: Erase Fixed Length (Password Protected)
Command E0h—Erase Code Fixed Length
This command erases (programs to FFFFh) all words in a 512-word page of the program flash memory. The address
given should be located in the 512-word page to be erased. For example, providing address 0000h (in byte mode) to
this command erases the first 512-word page, address 0400h erases the second page, and so on. There are 64 flash
pages total, from 0000h to 7C00h.
I/OBYTE 1BYTE 2BYTE 3BYTE 4
Input
Output
Maxim Integrated
E0h0AddressLAddressH
17-7
MAXQ Family User’s Guide:
MAXQ8913 Supplement
ADDENDUM TO SECTION 18: MAXQ FAMILY INSTRUCTION SET
SUMMARY
Refer to the MAXQ Family User’s Guide. Table 18-1 from the MAXQ Family User’s Guide is reproduced here.
Table 18-1. Instruction Set Summary
MNEMONICDESCRIPTION
AND src
OR src
XOR src
CPL
NEG
SLAShift Acc left arithmetically1000 1010 0010 1010C, S, ZY
SLA2Shift Acc left arithmetically twice1000 1010 0011 1010C, S, ZY
SLA4Shift Acc left arithmetically four times1000 1010 0110 1010C, S, ZY
RLRotate Acc left (w/o C)1000 1010 0100 1010SY
RLCRotate Acc left (through C)1000 1010 0101 1010C, S, ZY
SRAShift Acc right arithmetically1000 1010 1111 1010C, ZY
SRA2Shift Acc right arithmetically twice1000 1010 1110 1010C, ZY
LOGICAL OPERATIONS
SRA4Shift Acc right arithmetically four times1000 1010 1011 1010C, ZY
SR
RRRotate Acc right (w/o C)1000 1010 1100 1010SY
RRCRotate Acc right (though C)1000 1010 1101 1010C, S, ZY
MOVE C, Acc.<b>
MOVE C, #0
MOVE C, #1
CPL C
MOVE Acc.<b>, C
AND Acc.<b>
OR Acc.<b>
XOR Acc.<b>
C ← Acc.<b>
C ← 0
C ← 1
C ← ~C
Acc.<b> ← C
C ← C AND Acc.<b>
C ← C OR Acc.<b>
C ← C XOR Acc.<b>
dst.<b> ← 1
dst.<b> ← 0
C ← src.<b>
Acc ← Acc + src
Acc ← Acc + (src + C)
Acc ← Acc – src
Acc ← Acc – (src + C)
{L/S}JUMP E, src
{L/S}JUMP NE, src
{L/S}JUMP S, src
{L/S}DJNZ LC[n], src
{L/S}CALL src
RET
RET C
RET NC
BRANCHING
RET Z
RET NZ
RET S
RETI
RETI C
RETI NC
RETI Z
RETI NZ
RETI S
XCH (MAXQ20 only) Swap Acc bytes1000 1010 1000 1010SY
XCHNSwap nibbles in each Acc byte1000 1010 0111 1010SY
MOVE dst, src
PUSH src
The active accumulator (Acc) is not allowed as the src in operations where it is the implicit destination.
Note 1:
Note 2: Only module 8 and modules 0 to 5 (when implemented for a given product) are supported by these single-cycle bit opera-
tions. Potentially affects C or E if PSF register is the destination. Potentially affects S and/or Z if AP or APC is the destination.
Note 3: The terms Acc and A[AP] can be used interchangeably to denote the active accumulator.
Note 4: Any index represented by <b> or found inside [ ] brackets is considered variable, but required.
Note 5: The active accumulator (Acc) is not allowed as the dst if A[AP] is specified as the src.
Note 6: The ‘{L/S}’ prefix is optional.
Note 7: Instructions that attempt to simultaneously push/pop the stack (e.g. PUSH @SP--, PUSH @SPI--, POP @++SP, POPI
@++SP) or modify SP in a conflicting manner (e.g., MOVE SP, @SP--) are invalid.
Note 8: Special cases: If ‘MOVE APC, Acc’ sets the APC.CLR bit, AP is cleared, overriding any autoinc/dec/modulo operation
specified for AP. If ‘MOVE AP, Acc’ causes an autoinc/dec/modulo operation on AP, this overrides the specified data
transfer (i.e., Acc is not transferred to AP).
IP ← IP + src or src
If C=1, IP ← (IP + src) or src
If C=0, IP ← (IP + src) or src
If Z=1, IP ← (IP + src) or src
If Z=0, IP ← (IP + src) or src
If E=1, IP ← (IP + src) or src
If E=0, IP ← (IP + src) or src
If S=1, IP ← (IP + src) or src
If --LC[n] <> 0, IP← (IP + src) or src
@++SP ← IP+1; IP ← (IP+src) or src
IP ← @SP-If C=1, IP ← @SP-If C=0, IP ← @SP-If Z=1, IP ← @SP-If Z=0, IP ← @SP-If S=1, IP ← @SP-IP ← @SP-- ; INS← 0
If C=1, IP ← @SP-- ; INS← 0
If C=0, IP ← @SP-- ; INS← 0
If Z=1, IP ← @SP-- ; INS← 0
If Z=0, IP
If S=1, IP ← @SP-- ; INS← 0
dst ← src
@++SP ← src
dst ← @SP-dst ← @SP-- ; INS ← 0
E ← (Acc = src)
SECTION 19: ANALOG-TO-DIGITAL CONVERTER (SPECIFIC TO
MAXQ8913)
The MAXQ8913 provides a 12-bit, successive approximation analog-to-digital converter (ADC) with an integrated analog multiplexer. The ADC can perform either single-ended conversions from one of six external input channels (and an
additional channel reserved for an internal temperature sensor) or differential conversions from one of three external
channel pairs. The voltage reference used for each conversion can be selected from an internal precision bandgap
reference, an external reference, or the AVDD analog power supply.
19.1 Analog-to-Digital Converter Features
• 12-bit single-ended conversion with up to seven analog channel inputs (six external inputs and one temp sensor)
• 12-bit differential conversion with up to three analog channel pair inputs (each differential pair takes the place of two
single-ended channel inputs)
• Autoscan feature performs up to eight conversions in sequence automatically without CPU intervention
• Conversion sequence can be performed once (single conversion mode) or repeatedly (continuous conversion mode)
• Up to 16 sample words can be stored in a dedicated data buffer until the processor is ready to retrieve them
• Selectable clock divider runs the ADC from a divide by 1, divide by 2, divide by 4, or divide by 8 of the system clock
• Sample acquisition time can optionally be extended on a per-conversion basis
• Data results can be left-aligned or right-aligned on a per-conversion basis
• Converter reference is switchable among AVDD, internal reference, and external reference
• Optional power-management mode shuts the ADC off between conversions to save power
• Configurable data available interrupt signals the CPU following each conversion, each sequence, or after every 12
or 16 samples
• Four uncommitted op amps whose outputs can optionally be used as inputs for channels AIN2, AIN3, AIN4, and AIN5
CPU
INTERFACE
ADCN
ADST
ADADDR
ADDATA
Figure 19-1. ADC Block Diagram
Maxim Integrated
ADCFG[0]
ADCFG[1]
ADCFG[2]
ADCFG[3]
ADBUF[0]ADBUF[8]
ADBUF[1]ADBUF[9]
ADBUF[2]ADBUF[10]
ADBUF[3]ADBUF[11]
ADBUF[4]ADBUF[12]
ADBUF[5]ADBUF[13]
ADBUF[6]ADBUF[14]
ADBUF[7]ADBUF[15]
ADCFG[4]
ADCFG[5]
ADCFG[6]
ADCFG[7]
12-BIT
SAR ADC
ADC
SEQUENCER
ANALOG
MULTIPLEXER
AIN0
AIN1
AIN6
(TEMP SENSOR)
INA+
INA-
INB+
INB-
INC+
INC-
IND+
IND-
19-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
19.2 Analog-to-Digital Pins and Control Registers
Tables 19-1 and 19-2 list the pins and control registers dedicated to the ADC. Note that all ADC pins are dedicated,
so none of them is multiplexed with GPIO port pins. Addresses for all registers are given as “Mx[yy],” where x is the
module number (from 0 to 15 decimal) and yy is the register index (from 00h to 1Fh hexadecimal). Fields in the bit
definition tables are defined as follows:
• Name: Symbolic names of bits or bit fields in this register.
• Reset: The value of each bit in this register following a standard reset. If this field reads “unchanged,” the given bit
is unaffected by standard reset. If this field reads “s,” the given bit does not have a fixed 0 or 1 reset value because
its value is determined by another internal state or external condition.
• POR: If present this field defines the value of each bit in this register following a power-on reset (as opposed to a
standard reset). Some bits are unaffected by standard resets and are set/cleared by POR only.
• Access: Bits can be read-only (r) or read/write (rw). Any special restrictions or conditions that could apply when
reading or writing this bit are detailed in the bit description.
Table 19-1. ADC Input and Power-Supply Pins
PINNAMEADC INTERFACE FUNCTION
E4AVDDAnalog Supply Voltage
B5AGNDAnalog Ground
G2REFAExternal ADC Voltage Reference
H1AIN0Single-Ended Analog Input Channel 0
H3AIN1Single-Ended Analog Input Channel 1
B9AIN2 (OUTA)Single-Ended Analog Input Channel 2
B3AIN3 (OUTB)Single-Ended Analog Input Channel 3
B1AIN4 (OUTC)Single-Ended Analog Input Channel 4
ADC Status Register. Contains the ADCFG and ADBUF register index selection bits,
conversion start bit, and other status bits for the ADC.
ADC Address Register. Defines the first and last ADCFG registers used in a conversion
sequence as well as the first ADBUF register written in a conversion sequence.
ADC Control Register. Controls sample acquisition extend, power-management mode,
single/continuous sequence conversion, interrupt modes, and clock division for the ADC.
ADC Data Register. Acts as a read/write access point to registers ADCFG[0] to ADCFG[7]
and ADBUF[0] to ADBUF[15].
Note: Address ADDATA[xxh] refers to reading/writing the ADDATA register with ADCFG:ADIDX[3:0] (ADST[4:0]) set to xxh. For
example, ADBUF[7] is read by setting ADST[4:0] to 00111b and reading the ADDATA register.
Temperature Sensor Enable Register. Enables/disables the on-board temperature sensor
whose value can be read through ADC channel 6.
The following peripheral registers are used to control the analog-to-digital converter functions.
19.2.1 Analog-to-Digital Converter Status Register (ADST, M4[06h])
Bit #
Name————ADDAT[3:0]
Reset00000000
Accessrrrrrrrr
Bit #
NameREFOKADCONVADDAIADCFGADIDX[3:0]
Reset00000000
Accessrrw*rwrwrwrwrwrw
*ADCONV cannot be written when PMME = 1 and SWB = 0.
Bits 15:12: Reserved
Bits 11:8: ADC Data Available Address Bits (ADDAT[3:0]). These read-only status bits indicate the ADBUF data
buffer location that was last written by the ADC hardware. During a conversion sequence, these bits are updated by
hardware as each conversion is completed and written to the data buffer.
15141312111098
76543210
Maxim Integrated
19-3
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bit 7: Internal Reference OK (REFOK). This read-only status bit indicates whether the internal reference is ready for
use by the ADC.
0 = The internal reference is either disabled (IREFEN = 0) or is still warming up.
1 = The internal reference is ready for use.
Bit 6: ADC Start Conversion (ADCONV). Writing this bit to 1 starts the ADC conversion sequence. In single-conversion
mode, this bit is cleared automatically by hardware at the end of the conversion sequence. In continuous-conversion
mode, this bit remains set (and conversion continues) until it is reset to 0 by software. Setting this bit to 0 causes the
current conversion sequence to stop. If the ADC is in the middle of a conversion, it stops after that conversion has
completed. If the ADC is in the middle of an extended acquisition time period, it stops immediately.
Entering stop or PMM mode causes the current conversion to stop and the ADCONV bit to clear to 0. This bit cannot
be written to 1 (to start a conversion) in PMM mode unless switchback is enabled (SWB = 1).
Bit 5: ADC Data Available Interrupt Flag (ADDAI). This bit is set to 1 by hardware when the conditions defined by
ADINT[1:0] (ADCN[11:10]) are met. Setting this bit triggers an interrupt if ADDAIE = 1 and the interrupt is not otherwise
masked. This bit is cleared by hardware automatically when an ADC conversion is started (ADCONV is written to 1); it
can also be cleared to 0 by software.
Bit 4: ADC Conversion Configuration Register Select (ADCFG); Bits 3:0: ADC Configuration/Data Buffer Register
Index (ADIDX[3:0]). These register bits select the ADC configuration or ADC data buffer register that is accessed when
ADDATA is read or written. Note that the ADC data buffer registers are read-only.
Reading from or writing to ADDATA causes the value ADIDX[3:0] to autoincrement, but does not affect the value of
ADCFG, even if the ADIDX value rolls over from 1111b to 0000b. For example, setting ADCFG to 1 and ADIDX[3:0]
to 1101b selects ADCFG[5] for read/write access. Reading ADDATA successively then returns the values ADCFG[5],
ADCFG[6], ADCFG[7], ADCFG[0], ADCFG[1], and so on.
Bit #
Name————SEQSTORE[3:0]
Reset00000000
Accessrrrrrw*rw*rw*rw*
Bit #
Name—SEQSTART[2:0]—SEQEND[2:0]
Reset00000000
Accessrrw*rw*rw*rrw*rw*rw*
*Can only be written when ADCONV = 0.
15141312111098
76543210
Bits 15:12, 7, 3: Reserved
Bits 11:8: ADC Sequence Sample Storage Address (SEQSTORE[3:0]). These bits contain the index of the first
ADBUF register (inclusive) that is used to store samples from the ADC conversion sequence.
Bits 6:4: ADC Sequence Start Address (SEQSTART[2:0]). These bits contain the index of the first ADCFG register
(inclusive) that is used to define the ADC conversion sequence.
Bits 2:0: ADC Sequence End Address (SEQEND[2:0]). These bits contain the index of the last ADCFG register (inclusive) that is used to define the ADC conversion sequence.
19.2.3 ADC Control Register (ADCN, M3[08h])
Bit #
Name————ADINT1ADINT0ADCLK1ADCLK0
Reset00000000
Accessrrrrrw*rw*rw*rw*
15141312111098
Bit #
NameIREFENADCONTADDAIEADPMOADACQ[3:0]
Reset00000000
Accessrw*rw*rw*rw*rw*rw*rw*rw*
*Can only be written when ADCONV = 0.
76543210
Bits 15:12: Reserved
Bits 11:10: ADC Data Available Interrupt Interval (ADINT[1:0]). These bits select the condition for generating an
ADC data available interrupt (setting ADDAI to 1).
ADINT1ADINT0SET ADDAI TO 1 . . .
00After each ADC conversion (every sample)
01After the conversion sequence has completed (works for single-conversion mode only)
10Every 12 ADC samples
11Every 16 ADC samples
Maxim Integrated
19-5
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bits 9:8: ADC Clock Divider (ADCLK[1:0]). These bits control the generation of the ADC clock from the system clock
as follows:
However, since there is an upper limit on the sample rate of the ADC (approximately 300ksps; refer to the IC data
sheet), not all clock division settings could be valid, depending on the system clock frequency. A single ADC conversion requires 16 ADC clocks, which allows us to calculate possible ADC sample rates as shown in Table 19-3.
Bit 7: ADC Internal Reference Enable (IREFEN). This bit controls the ADC internal reference.
0 = The internal reference is disabled. The ADREF bit in each configuration register (ADCFG) selects between AVDD
and the external reference.
1 = The internal reference is enabled. Once REFOK = 1, the ADREF bit in each configuration register (ADCFG) selects
between AVDD and the internal reference.
Bit 6: ADC Continuous Sequence Mode (ADCONT). This bit selects single- or continuous-sequence mode.
0 = Single-conversion sequence mode. In this mode, setting ADCONV = 1 starts a single-conversion sequence, with
starting and ending configuration registers as defined in the ADADDR register. Once the conversion sequence
completes, ADCONV automatically clears to 0, and the ADC powers down (if PMO = 0).
1 = Continuous-conversion sequence mode. In this mode, setting ADCONV = 1 also starts a conversion sequence,
but once the sequence has completed, it simply repeats again. To stop the conversions, ADCONV must explicitly
be cleared to 0 by software.
Bit 5: ADC Data Available Interrupt Enable (ADDAIE). This bit controls the ADC data available interrupt.
0 = The ADC interrupt is disabled.
1 = An interrupt is triggered (if not otherwise masked) when ADDAI = 1.
Bit 4: ADC Power-Management Override (PMO). This bit controls power management for the ADC.
0 = The ADC automatically powers up at the beginning of a conversion sequence and powers down when the
sequence has finished (or when ADCONV is set to 0). This adds a delay of approximately 20 ADC clocks to the
conversion sequence time.
1 = ADC power management is disabled. After setting PMO to 1, the software should wait long enough for the ADC to
power up before initiating a conversion (refer to the IC data sheet for timing). Once the ADC has powered up, it
remains powered on as long as PMO is set to 1, unless stop mode is entered.
Table 19-3. ADC Sample Rates Using a 10MHz Crystal
SAMPLE RATE AT
ADCLK[1:0]
00
01312.5156.2578.1339
10156.2578.133919.5131
1178.133919.59.7665.6
19-6
10MHz
(CLOCK/1) (ksps)
625
(invalid)
SAMPLE RATE AT
5MHz
(CLOCK/2) (ksps)
312.5156.2578.13
SAMPLE RATE AT
2.5MHz
(CLOCK/4) (ksps)
SAMPLE RATE AT
1.25MHz
(CLOCK/8) (ksps)
SAMPLE RATE AT
8.4MHz
(FLL) (ksps)
525
(invalid)
262.5
(invalid)
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bits 3:0: ADC Sample Acquisition Time Extend (ADACQ[3:0]). These bits set the extended sample acquisition time
period. For a given conversion, sample acquisition time is extended if the ADACQEN bit is set in the conversion configuration (ADCFG) register. If this bit is set, the acquisition time is extended by:
16 x (ADACQ[3:0] + 1) x ADC clock period
19.2.4 ADC Data Register (ADDATA, M3[09h])
Bit #
NameADDATA
Resetssssssss
Accessrwrwrwrwrwrwrwrw
Bit #
NameADDATA
Resetssssssss
Accessrwrwrwrwrwrwrwrw
Note: The effect of read or write operation depends on ADIDX and ADCFG bit settings.
15141312111098
76543210
This register is an access point for the eight ADC configuration registers (ADCFG[0] to ADCFG[7]) and 16 ADC data
buffer registers (ADBUF[0] to ADBUF[15]). Reading or writing ADDATA actually reads or writes the selected register,
as determined by ADST[4:0].
19.2.5 ADC Data Buffer Registers (ADBUF[0] to ADBUF[15], ADDATA[00h] to ADDATA[0Fh])
Bit #
NameADBUF
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bit #
NameADBUF
Reset00000000
Accessrwrwrwrwrwrwrwrw
15141312111098
76543210
The 16 ADC data buffer registers ADBUF[0] to ADBUF[15] serve as temporary holding storage for ADC conversion
samples until the samples can be read by the processor. They can be read or written at any time, whether or not an
ADC conversion is in progress.
As each ADC conversion completes, the resulting sample is written to one of the ADBUF registers, starting with the
index given by SEQSTORE (ADADDR[11:8]) and incrementing from there with each new sample written. The index of
the most recent ADBUF register written to by the ADC controller is always available in the ADDAT bit field (ADST[11:8]).
The ADC samples are written into the ADBUF registers in either left-aligned or right-aligned format as selected by
the ADALGN bit for that conversion configuration register. Once a sample is written into an ADBUF register, the data
remains there until it is erased by software or until it is overwritten by another ADC sample, 16 conversions later. When
continuous-conversion mode is used, it is the responsibility of the user software to monitor the data available interrupt
and read ADC samples from the ADBUF registers before they are overwritten by subsequent samples.
Maxim Integrated
19-7
MAXQ Family User’s Guide:
MAXQ8913 Supplement
19.2.6 ADC Conversion Configuration Registers (ADCFG[0] to ADCFG[7], ADDATA[10h]
to ADDATA[17h])
Bit #
Name————————
Reset00000000
Accessrrrrrrrr
Bit #
Name—ADREFADACQENADALGNADDIFFADCH2ADCH1ADCH0
Reset00000000
Accessrrw*rw*rw*rw*rw*rw*rw*
*Can only be written when ADCONV = 0.
15141312111098
76543210
The eight conversion configuration registers ADCFG[0] to ADCFG[7] provide settings for each individual conversion in
an ADC conversion sequence. As the ADC autoscans, it reads each configuration register in the sequence in turn and
performs a conversion using the settings from that register. The starting and ending configuration registers (inclusive)
in the sequence are given by the SEQSTART and SEQEND bit fields in the ADADDR register.
The number of configuration registers selected by ADADDR also determines the number of conversions performed in
the sequence (one conversion per register selected). The ADCFG registers cannot be written to while a conversion
sequence is in progress (ADCONV = 1).
Bits 15:7: Reserved
Bit 6: ADC Reference Select (ADREF). This bit determines (in conjunction with IREFEN) which reference is used for
this ADC conversion.
0 = AVDD (default) is used as the reference for this conversion.
1 = If IREFEN = 1, the internal reference is used for this conversion; otherwise, the external reference is used.
Bit 5: ADC Sample Acquisition Extension Enable (ADACQEN). This bit determines whether the acquisition time for
this conversion is extended by the number of ADC clock cycles given by ADACQ[3:0].
Bit 4: ADC Data Alignment Select (ADALGN). This bit determines how the ADC sample for this conversion is stored
in the ADBUF register.
0 = The ADC data is stored right-adjusted in bits [11:0] of the ADBUF register. For single-ended conversions, bits
[15:12] are filled with zeros, while for differential conversions bits [15:12] are sign extended from bit 11.
1 = The ADC data is stored left-adjusted in bits [15:4] of the ADBUF register with bits [3:0] zero padded.
Bit 3: ADC Differential Mode Select (ADDIFF); Bits 2:0: ADC Channel Select (ADCH[2:0]). These four bits control
which channel or pair of channels is used for a given conversion, and whether the conversion is performed in singleended or differential mode. In differential mode, since there are only three channel pairs, bit ADCH[2] is ignored.
waitConvert:
move C, ADST.6
jump C, waitConvert ; Conversion has completed when ADST.6 clears to 0
move ADST, #0000h ; Points ADDATA to data register 0
move Acc, ADDATA ; Get conversion result
19.3.2 ADC Example 2: Continuous Conversion
move ADCN, #0F00h ; Set ADC clock to sysclk/8 (78ksps at 10MHz),
; also set Data Available interrupt to trigger
; following every 16 samples
move ADCN.6, #1 ; Enable continuous conversion mode
move ADST, #0010h ; Points ADDATA to config register 0
move ADDATA, #06h ; ACFG[0]: Single-ended conversion on AN6, AVDD ref
move ADDATA, #07h ; ACFG[1]: Single-ended conversion on AN7, AVDD ref
move ADADDR, #0001h ; Sequence runs from ACFG[0] to ACFG[1] inclusive
move ADST.6, #1 ; Start conversion (continuous)
Maxim Integrated
19-9
MAXQ Family User’s Guide:
MAXQ8913 Supplement
waitConvert:
move C, ADST.5
jump NC, waitConvert ; Wait for 16 samples to be captured (ADDAI=1)
move ADST.6, #0 ; Stop conversion
move ADST.5, #0 ; Clear data available flag
SECTION 20: DIGITAL-TO-ANALOG CONVERTERS (SPECIFIC TO
MAXQ8913)
20.1 DAC Overview
The MAXQ8913 provides six independent digital-to-analog converter (DAC) channels. Four of these DAC channels
produce voltage outputs, while the other two channels act as programmable current sinks.
The DAC module on the MAXQ8913 provides the following features:
• Two 10-bit (DAC1 and DAC2) voltage output channels that can be used to generate either single-ended (DAC1/
DAC2) or differential (RIN/LIN) voltages.
• Two 8-bit (DAC3 and DAC4) voltage output channels that generate single-ended voltage outputs only.
• Two 8-bit (SINK1 and SINK2) programmable current sinks.
Table 20-1 lists the control registers dedicated to the DAC channels. Note that all DAC pins are dedicated, so none of
them are multiplexed with GPIO port pins.
Table 20-1. DAC Control Registers
REGISTERADDRESSFUNCTION
DAC1OUTM3[02h]DAC 1 Output Register. Sets the 10-bit voltage output value for DAC channel 1.
DAC2OUTM3[03h]DAC 2 Output Register. Sets the 10-bit voltage output value for DAC channel 2.
DAC3OUTM3[04h]DAC 3 Output Register. Sets the 8-bit voltage output value for DAC channel 3.
DAC4OUTM3[05h]DAC 4 Output Register. Sets the 8-bit voltage output value for DAC channel 4.
ISINKCNM3[07h]
DACENM3[0Bh]DAC Output Enable Register. Enables/disables the outputs for the four voltage DAC channels.
Current Sink Control Register. Enables/disables and sets the 8-bit current sink capability for
both current sink channels (SINK1 and SINK2).
20.2 DAC Control Register Descriptions
The following peripheral registers are used to control the DAC functions. Addresses of registers are given as “Mx[yy],”
where x is the module number (from 0 to 15 decimal) and yy is the register index (from 00h to 1Fh hexadecimal). Fields
in the bit definition tables are defined as follows:
• Name: Symbolic names of bits or bit fields in this register.
• Reset: The value of each bit in this register following a standard reset. If this field reads “unchanged,” the given bit
is unaffected by standard reset. If this field reads “s,” the given bit does not have a fixed 0 or 1 reset value because
its value is determined by another internal state or external condition.
• POR: If present this field defines the value of each bit in this register following a power-on reset (as opposed to a
standard reset). Some bits are unaffected by standard resets and are set/cleared by POR only.
• Access: Bits can be read-only (r) or read/write (rw). Any special restrictions or conditions that could apply when
reading or writing this bit are detailed in the bit description.
Maxim Integrated
20-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
20.2.1 DAC 1 Output Register (DAC1OUT, M3[02h])
Bit #
Name——————DAC1OUT
Reset00000000
Accessrrrrrrrwrw
15141312111098
Bit #
NameDAC1OUT
Reset00000000
Accessrwrwrwrwrwrwrwrw
76543210
Bits 15:10: Reserved
Bits 9:0: DAC 1 Output Value. Bits 9:0 in this register set the voltage output value for the DAC1 channel between zero
(DAC1OUT[9:0] = 0000000000b) and full scale (DAC1OUT[9:0] = 1111111111b). For this register value to be effective,
one or both of the following two register bits in DACEN must be set.
• If DACEN.0 (DACEN1) is set to 1, the DAC1OUT value is output to differential pins RIN+/RIN-.
• If DACEN.4 (DACOUT1) is set to 1, the DAC1OUT value is output to pin DAC1.
20.2.2 DAC 2 Output Register (DAC2OUT, M3[03h])
Bit #
Name——————DAC2OUT
Reset00000000
Accessrrrrrrrwrw
Bit #
NameDAC2OUT
Reset00000000
Accessrwrwrwrwrwrwrwrw
15141312111098
76543210
Bits 15:10: Reserved
Bits 9:0: DAC 2 Output Value. Bits 9:0 in this register set the voltage output value for the DAC2 channel between
zero (if DAC2OUT[9:0] = 0000000000b) and full scale (DAC2OUT[9:0] = 1111111111b). For this register value to be
effective, one or both of the following two register bits in DACEN must be set.
• If DACEN.1 (DACEN2) is set to 1, the DAC2OUT value is output to differential pins LIN+/LIN-.
• If DACEN.5 (DACOUT2) is set to 1, the DAC2OUT value is output to pin DAC2.
20-2
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
20.2.3 DAC 3 Output Register (DAC3OUT, M3[04h])
Bit #
NameDAC3OUT
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bits 7:0: DAC 3 Output Value. This register sets the voltage output value for the DAC3 channel between zero
(DAC3OUT = 00000000b) and full scale (DAC3OUT = 11111111b). For this register value to be effective, DACEN.2
(DACEN3) must be set to 1 to enable the voltage output at pin DAC3. If DACEN3 = 0, the value stored in this register
has no effect on the voltage level of pin DAC3.
20.2.4 DAC 4 Output Register (DAC4OUT, M3[05h])
Bit #
NameDAC4OUT
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bits 7:0: DAC 4 Output Value. This register sets the voltage output value for the DAC4 channel between zero
(DAC4OUT = 00000000b) and full scale (DAC4OUT = 11111111b). For this register value to be effective, DACEN.3
(DACEN4) must be set to 1 to enable the voltage output at pin DAC4. If DACEN4 = 0, the value stored in this register
has no effect on the voltage level of pin DAC4.
76543210
76543210
20.2.5 Current Sink Control Register (ISINKCN, M3[07h])
Bit #
NameISINK2
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bit #
NameISINK1
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bits 15:8: Current Sink 2 Output Value (ISINK2.[7:0]). Bits 15 to 8 in this register set the operating mode for current
sink output 2 (SINK2) as follows.
• ISINK2 = 00h. Current output SINK2 is disabled.
• ISINK2 = (01h to FFh). Current output SINK2 is enabled, with a current sink capability given by
Bits 7:0: Current Sink 1 Output Value (ISINK1.[7:0]). Bits 7:0 in this register set the operating mode for current sink
output 1 (SINK1) as follows.
• ISINK1 = 00h. Current output SINK1 is disabled.
• ISINK1 = (01h to FFh). Current output SINK1 is enabled, with a current sink capability given by
15141312111098
76543210
I
= ISINKCN[15:8] x 62.5FA
SINK2
I
= ISINKCN[7:0] x 62.5FA
SINK1
Maxim Integrated
20-3
MAXQ Family User’s Guide:
MAXQ8913 Supplement
SECTION 21: TIMER/COUNTER B MODULE (SPECIFIC TO MAXQ8913)
The MAXQ8913 provides one Type B timer/counter module that operates as described in this section. Table 21-1 and
Table 21-2 list the associated pins and registers for these timer/counter modules.
Table 21-1. Type B Timer/Counter Input and Output Pins
TIMER/COUNTER FUNCTIONPIN MULTIPLEXED WITH GPIO
TB0A: Timer B I/O Pin AK3P1.2
TB0B: Timer B I/O Pin BL2P1.3
Table 21-2. Type B Timer/Counter Control Registers
REGISTERADDRESSFUNCTION
TBRM2[07h]
TBCM2[0Bh]
TBCNM2[06h]Type B Timer/Counter Control Register. Contains the control, mode, and interrupt bits.
TBVM2[0Ah]Type B Timer/Counter Value Register. Contains the current timer/counter value.
Type B Timer/Counter Capture/Reload Register. Holds the reload value in autoreload mode; used
to store capture values in capture mode.
Type B Timer/Counter Compare Register. This register is used for comparison against the TBV
value when compare mode is enabled.
21.1 Timer/Counter B Register Descriptions
The following peripheral registers are used to control the LCD display controller. Addresses for all registers are given
as “Mx[yy],” where x is the module number (from 0 to 15 decimal) and yy is the register index (from 00h to 1Fh hexadecimal). Fields in the bit definition tables are defined as follows:
• Name: Symbolic names of bits or bit fields in this register.
• Reset: The value of each bit in this register following a standard reset. If this field reads “unchanged,” the given bit
is unaffected by standard reset. If this field reads “s,” the given bit does not have a fixed 0 or 1 reset value because
its value is determined by another internal state or external condition.
• POR: If present this field defines the value of each bit in this register following a power-on reset (as opposed to a
standard reset). Some bits are unaffected by standard resets and are set/cleared by POR only.
• Access: Bits can be read-only (r) or read/write (rw). Any special restrictions or conditions that could apply when
reading or writing this bit are detailed in the bit description.
21.1.1 Timer B Timer/Counter Capture/Reload Register (TBR, M2[07h])
Bit #
NameTBR
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bit #
NameTBR
Reset00000000
Accessrwrwrwrwrwrwrwrw
15141312111098
76543210
Bits 15:0: Timer B Capture/Reload Register. This register is used to capture the TBV value when Timer B is configured in capture mode. This register is also used as the 16-bit reload value when Timer B is configured in autoreload
mode.
Maxim Integrated
21-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
21.1.2 Timer B Timer/Counter Compare Register (TBC, M2[0Bh])
Bit #
NameTBC
Reset00000000
Accessrwrwrwrwrwrwrwrw
15141312111098
Bit #
NameTBC
Reset00000000
Accessrwrwrwrwrwrwrwrw
76543210
Bits 15:0: Timer B Compare Register. This register is used for comparison vs. the TBV value when Timer B is operated in compare mode.
21.1.3 Timer B Timer/Counter Control Register (TBCN, M2[06h])
Bit #
NameC/TB——TBCSTBCRTBPS2TBPS1TBPS0
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bit #
NameTFBEXFBTBOEDCENEXENBTRBETBCP/RLB
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bit 15: Counter/Timer Select (C/TB). This bit determines whether Timer B functions as a timer or counter. Setting this
bit to 1 causes Timer B to count negative transitions on the TB0A pin. Clearing this bit to 0 causes Timer B to function
as a timer. The speed of Timer B is determined by the TBPS[2:0] bits of TBCN.
Bits 14:13: Reserved. Read returns zero.
Bits 12:11: TB0B Pin Output Reset/Set Mode Bits (TBCS, TBCR). These mode bits define whether the PWM mode
output function is enabled on the TB0B pin, the initial output starting state, and what compare mode output function is
in effect. Note that the TB0B pin still has certain input functionality when the PWM output function is enabled.
Bits 10:8: Timer B Clock Prescaler Bits (TBPS[2:0]). These bits select the clock prescaler applied to the system
clock input to Timer B. The TBPS[2:0] bits should be configured by the user when the timer is stopped (TRB = 0).
While hardware does not prevent changing the TBPS[2:0] bits when the timer is running, the resultant behavior is
indeterministic.
Bit 7: Timer B Overflow Flag (TFB). This bit is set when Timer B overflows from TBR or the count is equal to 0000h
in down-count mode. It must be cleared by software.
Bit 6: External Timer B Trigger Flag (EXFB). When configured as a timer (C/TB = 0), a negative transition on the
TB0B pin causes this flag to be set if (CP/RLB = EXENB = 1) or (CP/RLB = DCEN = 0 and EXENB = 1) or (CP/RLB =
0 and EXENB = 1 and TBCS:TBCR<>00b). When configured in any of these ways, this flag can be set independent of
the state of the TRB bit (e.g., EXFB can still be set on detection of a negative edge when TRB = 0).
When CP/RLB = 0 and DCEN = 1 and TBCS:TBCR = 00b, EXFB toggles whenever Timer B underflows or overflows.
Overflow/underflow condition is the same as described in the TFB bit description. In this mode, EXFB can be used as
the 17th timer bit and does not cause an interrupt. If set by a negative transition, this flag must be cleared by software.
Setting this bit to 1 forces a timer interrupt if enabled.
Bit 5: Timer B Output Enable (TBOE). Setting this bit to 1 enables the clock output function on the TB0A pin if C/TB =
0. Timer B rollovers do not cause interrupts. Clearing this bit to 0 allows the TB0A pin to function as either a standard
port pin or a counter input for Timer B.
Bit 4: Down-Count Enable (DCEN). This bit, in conjunction with the TB0B pin, controls the direction that Timer B
counts in 16-bit autoreload mode. Clearing this bit to 0 causes Timer B to count up only. Setting this bit to 1 enables
the up/down-counting mode (i.e., it causes Timer B to count up if the TB0B pin is 1 and to count down if the TB0B pin
is 0). When Timer B PWM-output mode functionality is enabled along with up/down counting (DCEN = 1), the up/down
count control of Timer B is controlled internally based upon the count in relation to the register settings. In the compare
modes, the DCEN bit controls whether the timer counts up and resets (DCEN = 0), or counts up and down (DCEN = 1).
Bit 3: Timer B External Enable (EXENB). Setting this bit to 1 enables the capture/reload function on the TB0B pin for
a negative transition (in up-counting mode). A reload results in TBV being reset to 0000h. Clearing this bit to 0 causes
Timer B to ignore all external events on TB0B pin. When operating in autoreload mode (CP/RLB = 0) with the PWM
output functionality enabled, enabling the TB0B input function (EXENB = 1) allows PWM output negative transitions to
set the EXFB flag, however, no reload occurs as a result of the external negative-edge detection.
Bit 2: Timer B Run Control (TRB). This bit enables Timer B operation when set to 1. Clearing this bit to 0 halts Timer
B operation and preserves the current count in TBV.
Bit 1: Enable Timer B Interrupt (ETB). Setting this bit to 1 enables the interrupt from the Timer B TFB and EXFB flags
in TBCN. In Timer B clock-output mode (TBOE = 1), the timer overflow flag (TFB) is still set on an overflow, however,
the TBOE = 1 condition prevents this flag from causing an interrupt when ETB = 1.
Bit 0: Capture/Reload Select (CP/RLB). This bit determines whether the capture or reload function is used for Timer
B. Timer B functions in an autoreload mode following each overflow/underflow. See the TFB bit description for overflow/
underflow condition. Setting this bit to 1 causes a Timer B capture to occur when a falling edge is detected on the
TB0B pin if EXENB is 1. Clearing this bit to 0 causes an autoreload to occur when Timer B overflow or a falling edge
is detected on TB0B pin if EXENB is 1. It is not intended that the Timer B compare functionality should be used when
operating in capture mode.
21.1.4 Timer B Timer Value Register (TBV, M2[0Ah])
Bit #
NameTBV
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bit #
NameTBV
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bits 15:0: Timer B Value Register. This register is used to load and read the 16-bit Timer B value.
Maxim Integrated
15141312111098
76543210
21-3
MAXQ Family User’s Guide:
MAXQ8913 Supplement
21.2 Timer/Counter B Operation
Timer/Counter B is a 16-bit programmable device that supports clock input prescaling and set/reset/toggle PWM/output control functionality not found on other MAXQ timer implementations. A new register, TBC, supports certain PWM/
output control functions in some implementations. Another distinguishing characteristic of Timer/Counter B is that its
count ranges from 0000h to the value stored in the 16-bit capture/reload register (TBR) whereas in other implementations (e.g., Timer 1), the count ranges from the value in the reload register to FFFFh.
The possible Timer B operating modes and related control bits are shown in Table 21-3. A complete description of
each mode is contained in the subsequent sections. In all modes of operation, the timer is enabled by setting the Timer
B run control bit (TRB) of the Timer B control register (TBCN.2) to 1. If this bit is cleared to 0 (reset default condition),
no timer activity is possible. When Timer B is operated as a timer (i.e., it counts scaled system clocks), the three bits
TBPS2, TBPS1, and TBPS0 in the timer control register (TBCN[10:8]) determine the factor by which the active system
clock is divided (prescaled) before being counted by the timer. Other relevant control bits are described in the following mode descriptions. A complete listing of the Timer B registers and bits with their effects on timer operation are
given in Section 21.1: Timer/Counter B Register Descriptions.
Table 21-3. Timer/Counter B Mode Summary
TIMER B OPERATIONAL
MODE
Autoreload00000X0—
Autoreload Using TB0B Pin00001X0—
Capture Using TB0B Pin00001X1—
Up/Down Count Using TB0B Pin00010X0—
Up-Count PWM/Output Control<>00X0XX0—
Up/Down PWM/Output Control<>00X1XX0—
——0XX1X
Clock Output on TB0B Pin—1XX00—
TBCS:TBCRTBOEDCENEXENBC/TBCP/RLB
TBCN REGISTER BIT SETTINGS
OPTIONAL
CONTROL
Input Clock
= TB0A Pin
21.2.1 Timer B 16-Bit Timer/Counter Mode with Autoreload
The 16-bit autoreload mode of Timer B is established by clearing the CP/RLB bit of the control register (TBCN.0) to 0.
In this mode, the timer performs a simple 16-bit timer or counter function that is reset to 0000h when a match between
the Timer B count value register (TBV) and the Timer B capture/reload register (TBR) occurs. A functional diagram of
autoreload mode is illustrated in Figure 21-1. If the C/TB bit of the timer’s control register (TBCN.15) is a logic 0, the
timer’s input clock is a prescaled system clock. When C/TB is a logic 1, pulses on the TB0A pin are counted. As in all
modes, counting or timing is enabled or disabled with the Timer B run control bit TRB (TBCN.2).
When enabled (i.e., TRB = 1) in this mode, Timer B begins counting up from the current value contained in the TBV
register. The TBV register contents can be read or written any time by software and contains the current value of the
timer. When the value in the TBV register reaches the value contained in capture/reload register TBR, the TBF flag is
set to 1. This flag can generate an interrupt if enabled. In addition, upon this match, the timer reloads the TBV register
with 0000h, and continues timing (or counting) up from that value. The reload value contained in the TBR register is
preloaded by software. This register cannot be used for the capture function while also performing autoreload, so these
modes are mutually exclusive.
While in autoreload mode, Timer B can also be forced to reload the TBV register with 0000h using the TB0B pin. If the
control bit EXENB (TBCN.3) is set to 1, a 1-to-0 transition on the TB0B pin causes a reload. If the EXENB bit is cleared
to 0, the TB0B pin is ignored.
21-4
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
TBR
150
SYSTEM
CLOCK
TB0A PIN
TRB = TBCN.2
TB0B PIN
EXENB = TBCN.3
TBPS[2:0] = TBCN[10:8]
(2 x TBPS[2:0])
2
FALLING
EDGE
C/TB = TBCN.15
0
1
Figure 21-1. Timer B Autoreload Mode Block Diagram
SYSTEM
CLOCK
TB0A PIN
TRB = TBCN.2
TB0B PIN
TBPS[2:0] = TBCN[10:8]
(2 x TBPS[2:0])
2
FALLING
EDGE
C/TB = TBCN.15
0
1
/CLK
RELOAD
/CLK
CAPTURE
COMPARE
TBV
150
0000h
EXFB = TBCN.6
TBV
015
TBR
TFB = TBCN.7
TIMER B
INTERRUPT
TFB = TBCN.7
150
EXENB = TBCN.3
EXFB = TBCN.6
TIMER B
INTERRUPT
Figure 21-2. Timer B 16-Bit Capture Mode Block Diagram
21.2.2 Timer B 16-Bit Capture Mode
The 16-bit capture mode of Timer B is configured by setting the CP/RLB bit of the control register (TBCN.0) to 1. A
functional diagram of this mode is shown in Figure 21-2. When the timer is enabled in this mode, it begins counting
up from the value contained in the TBV register until reaching an overflow state, i.e., FFFFh → 0000h; at which point
it sets the TBF flag (TBCN.7) and continues counting upward. When the TBF flag is set, it can generate an interrupt if
enabled. This count cycle is repeated without processor intervention as long as the timer is enabled. As the counting
proceeds, the value in the TBV register is captured in the capture/reload register (TBR) if and when a high-to-low transition occurs on the TB0B pin and the EXENB bit of the control register (TBCN.3) is set to 1. The EXFB flag (TBCN.6) is
also set when the capture occurs, and this flag can generate an interrupt if enabled. If the EXENB bit is cleared to 0,
transitions on the TB0B pin do not cause a capture event.
Maxim Integrated
21-5
MAXQ Family User’s Guide:
MAXQ8913 Supplement
21.2.3 Timer B 16-Bit Up/Down Count with Autoreload Mode
The 16-bit up/down-count autoreload mode is enabled by clearing the capture/reload bit CP/RLB of the control register
(TBCN.0) to 0 and setting the down-count enable bit, DCEN (TBCN.4), to 1. This mode is illustrated in Figure 21-3.
When DCEN is set to 1, Timer B counts up from 0000h or down from the value contained in the TBR register as controlled by the state of the TB0B pin. When the TB0B pin is 1, the timer counts up, and counts down when the pin is 0.
When DCEN is 0, Timer B can only count up.
When counting up and a match occurs between the value in the TBV register and value in the TBR register, the value
of 0000h is loaded into the TBV register. When counting down and the value in the TBV register reaches 0000h, the
value in the TBR register is loaded into the TBV register and downward counting continues.
Note that in this mode of operation, the overflow/underflow output of the timer is provided to an edge-detection circuit
as well as to the TBF bit of the control register (TBCN.7). This edge-detection circuit toggles the EXFB bit (TBCN.6) on
every overflow or underflow. Therefore, the EXFB bit behaves as a 17th bit of the counter, and can be used as such.
(DOWN-COUNTING RELOAD VALUE)
TBR
150
SYSTEM
CLOCK
TB0A PIN
TRB = TBCN.2
TB0B PIN
TBPS[2:0] = TBCN[10:8]
(2 x TBPS[2:0])
2
COUNT DIRECTION (1 = UP, 0 = DOWN)
C/TB = TBCN.15
0
/CLK
1
(UP-COUNTING RELOAD VALUE)
Figure 21-3. Timer B 16-Bit Up/Down Count with Autoreload Mode Block Diagram
TBV
0000h
TFB = TBCN.7
RISE/FALL
EDGE
150
TIMER B INTERRUPT
EXFB = TBCN.6
21-6
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
TBPS[2:0] = TBCN[10:8]
SYSTEM
CLOCK
(2 x TBPS[2:0])
2
/CLK
TBR
0
COMPARE
TBV
15
C/TB = TBCN.15 = 0
TB0A PIN
TB0A PIN
TB0B PIN
EXENB = TBCN.3
FALLING
EDGE
TRB = TBCN.2
EXFB = TBCN.6
015
0000h
DIVIDE BY 2
TIMER INTERRUPT
Figure 21-4. Timer B Clock Output Mode Block Diagram
21.2.4 Timer B Clock Output Mode
Timer B can be configured to drive a clock output on the TB0A pin as shown in Figure 21-4. For the timer to operate
in this mode, the capture/reload select bit (CP/RLB = TBCN.0) and the counter/timer select bit (C/TB = TBCN.15) must
be cleared to 0, and the Timer B output-enable bit (TBOE = TBCN.5) ) must be set to 1. In this mode, the DCEN bit has
no effect. The clock signal output is a 50% duty-cycle square wave with a frequency given by the equation:
Clock Output Frequency = System Clock/(2 x TBR)
Therefore, for a system clock of 1MHz and a TBR register value of 0005h (arbitrary example), the clock output frequency is 100kHz.
21.2.5 Timer B PWM/Output Control Functionality
The PWM/output control function is enabled whenever either of the TCBS or TBCR bits (TBCN[12:11]) is set to 1. Table
21-4 shows how these bits determine the specific operation.
Table 21-4. Timer B PWM/Output Control Function
TBCS:TBCRFUNCTIONINITIAL STATE (IF TRB = 0)
00None (Disabled)No change
01Reset on TBC Match, Set on 0000hLow
10Set on TBC Match, Reset on TBR MatchHigh
11Toggle on TBC MatchNo change
Maxim Integrated
21-7
MAXQ Family User’s Guide:
MAXQ8913 Supplement
When the timer is not running (i.e., TRB = 0), the initial output state of the TB0B pin is established as low or high,
respectively, if the reset function (TBCR = 1,TBCS = 0) or set function (TBCR = 0, TBCS = 1) is configured. Invoking
the toggle function does not change the already defined starting state for TB0B, thus a fixed high or low starting state
can be defined for the toggle mode by first passing through the set or reset mode.
When the PWM/output control function is configured to the reset mode (TBCS = 0, TBCR = 1), clearing the TBC register to 0000h or writing its value to something greater than the counting range (i.e., greater than the value in the TBR
register) effectively disables the reset operation, and produces a single pin set operation when an overflow occurs.
When the PWM/output control function is configured to the set mode (TBCS = 1, TBCR = 0), making TBC = TBR or
writing TBC’s value to something greater than the counting range disables the set operation, and produces a single
reset on TBR match. When the PWM/output control function is configured to toggle, loading the TBC register with a
value outside the counting range, to 0000h, or to the value in TBR disables the toggle function.
21.2.6 16-Bit Up Count PWM/Output Control Mode
Figure 21-5 shows a functional diagram of the up count with PWM/output control mode, and Figure 21-6 shows
example TB0B pin output waveforms. The set and reset modes provide similar functionality. They support up to 16-bit
resolution PWM with the ability to change the frequency using the TBR reload value. The toggle mode allows a 50%
duty-cycle waveform to be created (when the TBC register remains fixed with Timer B running). With the TBC register
value outside of the count range, the set and reset functions allow a timed clear or set of the TB0B pin without need of
polling or interrupting the CPU for manual port pin control.
Up-count set, reset PWM duty cycle is calculated as follows (where period = TBR + 1 Timer B clocks):
Set mode = (TBR - TBC)/(TBR + 1)
Reset mode = TBC/(TBR + 1)
The period for the 50% duty-cycle signal generated in toggle mode is:
Toggle mode = 2 x (TBR + 1) Timer B Clock Periods
SYSTEM
CLOCK
TB0A PIN
TRB = TBCN.2
EXENB = TBCN.3
TBPS[2:0] = TBCN[10:8]
(2 x TBPS[2:0])
2
C/TB = TBCN.15
0
/CLK
1
RELOAD
FALLING
EDGE
Figure 21-5. Up-Count PWM/Output Control Mode Block Diagram
TBC
TBR
COMPARE
TBV
0000h
EXFB = TBCN.6
TB0B PIN
150
TFB = TBCN.7
150
TIMER B
INTERRUPT
21-8
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
TBR
0000
TBC < TBR
TBCS, TBCR =
10 (SET)
01 (SET)
11 (TOGGLE)
TB0B PIN
TBC > TBR
TBC < TBR
TBC > TBR
TBCS, TBCR =
10 (SET)
01 (SET)
11 (TOGGLE)
Figure 21-6. Timer B PWM/Output Control Mode Waveform (Count Up)
TB0B PIN
21.2.7 16-Bit Up/Down Count PWM/Output Control Mode
Figure 21-7 shows a functional diagram of the up/down-count PWM/output control mode. When the Timer B PWM/
output control functionality is enabled at the same time as the up/down-count autoreload mode, the TB0B pin no
longer controls the direction of counting. Instead, the up/down counting is controlled by logic inside the timer and is
determined by the value of the TBV count value register. When the timer is counting upward and reaches the value in
the TBR register, it reverses its direction of counting in the next cycle. When the timer is down counting and reaches
0000h, it reverses direction and begins counting up. This behavior and the results of the TBCS and TBCR bit setting
is shown in Figure 21-8.
The up/down-count PWM duty cycle is calculated as follows (where period = 2 x TBR Timer B clocks):
Set mode = (TBR + TBC)/(2 x TBR)
Reset mode = TBC/(2 x TBR)
Toggle mode = TBC/TBR or (TBR - TBC)/TBR
The set and reset up/down-count PWM/output control modes effectively allow 17-bit resolution since set allows dutycycle variation R 50% with 50% of the period always being high, and reset allows duty-cycle variation P 50% with 50%
of the period always being low. The toggle mode provides a center-aligned 16-bit PWM with twice the period of the
pure up-counting autoreload mode.
Maxim Integrated
21-9
MAXQ Family User’s Guide:
MAXQ8913 Supplement
(DOWN-COUNTING RELOAD VALUE)
TBR
TBC
150
COMPARE
(UP-COUNTING RELOAD VALUE)
EXFB = TBCN.6
SYSTEM
CLOCK
TB0A PIN
TRB = TBCN.2
EXENB = TBCN.3
TBPS[2:0] = TBCN[10:8]
(2 x TBPS[2:0])
2
C/TB = TBCN.15
0
/CLK
1
FALLING
EDGE
Figure 21-7. Timer B Up/Down-Count PWM/Output Control Mode Block Diagram
TBR
TBV
0000h
TB0B PIN
150
TFB = TBCN.7
TIMER B
INTERRUPT
TBC > TBR
TBC < TBR
0000
TBC < TBR
TBCS, TBCR =
10 (SET)
01 (SET)
11 (TOGGLE)
TBC > TBR
TBCS, TBCR =
10 (SET)
01 (SET)
11 (TOGGLE)
TB0B PIN
TB0B PIN
Figure 21-8. Timer B PWM/Output Control Mode Waveform (Up/Down Count)
21-10
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
21.2.8 EXENB Control During PWM/Output Control Mode
The TB0B input function (EXENB = 1) and the PWM/output control function (TBCS:TBCR<>00b) can be enabled at
the same time. However, the input function changes slightly when this is done. In this configuration, the detection of a
falling edge on the TB0B pin results in setting of the EXFB interrupt flag, but does not force an autoreload.
21.3 Timer B Examples
21.3.1 Timer B Example: Reloading Timer Mode
move PD5.2, #1 ; Set P5.2 to output mode
move PO5.2, #1 ; Drive high (LED off)
SECTION 22 : I2C BUS INTERFACE (SPECIFIC TO MAXQ8913)
The MAXQ8913 provides an inter-IC (I2C) communications module that includes master and slave modes. The associated pins and registers for this interface are listed in Table 22-1 and Table 22-2.
Table 22-1. I2C Input and Output Pins
I2C INTERFACE FUNCTIONPIN MULTIPLEXED WITH GPIO
SCL: ClockN4P1.0
SDA: DataM3P1.1
Table 22-2. I
REGISTERADDRESSFUNCTION
I2CBUFM1[06h]I
I2CSTM1[05h]I
I2CIEM1[07h]
I2CCNM1[04h]I
I2CCKM1[0Ch]I
I2CTOM1[0Dh]
I2CSLAM1[0Eh]
22.1 I
2
C Register Descriptions
2
C Interface Control Registers
2
C Data Buffer Register. Interface register for the input and output I2C buffers.
2
C Status Register. Contains the interrupt and status flags for the I2C interface.
2
I
C Interrupt Enable Register. Contains the interrupt-enable bits and control bits for general call
address matching and clock stretching.
2
C Control Register. Contains the control and configuration bits for the I2C interface.
2
C Clock Control Register. Defines the SCL high and low clock periods for I2C master mode.
2
C Timeout Register. Enables/disables the master mode timeout when the bus is busy or SCL
I
is held low by another device longer than the maximum allowed time, and defines the timeout
period.
2
C Slave Address Register. Defines the 7-bit/10-bit address that is recognized by the slave
I
portion of the I
2
C interface.
The following peripheral registers are used to control the integrated I2C peripheral on the MAXQ8913. Addresses for
all registers are given as “Mx[yy],” where x is the module number (from 0 to 15 decimal) and yy is the register index
(from 00h to 1Fh hexadecimal). Fields in the bit definition tables are defined as follows:
• Name: Symbolic names of bits or bit fields in this register.
• Reset: The value of each bit in this register following a standard reset. If this field reads “unchanged,” the given bit
is unaffected by standard reset. If this field reads “s,” the given bit does not have a fixed 0 or 1 reset value because
its value is determined by another internal state or external condition.
• POR: If present this field defines the value of each bit in this register following a power-on reset (as opposed to a
standard reset). Some bits are unaffected by standard resets and are set/cleared by POR only.
• Access: Bits can be read-only (r) or read/write (rw). Any special restrictions or conditions that could apply when
reading or writing this bit are detailed in the bit description.
Maxim Integrated
22-1
22.1.1 I2C Data Buffer Register (I2CBUF, M1[06h])
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bit #
Name——————I2CBUF
Reset00000000
Accessrrrrrrw*w*
Bit #
NameI2CBUF
Reset00000000
Accessrw*rw*rw*rw*rw*rw*rw*rw*
Note: ADCONV cannot be written when PMME = 1 and SWB = 0.
*Can be written only when I2CBUSY = 0.
15141312111098
76543210
Bits 9:0: This register is used as the read and write data buffer for I2C data and address transmissions.
22.1.1.1 I2C Data Read and Write
Data for I2C transfer is read and written to this location. The I2C transmit and receive buffers are internally stored
separately; however, both are accessed through this buffer. For data transfers, only the low eight bits (I2CBUF[7:0])
are significant.
22.1.1.2 I2C Address Transmission
When transmitting an I2C address, the address should be loaded into I2CBUF[6:0] for a 7-bit address (if I2CEA = 0)
and into I2CBUF[9:0] for a 10-bit address (if I2CEA = 1). Bits 8 and 9 are effectively write-only since there is no circumstance under which reading them returns useful data.
22.1.2 I2C Status Register (I2CST, M3[01h])
Bit #
NameI2CBUSI2CBUSY——I2CSPII2CSCLI2CROII2CGCI
Reset00000000
Accessrrrrrwrrwrw
Bit #
NameI2CNACKII2CALII2CAMII2CTOII2CSTRII2CRXII2CTXII2CSRI
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bit 15: I2C Bus Busy (I2CBUS). This bit is set to 1 when a START/repeated START condition is detected and cleared
to 0 when the STOP condition is detected. This bit is reset to 0 on all forms of reset and when I2CEN = 0. This bit is
controlled by hardware and is read-only.
2
Bit 14: I
when the I
C Busy (I2CBUSY). This bit is used to indicate the current status of the I2C module. The I2CBUSY is set to 1
2
controlled by hardware and is read-only.
Bits 13:12: Reserved. Read returns 0.
Bit 11: I
2
C STOP Interrupt Flag (I2CSPI). This bit is set to 1 when a STOP condition (P) is detected. This bit must be
cleared to 0 by software once set. Setting this bit to 1 by software causes an interrupt if enabled.
Bit 10: I2C SCL Status (I2CSCL). This bit reflects the logic state of the SCL signal. This bit is set to 1 when SCL is at
a logic-high (1), and cleared to 0 when SCL is at a logic-low (0). This bit is controlled by hardware and is read-only.
15141312111098
76543210
C controller is actively participating in a transaction or when it does not have control of the bus. This bit is
22-2
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bit 9: I2C Receiver Overrun Flag (I2CROI). This bit indicates a receive overrun when set to 1. This bit is set to 1 if
the receiver has already received two bytes since the last CPU read. This bit is cleared to 0 by software reading the
I2CBUF. Setting this bit to 1 by software causes an interrupt if enabled. Writing 0 to this bit does not clear the interrupt.
2
Bit 8: I
and the general call address is received. This bit must be cleared to 0 by software once set. Setting this bit to 1 by
software causes an interrupt if enabled.
Bit 7: I
Setting this bit to 1 by hardware causes an interrupt if enabled. This bit must be cleared to 0 by software once set. This
bit is set by hardware only.
Bit 6: I
arbitration. When the master loses arbitration, the I2CMST bit is cleared to 0. Setting this bit to 1 by hardware causes
an interrupt if enabled. This bit must be cleared to 0 by software once set. This bit is set by hardware only.
Bit 5: I
address that matches the contents in its slave address register (I2CSLA) during the address stage. This bit must be
cleared to 0 by software once set. Setting this bit to 1 by software causes an interrupt if enabled.
Bit 4: I
condition or the I
the I
for an extended period of time. This bit must be cleared to 0 by software once set. Setting this bit to 1 by software
causes an interrupt if enabled.
Bit 3: I
stretching enabled and is holding the SCL clock signal low. The I
cleared to 0. Setting this bit to 1 by hardware causes an interrupt if enabled. This bit must be cleared to 0 by software
once set. This bit is set by hardware only.
Bit 2: I
buffer. This bit must be cleared by software once set. Setting this bit to 1 by hardware causes an interrupt if enabled.
This bit is set by hardware only.
Bit 1: I
cessfully shifted out and the I
must be cleared by software once set. Setting this bit to 1 by software causes an interrupt if enabled.
Bit 0: I2C START Interrupt Flag (I2CSRI). This bit is set to 1 when a START condition (S or Sr) is detected. This bit
must be cleared to 0 by software once set. Setting this bit to 1 by software causes an interrupt if enabled.
C General Call Interrupt Flag (I2CGCI). This bit is set to 1 when the general call is enabled (I2CGCEN = 1)
2
C NACK Interrupt Flag (I2CNACKI). This bit is set to 1 if the I2C transmitter receives a NACK from the receiver.
2
C Arbitration Loss Flag (I2CALI). This bit is set to 1 when the I2C is configured as a master and loses in the
2
C Slave Address Match Interrupt Flag (I2CAMI). This bit is set to 1 when the I2C controller receives an
2
C Timeout Interrupt Flag (I2CTOI). This bit is set to 1 if either the I2C controller cannot generate a START
2
C controller is operating in master mode and some other device on the bus is using the bus or holding SCL low
2
C Clock Stretch Interrupt Flag (I2CSTRI). This bit indicates that the I2C controller is operating with clock
2
C Receive Ready Interrupt Flag (I2CRXI). This bit indicates that a data byte has been received in the I2C
2
C Transmit Complete Interrupt Flag (I2CTXI). This bit indicates that an address or a data byte has been suc-
2
C SCL low time has expired the timeout value specified in the I2CTO register. This happens when
2
C controller releases SCL after this bit has been
2
C controller has received an acknowledgment from the receiver (NACK or ACK). This bit
Bit #
Name————I2CSPIE—I2CROIEI2CGCIE
Reset00000000
Accessrwrwrwrwrwrrwrw
Bit #
NameI2CNACKIEI2CALIEI2CAMIEI2CTOIEI2CSTRIEI2CRXIEI2CTXIEI2CSRIE
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bits 15:12, 10: Reserved. Read returns 0.
Bit 11: I
2
C STOP Interrupt Enable (I2CSPIE). Setting this bit to 1 causes an interrupt to the CPU when a STOP condi-
tion is detected (I2CSPI = 1). Clearing this bit to 0 disables the STOP detection interrupt from generating.
Maxim Integrated
15141312111098
76543210
22-3
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bit 9: I2C Receiver Overrun Interrupt Enable (I2CROIE). Setting this bit to 1 causes an interrupt to the CPU when a
receiver overrun condition is detected (I2ROI = 1). Clearing this bit to 0 disables receiver overrun detection interrupt
from generating.
2
Bit 8: I
to the CPU when general call is enabled (I2CGCEN = 1). Clearing this bit to 0 disables general call interrupt from
generating.
Bit 7: I
detected (I2CNACKI = 1). Clearing this bit to 0 disables NACK detection interrupt from generating.
Bit 6: I2C Arbitration Loss Interrupt Enable (I2CALIE). Setting this bit to 1 causes an interrupt to the CPU when the
2
I
Bit 5: I
when the I
address match interrupt from generating.
Bit 4: I2C Timeout Interrupt Enable (I2CTOIE). Setting this bit to 1 causes an interrupt to the CPU when a timeout
condition is detected (I2CTOI = 1). Clearing this bit to 0 disables timeout interrupt from generating.
Bit 3: I2C Clock Stretch Interrupt Enable (I2CSTRIE). Setting this bit to 1 generates an interrupt to the CPU when the
clock stretch interrupt flag is set (I2CSTRI = 1). Clearing this bit disables the clock stretch interrupt from generating.
Bit 2: I2C Receive Ready Interrupt Enable (I2CRXIE). Setting this bit to 1 causes an interrupt to the CPU when the
receive interrupt flag is set (I2CRXI = 1). Clearing this bit to 0 disables the receive interrupt from generating.
Bit 1: I2C Transmit Complete Interrupt Enable (I2CTXIE). Setting this bit to 1 causes an interrupt to the CPU when
the transmit interrupt flag is set (I2CTXI = 1). Clearing this bit to 0 disables the transmit interrupt from generating.
Bit 0: I2C START Interrupt Enable (I2CSRIE). Setting this bit to 1 causes an interrupt to the CPU when a START condition is detected (I2CSRI = 1). Clearing this bit to 0 disables the START detection interrupt from generating.
C General Call Interrupt Enable (I2CGCIE). Setting this bit to 1 generates an I2CGCI (general call interrupt)
2
C NACK Interrupt Enable (I2CNACKIE). Setting this bit to 1 causes an interrupt to the CPU when a NACK is
C master loses in an arbitration (I2CALI = 1). Clearing this bit to 0 disables arbitration loss interrupt from generating.
2
C Slave Address Match Interrupt Enable (I2CAMIE). Setting this bit to 1 causes an interrupt to the CPU
2
C controller detects an address that matches the I2CSLA value (I2CAMI = 1). Clearing this bit to 0 disables
22.1.4 I2C Control Register (I2CCN, M1[04h])
Bit #
NameI2CRST—————I2CSTRENI2CGCEN
Reset00000000
Accessrwrwrwrwrwrwrwrw
Bit #
NameI2CSTOPI2CSTARTI2CACKI2CSTRSI2CEAI2CMODEI2CMSTI2CEN
Reset00000000
Accessrwrwrwrwrwrwrwrw
Note 1: I2CSTART and I2CSTOP are mutually exclusive and reset to 0 when I2CMST = 0 or I2CEN = 0.
Note 2: I2CRST is reset to 0 when I2CEN = 0.
Note 3: Writes to I2CMST, I2CMODE, and I2CEN are ignored when I2CBUSY = 1.
Note 4: If I2CRST = 1, I2CEN can be written when I2CBUSY = 1.
Note 5: Write to I2CACK is ignored if I2RST = 1.
Bit 15: I2C Reset (I2CRST). Setting this bit to 1 aborts the current transaction and resets the I2C controller. This bit is
set to 1 by software and is only cleared to 0 by hardware after the reset or when I2CEN = 0.
Bits 14:10: Reserved. Read returns 0.
2
Bit 9: I
C Clock Stretch Enable (I2CSTREN). Setting this bit to 1 stretches the clock (holds SCL low) at the end of the
clock cycle specified in I2CSTRS. Clearing this bit disables clock stretching.
15141312111098
76543210
22-4
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bit 8: I2C General Call Enable (I2CGCEN). Setting this bit to 1 enables the I2C to respond to a general call address
2
(address = 0000 0000). Clearing this bit to 0 prevents the I
Bit 7: I
2
C STOP Enable (I2CSTOP). Setting this bit to 1 generates a STOP condition. This bit automatically is self-
C from responding to the general call address.
cleared to 0 after the STOP condition has been generated.
In master mode, setting this bit can also start the timeout timer if enabled. If the timeout timer expires before the STOP
condition can be generated, a timeout interrupt is generated to the CPU if enabled. The I2CSTOP bit is also cleared
to 0 by the timeout event.
2
Note that this bit has no effect when the I
C is operating in slave mode (I2CMST = 0), and is reset to 0 when I2CMST
= 0 or I2CEN = 0. Setting the I2CSTOP bit to 1 while I2CSTART = 1 is an invalid operation and is ignored, leaving
I2CSTOP bit cleared to 0.
2
Bit 6: I
generates a repeated START condition during a transfer where the I
automatically self-cleared to 0 after the START condition has been generated. If the I
C START (I2CSTART). Setting this bit automatically generates a START condition when the bus is free or
2
C module is operating as the master. This bit is
2
C START interrupt is enabled, a
START condition generates an interrupt to the CPU.
In master mode, setting this bit can also start the timeout timer if enabled. If the timeout timer expires before the START
condition can be generated, a timeout interrupt is generated to the CPU if enabled. The I2CSTART bit is also cleared
to 0 by the timeout event.
2
Note that this bit has no effect when the I
C is operating in slave mode (I2CMST = 0) and is reset to 0 when I2CMST
= 0 or I2CEN = 0. Also, the I2CSTART and I2CSTOP bits are mutually exclusive. If both bits are set at the same time,
2
it is considered as an invalid operation and the I
C controller ignores the request and resets both bits to 0. Setting the
I2CSTART bit to 1 while I2CSTOP = 1 is an invalid operation and is ignored, leaving the I2CSTART bit cleared to 0.
Bit 5: I2C Data Acknowledge Bit (I2CACK). This bit selects the acknowledge bit returned by the I2C controller while
acting as a receiver. Setting this bit to 1 generates a NACK (leaving SDA high). Clearing the I2CACK bit to 0 generates
an ACK (pulling SDA low) during the acknowledgement cycle. This bit retains its value unless changed by software or
2
hardware. When an I
C abort is in progress (I2CRST = 1), this bit is set to 1 by hardware, and software writes to this
bit are ignored when I2CRST = 1.
Bit 4: I2C Clock Stretch Select (I2CSTRS). Setting this bit to 1 enables clock stretching after the falling edge of the
8th clock cycle. Clearing this bit to 0 enables clock stretching after the falling edge of the 9th clock cycle. This bit has
no effect when clock stretching is disabled (I2CSTREN = 0).
2
Bit 3: I
C Extended Address Mode Enable (I2CEA). When this bit is set to 0 (the default), all address transmissions in
master mode operate using a 7-bit address, and the slave mode functions match against a 7-bit address. Setting this
bit to 1 increases the address range to 10 bits for both master mode transmissions and slave mode address matches.
2
Bit 2: I
C Transfer Mode (I2CMODE). The transfer mode bit selects the direction of data transfer with respect to the
master. When the I2CMODE bit is set to 1, the master is operating in receiver mode (reading from slave). When the
I2CMODE bit is cleared to 0, the master is operating in transmitter mode (writing to slave).
Note that software writing to this bit is prohibited in slave mode. When operating in master mode, software configures
this bit to the desired direction of data transfer. When operating in slave mode, the direction of data transfer is determined by the R/W bit received during the address stage, and this bit reflects the actual R/W bit value in the current
transfer and is set by hardware. Software writing to this bit in slave mode is ignored.
2
Bit 1: I
ule. When the I2CMST bit is set to 1, the I
operates in slave mode. This bit is automatically cleared whenever the I
C Master-Mode Enable (I2CMST). The I2CMST bit functions as a master-mode enable bit for the I2C mod-
2
C operates as a master. When the I2CMST is cleared to 0, the I2C module
2
C controller receives a slave address match
(I2CAMI = 1), loses arbitration (I2CALI = 1), or matches the general call address (I2CGCI = 1).
Bit 0: I2C Enable (I2CEN). This bit enables the I2C function. When set to 1, the I2C communication unit is enabled.
2
When cleared to 0, the I
C function is disabled.
Maxim Integrated
22-5
MAXQ Family User’s Guide:
MAXQ8913 Supplement
22.1.5 I2C Clock Control Register (I2CCK, M1[0Ch])
Bit #
NameI2CCKH
Reset00000010
Accessrwrwrwrwrwrwrwrw
15141312111098
Bit #
NameI2CCKL
Reset00000100
Accessrwrwrwrwrwrwrwrw
Note 1: Write to this register is ignored when I2CBUSY = 0.
Note 2: This register has no function in slave mode.
76543210
Bits 15:8: I2C Clock High (I2CCKH[7:0]). These bits define the I2C SCL high period in number of system clocks, with
bit 7 as the most significant bit. The duration of SCL high time is calculated using the following equation:
I2C High Time Period = System Clock x (I2CCKH[7:0] + 1)
When operating in master mode, I2CCKH must be set to a minimum value of 2 to ensure proper operation. Any value
less than 2 is set to 2.
Bits 7:0: I
2
C Clock Low (I2CCKL[7:0]). These bits define the I2C SCL low period in number of system clocks, with bit
7 as the most significant bit. The duration of SCL low time is calculated using the following equation:
I2C Low Time Period = System Clock x (I2CCKL[7:0] + 1)
When operating in master mode, I2CCKL must be set to a minimum value of 4 to ensure proper operation. Any value
less than 4 is set to 4.
22.1.6 I2C Timeout Register (I2CTO, M1[0Dh])
Bit #
NameI2CTO
Reset00000000
Accessrwrwrwrwrwrwrwrw
76543210
Bits 7:0: I2C Timeout Register. This register is used only in master mode. This register determines the number of the
2
C bit period (SCL high + SCL low) the I2C master waits for SCL to go high. The timeout timer resets to 0 and starts to
I
count after the I2CSTART bit is set, or every time SCL goes low. When cleared to 00h, the timeout function is disabled
2
and the I
C waits for SCL to go high indefinitely during a transmission. When set to any other values, the I2C waits until
the timeout expires and sets the I2CTOI flag.
I2C Timeout = I2C Bit Rate x (I2CTO[7:0] + 1)
Note that these bits have no effect when the I
2
C module is operating in slave mode (I2CMST = 0). When operating in
slave mode, SCL is controlled by an external master.
Bit #
Name——————I2CSLA
Reset00000010
Accessrrrrrrrwrw
15141312111098
Bit #
NameI2CSLA
Reset00000100
Accessrwrwrwrwrwrwrwrw
Bits 15:10: Reserved. Read returns zero.
Bits 9:7: I
the additional address bits (along with bits 6:0) that make up the 10-bit address the I
mode. If 10-bit addressing mode is not enabled, these bits have no function.
Bits 6:0: I2C Slave Address Register. These address bits contain the address of the I2C device. When a match to
this address is detected, the I
the I
generated to the CPU if enabled.
22.2 I
2
C Slave Address Register Extended Bits. When 10-bit addressing mode is enabled, these bits contain
2
C module is enabled (I2CEN = 1). The I2CAMI flag is set to 1 and the I2CMST bit is cleared to 0. An interrupt is
2
C Code Examples
76543210
2
C engine responds to in slave
2
C controller automatically acknowledges the transmitter with the I2CACK bit value if
22.2.1 I2C Example 1: Master Mode Transmit
; I2C configured as master, transmit to slave address 08h
; Setup for Master Mode Transmit
move I2CCN, #003h ; I2CEN = 1, I2CMST = 1
call wait_busy ; Polling routine to wait for I2CBUSY to clear
move I2CCN, #043h ; I2CEN = 1, I2CMST = 1, I2CMODE = 0, I2CSTART = 1
call wait_start ; Polling routine to wait for I2CSTART to clear
call wait_busy ; Polling routine to wait for I2CBUSY to clear
move I2CIE.1, #01h ; Enable Transmit Complete Interrupt
move I2CBUF, #008h ; Slave address set to 08h
call wait_tx_complete ; Wait for transmit interrupt
;; Verify ACK from slave
move ACC, I2CST ; Move I2C Status Register to accumulator
and #080h ; Check for NACK bit set in status register
cmp #000h
jump ne, FAIL ; If NACK bit set, handle retransmission, else continue
move I2CBUF, #0aah ; Byte to transmit
call wait_tx_complete ; Wait for transmit interrupt
Maxim Integrated
22-7
MAXQ Family User’s Guide:
MAXQ8913 Supplement
22.2.2 I2C Example 2: Master Mode Receive
; I2C configured as master, receive from slave address 08h:
; Setup for Master Mode Receive
move I2CCN, #047h ; I2CEN = 1, I2CMST = 1, I2CMODE = 1, I2CSTART = 1
call wait_start ; Polling routine to wait for I2CSTART to clear
call wait_busy ; Polling routine to wait for I2CBUSY to clear
move I2CIE.2, #01h ; Enable Receive Ready Interrupt
move I2CBUF, #008h ; Slave address set to 08h
call wait_tx_complete ; Wait for transmit interrupt
call wait_rxbuf ; Wait for receive interrupt
;; Byte received in I2CBUF, clear I2C interrupt flag and wait for next interrupt
22.2.3 I2C Example 3: Slave Mode Receive
; I2C configured as slave with address 1ah
; Setup for Slave Mode Receive
move I2CSLA, #01ah ; I2C Slave Address = 01ah
move I2CCN, #0001h ; I2CEN = 1, I2CMST = 0, I2CMODE = 0, I2CSTART = 0
call wait_start ; Polling routine to wait for I2CSTART to be set,
; indicating a received START
;; Check for address match
move ACC, I2CST
and #0020h ; Check for Address Match flag set
cmp #0020h
jump ne, no_match ; If address match bit not set, not for us, else:
move I2CIE.2, #01h ; Enable Receive Ready Interrupt
call wait_rxbuf ; Wait for a receive interrupt
;; Byte received in I2CBUF, clear I2C interrupt flag and wait for next interrupt
22-8
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
22.2.4 I2C Example 4: Slave Mode Receive
; I2C configured as slave with address 1ah
; Setup for Slave Mode Receive
move I2CSLA, #01ah ; I2C Slave Address = 01ah
move I2CCN, #0001h ; I2CEN = 1, I2CMST = 0, I2CMODE = 0, I2CSTART = 0
call wait_start ; Polling routine to wait for I2CSTART to be set,
; indicating a received START
;; Check for address match
move ACC, I2CST
and #0020h ; Check for Address Match flag set
cmp #0020h
jump ne, no_match ; Not an address match
move ACC, I2CCN ; Check transfer mode is set
and #004h
cmp #004h
jump ne, not_sl_xmit ; If transfer mode is low, not a slave transmit, else:
move I2CBUF, #0aah ; Data byte to be transmitted
call wait_xmit ; Poll for transmit done
;; Verify ACK received from master
move ACC, I2CST
and #080h
cmp #000h
jump ne, FAIL ; If NACK bit set, handle retransmission, else continue
Maxim Integrated
22-9
MAXQ Family User’s Guide:
MAXQ8913 Supplement
SECTION 23: SUPPLY VOLTAGE MONITOR AND POWER CONTROL
(SPECIFIC TO MAXQ8913)
The MAXQ8913 provides a number of features to allow monitoring and control of its on-board power supplies. The supply voltage monitor register (SVM) monitors the DVDD power supply and can alert the processor through an interrupt
if DVDD falls below a programmable threshold. Other control bits allow the processor to reduce power consumption
and configure various aspects of clock operation.
The MAXQ8913 provides the following power monitoring and control features:
• SVM compares DVDD against a programmable threshold from approximately 2.7V to 3.5V.
• Optional SVM register interrupt can be triggered when DVDD drops below the programmed threshold.
• SVM interrupt can be used to trigger switchback or exit from stop mode.
• Internal 1.8V regulator can optionally be disabled in stop mode to conserve power.
• Brownout detection can optionally be disabled in stop mode to conserve power.
23.1 SVM and Power Control Register Descriptions
The following peripheral registers are used to control the supply voltage monitoring and power control functions.
Addresses for all registers are given as “Mx[yy],” where x is the module number (from 0 to 15 decimal) and yy is the
register index (from 00h to 1Fh hexadecimal). Fields in the bit definition tables are defined as follows:
• Name: Symbolic names of bits or bit fields in this register.
• Reset: The value of each bit in this register following a standard reset. If this field reads “unchanged,” the given bit
is unaffected by standard reset. If this field reads “s,” the given bit does not have a fixed 0 or 1 reset value because
its value is determined by another internal state or external condition.
• POR: If present this field defines the value of each bit in this register following a power-on reset (as opposed to a
standard reset). Some bits are unaffected by standard resets and are set/cleared by POR only.
• Access: Bits can be read-only (r) or read/write (rw). Any special restrictions or conditions that could apply when
reading or writing this bit are detailed in the bit description.
*HFXD can only be written to 1 when both RGSL = 1 and RGMD = 1 (running from ring oscillator).
Bit 7: Brownout-Detection Disable (BOD). This bit controls whether the brownout detection is enabled during stop
mode only and only when the internal 1.8V regulator is also disabled (REGEN = 0).
0 = Brownout detection is disabled during stop mode, if REGEN = 0.
1 = Brownout detection is enabled during stop mode.
Bit 6: Regulator Enable (REGEN). This bit controls whether the internal 1.8V regulator is enabled during stop mode
only. (The internal regulator is always enabled outside of stop mode.)
0 = The internal regulator is disabled during stop mode to conserve power.
1 = The internal regulator is enabled during stop mode.
Bits 5:1: Reserved. Read returns 0.
Maxim Integrated
76543210
23-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bit 0: High-Frequency Crystal Oscillator Disable (HFXD). Setting this bit to 1 disables the high-frequency crystal
oscillator on the MAXQ8913. However, a high-frequency external clock can still be provided at HFXIN. Clearing this bit
to 0 enables the high-frequency crystal oscillator.
23.1.2 Supply Voltage Monitor Register (SVM, M0[06h])
Bit #
Name————SVTH3SVTH2SVTH1SVTH0
Reset00000111
Accessrrrrrw*rw*rw*rw*
15141312111098
Bit #
Name———SVMSTOPSVMISVMIESVMRDYSVMEN
Reset00000000
Accessrrrrwrwrwrrw
*SVTH[3:0] can only be written when the SVM is not running (SVMEN = 0).
Bits 15:12, 7:5: Reserved
Bits 11:8: Supply Voltage Monitor Threshold (SVTH[3:0]). These bits select the programmable DVDD threshold set-
ting for the SVM. The level can be adjusted from approximately 2.0V to 3.5V in steps of 0.1V, and is given by:
Note: Settings below 2.7V have no effect and should not be used.
The default setting (SVTH[3:0] = 0111b) is 2.7V. Note that these bits can only be changed when SVMEN = 0.
Bit 4: Supply Voltage Monitor Stop-Mode Enable (SVMSTOP). This bit controls the operation of the SVM in stop
mode.
0 = The SVM is disabled during stop mode.
1 = The SVM is enabled during stop mode (if SVMEN = 1).
Bit 3: Supply Voltage Monitor Interrupt Flag (SVMI). This bit is set to 1 by hardware when the DVDD supply is below
the threshold voltage set by SVTH[3:0]. If SVMIE = 1, setting this bit to 1 by either hardware or software triggers an
interrupt. This bit must be cleared by software, but if DVDD is still below the threshold, the bit immediately is set by
hardware again.
Bit 2: Supply Voltage Monitor Interrupt Enable (SVMIE). Setting this bit to 1 allows an interrupt to be generated (if
not otherwise masked) when SVMI is set to 1. Clearing this bit to 0 disables the SVM interrupt.
Bit 1: Supply Voltage Monitor Ready (SVMRDY). This read-only status bit indicates whether the SVM is ready for use.
0 = The SVM is disabled (SVMEN = 0), stop mode was entered with SVMSTOP = 0, or the SVM is in the process of
warming up.
1 = The SVM is enabled and ready for use.
Bit 0: Supply Voltage Monitor Enable (SVMEN). Setting this bit to 1 enables the SVM and begins monitoring DVDD
against the programmed (SVTH[3:0]) threshold. Clearing this bit to 0 disables the SVM.
76543210
SVM threshold = 2.0V + (SVTH[3:0] x 0.1V)
23-2
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
SECTION 24: INPUT/OUTPUT AMPLIFIERS (SPECIFIC TO
MAXQ8913)
24.1 Input/Output Amplifier Overview
The MAXQ8913 controls two amplifier stages as described in this section. The input amplifier stage consists of four
internal, uncommitted op amps that can be used to amplify and/or filter the inputs to the ADC. The output stage consists of an external Class D amplifier that can be used to postprocess the outputs from DAC1 and DAC2.
Table 24-1. Amplifier Control Registers
REGISTERADDRESSFUNCTION
AMPCNM3[06h]Amplifier Control Register. Controls the external Class-D amplifier.
OPMCNM3[0Ah]Op Amp Control Register. Enables/disables the internal uncommitted op amps.
24.2 Amplifier Control Register Descriptions
Addresses of registers are given as “Mx[yy],” where x is the module number (from 0 to 15 decimal) and yy is the register index (from 00h to 1Fh hexadecimal). Fields in the bit definition tables are defined as follows:
• Name: Symbolic names of bits or bit fields in this register.
• Reset: The value of each bit in this register following a standard reset. If this field reads “unchanged,” the given bit
is unaffected by standard reset. If this field reads “s,” the given bit does not have a fixed 0 or 1 reset value because
its value is determined by another internal state or external condition.
• POR: If present this field defines the value of each bit in this register following a power-on reset (as opposed to a
standard reset). Some bits are unaffected by standard resets and are set/cleared by POR only.
• Access: Bits can be read-only (r) or read/write (rw). Any special restrictions or conditions that could apply when
reading or writing this bit are detailed in the bit description.
24.2.1 Amplifier Control Register (AMPCN, M3[06h])
Bit #
Name—AMPFLTAMPIFAMPIEAMPCK1AMPCK0AMPEN1AMPEN0
Reset01000000
Accessrrrwrwrwrwrwrw
Bit 7: Reserved. All reads return 0.
Bit 6: Amplifier Fault Flag (AMPFLT). This bit is set to 0 by hardware when the FAULT input from the external
D-amplifier goes low. It is set to 1 by hardware whenever FAULT is high, or when both amplifiers are disabled (AMPEN0
= 0 and AMPEN1 = 0), or when the amplifier clock is disabled (AMPCK[1:0] == 00b).
Bit 5: Amplifier Interrupt Flag (AMPIF). If this bit is set to 1, an interrupt is generated if AMPIE = 1. This bit is set to 1
by hardware when the AMPFLT flag changes from 1 to 0. This bit must be cleared by software once set.
Bit 4: Amplifier Interrupt Enable (AMPIE). If this bit is set to 1, an interrupt is generated when AMPIF = 1. If this bit
is set to 0, amplifier interrupts are disabled.
Bits 3:2: Amplifier Clock Divide (AMPCK[1:0]). These two bits control the D-amplifier clock output that is generated
on the SYNCIN pin. This clock is generated from a divided-down version of the system clock as follows:
AMPCK1 = 0, AMPCK0 = 0: No output clock (disabled).
AMPCK1 = 0, AMPCK0 = 1: SYNCIN clock = System clock divided by 2.
AMPCK1 = 1, AMPCK0 = 0: SYNCIN clock = System clock divided by 3.
AMPCK1 = 1, AMPCK0 = 0: SYNCIN clock = System clock divided by 4.
Maxim Integrated
76543210
24-1
MAXQ Family User’s Guide:
MAXQ8913 Supplement
Bit 1: Amplifier 1 Enable (AMPEN1). This bit controls the active-high SHDNR output signal for the right-side motor
driver as follows:
0 = Disabled. SHDNR output is driven high.
1 = Enabled. SHDNR output is driven low to enable motor driver.
Bit 0: Amplifier 0 Enable (AMPEN0). This bit controls the active-high SHDNL output signal for the left-side motor
driver as follows:
0 = Disabled. SHDNL output is driven high.
1 = Enabled. SHDNL output is driven low to enable motor driver.
24.2.2 Op Amp Control Register (OPMCN, M3[0Ah])
Bit #
Name————OPMENDOPMENCOPMENBOPMENA
Reset00000000
Accessrrrrrwrwrwrw
Bits 7:4: Reserved. All reads return 0.
Bit 3: Op Amp D Enable (OPMEND). Setting this bit to 1 enables op amp D; setting this bit to 0 disables it. The OUTD
pin can still be used as an input to AIN5 even when the op amp is turned off.
Bit 2: Op Amp C Enable (OPMENC). Setting this bit to 1 enables op amp C; setting this bit to 0 disables it. The OUTC
pin can still be used as an input to AIN4 even when the op amp is turned off.
Bit 1: Op Amp B Enable (OPMENB). Setting this bit to 1 enables op amp B; setting this bit to 0 disables it. The OUTB
pin can still be used as an input to AIN3 even when the op amp is turned off.
Bit 0: Op Amp A Enable (OPMENA). Setting this bit to 1 enables op amp A; setting this bit to 0 disables it. The OUTA
pin can still be used as an input to AIN2 even when the op amp is turned off.
76543210
24-2
Maxim Integrated
MAXQ Family User’s Guide:
MAXQ8913 Supplement
SECTION 25: UTILITY ROM (SPECIFIC TO MAXQ8913)
25.1 Overview
The MAXQ8913 utility ROM includes routines that provide the following functions to application software:
• In-application programming routines for flash memory (program, erase, mass erase)
• Single word/byte copy and buffer copy routines for use with lookup tables
To provide backwards compatibility among different versions of the utility ROM, a function address table is included
that contains the entry points for all user-callable functions. With this table, user code can determine the entry point
for a given function as follows:
1. Read the location of the function address table from address 0800Dh in the utility ROM.
2. The entry points for each function listed below are contained in the function address table, one word per function,
in the order given by their function numbers.
For example, the entry point for the UROM_flashEraseAll function can be determined by the following procedure.
It is also possible to call utility ROM functions directly, using the entry points given above. Standard include files are
provided for this purpose with the MAXQ development toolset; also see Appendix 1. This method calls functions more
quickly, but the application may need to be recompiled in order to run properly with a different version of the utility
ROM.
Table 25-1. Functions for MAXQ8913 Utility ROM
INDEXFUNCTION NAMEENTRY POINTSUMMARY
0UROM_flashWrite8788hPrograms a single word of flash memory.
1UROM_flashErasePage87ABhErases (programs to FFFFh) a 512-word sector of flash memory.
2UROM_flashEraseAll87C1hErases (programs to FFFFh) all flash memory.
3UROM_moveDP087D0hReads a byte/word at DP[0].
4UROM_moveDP0inc87D3hReads a byte/word at DP[0], then increments DP[0].
5UROM_moveDP0dec87D6hReads a byte/word at DP[0], then decrements DP[0].
6UROM_moveDP187D9hReads a byte/word at DP[1].
7UROM_moveDP1inc87DChReads a byte/word at DP[1], then increments DP[0].
8UROM_moveDP1dec87DFhReads a byte/word at DP[1], then decrements DP[0].
9UROM_moveBP87E2hReads a byte/word at BP[OFFS].
10UROM_moveBPinc87E5hReads a byte/word at BP[OFFS], then increments OFFS.
11UROM_moveBPdec87E8hReads a byte/word at BP[OFFS], then decrements OFFS.
12UROM_copyBuffer87EBhCopies LC[0] values (up to 256) from DP[0] to BP[OFFS].
Maxim Integrated
25-1
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.