Si 4010
Si 4010
C R Y S T A L- L E S S S O C R F T R A N S M I T T E R
Features
Crystal-less operation Single Coin-Cell Battery Operation
Optional crystal oscillator input Supply voltage: 1.8 to 3.6 V
High-Speed 8051 μC Core Standby current < 10 nA
Pipeline instruction architecture High-performance RF transmitter
70% of instructions in 1 or 2 clocks Frequency range: 27–960 MHz
Up to 24 MIPs with 24 MHz clock +10 dBm output power,
4 kB RAM/8kB NVM adjustable
128 bit EEPROM Automatic antenna tuning
Description
The Si4010 is a fully integrated crystal-less CMOS SoC RF transmitter with an
embedded CIP-51 8051 MCU. The device can operate over the –40 to 85 °C
temperature range without requiring an external crystal reference source reducing
board area and BOM cost. The device includes an 8 kB non volatile memory block
for programming the user's application along with a 12 kB ROM of embedded
support code for use in the user's application. The Si4010 includes Silicon 10-Pin MSOP
Laboratories' 2-wire C2 Debug and Programming interface, which allows
customers to download their code during the development stage into the on-board
RAM for testing and debug prior to programming the NVM.
The Si4010 is designed for low power battery applications with standby currents of
less than 10 nA to optimize battery life and features automatic wake on button
press support to efficiently move from the standby to active mode state with
minimal customer code support. Built in AES-128 hardware encryption along with
a 128-bit EEPROM can be used to create robust data encryption of the
transmitted packets. A unique 4-byte serial number is programmed into each
device ensuring non-overlapping device identifiers.
The RF transmitter features a high efficiency PA capable of delivering output 14-Pin SOIC
power up to +10 dBm and includes an automatic antenna tuning algorithm. This
algorithm adjusts the antenna tuning at the start of each packet transmission for
optimal output power minimizing the impact of antenna impedance changes due
Patents pending
to the remote being held in a user hand. The devices supports FSK and OOK
modulations and includes automatic output power shaping to reduce spectral
spreading and ease regulatory compliance. The output frequency can be adjusted
via software over the entire 27 to 960 MHz range. The output data rate is software
adjustable up to a maximum rate of 100 kbps.
2 Rev. 1.1
S i4 0 1 0 -C 2
TA B L E O F C O N T E N T S
Rev. 1.1 3
Si4010-C2
4 Rev. 1.1
Si4010-C2
Rev. 1.1 5
Si4 010- C2
LIST OF FIGURES
6 Rev. 1.1
S i4 0 1 0 -C 2
L I S T O F TA B L E S
Rev. 1.1 7
Si4 010- C2
LIST OF XREG REGISTERS
8 Rev. 1.1
S i4 0 1 0 -C 2
LIST OF SFR REGISTERS
Rev. 1.1 9
Si4010-C2
10 Rev. 1.1
Si4010-C2
1. System Overview
The Si4010 is a fully integrated crystal-less CMOS SoC RF transmitter with an embedded CIP-51 8051
MCU designed for the sub 1 GHz ISM frequency bands. This chip is optimized for battery powered applica-
tions with operating voltages from 1.8 to 3.6 V and ultra-low current consumption with a standby current of
less than 10 nA. The high power amplifier can supply up to +10 dBm output power with 19.5 dB of pro-
grammable range. Moreover, the SoC transmitter includes a patented antenna tuning circuit that automati-
cally fine tunes the resonance frequency and impedance matching between the PA output and the
connected antenna for optimum transmit efficiency and low harmonic content. FSK and OOK modulation is
supported with symbol rates up to 100 kbps. Like all wireless devices, users are responsible for complying
with applicable local regulatory requirements for radio transmissions.
The embedded CIP-51 8051 MCU provides the core functionality of the Si4010. User software has com-
plete control of all peripherals, and may individually shut down any or all peripherals for power savings. A
space of 8 kB of on-chip one-time programmable NVM memory is available to store the user program and
can also store unique transmit IDs. In case of power outages due to battery removal, 128 bits of EEPROM
is available for counter or other operations providing non-volatile storage capability. A library of useful soft-
ware functions such as AES encryption, a patented 32-bit counter providing 1 M cycles of read/write
endurance, and many other functions are included in the 12 kB of ROM to reduce user design time and
code space. General purpose input/output pins with push button wake-on touch capability, a programma-
ble system clock, and ultra low power timers are also available to further reduce current consumption.
The Si4010 includes Silicon Laboratories' 2-wire C2 Debug and Programming interface. This debug logic
supports memory inspection, viewing and modification of special function registers (SFR), setting break
points, single stepping, and run and halt commands. All analog and digital peripherals are fully functional
while debugging using C2. The two C2 interface pins can be shared with user functions, allowing in-system
debugging without occupying package pins.
The device leverages Silicon Labs' patented and proven crystal-less oscillator technology and offers better
than ±150 ppm carrier frequency stability over the temperature range of 0 to + 70 °C and ±250 ppm carrier
frequency stability over the industrial range of –40 to + 85 °C without the use of an external crystal or fre-
quency reference. The internal MCU automatically calibrates the on-chip voltage controlled oscillator
(LCOSC) which forms the output carrier frequency for process and temperature variations. An external 1-
pin crystal oscillator option is available for applications requiring tighter frequency tolerances.
Digital integration reduces the amount of required external components compared to traditional offerings,
resulting in a solution that only requires a printed circuit board (PCB) implementation area of approximately
25 by 50 mm (including battery, switches, and 25 mm2 antenna). The high integration of the Si4010
improves the system manufacturing reliability and quality and minimizes costs. This chip offers industry
leading RF performance, high integration, flexibility, low BOM, small board area, and ease of design. No
production alignment is necessary as all RF functions are integrated into the device.
Rev. 1.1 11
Si4010-C2
12 Rev. 1.1
Si4010-C2
2. Test Circuit
Rev. 1.1 13
Si4010-C2
Figure 3.1. Si4010 Used in a 5-button RKE System with LED Indicator
3.2. Si4010 with an External Crystal in a 4-Button RKE System with LED Indicator
Figure 3.2. Si4010 with an External Crystal in a 4-button RKE System with LED Indicator
14 Rev. 1.1
Si4010-C2
4. Ordering Information
Table 4.1. Product Selection Guide
Automotive Qualified
GPIO with Wakeup2
HVRAM (Bytes)
EEPROM (Bits)
RAM (Bytes)
MIPS (Peak)
Sleep Timer
LED Driver
Package
Si4010-C2-GT 24 8k 4k Y 256 8 128 Y 5 1 Y Y Y Y — Y MSOP-10
Notes:
1. Add an “(R)” at the end of the device part number to denote tape and reel option.
2. Assumes LED driver is used and no external crystal.
Rev. 1.1 15
Si4010-C2
5. Top Markings
5.1. SOIC
16 Rev. 1.1
Si4010-C2
5.2. MSOP
Rev. 1.1 17
Si4010-C2
6. Pin Definitions
6.1. MSOP, Application
18 Rev. 1.1
Si4010-C2
Rev. 1.1 19
Si4010-C2
20 Rev. 1.1
Si4010-C2
Rev. 1.1 21
Si4010-C2
7. Package Specifications
7.1. 10-Pin MSOP
Figure 7.1 illustrates the package details for the Si4010, 10-pin MSOP package. Table 7.1 lists the values
for the dimensions shown in the illustration.
22 Rev. 1.1
Si4010-C2
Rev. 1.1 23
Si4010-C2
24 Rev. 1.1
Si4010-C2
General
1. All dimensions shown are in millimeters (mm) unless otherwise noted.
2. Dimensioning and Tolerancing per ASME Y14.5M-1994.
3. This Land Pattern Design is based on the IPC-7351 guidelines.
4. All dimensions shown are at Maximum Material Condition (MMC).
Least Material Condition (LMC) is calculated based on a Fabrication
Allowance of 0.05mm.
Solder Mask Design
1. All metal pads are to be non-solder mask defined (NSMD). Clearance
between the solder mask and the metal pad is to be 60 m minimum, all
the way around the pad.
Stencil Design
1. A stainless steel, laser-cut and electro-polished stencil with
trapezoidal walls should be used to assure good solder paste release.
2. The stencil thickness should be 0.125mm (5 mils).
3. The ratio of stencil aperture to land pad size should be 1:1.
Card Assembly
1. A No-Clean, Type-3 solder paste is recommended.
2. The recommended card reflow profile is per the JEDEC/IPC J-STD-
020 specification for Small Body Components.
Rev. 1.1 25
Si4010-C2
26 Rev. 1.1
Si4010-C2
C1 5.30 5.40
E 1.27 BSC
X1 0.50 0.60
Y1 1.45 1.55
Notes:
General
1. All dimensions shown are in millimeters (mm) unless otherwise noted.
2. This land pattern design is based on the IPC-7351 guidelines.
Stencil Design
1. A stainless steel, laser-cut and electro-polished stencil with
trapezoidal walls should be used to assure good solder paste release.
2. The stencil thickness should be 0.125 mm (5 mils).
3. The ratio of stencil aperture to land pad size should be 1:1 for all
perimeter pads.
Card Assembly
1. A No-Clean, Type-3 solder paste is recommended.
2. The recommended card reflow profile is per the JEDEC/IPC J-STD-
020 specification for Small Body Components.
Rev. 1.1 27
Si4010-C2
28 Rev. 1.1
Si4010-C2
GPIO[0-9] Pull Up
RPU 48 55 62 k
Resistance
Trip point at
High Level Input Voltage2 VIH 0.65 x VDD V
0.45 x VDD
Trip point at
Low Level Input Voltage2 VIL 0.35 x VDD V
0.45 x VDD
Rev. 1.1 29
Si4010-C2
30 Rev. 1.1
Si4010-C2
Rev. 1.1 31
Si4010-C2
32 Rev. 1.1
Si4010-C2
11.1. Overview
The Si4010 is a fully integrated crystal-less CMOS SoC RF transmitter with an embedded CIP-51 8051
MCU as the core processor of the system. The device is designed for low power battery applications with
standby currents of less than 10 nA to optimize battery life. Upon power up, the device immediately enters
standby mode. In this mode, all blocks are powered down except for the low leakage high-voltage RAM
(HVRAM) which provides 8 bytes of memory that retains its state as long as the battery voltage is applied
and above 1.8 V. The Si4010 is awakened from standby mode by a falling edge to ground on any one of
the GPIO pins. In addition, the Si4010 has a low-power sleep timer for applications where the device is
required to wake up and periodically check for events instead of being wakened by a GPIO falling edge.
Upon wake up, the boot loader copies data from the one time programmable (OTP) NVM to CODE/XDATA
RAM (4 kB) because the MCU can only operate with programs stored in RAM or ROM. The copy process
occurs on each wake-up event and requires approximately 2 ms of fixed time plus 3.6 ms per kB of data or
16.4 ms to fill the full 4 kB of CODE/XDATA RAM. After the NVM boot copy process is completed, the MCU
runs the user program in RAM and can also run functions from ROM that are called by the user program
such as button service routines to facilitate button debouncing, button time stamps, etc. A complete list and
Rev. 1.1 33
Si4010-C2
detailed description of all the API functions is given in application note “AN370: Si4010 Software Program-
ming Guide.”
The Si4010 has three timing sources. The LCOSC is the most accurate timing source native to the chip.
Each device is factory trimmed and programmed at Silicon Labs to produce a frequency accuracy of better
than ±150 ppm over the temperature range of 0 to + 70 °C and ±250 ppm over the industrial range of –40
to +85 °C. The LCOSC is fitted to a multiple-degree polynomial to compensate for temperature variations
both from the on-chip power amplifier (PA) and also from the external environment. This LCOSC oscillates
around 3.9 GHz and provides the clock (via the DIVIDER) used to modulate the PA for OOK and FSK
transmission. The low power oscillator (LPOSC) is the second timing source and operates at 24 MHz. The
LPOSC is always the source of clocking for the MCU and is turned off only in standby mode. The system
clock is programmable allowing the MCU to operate with lower clock frequencies while waiting between
packets to save power. The RTC and timers 2 and 3 are derived from the LPOSC. The last clock source is
the crystal oscillator (XTALOSC). This crystal oscillator is unused in many customer applications and used
only when a highly accurate carrier frequency is desired. When enabled, it is used before the beginning of
a transmission to correct the frequency of the LCOSC and is then shutdown to save power. An internal fre-
quency counter is implemented in hardware to allow for quick frequency ratio measurements to calibrate
the different clock sources.
The high efficiency PA is a CMOS open drain output driver capable of producing 3.5 Vpk differential output
swing with a supply voltage of 2.2 V or higher. The PA output has 2.4 to 12.5 pF of differential variable
capacitance that is automatically adjusted to resonate the antenna at the start of each packet transmission.
This automatic adjustment is realized with a firmware algorithm in the ROM and some additional hardware
in the PA. Maximum power can be transferred to the inductive antenna load when the antenna and output
driver are at resonance and the real component of the load is equal to the optimum load resistance of
Vpk/(4/Pi x Itail/2) where Vpk is the peak differential voltage and Itail is the tail current of the PA. At higher
resistances the PA is voltage limited and at lower resistances the PA is current limited. The PA tail current
is programmable from 810 μA up to 7.67 mA in 0.25 dB steps and there is a boost current bit that multiplies
the tail current by 1.5 times allowing it to go up to 11.5 mA. With an antenna load resistance of about 500
an output power of +10 dBm is achievable. Edge rate control is also included for OOK mode to reduce har-
monics that may otherwise violate government regulations.
The on-chip temperature sensor (TEMP SENSOR) measures the internal temperature of the chip and tem-
perature demodulator (TEMP DEMOD) converts the TEMP SENSORs’ output into a binary number repre-
senting temperature and is used to compensate the frequency of the LCOSC when the temperature
changes. Each device's frequency response versus temperature is calibrated in the factory.
The output data serializer (ODS) is responsible for synchronizing the output data to the required data rate
and maintaining a steady data flow when data is available. This block produces the edge rate control for
the PA in OOK mode and the frequency deviation in FSK mode. The block also schedules the power on/off
times of the LCOSC, DIVIDER, and PA to conserve battery power during transmission.
Power management is provided on chip with low-drop-out (LDO) regulators for the internal analog and dig-
ital supplies, VA and VD, respectively. The power-on reset (POR) circuit monitors the power applied to the
chip and generates a reset signal to set the chip into a known state. The bandgap produces voltage and
current references for the analog blocks in the chip and can be shut down when the analog blocks are not
used.
The embedded CIP-51 8051 MCU provides the core functionality of the Si4010. User software has com-
plete control of all peripherals, and may individually shut down any or all peripherals for power savings. 8K
bytes of on-chip one-time programmable NVM memory is available to store the user program and can also
store unique transmit IDs. 128 bits of EEPROM is available for counter or other operations providing non-
volatile storage capability in case of power outages due to battery removal. A library of useful software
functions such as AES encryption, a patented 32-bit counter providing 1M cycles of read/write endurance,
and many other functions are included in the 12 kB of ROM to reduce user design time and code space.
34 Rev. 1.1
Si4010-C2
General purpose input/output pins with push button wake-on touch capability are available to further
reduce current consumption.
The Si4010 includes Silicon Laboratories' 2-wire C2 Debug and Programming interface. This debug logic
supports inspection memory, viewing and modification of special function registers (SFR), setting break
points, single stepping, and run and halt commands. All analog and digital peripherals are fully functional
while debugging using C2. The two C2 interface pins can be shared with user functions, allowing in-system
debugging without occupying package pins.
Rev. 1.1 35
Si4010-C2
The CMOS power amplifier (PA) is a differential open drain amplifier capable of delivering +10 dBm of out-
put power. Maximum power can be transferred to an inductive antenna load when the antenna and output
driver of the PA are at resonance and the real component of the combined load is equal to the optimum
load resistance of Vpk/(4/Pi x Itail/2) where Vpk is the peak differential voltage of the PA and Itail is the tail
current of the PA. This optimum load resistance is the parallel combination of the PA output resistance and
the differential antenna resistance. At higher resistances the PA is voltage limited and at lower resistances
the PA is current limited. The PA tail current is programmable from 810 μA up to 7.67 mA (SFR register
PA_LVL) in 0.25 dB steps and there is a boost current bit (XREG PA_TRIM.PA_MAX_DRV) that multiplies
the tail current by 1.5 times allowing it to go up to 11.5mA. The maximum differential peak-to-peak voltage
is 3.5 V when the supply is 2.2 to 3.6 V and drops linearly down to 3.0 V when the supply is at 1.8 V.
The calculator spreadsheet tool computes the required antenna impedance and API settings to achieve
the user desired output power. Proper layout and matching techniques are all necessary to ensure optimal
performance. Figure 3.1 on page 14 shows a typical application schematic of the Si4010 for a differential
loop antenna. Application note "AN369: Antenna Interface for the Si401x Transmitters" provides detailed
information about designing the antenna interface for the Si401X transmitters. With proper filtering and lay-
out techniques, the Si4010 can conform to US FCC part 15.231 and European EN 300 220 regulations.
Edge rate control is also included for OOK mode to reduce harmonics that may otherwise violate govern-
ment regulations. Edge shaping is accomplished by gradually turning on and off the driver transistors of
the PA. The edge shaping parameters are controlled by the ODS block and is automatically determined by
the cal- culator spread sheet based on the desired data rate and encoding method. Users must comply
with local radio frequency transmission regulations.
36 Rev. 1.1
Si4010-C2
Off-chip capacitor tolerances, loop antenna manufacturing tolerances, and environmental variations can
lead to impedance mismatch at the PA output causing reduced radiated power level. The Si4010 includes
an automatic antenna tuning circuit to reduce the mismatch by adjusting the on-chip variable capacitor to
resonate with the inductance of the antenna. The PA output has 2.4 to 12.5 pF of variable capacitance that
is adjusted to tune the antenna to the correct frequency using a firmware assisted algorithm and on-chip
hardware.The variable capacitance is adjusted at the start of each packet transmission during the pream-
ble. The switching network in the capacitor array is compensated over process, voltage, and temperature
(PVT) to keep its quality factor (Q) nearly constant at 50 (at 434 MHz). The starting value of the 9-bit
capacitor word (XREG PA_CAP) is chosen with the help of the calculator spreadsheet. In general, a high
operating frequency requires a smaller capacitance and hence a low value capacitive word. The output
resistance of the PA is a strong function of the capacitive word because the variable capacitor is imple-
mented with a capacitor and a MOS switch. When more capacitance is turned on (higher capacitive word),
more switches turn on and with a constant Q design, the output resistance of the PA decreases and has
more loss. Thus, another consideration for the nominal capacitive word besides the operating frequency is
how the resistive loading of the varactor affects the optimum load resistance and the required antenna
resistance. The calculator illustrates how the nominal value of the capacitive word affects the desired
antenna resistance.
In addition to the algorithm used to tune the antenna for resonance, a software control loop using the
Power Amplifier Module API can keep the transmit radiated power constant due to changes in temperature
and/or capacitance of the antenna. For example, if changes in the temperature of the transmitter and/or
the capacitance of the antenna cause the impedance of the load (the parallel combination of the PA and
antenna resistances) to decrease, this will cause a decrease in the output voltage of the PA and hence the
radiated power. Both the operating temperature and the capacitor tuning word are monitored by the chip
and may be used to increase the nominal drive current to bring the product of the output voltage and driver
capacitance back to what it was prior to the environmental change. In order for this loop to operate cor-
rectly, the parameters Alpha and Beta need to be determined from measured antenna characteristics.
Alpha represents the required change in bLevel (the nominal power level programmed through the API
interface) given changes in temperature. Beta represents the required change in bLevel given changes in
programmed driver capacitance. Remember that each LSB change in bLevel corresponds to a 0.25 dBm
change in power. For example, if experimental measurement shows that the radiated power changes by 1
dBm over a 50 °C change in temperature, alpha would be set to 4/50=0.08. In this alpha equation, the 4 is
derived from 1 dBm/0.25 dBm per step in bLevel. Thus, the units of alpha are (LSB steps in
bLevel)/(change in temp). Beta can be determined using the Si4010 calculator spreadsheet. These two
parameters should be entered as parameters to the API to provide accurate adjustments to the radiated
power. In addition to these parameters, the differential peak voltage and current drive of the PA should not
be maximized prior to using this loop so adjustments in the current drive, which affects the differential peak
voltage, can be made by the feedback loop. If either the current or voltage is maximized prior to using the
loop, the loop would not be able to further adjust the current or voltage and hence fail to operate properly.
See “AN547: Si4010 Calculator Spreadsheet Usage” for more details.
Rev. 1.1 37
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Byte
1 0
Offset
Name PA_CAP[1:0]
Type R/W
38 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Rev. 1.1 39
Si4010-C2
( CO f
Figure f
13.2. FSK Timing Example f O S)
40 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
ODS_SHIFT_CTRL FSK_ FSK_ FORCE_ FORCE_ FORCE_
Name ODS_EN
[1:0] FORCE_DEV MODE LC DIV PA
Type R/W R/W R/W R/W R/W R/W R/W R/W
Reset 0 0 0 0 0 0 0 0
Rev. 1.1 41
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
42 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Name ODS_DATA[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name ODS_RATEL[7:0]
Reset 0 0 0 0 0 0 0 0
Rev. 1.1 43
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Name Reserved ODS_RATEH[6:0]
Type R R/W R/W R/W R/W R/W R/W R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
44 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Rev. 1.1 45
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
46 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Name LPOSC_TRIM[7:0]
Type R/W
Reset 1 1 1 1 1 1 1 1
Rev. 1.1 47
Si4010-C2
Bit 7 6 5 4 3 2 1 0
SYSGEN_ PWR_ RTC_ PORT_
Name Reserved SYSGEN_DIV[2:0]
SHUTDOWN 1ST_TIME TICKCLR HOLD
Type R/W R R W R/W R/W
Reset 0 0 — 0 0 0 0 1
48 Rev. 1.1
Si4010-C2
Note: Limits should be linearly scaled for crystal frequencies that lie in the 10–13 MHz crystal frequency range, as
follows:
Upper limit
Cload + C0 < 15.5 pF – 0.83 * (fXO [MHz] – 10) pF
Cross point for XO_LOWCAP
Cload + C0 = 11 pF – 0.5 * (fXO [MHz] – 10) pF
Rev. 1.1 49
Si4010-C2
Bit 7 6 5 4 3 2 1 0
XO_
Name Reserved Reserved Reserved Reserved Reserved Reserved XO_ENA
LOWCAP
Type R/W R/W
Reset 0 0 0 0 0 0 0 0
50 Rev. 1.1
Si4010-C2
The block diagram of the frequency counter is shown in Figure 17.1. When the FC_MODE=0, the fre-
quency counter is disabled. The only way to disable the frequency counter is to set the FC_MODE=0. The
fre- quency counter stops counting immediately, so it can be restarted by setting FC_MODE to some func-
tional mode immediately.
If the frequency counter is enabled by setting FC_MODE to other than the 0 value, it enters the idle state.
To start the counter, the interval counter has to be triggered by writing 1 to the FC_BUSY bit. By writing
FC_BUSY=1, the FC_DONE bit gets cleared as well. The user can also clear the FC_DONE bit in software
after reading the main FC_COUNT value.
Once the interval counter is triggered, and after several clk_sys cycles synchronization delay it waits for
the first rising edge of the clk_int clock, which is the output of the interval counter clock selector mux. It
then enables the main frequency counter FC_COUNT clock. After the interval counter counts the interval
specified by FC_INTERVAL SFR register, another rising edge of the clk_int stops the clocks to the main
FC_COUNT counter. The interval counter edge to edge counting and main FC_COUNT clock enable is
measured very accurately in between the clk_int rising edges.
Rev. 1.1 51
Si4010-C2
When the interval counter is finished with the interval count, it clears the FC_BUSY=0 bit and after a few
cycles of clk_sys synchronization delay it sets the FC_DONE=1 bit. Both interval counter and main
FC_COUNT counter are stopped and the main FC_COUNT keeps the accumulated value until the fre-
quency counter is disabled or triggered again. The 23 bit FC_COUNT value can be read as a 4 byte long
word, lFcCount, from the XREG register in XDATA. When the counter is counting and FC_BUSY=1, then
reading the FC_COUNT value returns the on the fly changing value of the FC_COUNT counter.
The frequency counter is restartable. If 1 is written to FC_BUSY while the frequency counter is busy then
the current FC_COUNT result is discarded, main FC_COUNT is reset, and the interval counter is trig-
gered, waiting for the first rising edge of the clk_int clock.
The count interval is chosen with the FC_INTERVAL SFR register. The number of interval count cycles
(count cycles of the low frequency clock) = (2+FC_INTERVAL[0])*(2^FC_INTERVAL[5:1]).
Note: FC_INTERVAL is not allowed to take on numbers higher than 43. If the number is higher than 43, then the
calculated number or interval count cycles is forced to 1. Even though 43 is the maximum FC_INTERVAL
setting, lower FC_INTERVAL settings can cause the 23-bit frequency counter to overflow depending on the
ratio between the frequency counter clock and the interval clock. Generally, the ratio between these clocks
should be carefully selected to prevent overflow of the frequency counter (unless overflow is explicitly desired).
52 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Rev. 1.1 53
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Bit 3 2 1 0
Name IFC_COUNT[3:0]
Type R
54 Rev. 1.1
Si4010-C2
Rev. 1.1 55
Si4010-C2
Performance
The CIP-51 employs a pipelined architecture that greatly increases its instruction throughput over the stan-
dard 8051 architecture. In a standard 8051, all instructions except for MUL and DIV take 12 or 24 system
clock cycles to execute, and usually have a maximum system clock of 12 MHz. By contrast, the CIP-51
core executes 70% of its instructions in one or two system clock cycles, with no instructions taking more
than eight system clock cycles.
56 Rev. 1.1
Si4010-C2
With the CIP-51's maximum system clock at 24 MHz, it has a peak throughput of 24 MIPS. The CIP-51 has
a total of 109 instructions. The table below shows the total number of instructions in the function of the
required clock cycles.
Number of Instructions 26 50 5 14 7 3 1 2 1
Rev. 1.1 57
Si4010-C2
58 Rev. 1.1
Si4010-C2
Rev. 1.1 59
Si4010-C2
60 Rev. 1.1
Si4010-C2
Rev. 1.1 61
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Name DPL[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name DPH[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
62 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Name SP[7:0]
Type R/W
Reset 0 0 0 0 0 1 1 1
Bit 7 6 5 4 3 2 1 0
Name ACC[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Rev. 1.1 63
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Name B[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
64 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
The OV bit is cleared to 0 by the ADD, ADDC, SUBB, MUL, and DIV instructions in all
other cases.
User Flag 1.
1 F1
This is a bit-addressable, general purpose flag for use under software control.
Parity Flag.
0 PARITY This bit is set to logic 1 if the sum of the eight bits in the accumulator is odd and cleared
if the sum is even.
Rev. 1.1 65
Si4010-C2
66 Rev. 1.1
Si4010-C2
Rev. 1.1 67
Si4010-C2
68 Rev. 1.1
Si4010-C2
The maximum number of read operations of the NVM memory is limited, but this limitation has effect only
in extreme conditions. Consult the electrical specification section in this document, and with “AN577:
Si4010 NVM Read Reliability Analysis”.
23.10. MTP (EEPROM) Memory
The MTP memory is a special block not organized as a usual memory. The memory output is mapped to
the XDATA address space as a XREG register (abMTP_RDATA[16]) 16 byte read only array at addresses
0x4040 .. 0x404F. Writing to the MTP memory can be done only indirectly by using the Silicon Labs pro-
vided API ROM functions.
To write to MTP the user must prepare an array of all 16 bytes in CODE/XDATA RAM. There is no byte
access to MTP. Even if only a single bit is to be changed in MTP, the current content must be copied to the
CODE/XDATA RAM in full, all 16 bytes. Then the desired bit has to be changed in that RAM copy and an
API function has to be called to program the 16 byte changed data from RAM to MTP. The user can use
the API MTP copy call to get the current content of MTP into CODE/XDATA RAM for modifications. If the
MTP bit is not changing value the programming cycle is not counted against the maximum bit change dura-
bility of MTP. Therefore, programming the 16 byte MTP content unchanged from the current value has no
effect on the longevity of the MTP.
There is no direct write access to MTP through registers. Silicon Labs API ROM functions must be used.
Byte 15 14 ... 1 0
Name abMTP_RDATA[0:15]
Type R
Reset — — ... — —
Rev. 1.1 69
Si4010-C2
70 Rev. 1.1
Si4010-C2
24.2. Reset
Reset circuitry allows the controller to be easily placed in a predefined default condition. See “Reset
Sources” on page 107 for details.
24.3. Chip Program Levels
The boot process starts by reading the NVM configuration bytes in the Factory region of NVM. The infor-
mation about the programmed level of the chip is read first and the boot process acts accordingly.
After boot, the program level of the chip can be read as NVM_BLOWN[2:0] field in the PROT0_CTRL
register.
From user point of view there are 3 program levels of the chip:
1. Factory .. blank part leaving the factory. The factory chip calibration is written into NVM. ROM and
NVM Factory region is not readable by the user. Part can be used with debugging chain for software
development and User load can be programmed to the part. Boot process initializes the part based on
the Factory settings.
2. User .. same as Factory (blank) part, but with the User region in the NVM programmed with user code.
The boot process will initialize the part according to the Factory settings and then (see Note 1. in
section “24.5. Device Boot Process”) copies the User load to the CODE/XDATA or IRAM based on the
User load. The code is not automatically run (see Note 2. in section “24.5. Device Boot Process”). The
part can be used with IDE for further software development. The part is still opened for further NVM
programming and the user can add additional data to the User region in the NVM. Debugging of the
code loaded from NVM is possible. The user can modify the boot behavior of the User part by
controlling two bits described later in the boot sequence description.
This program level can be used two ways:
User programs the User code to check the load before finalizing the product.
Silicon Labs program most of the User code into the chip. Then the customer will add additional
information specific for each chip on his own. For example, the customer may chose to let Silicon
Labs program all the application data, but wants to program security keys into each chip on their
own. This User level would be the chip program level delivered to a customer.
3. Run .. mission mode part, fully programmed for use in the field. No further NVM programming possible,
no C2 interface access enabled, with the exception of special mode for retest. No possibility of IDE
debug. The boot process is the same as in the case of User part, but after the user load is copied from
NVM to RAM, the boot loader executes a jump to RAM address 0x0000 and the user application is
executed. The C2 is not enabled in this mode with the retest exception, briefly described in this
document.
The IDE debugging environment can be used only with the Factory and User program chip levels, not with
the Run part.
Rev. 1.1 71
Si4010-C2
72 Rev. 1.1
Si4010-C2
Rev. 1.1 73
Si4010-C2
cannot be cleared. When this bit is 1, then after the Factory and User loads are loaded from
NVM the boot loader enables C2 and runs the user code immediately, without any wait, by
executing long jump to RAM address 0x0000. The IDE can still halt the chip and connect to
it in a usual fashion. From the debug point of view there is no change. This bit corresponds
to the Exe User Boot checkout on the NVM programmer GUI application.
5. If the program level is Run then the same boot procedures is followed as for the User device. When
loading the User region is done, the user code is run by jumping to the 0x0000 address in
CODE/XDATA RAM. The C2 interface is disabled and the chip can no longer be used with debug chain
and IDE. The Run chip can be opened for retest, but the user has an option to limit Retest access or
lock the chip out completely. See Section “24.11. Retest and Retest Configuration”.
Note: If the Factory or User part is powered up, the part will wait in an infinite loop, consuming power.
Only the Run part executes code in CODE/XDATA RAM automatically. The user can also optionally make
the User part to execute loaded code automatically as described above.
24.6. Error Handling During Boot
At the end of the boot process the bBoot_BootStat byte variable contains the final status of the whole
boot process. Bit field meanings are summarized in SFR Definition 24.1. The user application code should
read that variable and if its value is other then 0x00 or 0x80, then it should decide whether it is safe to run
the application at all. The boot success/fail single bit information is also contained in the BOOT_FLAGS
SFR register for easier access.
24.7. CODE/XDATA RAM Address Map
The 4.5 kB for internal RAM at the address range 0x0000 .. 0x11FF is the main area for the user program
(CODE) and external data (XDATA). It is a unified memory, referred to as CODE/XDATA RAM in this docu-
ment, so both CPU code (CODE) can be executed there and external data (XDATA) can reside there.
External data are the data accessible by MOVX instructions. MOVC instructions can also be used to
access data in that region.
After the boot of a Run part the CPU starts executing code from address 0x0000 in RAM. Therefore, user
code must occupy the beginning of the RAM, followed by the XDATA.
Important: Linker of the user application has to be given proper regions of CODE and XDATA memory,
which are mutually exclusive. Therefore, for example, the user cannot set the CODE region to be 0x0000 ..
0x1000 and XDATA region to be the very same at the same time. One has to specify two non-overlapping
regions for CODE and XDATA in the CODE/XDATA RAM area instead.
The end of the CODE/XDATA RAM is reserved for internal Silicon Labs use. The CODE/XDATA RAM
address space is divided into three parts:
1. User CODE/XDATA .. user application load. The boot process copies the user code and external
initialized data from NVM to this region.
2. Factory data values .. variable length. Reserved for Silicon Labs use. The actual beginning of the
Silicon Labs reserved area in RAM can be obtained by reading the boot WORD (2 byte) variable
wBoot_DpramTrimBeg. In big endian fashion it contains an address of the first reserved byte of the
RAM. User can use the range 0x0000 .. (wBoot_DpramTrimBeg) - 1 for application CODE and
XDATA
3. Boot status variables .. variables in the region 0x11F3 .. 0x11FF are boot status variables set at the end
of the boot process to inform the user application about the RAM size available for user application and
about the final status of the boot process.
The visual representation of the RAM is in Figure 24.2. The detailed explanation of the boot control data
variables are in Table 24.1 to SFR Definition 24.1.
74 Rev. 1.1
Si4010-C2
The user code or user development environment need to pay attention to the content of the following vari-
ables. All are stored in big endian fashion (MSB at the lower address):
wBoot_DpramTrimBeg .. this variable points to the first occupied (by factory data) address of RAM.
Therefore, the user development platform needs to read this variable to determine what the available
RAM area for user CODE/XDATA is.
bBoot_BootStat .. boot status result. User code should check this value at its beginning. If the value is
different than 0x00 then the user could decide not to run its application since there was a problem with
the boot.
Critical registers and variables corresponding to the NVM programming:
PROT0_CTRL .. this register, described in SFR Definition 24.4, contains the value of the current
program level of chip. Depending on that value, the NVM programming utility will decide what can and
cannot be programmed into the NVM.
PROT3_CTRL .. internal byte in the Factory region of the NVM controlling the boot process. It contains
all the user code protection bits and modification of the User part boot process.
wBoot_NvmUserBeg .. address in NVM of the beginning of the User load. For programming the User
load into the NVM, the NVM programming utility has to be properly configured by using this value. The
value is read automatically by the NVM programming utility, and also is available through the IDE.
Depending on the size of the Factory load the value of this variable can vary in between chip revisions.
It could also vary from chip to chip, but that is unlikely.
wBoot_NvmCopyAddr .. first unread address of the NVM during boot. This address contains the NVM
address the boot routine would read next. The last byte of the last data block read is at the address that
is one less than the content of this variable: (wBoot_NvmCopyAddr) - 1. The NVM programmer will
use this information when additional block User data is needed to be programmed. As long as the part
is in a program state User additional blocks can be added to the User load.
Rev. 1.1 75
Si4010-C2
76 Rev. 1.1
Si4010-C2
Boot status byte can or should be read by the user application at the very beginning to determine whether
the copying of the Factory and User data from NVM to desired RAM destination was successful or not.
When there are no errors, the value the bBoot_BootStat variable should be 0x00 or 0x80. Any other value
denotes a boot error. The user application then can decide whether to run or stall, if the user application
was actually loaded to RAM. If the boot fails and the user application is not loaded to RAM, then
unpredictable results may occur. The bit 7 of this variable contains a read value of GPIO[0] at the very
beginning of the boot before the XO was optionally turned on.
Rev. 1.1 77
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0/1 0 0 0 0 0 0 0
Apart from the CODE/XDATA RAM memory region there is a boot control and status SFR register,
BOOT_FLAGS. It controls the end of the boot and has error status bit, which is set when bBoot_BootStat
variable has other than 0x00 value. That is added for convenience so the user code can just check a single
bit in SFR register rather than reading XDATA variable to determine whether boot finished successfully or
not. If the bBoot_BootStat XDATA variable is not 0x00, the boot fail flag is set in the BOOT_FLAGS SFR.
The other bits control whether the user code will run after the boot. If the debugging chain is used and user
code is loaded through IDE, this process is transparent to the user. Whenever the IDE connects to the
device, it resets and halts the device, awaiting user. The user will generally not write to the BOOT_FLAGS
register.
However, if the user wants to make the User part to behave as a Factory part, then it is possible to write
value 0x20 to the BOOT_FLAGS register through IDE (see View -> Debug Windows -> SFR -> Boot
window). Don’t forget to press the Refresh IDE button for the change to take effect. Then until the power
to the part is cycled the part would behave as a Factory part.
78 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Rev. 1.1 79
Si4010-C2
Figure 24.3. Boot Routine Destination CPU Address Space for Copy from NVM
The address space of the NVM image destinations depend on the program level of the chip and is shown
in Figure 24.3:
0x0000 .. 0x11FF .. CODE/XDATA RAM. The end of the RAM is reserved for the boot control data.
0x7000 .. 0x70FF .. virtually mapped 256 byte of IRAM for DATA/IDATA indirect access. Whenever the
destination address in the NVM image is in this region the data destination is going to be DATA/IDATA
IRAM space. However, only region 0x7020 .. 0x70EF is writable. That means that the first 32 and last
16 bytes of the IRAM are not writable by a boot process. Note that the mapping is for indirect internal
IRAM access (DATA/IDATA), so SFR registers cannot be initialized by this process.
It is up to the user to generate IntelHEX files to be passed to the NVM programmer. The NVM programmer
will ensure that the NVM gets programmed with a proper data structures such that the data values pro-
vided in the IntelHEX files will appear at the RAM and IRAM addresses specified in the IntelHEX input file
after the boot is done.
80 Rev. 1.1
Si4010-C2
Note that by using the unified CODE/XDATA memory and by mapping the IRAM to the boot process
address space the user can initialize both XDATA and IRAM variables directly from the User NVM load
without the need for running any startup code to do variable initializations, resulting in the saving of a code
size.
One application of the data initialization by a boot process could be copying of keys from the NVM to fixed
locations without any code intervention. The user can program all the chips with the same application in
the factory and then add only a very small, per chip, User block with keys, specifying where to the XDATA
and/or IRAM memories the boot process should copy the values of the keys.
For example, to initialize IRAM location 0x56 to 0xA4 value the user will provide and IntelHEX file specify-
ing that at the address 0x7056 the data value should be 0xA4.
24.10. NVM Programming
The user program/data is stored in the NVM memory in a proprietary form; therefore, the NVM program-
ming can be done only by the Silicon Labs provided composer and programmer utility. The data preparer
will take user generated application IntelHEX files, user settings (see below), and will generate data to be
programmed into the NVM. The NVM programmer then programs the data into the NVM.
During the composing/programming process the user will have control of the following:
1. Make Factory part a User part .. program User data into the NVM
2. Update User part .. add additional User data block to the existing User data already in NVM. This
process can be done many times as long as there is a space in NVM.
3. Make User part a Run part .. mark a part as a final mission mode part. When making the part a Run
part the user can decide whether the part retest will be allowed and if so, then what protection
restrictions the user is going to impose during the retest process.
These steps can be combined into a single programming step. Step 2. is optional and is convenient when
part specific data needs to be added later to the NVM load.
To support the NVM programming Silicon Labs provides two utilities:
NVM Programming Utility: The NVM configuration can be easily setup with this Microsoft Windows
based GUI. This application contains both the composer and burner functions. Please check the
application note AN511:NVM Programming User Guide for details
Command Line NVM programming application: This application can be integrated into the customer's
production line. This utility expects a composed NVM content file as an input (created by the NVM
Programming Utility). See the corresponding application note for details.
In addition, 3rd party programmer support is available for high-volume production programming. Silicon
Labs can also program parts directly for customers for high-volume production. Contact your Silicon Labs
representative for more details.
Rev. 1.1 81
Si4010-C2
82 Rev. 1.1
Si4010-C2
Once these options are programmed to the part they cannot be undone or changed. Additional setting of
these options after the part is made a Run part is not possible either.
Rev. 1.1 83
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0x0 0 0
This bit corresponds to XO Early Enable checkbox on the NVM programmer GUI.
2:3 Reserved Reserved.
Run the User Code in User Part after Boot Automatically.
For User programming level only, has no effect in other programming levels. Normally when
1 USER_CONT the part is programmed as User the user code is loaded from NVM to RAM, but is not
executed automatically. If this bit is set, then the user load is executed automatically after boot.
This bit corresponds to Exe User Boot checkbox on the NVM programmer GUI.
0 Reserved Reserved.
84 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 1 0 0 0 0 0
Rev. 1.1 85
Si4010-C2
86 Rev. 1.1
Si4010-C2
Rev. 1.1 87
Si4010-C2
88 Rev. 1.1
Si4010-C2
Rev. 1.1 89
Si4010-C2
Note: Multiple byte variables, if they are not arrays, are stored in big endian ..
MSB byte stored on lower address. Arrays are stored with byte index [0] at
lower address.
90 Rev. 1.1
Si4010-C2
Description of the XREG register fields on the previous pages includes only the used register bits. The
fields are aligned towards the LSB byte of the XREG register. If the actual XREG register is wider then the
field described the missing bits towards MSB byte are all read as 0's and writing to them has no effect. For
example, the register wPA_CAP contains a single 9 bit field. Since it is more than 8 bits and less then 16 it
occupies two bytes. That's why the prefix letter 'w' denoting a two byte WORD. The bits [15:9] are read as
all zeros and write has no effect. They are aligned towards MSB byte of the wPA_CAP, the one at lower
address since the byte ordering is in big endian fashion.
Rev. 1.1 91
Si4010-C2
26. Interrupts
The Si4010 device includes an extended interrupt system supporting a total of 12 interrupt sources with
two priority levels. Each interrupt source has one or more associated interrupt-pending flag(s) located in an
SFR. When a peripheral or external source meets a valid interrupt condition, the associated interrupt-
pending flag is set to logic ‘1’.
If interrupts are enabled for the source, an interrupt request is generated when the interrupt-pending flag is
set. As soon as execution of the current instruction is complete, the CPU generates an LCALL to a prede-
termined address to begin execution of an interrupt service routine (ISR). Each ISR must end with an RETI
instruction, which returns program execution to the next instruction that would have been executed if the
interrupt request had not occurred. If interrupts are not enabled, the interrupt-pending flag is ignored by the
hardware and program execution continues as normal. The interrupt-pending flag is set to logic ‘1’ regard-
less of the interrupt's enable/disable state.
Each interrupt source can be individually enabled or disabled through the use of an associated interrupt
enable bit in the Interrupt Enable and Extended Interrupt Enable SFRs. However, interrupts must first be
globally enabled by setting the EA bit (IE.7) to logic ‘1’ before the individual interrupt enables are recog-
nized.
Setting the EA bit to logic ‘0’ disables all interrupt sources regardless of the individual interrupt-enable set-
tings. Note that interrupts which occur when the EA bit is set to logic ‘0’ will be held in a pending state, and
will not be serviced until the EA bit is set back to logic ‘1’.
Note: Any instruction that clears a bit to disable an interrupt should be immediately followed by an instruc-
tion that has two or more opcode bytes. Using EA (global interrupt enable) as an example:
// in 'C':
EA = 0; // clear EA bit.
EA = 0; // this is a dummy instruction with two-byte opcode.
; in assembly:
CLR EA ; clear EA bit.
CLR EA ; this is a dummy instruction with two-byte opcode.
For example, if an interrupt is posted during the execution phase of a "CLR EA" opcode (or any instruction
which clears a bit to disable an interrupt source), and the instruction is followed by a single-cycle instruc-
tion, the interrupt may be taken. However, a read of the enable bit will return a '0' inside the interrupt ser-
vice routine. When the bit-clearing opcode is followed by a multi-cycle instruction, the interrupt will not be
taken.
On this device no interrupt-pending flags are automatically cleared by the hardware when the CPU vectors
to the ISR. The flags must be cleared by software before returning from the ISR. If an interrupt-pending
flag remains set after the CPU completes the return-from-interrupt (RETI) instruction, a new interrupt
request will be generated immediately and the CPU will re-enter the ISR after the completion of the next
instruction.
92 Rev. 1.1
Si4010-C2
Rev. 1.1 93
Si4010-C2
Bit addressable?
Interrupt Priority Priority
Interrupt Source Pending Flag Enable Flag
Vector Order Control
Always Always
Reset 0x0000 Top None N/A
Enabled Highest
INT0_FLAG (INT_-
External INT 0 (INT0) 0x0003 0 N EINT0 (IE.0) PINT0 (IP.0)
FLAGS.0)
TMR2INTL
(TMR2CTRL.6) ETMR2 PTMR2
Timer 2 Overflow 0x000B 1 Y
TMR2INTH (IE.1) (IP.1)
(TMR2CTRL.7)
DMD_NEW (DMD_C-
Temp Sensor DMD 0x0013 2 N EDMD (IE.2) PDMD (IP.2)
TRL.3)
RTC_INT (RTC_C-
Real Time Clock Tick 0x001B 3 N ERTC (IE.3) PRTC (IP.3)
TRL.7)
ODS_FLAG (INT_-
ODS Ready for Data 0x0023 4 N EODS (IE.4) PODS (IP.4)
FLAGS.2)
TMR3INTL
(TMR3CTRL.6) ETMR3 PTMR3
Timer 3 Overflow 0x002B 5 N
TMR3INTH (IE.5) (IP.5)
(TMR3CTRL.7)
INT1_FLAG (INT_-
External INT1 0x0033 6 N EINT1 (IE.6) PINT1 (IP.6)
FLAGS.1)
Reserved 0x003B 7 N/A N/A N/A N/A
Reserved 0x0043 8 N/A N/A N/A N/A
Frequency Counter Count FC_DONE (FC_C- EFC PFC
0x004B 9 N
Done TRL.7) (EIE1.2) (EIP1.2)
Software Source 0
VOID0_FLAG (INT_- EVOID0 PVOID0
(can be used for software 0x0053 10 N
FLAGS.3) (EIE1.3) (EIP1.3)
generated interrupts)
Software Source 1
VOID1_FLAG (INT_- EVOID1 PVOID1
(can be used for software 0x005B 11 N
FLAGS.4) (EIE1.4) (EIP1.4)
generated interrupts)
94 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Rev. 1.1 95
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 1 0 0 0 0 0 0 0
96 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Rev. 1.1 97
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0
98 Rev. 1.1
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Rev. 1.1 99
Si4010-C2
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name GFM_DATA[7:0]
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name GFM_CONST[7:0]
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name SBOX_DATA[7:0]
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 1 0 0 0 0
All SFRs are reset to the predefined values noted in the SFR detailed descriptions. The contents of internal
data memory is lost since the power got cycled.
The Port I/O latches are reset to 0xFF (all logic ones) in open-drain mode.
On exit from the reset state, the program counter (PC) is reset, and the system clock defaults to the inter-
nal oscillator frequency of 24 MHz. Device starts its startup boot procedure. See other sections for descrip-
tion of the boot procedure. The user code starts being executed only after the boot procedure finishes. See
section 24. System Boot and NVM Programming for details.
29.1. Device Boot Outline
Since the device does not have flash memory to permanently hold user code, the device has to go through
a boot sequence in which the user code is copied from the one time programmable NVM memory to the
CODE/XDATA RAM. After that is done the user program execution starts at address 0x0000.
It takes about fixed 2 ms plus about 3.6 ms per 1 kB of user data to be copied from NVM to RAM. When
the user puts the device into shutdown mode this will be the estimated time for waking up the chip from
shutdown mode by applying any GPIO to ground and the execution of the first instruction of the user code
in CODE/XDATA RAM.
For debugging purposes the user will not program the NVM, but will use the RAM for code development. In
that case the device will go through much shorter startup routine, which would take less than 2 ms to con-
clude.
See “24. System Boot and NVM Programming” on page 70 for details.
29.2. External Reset
There is no external reset. There is no pin dedicated to the device reset. The Silicon Labs debug chain
using USB debug adapter or ToolStick has access to the proprietary reset control on chip to facilitate user
code debug and development. During the debugging sessions on unprogrammed part the content of the
CODE/XDATA RAM is preserved in between IDE environment invoked resets (Reset button inside IDE).
The GPIO Port I/O can be configured as either open-drain or push-pull in SFR registers P0CON and
P1CON.
The GPIO functional diagrams and related digital control are in Figure 30.2 and Figure 30.3.
The option for Matrix mode is available only on GPIO[3:1] and the option for Roff mode is available only on
GPIO[2:1].
Functional diagram of the other GPIO ports is in Figure 30.3. It is the general GPIO circuit that can be
forced by digital control to have limited functionality (e.g., as input only, etc.).
The toggle of the PORT_STROBE from 0 to 1 back to 0 latches the current register values of PORT_MA-
TRIX and PORT_ROFF.
To summarize: To change the values of the Matrix an Roff options, the following software sequence is
required:
1. Set the desired values of PORT_MATRIX and PORT_ROFF bits in the PORT_CTRL register.
2. Toggle the PORT_STROBE bit in the PORT_CTRL register from 0 to 1 back to 0 while not changing
any other bit in the PORT_CTRL register. The new Matrix and Roff control values are latched into the
GPIO.
3. Note that while reading the PORT_CTRL the current value of the Matrix and Roff options is read from
the GPIO, not the value of the write register for the new Matrix and Roff setting.
Bit 7 6 5 4 3 2 1 0
Name P0[7:0]
Reset 1 1 0 1 1 1 1 1
Bit 7 6 5 4 3 2 1 0
Name P0CON[7:0]
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name P1[7:0]
Reset 0 0 0 0 0 0 1 1
Bit 7 6 5 4 3 2 1 0
Name P1CON[7:0]
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name P2[7:0]
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name PORT_ PORT_ PORT_ PORT_ PORT_5_ PORT_ PORT_LED[1:0]
STROBE ROFF MATRIX DRV2X MID- MID-
RANGE RANGE
Type R/W R/W R/W R/W R/W R/W R/W R/W
Reset 0 — — 0 1 1 0 0
SFR Address = 0xB5
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name GPR_CTRL[7:0]
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name GPR_DATA[7:0]
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 1 1
The reason for splitting the clear is that the RTC tick output, rtc_tick can also be selected as a time source
for TMR2 and TMR3, so there is a need to have separate control over the rtc_tick generator clearing.
To get the RTC tick generator running the RTC_ENA=1 must be set. Therefore, even if the RTC interrupt is
not used, the RTC timer must be enabled if the user wants to use the rtc_tick as a clock source for TMR2
or TMR3.
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Setting of the interrupt flags depends on the width and functional modes of each timer or its half.
Wide mode
l Timer mode
TMR2INTH set if TMR2H overflows
TMR2INTL set if TMR2L overflows
l Capture mode
TMR2INTH set if capture event happens and TMR2H, TMR2L 16-bit value gets captured
TMR2INTL set if TMR2H overflows.
Note: This is an exception when low interrupt flag gets set based on the high half of the timer. This is a
supplemental information for the interrupt handler about the capture, indicating that the 16-bit counter overflew
in between captures.
Split mode
l Timer mode
TMR2INTH set if TMR2H overflows
TMR2INTL set if TMR2L overflows
l Capture mode
TMR2INTH set by capture event when TMR2H gets captured
TMR2INTL set by capture event when TMR2L gets captured
Each of the modes is described in a separate section. There is a clock selection register TMR_CLKSEL
common for both Timer 2 and Timer 3.
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name TMR2RL[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name TMR2RH[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name TMR2L[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name TMR2H[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name TMR3RL[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name TMR3RH[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name TMR3L[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
Name TMR3H[7:0]
Type R/W
Reset 0 0 0 0 0 0 0 0
35. C2 Interface
The devices include an on-chip Silicon Laboratories 2-Wire (C2) debug interface in-system debugging with
the production part installed in the end application. The C2 interface uses a clock signal (C2CLK) and a bi-
directional C2 data signal (C2DAT) to transfer information between the device and a host system. The C2
interface is intended to be used by the Silicon Labs or third party development tools. It is not intended to be
used for any other purpose. It can be completely disabled per user programming for fully programmed
chips.
35.1. C2 Pin Sharing
The C2 protocol allows the C2 pins to be shared with user functions so that in-system debugging. This is
possible because C2 communication is typically performed when the device is in the halt state, where all
on-chip peripherals and user software are stalled. In this halted state, the C2 interface can safely borrow
the C2CLK (GPIO[5]) and C2DAT (GPIO[4]) pins. In most applications, external resistors are required to
isolate C2 interface traffic from the user application. A typical isolation configuration is shown in
Figure 35.1 along with the connection to the standard Silicon Labs 10-pin debugging interface header.
Disclaimer
Silicon Labs intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers using or
intending to use the Silicon Labs products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific device, and "Typical"
parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Labs reserves the right to make changes without
further notice to the product information, specifications, and descriptions herein, and does not give warranties as to the accuracy or completeness of the included information. Without prior
notification, Silicon Labs may update product firmware during the manufacturing process for security or reliability reasons. Such changes will not alter the specifications or the performance
of the product. Silicon Labs shall have no liability for the consequences of use of the information supplied in this document. This document does not imply or expressly grant any license
to design or fabricate any integrated circuits. The products are not designed or authorized to be used within any FDA Class III devices, applications for which FDA premarket approval is
required, or Life Support Systems without the specific written consent of Silicon Labs. A "Life Support System" is any product or system intended to support or sustain life and/or health,
which, if it fails, can be reasonably expected to result in significant personal injury or death. Silicon Labs products are not designed or authorized for military applications. Silicon Labs
products shall under no circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering
such weapons. Silicon Labs disclaims all express and implied warranties and shall not be responsible or liable for any injuries or damages related to use of a Silicon Labs product in such
unauthorized applications.
Trademark Information
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® and the Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, ClockBuilder®, CMEMS®, DSPLL®, EFM®, EFM32®,
EFR, Ember®, Energy Micro, Energy Micro logo and combinations thereof, "the world’s most energy friendly microcontrollers", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®,
Gecko OS, Gecko OS Studio, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY®, Telegesis, the Telegesis Logo®, USBXpress® , Zentri, the Zentri logo and Zentri DMS, Z-
Wave®, and others are trademarks or registered trademarks of Silicon Labs. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings. Keil is a
registered trademark of ARM Limited. Wi-Fi is a registered trademark of the Wi-Fi Alliance. All other products or brand names mentioned herein are trademarks of their respective holders.
http://www.silabs.com