RSL10 Hardware Reference
RSL10 Hardware Reference
M-20829-021
July 2022
© SCILLC, 2022
Previous Edition © 2021
“All Rights Reserved”
onsemi
Table of Contents RSL10 Hardware Reference
Page
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2 Intended Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2. Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1 System Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Radio System Architecture . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Clocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7 Peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.8 Audio Components . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9 SoC Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9.1 Device Identification Register . . . . . . . . . . . . . . . . . . . . . . 25
2.9.1.1 AHBREGS_CHIP_ID_NUM . . . . . . . . . . . . . . . . . . . . 25
3. Arm Cortex-M3 Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.1 Arm Cortex-M3 Processor Loop Cache Register . . . . . . . . . . . . . . . . 26
3.1.1.1 SYSCTRL_CSS_LOOP_CACHE_CFG . . . . . . . . . . . . . . . . . 27
3.2 Debug Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3 IP Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.1 Using IP Protection with Segger J-LInk . . . . . . . . . . . . . . . . . . . 29
3.3.2 IP Protection Registers . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.2.1 SYSCTRL_DBG_LOCK . . . . . . . . . . . . . . . . . . . . . 30
3.3.2.2 SYSCTRL_DBG_LOCK_KEY . . . . . . . . . . . . . . . . . . . 31
3.3.2.3 SYSCTRL_DBG_UNLOCK_KEY . . . . . . . . . . . . . . . . . . 31
3.4 Activity Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.1 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.1.1 SYSCTRL_CNT_CTRL . . . . . . . . . . . . . . . . . . . . . . 32
3.4.1.2 SYSCTRL_SYSCLK_CNT. . . . . . . . . . . . . . . . . . . . . 32
3.4.1.3 SYSCTRL_CM3_CNT . . . . . . . . . . . . . . . . . . . . . . 32
3.4.1.4 SYSCTRL_LPDSP32_CNT . . . . . . . . . . . . . . . . . . . . 32
3.4.1.5 SYSCTRL_FLASH_READ_CNT. . . . . . . . . . . . . . . . . . . 32
4. LPDSP32 Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 System Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3 Memory Support . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4 Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5 LPDSP32 Debug Port . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.6 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.6.1 SYSCTRL_DSS_CTRL . . . . . . . . . . . . . . . . . . . . . . . . 35
4.6.2 SYSCTRL_DSS_CMD . . . . . . . . . . . . . . . . . . . . . . . . 35
4.6.3 SYSCTRL_DSS_LOOP_CACHE_CFG . . . . . . . . . . . . . . . . . . . 36
4.6.4 SYSCTRL_LPDSP32_DEBUG_CFG . . . . . . . . . . . . . . . . . . . 36
www.onsemi.com
2
onsemi
RSL10 Hardware Reference
5. Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1 Power Supply Overview . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.1.1 Power Management Unit . . . . . . . . . . . . . . . . . . . . . . . 38
5.2 Power Supply Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.1 Battery Supply Voltage (VBAT) . . . . . . . . . . . . . . . . . . . . . 38
5.2.2 Digital Output Supply Voltage (VDDO) . . . . . . . . . . . . . . . . . . 39
5.3 Internal Power Supply Voltages . . . . . . . . . . . . . . . . . . . . . . 39
5.3.1 System Supply Voltage (VCC) . . . . . . . . . . . . . . . . . . . . . 39
5.3.1.1 VCC and DC-DC Converter Registers . . . . . . . . . . . . . . . . . 41
5.3.1.1.1 ACS_VCC_CTRL . . . . . . . . . . . . . . . . . . . . . 41
5.3.2 Internal Band Gap Reference Voltage . . . . . . . . . . . . . . . . . . . 42
5.3.2.1 Bandgap Converter Registers . . . . . . . . . . . . . . . . . . . . 43
5.3.2.1.1 ACS_BG_CTRL . . . . . . . . . . . . . . . . . . . . . . 43
5.3.3 RF Supply Voltage . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.3.1 RF Block Configuration and Control Registers . . . . . . . . . . . . . . 44
5.3.3.1.1 ACS_VDDRF_CTRL . . . . . . . . . . . . . . . . . . . . 44
5.3.3.1.2 ACS_VDDPA_CTRL . . . . . . . . . . . . . . . . . . . . 45
5.3.4 Digital Supply Voltages . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3.4.1 Digital Supply Configuration / Control Registers. . . . . . . . . . . . . . 47
5.3.4.1.1 ACS_VDDC_CTRL. . . . . . . . . . . . . . . . . . . . . 47
5.3.4.1.2 ACS_VDDM_CTRL . . . . . . . . . . . . . . . . . . . . 48
5.3.4.1.3 ACS_VDDRET_CTRL. . . . . . . . . . . . . . . . . . . . 49
5.3.5 Analog Supply Voltage (VDDA) . . . . . . . . . . . . . . . . . . . . . 50
5.3.5.1 Analog Voltage Configuration and Control Registers . . . . . . . . . . . . 50
5.3.5.1.1 ACS_VDDA_CP_CTRL . . . . . . . . . . . . . . . . . . . 51
5.4 Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4.2 Measuring Power Mode Current Consumption . . . . . . . . . . . . . . . . 51
5.4.3 Run Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4.4 Standby Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4.4.1 Wakeup Sources . . . . . . . . . . . . . . . . . . . . . . . . 52
5.4.4.2 ACS_PWR_MODES_CTRL . . . . . . . . . . . . . . . . . . . . 53
5.4.4.3 ACS_WAKEUP_CFG . . . . . . . . . . . . . . . . . . . . . . 53
5.4.4.4 ACS_WAKEUP_STATE . . . . . . . . . . . . . . . . . . . . . 55
5.4.5 Sleep Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4.5.1 Sleep for Wakeup from Retention Memory . . . . . . . . . . . . . . . 57
5.4.6 ACS_WAKEUP_CTRL. . . . . . . . . . . . . . . . . . . . . . . . 59
5.4.7 SYSCTRL_MEM_ACCESS_CFG . . . . . . . . . . . . . . . . . . . . 61
5.4.8 SYSCTRL_WAKEUP_ADDR . . . . . . . . . . . . . . . . . . . . . 63
5.4.9 SYSCTRL_WAKEUP_PAD . . . . . . . . . . . . . . . . . . . . . . 63
5.4.10 ACS_WAKEUP_GP_DATA . . . . . . . . . . . . . . . . . . . . . . 64
5.5 Resets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.5.1 Reset Status Register . . . . . . . . . . . . . . . . . . . . . . . . 66
5.5.1.1 DIG_RESET_STATUS . . . . . . . . . . . . . . . . . . . . . . 66
www.onsemi.com
3
onsemi
RSL10 Hardware Reference
5.5.2 ACS_RESET_STATUS . . . . . . . . . . . . . . . . . . . . . . . . 67
5.5.3 The nRESET Pad . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.6 Analog Test Signals . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.6.1 Analog Output Configuration Register . . . . . . . . . . . . . . . . . . . 70
5.6.2 ACS_AOUT_CTRL . . . . . . . . . . . . . . . . . . . . . . . . . 70
6. Clocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.2 Clock Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.2.1 RC Oscillator . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.2.2 48 MHz Crystal Oscillator . . . . . . . . . . . . . . . . . . . . . . . 75
6.2.3 Standby RC Oscillator . . . . . . . . . . . . . . . . . . . . . . . . 75
6.2.4 32 kHz Crystal Oscillator . . . . . . . . . . . . . . . . . . . . . . . 76
6.2.5 External Clock Input (EXTCLK) . . . . . . . . . . . . . . . . . . . . . 76
6.2.6 Debug Port Clock . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2.7 Clock Generation Registers . . . . . . . . . . . . . . . . . . . . . . . 77
6.2.7.1 ACS_RCOSC_CTRL. . . . . . . . . . . . . . . . . . . . . . . 77
6.2.7.2 ACS_XTAL32K_CTRL . . . . . . . . . . . . . . . . . . . . . . 78
6.3 Clock Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.3.1 System Clock (SYSCLK) . . . . . . . . . . . . . . . . . . . . . . . 79
6.3.2 Standby Clock (STANDBYCLK) . . . . . . . . . . . . . . . . . . . . . 80
6.3.3 Slow Clock (SLOWCLK) . . . . . . . . . . . . . . . . . . . . . . . 81
6.3.4 Baseband Clock (BBCLK) and Other Clocks for the Bluetooth Low Energy Baseband . . . . 82
6.3.5 Real-Time Clock (RTC) . . . . . . . . . . . . . . . . . . . . . . . . 82
6.3.6 User Clock (USRCLK) . . . . . . . . . . . . . . . . . . . . . . . . 82
6.3.7 Power Supply Clocks . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3.8 Interface Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3.9 Clock Distribution Registers . . . . . . . . . . . . . . . . . . . . . . 84
6.3.9.1 CLK_SYS_CFG . . . . . . . . . . . . . . . . . . . . . . . . 85
6.3.9.2 CLK_DIV_CFG0 . . . . . . . . . . . . . . . . . . . . . . . . 85
6.3.9.3 CLK_DIV_CFG1 . . . . . . . . . . . . . . . . . . . . . . . . 86
6.3.9.4 CLK_DIV_CFG2 . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3.9.5 ACS_RTC_CFG . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.9.6 ACS_RTC_COUNT . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.9.7 ACS_RTC_CTRL . . . . . . . . . . . . . . . . . . . . . . . . 89
6.4 Clock Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.4.1 Clock Detector and System Monitor . . . . . . . . . . . . . . . . . . . . 90
6.4.2 External Clock Detector . . . . . . . . . . . . . . . . . . . . . . . . 91
6.4.3 Clock Detector Registers. . . . . . . . . . . . . . . . . . . . . . . . 92
6.4.3.1 CLK_DET_CFG . . . . . . . . . . . . . . . . . . . . . . . . 92
6.4.3.2 CLK_DET_STATUS . . . . . . . . . . . . . . . . . . . . . . . 93
6.4.3.3 ACS_CLK_DET_CTRL . . . . . . . . . . . . . . . . . . . . . . 93
7. Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.1 Memory Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.1.1 Memory Instances . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.1.2 Memory Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
www.onsemi.com
4
onsemi
RSL10 Hardware Reference
www.onsemi.com
5
onsemi
RSL10 Hardware Reference
www.onsemi.com
6
onsemi
RSL10 Hardware Reference
www.onsemi.com
7
onsemi
RSL10 Hardware Reference
www.onsemi.com
8
onsemi
RSL10 Hardware Reference
www.onsemi.com
9
onsemi
RSL10 Hardware Reference
www.onsemi.com
10
onsemi
RSL10 Hardware Reference
www.onsemi.com
11
onsemi
RSL10 Hardware Reference
www.onsemi.com
12
onsemi
RSL10 Hardware Reference
www.onsemi.com
13
onsemi
RSL10 Hardware Reference
www.onsemi.com
14
onsemi
RSL10 Hardware Reference
www.onsemi.com
15
onsemi
RSL10 Hardware Reference
www.onsemi.com
16
CHAPTER 1
1. Introduction
1.1 PURPOSE
IMPORTANT: onsemi acknowledges that this document might contain the inappropriate terms “white list",
"master" and "slave”. We have a plan to work with other companies to identify an industry wide solution that
can eradicate non-inclusive terminology but maintains the technical relationship of the original wording. Once
new terminologies are agreed upon, future products will contain new terminology.
This manual provides a reference to the system hardware for application developers working with RSL10. This
manual describes all of the components belonging to the RSL10 System-on-Chip (SoC), including:
The data processing and control component information provided by this manual complements the
Arm® Cortex®-M3 core description in the The Definitive Guide to the ARM Cortex-M3 and other third-party
documentation for the Arm Cortex-M3 processor.
The RSL10 Hardware Reference further describes how each component of the RSL10 SoC can be used in the
implementation of an application, and provides information about the configuration of the various system components.
This manual is a part of the RSL10 Evaluation and Development Kit (RSL10 EDK).
This manual is primarily intended for engineers and other individuals who are responsible for developing and/or
maintaining Bluetooth and other RF-based communication applications that make use of an RSL10 SoC. People who
are developing local interfaces between an external device and RSL10, as well as those interested in the details of the
audio, power supply and clocking components, will find this manual particularly helpful as it focuses on the
configuration and use of system components.
This manual assumes that readers are familiar with C-level programming, RF application concepts, and Bluetooth
low energy technology.
1.3 CONVENTIONS
The following conventions are used in this manual to signify particular types of information:
www.onsemi.com
17
onsemi
RSL10 Hardware Reference
www.onsemi.com
18
CHAPTER 2
Overview
2.
RSL10 is an ultra-low-power, highly flexible multi-protocol 2.4 GHz SoC specifically designed for use in
high−performance wearable and medical applications, or any other applications that can benefit from low-power
wireless connectivity. With its Arm Cortex-M3 processor and LPDSP32 DSP core, RSL10 supports Bluetooth low
energy technology and any 2.4 GHz proprietary protocol stacks, without sacrificing power consumption.
Power Management
Radio PHY
Battery
Timers
Baseband controller
DMA Bluetooth 5.0 (+LE 2M) and custom protocol
IP Protection
JTAG
LPDSP32
XTAL_32KHz 32-bit Dual Harvard core
Oscillators
XTAL_48MHz
RAMs and
Flash
Bus SWJ-DP
ARM® Cortex®-M3
Arbiters
ADC (4x) Processor
ADC
1. The Arm Cortex-M3 processor: A 32-bit core for real-time applications, specifically developed to enable
high-performance low-cost platforms for a broad range of low-power applications.
This processor provides general-purpose processing that is used to configure and control all of the components
of the RSL10 system including the LPDSP32 DSP, the RF front-end, and the Bluetooth baseband.
2. LPDSP32 Digital Signal Processor (DSP): A 32-bit Dual Harvard DSP core that efficiently supports audio
codecs required for wireless audio communication. If not used for audio applications, this core can be used for
other signal processing tasks for advanced developments that need additional processing power. To enable
development using the LPDSP32, contact your onsemi representative.
www.onsemi.com
19
onsemi
RSL10 Hardware Reference
3. Radio Frequency Front-End: Based on a 2.4 GHz RF transceiver, the RFFE implements the physical layer of
the Bluetooth low energy technology standard and other proprietary or custom protocols.
4. Bluetooth Protocol Baseband Hardware: Bluetooth low energy technology compliant, including support for
the LE 2 Mb PHY feature first defined in the Bluetooth core 5.0 technology release, and all optional features of
Bluetooth low energy technology that were also defined in earlier core releases. The RSL10 baseband stack is
supplemented by support structures that enable implementation of onsemi and customer designed custom
protocols.
This dual-core architecture is complemented by high-efficiency power management units, oscillators, flash and
RAM memories, a DMA controller, along with a full complement of peripherals and interfaces.
The RSL10 SoC is built around an radio system architecture that supports the implementation of Bluetooth and
proprietary protocol stacks.
The most common use case for RSL10 devices is in applications that use Bluetooth technology. Accordingly, the
RSL10 architecture supports the application structure shown in Figure 2.
Application
Heartrate
Findme
Rezence
Glucose
Battery
HID
...
Softwarestack
GAP,GATT
SMP ATT
L2CAP
Linklayer
Baseband
+RFfrontͲend
The radio system architecture for this use case consists of:
www.onsemi.com
20
onsemi
RSL10 Hardware Reference
• A Bluetooth library that uses the protocol stack hardware to implement a Bluetooth stack (host and controller),
as described in the RSL10 Firmware Reference’s “Bluetooth Stack and Profiles” chapter.
• A set of Bluetooth profile libraries that use the Bluetooth low energy stack to provide client and/or server
functionality to the user application, as described in the RSL10 Firmware Reference’s “Bluetooth Stack and
Profiles” chapter.
• An event kernel that works within a user application to drive events, as described in the RSL10 Firmware
Reference’s “Event Kernel” chapter.
For applications that use a proprietary or custom protocol instead of Bluetooth technology or in addition to it, the
radio system architecture accesses the RF front-end and the RF front-end’s integrated simple baseband directly as
shown in Figure 3.
AudioCodec
Application
Support
(LPDSP32)
Proprietary UserͲdefined
Protocol Protocol
RFfrontͲend
The radio system architecture for this use case consists of:
2.3 POWER
The RSL10 SoC is supplied from the VBAT pin, with a supply voltage in the range from 1.1 to 3.6 V in typical
operating conditions. This supply is regulated by a DC-DC converter consisting of a low dropout voltage regulator
(LDO) and a buck converter (can be used for VBAT > 1.4 V). It produces VCC, which is a filtered supply voltage in the
range from 1.0 to 1.32 V that is used as the supply for the rest of the system.
www.onsemi.com
21
onsemi
RSL10 Hardware Reference
VDDPA Optional boosted supply voltage for the RF transmitter’s power amplifier. We recommend using
this supply voltage only if the voltage level required to achieve a specified TX power exceeds
the VDDRF supply voltage.
VDDA Supply voltage for the non-RF analog blocks and flash memory
VDDC Supply voltage for the digital logic, and for the RF front-end
VDDO Input supply for the digital I/O pads, including the debug port (SWJ-DP)
In addition to the various power supplies, the power components include supply monitoring, analog test points, and
reset circuitry that is used to ensure continued correct operation of the overall RSL10 SoC.
NOTE: A variety of power supplies, and clocking or power supply related signals can be routed to the
analog test point AOUT. This is useful for monitoring or accessing a variety of elements within a
system where most circuit elements do not have test points, or are otherwise inaccessible.
2.4 CLOCKING
The RSL10 SoC clock trees are based around two independent clocks that can be generated from a variety of
sources.
The system clock (SYSCLK) is the main clock for the system, and acts as the source for most components of the
system. This includes all of the interfaces, the cores, the power supplies, and all timers. SYSCLK can be derived from
the following clock sources:
• Startup RC oscillator
• 48 MHz crystal oscillator
• External Clock pad
• SWJ-DP JCLK pad
• RTC
The real-time clock (RTC) is used to provide a time reference to the system, and to provide a low-frequency option
for SYSCLK when operating in Standby Mode. The RTC can be sourced from the following clock sources:
• 32 kHz RC oscillator
• 32 kHz crystal oscillator
• Digital I/O Sources
For more information on clocks and clock sources, see Chapter 6, “Clocking” on page 73.
2.5 MEMORY
All aspects of the RSL10 SoC, including all memory instances, registers and other components, are accessible from
the Arm Cortex-M3 processor through one or more of the processor’s standard buses. This structure supports the
control and configuration of all of the components of an RSL10 SoC in any system, and simplifies control of the
LPDSP32, the RF front-end and Bluetooth protocol baseband hardware.
www.onsemi.com
22
onsemi
RSL10 Hardware Reference
The memory space of the RSL10 SoC is subdivided into four main segments:
1. The program memory used for storing and/or executing code on the Arm Cortex-M3 processor and/or the
LPDSP32. This segment of the RSL10 memory map contains:
• A 4 KB ROM instance
• A 384 KB flash instance
• Three 2 KB flash sectors supporting non-volatile records
• One 1 KB redundant flash sector supporting configuration information in a non-volatile record from the
RSL10 manufacturing test
• Four 8 KB program RAM instances dedicated to the Arm Cortex-M3 processor
• Four 10 KB program RAM instances accessible to either the LPDSP32 DSP or the Arm Cortex-M3
processor
2. The data memory used for storing data and intermediate variables of the Arm Cortex-M3 processor, the
LPDSP32, and/or the Bluetooth protocol baseband hardware. This segment of the RSL10 memory map
contains:
• Three 8 KB data RAM instances dedicated to the Arm Cortex-M3 processor
• Six 8 KB data RAM instances accessible to either the LPDSP32 DSP or the Arm Cortex-M3 processor
• Two 8 KB baseband data RAM instances acting as exchange memory between the Bluetooth protocol
baseband hardware and the Arm Cortex-M3 processor
• A direct memory access (DMA) controller module which allows background transfers between peripherals
and memory without core intervention
• A flash copier module that can be used to efficiently transfer data from flash to other memories and peripherals
in the system
• Several memory arbiters
• Several redundant flash sectors
For more information about the memory structures available and the use of memory in an RSL10-based system, see
Chapter 7, “Memory” on page 94.
2.6 INTERFACES
The RSL10 SoC supports a number of interfaces that can be used to communicate with external devices including
other SoCs, support components such as external non-volatile storage, and sensors.
The RSL10 system uses a DIO (Digital Input/Output) concept, where any DIO pad can be configured in software at
any time to connect with any interface input or output. The only exception is the debug SWD-JTAG interface, which
has dedicated pads for the serial-wire inputs. A maximum of 16 DIOs are available depending on the package used,
with four DIOs (DIO0 to DIO3) supporting use as analog-to-digital converter inputs, and three DIOs supporting use as
the additional pads needed to use the SWJ-DP interface in 4-wire JTAG mode (DIO14, DIO15) or 5-wire JTAG mode
(DIO13 to DIO15). The DIO concept allows for full flexibility because PCB routing and layout can be optimized for
size, cost, and complexity.
By default, all the DIOs are configured to be disabled. In the different power modes, you can enable a DIO pad’s
state retention, where the pad configuration is retained even though the digital core is powered down.
www.onsemi.com
23
onsemi
RSL10 Hardware Reference
For more information about DIO configuration, see Chapter 10, “Digital Input/Output” on page 259.
In addition to these interface options, each DIO can act as a general-purpose I/O, where the processor can read the
input or set the output at any time.
For more information about these interfaces, see Chapter 11, “External Digital Interfaces” on page 301.
2.7 PERIPHERALS
The Arm Cortex-M3 processor has a number of peripherals to support auxiliary non-RF tasks that it needs to
perform. The Arm Cortex-M3 processor peripherals include:
For more information about the peripherals, see Chapter 12, “Peripherals” on page 350 and Chapter 14, “Private
Peripherals” on page 400.
The RSL10 SoC provides a set of interfaces and peripherals to assist in applications that have an audio component.
This includes:
For more information about the audio support components, see Chapter 13, “Audio” on page 378.
To distinguish between different RSL10 revisions, a 32-bit register at address 0x1FFFFFFC contains a static value
that can be used to provide version information about the system. The value in this register (called
AHBREGS_CHIP_ID_NUM), can also be used to verify compatibility with application software and external applications.
A list of the bit fields in the device identification register, along with a brief description of each, is provided in Table 1.
www.onsemi.com
24
onsemi
RSL10 Hardware Reference
The chip version is commonly written as X.YY.ZZ (for example, 1.02.03), where X is the chip version number, YY
is the major revision number, and ZZ is the minor revision number and features.
2.9.1.1 AHBREGS_CHIP_ID_NUM
www.onsemi.com
25
CHAPTER 3
The Arm Cortex-M3 processor plays a role as the central controller for the RSL10 microcontroller system.The
Arm Cortex-M3 processor provides users with an interface for configuring and controlling all of the other system
components. Following a power-on reset (POR), the system starts executing the Boot ROM on the Arm Cortex-M3
processor, and uses this ROM application to validate and initialize a system application. It is also closely coupled to
many of the memory components, and as a result, has access to all of the data that is being processed by the system. For
more information about the Boot ROM code, see the RSL10 Firmware Reference.
The Arm Cortex-M3 processor implements the Armv7-M architecture. It has the following main features:
• Thumb-2 (ISA) subset consisting of all base Thumb-2 instructions, both 16-bit and 32-bit
• Harvard processor architecture enabling simultaneous instruction fetches with data load or store
• Three-stage pipeline
• Single cycle 32-bit multiply
• Hardware divide
• Thumb and debug states
• Handler and thread modes
• Low latency interrupt subroutine (ISR) entry and exit
• Processor state saving and restoration, with no instruction fetch overhead; the exception vector is fetched from
memory in parallel with the state saving, enabling faster ISR entry
• Support for late-arriving interrupts
• Tightly coupled interface to interrupt controller, enabling efficient processing of late-arriving interrupts
• Tail-chaining of interrupts, enabling back-to-back interrupt processing without the overhead of state saving
and restoration between interrupts
• Interruptible-continued LDM/STM, and PUSH/POP
• Armv6 style BE8/LE support
• Armv6 unaligned
• Registers:
• 13 general-purpose 32-bit registers
• Link Register (LR)
• Program Counter (PC)
• Program Status Register (xPSR)
• Two banked SP registers
To reduce the current consumption from fetching instructions, the Arm Cortex-M3 processor is supported by a
32-instruction loop cache that can be used to cover a continuous block of reads. To enable this cache, set the
CSS_LOOP_CACHE_ENABLE bit from the SYSCTRL_CSS_LOOP_CACHE_CFG register.
www.onsemi.com
26
onsemi
RSL10 Hardware Reference
3.1.1.1 SYSCTRL_CSS_LOOP_CACHE_CFG
All applications executing on the Arm Cortex-M3 processor can be debugged through the SWJ-DP which can be
configured to either serial wire or JTAG debug port communications. The SWJ-DP provides access to all of the
Arm Cortex-M3 processor registers, and to the memory available through the memory buses attached to the
Arm Cortex-M3 processor. This transparent view of the system enables a user to review the current state of the system
components through their associated memory-mapped control registers, and use this information to troubleshoot most
issues in an application.
By default, the SWJ-DP is accessed using the JTAG connection that uses DIOs 13 to 15, in addition to two
dedicated pads (JTCK, JTMS), to form a 5-wire JTAG interface. If a user prefers to use this interface in 2-pin serial wire
(SW) mode instead, the dedicated pads can be used to re-initialize the interface to be the needed SWCLK and SWDIO
pads, and DIOs 13 to 15 can be reassigned to other functionality. For more information about the functional
configuration of DIOs for this mode, see Section 10.2.1, “Special Functional Configurations” on page 262.
When using the SWJ-DP in serial wire mode, data is transferred using a single clock and single data signal. This
interface mode is useful when the number of debug port connections needs to be limited, but it is only half-duplex and
has a relatively high overhead to transfer data. When using the SWJ-DP in JTAG mode, data is transferred using a data
control line, a pair of data lines, a clock, and an optional reset signal. This interface mode is useful when the number of
debug port connections is not limited, and a higher throughput is required, as JTAG mode uses less data overhead than
SW mode, full-duplex transfers.
To configure the DIOs to support the SWJ-DP interface in JTAG mode, make the following configurations before
configuring the interface for JTAG mode:
• The JTAG test-reset signal (JNTRST) can be connected to DIO 13 by setting the CM3_JTAG_TRST_EN bit
from the DIO_JTAG_SW_PAD_CFG register; this is only required if using the SWJ-DP as a 5-pin JTAG
interface.
• The JTAG data signals can be connected to DIOs 14 (JTDI) and 15 (JTDO) by setting the
CM3_JTAG_DATA_EN bit from the DIO_JTAG_SW_PAD_CFG register; this is required if you are using the
SWJ-DP as a 4-pin or 5-pin JTAG interface.
To switch the SWJ-DP into JTAG mode, follow this initialization sequence:
1. Switch the debug port into serial wire mode using the previous sequence.
2. Use SWCLK to send 0xE73C (transmitted LSB first) using SWDIO. This initialization pattern switches the
debug port to JTAG mode.
3. Send at least 5 SWCLK cycles with SWDIO HIGH. This ensures that the JTAG interface enters its test-logic
reset state.
www.onsemi.com
27
onsemi
RSL10 Hardware Reference
To switch the SWJ-DP into serial wire mode, follow this initialization sequence:
1. Send at least 50 clock cycles on SWCLK with the SWDIO pad held high. This ensures that the current
interface is in its reset state.
2. Use SWCLK to send 0xE79E (transmitted LSB first) using SWDIO. This initialization pattern switches the
debug port to serial wire mode.
3. Send at least 50 SWCLK cycles with SWDIO HIGH. This ensures that the serial wire interface enters its line
reset state.
The pads that form the SWJ-DP interface support a limited amount of physical configuration. The output pads
support a configurable drive strength, and input pads support configurable pull-up resistances. Configuration of these
interface pads uses the DIO_JTAG_SW_PAD_CFG register. The physical configuration parameters are configured as
follows:
• Physical configuration of the DIOs are used even when those pads are configured for use as part of the JTAG
interface
The debug port provides external access to the standard Arm Cortex-M3 core debug controller that is on the private
peripheral bus. For more information about the debug controller, see Section 14.3, “Debug Controller” on page 410.
3.3 IP PROTECTION
The Arm Cortex-M3 debug port includes a restricted access mode that provides protection for intellectual property
which takes the form of application source code. When the debug port is in restricted access mode, communications
using the Arm Cortex-M3 debug port are limited to requests and instructions that do not access any of the system
memory buses. The only exception to this rule are the SYSCTRL_DBG_UNLOCK_KEY registers that can be written (but
not read) by the debug port while it is in a locked state.
To restrict accesses through the debug port, the SYSCTRL_DBG_LOCK register can be written with the debug port
lock key (0x4C6F634B). At startup and whenever the RSL10 system is reset, the debug port defaults to this locked
status. After start-up and system initialization, the Program ROM then loads the value from the word stored to
LOCK_INFO_SETTING in the flash NVR3 sector into the SYSCTRL_DBG_LOCK register. After loading this value:
• If the LOCK_INFO_SETTING in the flash contains the debug port lock key, the debug port continues to
operate in restricted mode unless explicitly unlocked by a user application.
• If the LOCK_INFO_SETTING in the flash does not contain the debug port lock key, the debug port is
switched to operate in Normal Mode and the SWJ-DP debug port responds to all requests. In this mode, the
www.onsemi.com
28
onsemi
RSL10 Hardware Reference
debug port has access to all system resources that are typically accessible in an Arm Cortex-M3 core debug
environment.
CAUTION: When the Program ROM reads the LOCK_INFO_SETTING, if the value read back is 0x00000000 or
0xFFFFFFFF it will temporarily boost the VDDM supply voltage up to a maximum of 1.25 V to ensure that the value
read is correct. This can cause the system not to boot for low VBAT levels. To avoid this failure under these conditions,
set the LOCK_INFO_SETTING to a non-zero, non-one value (typically DBG_ACCESS_LOCK or DBG_ACCESS_UNLOCK).
In addition to the SYSCTRL_DBG_LOCK register, the Arm Cortex-M3 debug port can be unlocked using an
application-defined 128-bit user key. This key is stored in the four SYSCTRL_DBG_LOCK_KEY registers. The contents of
the SYSCTRL_DBG_LOCK_KEY registers are compared against the values stored to the SYSCTRL_DBG_UNLOCK_KEY
registers, and the SYSCTRL_DBG_LOCK register is cleared to unlock the debug port if the SYSCTRL_DBG_LOCK_KEY is
valid and the two keys match.
As an example of how to use the IP protection feature of RSL10, the following steps show to use the debug port
lock/unlock mechanism via Segger J-Link Commander commands.
There are three operations to using the debug port lock feature:
1. Writing a key
2. Locking
3. Unlocking
Normally once the application firmware is loaded, steps 1 and 2 should be executed to lock the debug port.
Step 3 can be used to unlock the device for debugging or loading new firmware. Note that RSL10 will re-lock on
next reset unless the LOCK_INFO_KEY field is also erased from flash.This also means that erasing the LOCK_INFO_KEY
field disables the lock feature.
The corresponding J-Link Commander commands for these operations are described below. In these examples,
<wordX> are each 32-bit words of the lock key in sequential order.
1. Writing a key:
2. Locking:
3. Unlocking:
www.onsemi.com
29
onsemi
RSL10 Hardware Reference
IMPORTANT: Sometimes a user wants to reprogram a device without exposing the application IP. To clear all
flash and RAM memory before unrestricting the debug port using the SYSCTRL_DBG_LOCK register, the user
application can use the Program ROM Sys_ProgramROM_UnlockDebug() function which erases all flash
memory except for the NVR3 and NVR4 sectors, and clears all RAM memory instances before unlocking the
debug port. For more information, see the RSL10 Firmware Reference.
3.3.2.1 SYSCTRL_DBG_LOCK
www.onsemi.com
30
onsemi
RSL10 Hardware Reference
3.3.2.2 SYSCTRL_DBG_LOCK_KEY
3.3.2.3 SYSCTRL_DBG_UNLOCK_KEY
The activity counters help to analyze how long the system has been running and how actively the Arm Cortex-M3
processor, the LPDSP32 DSP, and the flash memory have been used by the user application. This information is useful
to estimate and optimize the power consumption of the application.
To gauge how many cycles have elapsed, a reference counter that counts SYSCLK cycles is accessed through the
SYSCTRL_SYSCLK_CNT register. This cycle count can be compared with cycle counts for three other critical system
elements:
• Execution on the Arm Cortex-M3 processor is recorded in the SYSCTRL_CM3_CNT register. This counter only
counts when the Arm Cortex-M3 processor is running, and does not increment when the core is sleeping.
• Execution on the LPDSP32 processor is recorded in the SYSCTRL_LPDSP32_CNT register. This counter only
counts when the LPDSP32 processor is running, and does not increment when the core is paused or sleeping.
• Read accesses from the flash memory are tracked in the SYSCTRL_FLASH_READ_CNT register.
The activity counters are configured and controlled using the SYSCTRL_CNT_CTRL register. These counters are:
When the counters are tracking activity, the SYSCTRL_CNT_CTRL_CNT_STATUS bit is set to CNT_RUNNING.
3.4.1 Registers
www.onsemi.com
31
onsemi
RSL10 Hardware Reference
3.4.1.1 SYSCTRL_CNT_CTRL
3.4.1.2 SYSCTRL_SYSCLK_CNT
3.4.1.3 SYSCTRL_CM3_CNT
3.4.1.4 SYSCTRL_LPDSP32_CNT
3.4.1.5 SYSCTRL_FLASH_READ_CNT
www.onsemi.com
32
CHAPTER 4
4. LPDSP32 Processor
4.1 OVERVIEW
The LPDSP32 DSP is a low power, programmable, pipelined DSP that uses a dual-Harvard, dual-MAC
architecture to efficiently process 32-bit signal data. This processor is included in the design to efficiently support
digital signal processing tasks, such as audio codecs that might be required for wireless audio communication tasks and
other advanced developments requiring the additional processing power that this core provides.
To reset the LPDSP32 core, its interrupt handler, and the LPDSP32 loop cache, write DSS_RESET to the
SYSCTRL_DSS_CTRL_DSS_RESET bit from the SYSCTRL_DSS_CTRL register.
The LPDSP32 does not have a boot ROM. Instead it relies on the Arm Cortex-M3 processor to initialize its
memories and peripherals.
To pause and resume the LPDSP32 processing, set the SYSCTRL_DSS_CTRL_LPDSP32_PAUSE and
SYSCTRL_DSS_CTRL_LPDSP32_RESUME bits respectively in the SYSCTRL_DSS_CTRL register. The
SYSCTRL_DSS_CTRL_LPDSP32_RUNNING bit from SYSCTRL_DSS_CTRL indicates the current state (running or
paused) of the LPDSP32.
When the LPDSP32 core is paused, the clock provided to the core is stopped, which prevents the execution of any
functions and all responses to interrupts generated by the DMA or Arm Cortex-M3 processor. All incomplete accesses
to any memory by the LPDSP32 core are put into a non-blocking wait state, and these accesses are completed once
processing resumes on the LPDSP32 core. While the LPDSP32 core is paused, the Arm Cortex-M3 core can access
shared memory resources at any address without the LPDSP32 introducing additional delays.
The LPDSP32 is supported by data memory and program memory, as defined in Section 7.2.5, “LPDSP32 DSP
Memory Usage” on page 103.
The LPDSP32 program memory uses 40-bit words, and is located in RAM. When loading the DSP’s program
memories from flash memory, use the flash copier to efficiently handle the transfer between 32-bit and 40-bit words
(see Section 7.4, “Flash Copier” on page 109).
If the LPDSP32 is not using one or more of its assigned memory instances, the unused memory instances can be
reassigned in the firmware and the linker configuration scripts to be used by the Arm Cortex-M3 processor and
employed elsewhere in the user’s application.
To reduce the current consumption from fetching instructions, the LPDSP32 is supported by a 32-word loop cache
that can be used to cover a continuous block of reads. To enable this cache, set the DSS_LOOP_CACHE_ENABLE bit from
the SYSCTRL_DSS_LOOP_CACHE_CFG register.
To coordinate execution of data-processing functions on the LPDSP32 processor with data that is available to be
processed, the LPDSP32 is supported by two sets of interrupts that can trigger execution on the LPDSP32:
www.onsemi.com
33
onsemi
RSL10 Hardware Reference
1. Each DMA channel can issue one application-defined command, triggered by the DMA channel’s enabled
interrupts. To clear all pending DMA triggered interrupts to the LPDSP32, set the
SYSCTRL_DSS_CTRL_DSS_DMA_INT_RESET bit from the SYSCTRL_DSS_CTRL register.
2. The Arm Cortex-M3 processor can issue one of seven application-defined commands by setting the
appropriate bit in the SYSCTRL_DSS_CMD register. To clear all pending Arm Cortex-M3 core triggered
interrupts to the LPDSP32, set the SYSCTRL_DSS_CTRL_DSS_CSS_INT_RESET bit from the
SYSCTRL_DSS_CTRL register.
The LPDSP32 interrupt vector table is provided in Table 2. The LPDSP32 does not support pre-emption of
interrupt handler execution. If more than one interrupt is pending when execution completes on a previous interrupt
handler, the handler for the lowest numbered pending interrupt is selected for execution.
When any function completes, or at any other logical intermediate point, the LPDSP32 processor can send the
Arm Cortex-M3 processor an interrupt through one of eight LPDSP32 interrupts (DSP0_IRQn). These interrupts are
intended to notify the Arm Cortex-M3 core when the data processing on the LPDSP32 is complete, or to signal when
the LPDSP32 is ready to receive requests from the Arm Cortex-M3 core for additional processing.
LPDSP32 is supported by a 4-wire JTAG debug port that is mapped onto the DIOs. For information on assigning
DIOs to be used as the LPDSP32 debug port, refer to Chapter 10, “Digital Input/Output” on page 259. For proper
operation of this debug port, all four signals must be mapped to DIOs.
To enable the LPDSP32 debug port, set the SYSCTRL_LPDSP32_DEBUG_CFG_LPDSP32_DEBUG_ENABLE bit from
the SYSCTRL_LPDSP32_DEBUG_CFG register. To allow the LPDSP32 debug port to force the core into an enabled state
when halted over the debug port, set the
SYSCTRL_LPDSP32_DEBUG_CFG_LPDSP32_EXIT_POWERDOWN_WHEN_HALTED from the
SYSCTRL_LPDSP32_DEBUG_CFG register.
www.onsemi.com
34
onsemi
RSL10 Hardware Reference
4.6 REGISTERS
4.6.1 SYSCTRL_DSS_CTRL
4.6.2 SYSCTRL_DSS_CMD
www.onsemi.com
35
onsemi
RSL10 Hardware Reference
4.6.3 SYSCTRL_DSS_LOOP_CACHE_CFG
4.6.4 SYSCTRL_LPDSP32_DEBUG_CFG
Hex
Field Name Value Symbol Value Description
Value
LPDSP32_EXIT_POWERDOWN_WHEN_HALTED LPDSP32_EXIT_POWERDOWN_WHEN_ LPDSP32 exit power down 0x0*
HALTED_DISABLED when halted disabled
www.onsemi.com
36
CHAPTER 5
5. Power
5.1 POWER SUPPLY OVERVIEW
The power supply is a critical component of the RSL10 system. Supplied power has significant effects on both RF
and other types of system performance.
The components that make up the power supply can be divided into two types of supply voltages:
1. Power supply input voltages, described further in Section 5.2, “Power Supply Inputs”
2. Internal power supply voltages, described further in Section 5.3, “Internal Power Supply Voltages”
The power supply tree is powered by the system supply voltage (VCC), which is sourced from one of two supplies:
The system supply voltage is used as the source for a number of internal supply voltages, including:
• A regulated, low-noise voltage bandgap reference supply for the analog components
• Two configurable regulated supplies for digital components (VDDC, VDDM)
• Two configurable regulated Retention Mode supplies for retaining the digital component state in Sleep Power
Mode (VDDC_RET, VDDM_RET)
• A configurable regulated supply for the RF front-end (VDDRF)
• An on-chip charge pump for the RF front-end power amplifier, for cases where the TX power requirements
exceed the voltage that can be supplied using VDDRF (VDDPA)
• An on-chip charge pump for the other analog system components (VDDA)
Figure 4 on page 38 illustrates the RSL10 power supply and related components at a high level.
www.onsemi.com
37
onsemi
RSL10 Hardware Reference
Always ON
VDC VCC VDDA
VDDA CAP1
VBAT DC-DC / charge pump
LDO CAP0
VSSA
VDDPA
POR VDDPA VSSPA
regulator
ACS
PTAT
VCC
ACS supply VDDRF
regulator VDDRF
VSSRF
RC oscillator
32kHz/3 MHz
VDDC
regulator and
ready VDDC
Clock
comparator
detector VSSD
VDDM VDDM
regulator and
XTAL32_IN XTAL 32 kHz ready
XTAL32_OUT
comparator
VDDCRET
regulator Bandgap
VBAT
VDDMRET
regulator
VSSA
The primary voltage supplied to an RSL10 SoC is the battery supply voltage. This supply is used as the source for:
www.onsemi.com
38
onsemi
RSL10 Hardware Reference
• The VCC supply (see Section 5.3.1, “System Supply Voltage (VCC)”), which in turn is used as the source
supply for most other power supply components
• The Power-On Reset (POR) block (see Section 5.5, “Resets” on page 64)
IMPORTANT: When laying out the RSL10 device as part of a system care should be taken to place the VBAT
decoupling capacitors close to the VBAT input, and to place the VBAT and DCDC capacitors so that their
grounds are relatively close together and well connected, ideally on the surface, as this minimizes return paths.
IMPORTANT: To ensure proper system behavior and IP security over a wide range of conditions, the Program
ROM uses a read of the LOCK_INFO_SETTING (0x00081040) to determine if the VDDM supply voltage is
sufficient for all memory reads. If this setting contains 0x00000000 or 0xFFFFFFFF, this results in VDDM being
temporarily raised to 1.25 V during boot, which will fail for low VBAT conditions. To avoid this failure under
these conditions, set the LOCK_INFO_SETTING to a non-zero, non-one value (typically DBG_ACCESS_LOCK or
DBG_ACCESS_UNLOCK).
The digital output supply voltage is attached to the digital I/O pads on an RSL10 SoC. This includes:
• All DIO pads, as described in Chapter 10, “Digital Input/Output” on page 259
• The JTCK and JTMS pads for the SWJ-DP debug port. For more information, see Section 3.2, “Debug Port”
on page 27.
• The EXTCLK input pad, described in Section 6.2, “Clock Generation” on page 75
• The WAKEUP pad, described in Section 5.4, “Power Modes” on page 51
• The NRESET pad, described in Section 5.5, “Resets” on page 64
The internal system digital logic is attached to the pads through internal level translators. They shift the voltage
level from VDDC to the correct VDDO voltage for digital outputs, and translate input digital signals from the correct
VDDO voltage to VDDC for digital inputs.
The VDDO inputs are usually connected externally to VBAT or VDDA, based on the desired voltages of digital
communications using the associated digital I/O pads.
The System Supply Voltage (VCC) is used as the source for all of the internally generated supply voltages in the
RSL10 SoC, and is supplied from VBAT. This power supply is used to reduce the battery voltage from a high voltage
range (from 1.1 to 3.6 V) down to a supply voltage in the range from 1.0 to 1.32 V.
The voltages supplied by the VCC are configured using the ACS_VCC_CTRL_VTRIM bit-field from the
ACS_VCC_CTRL register. This trim setting defines a VCC target, with VCC being supplied directly from the battery, or
from either the internal LDO or DC-DC converters. Conditions for each of the different VCC supply configurations can
be found in Table 3:
www.onsemi.com
39
onsemi
RSL10 Hardware Reference
VCC Trim Configuration VBAT Supply and Mode VCC Supply Level Description
VCC target ≥ VBAT - VCC = VBAT VCC supplied from VBAT
VCC target < VBAT VBAT < 1.4 V VCC = VCC target VCC supplied through a low drop out regulator
(LDO) from VBAT
VCC target < VBAT VBAT > 1.4 V (LDO mode) VCC = VCC target VCC supplied through a low drop out regulator
(LDO) from VBAT
VCC target < VBAT VBAT > 1.4 V (DC-DC mode) VCC = VCC target VCC supplied through the DC-DC buck
converter from VBAT
The internal LDO is used to reduce VCC to the specified target when VBAT exceeds the target VCC. For low noise
operation (no switching DC-DC operation), or for low VBAT voltages where it make no sense to use a switching
converter, configure VCC to LDO Mode by clearing the ACS_VCC_CTRL_BUCK_ENABLE bit from the ACS_VCC_CTRL
register. In this mode, the RSL10 SoC only uses VBAT or the internal LDO to supply VCC. Use of this mode requires
an external VCC filtering capacitor, but does not require an external DC-DC converter inductor.
The DC-DC converter is a buck converter used to reduce the battery voltage from a high value (from 1.4 to 3.6 V)
to a lower VCC voltage value (from 1.0 to 1.32 V) with high efficiency. The DC-DC converter is only enabled if the
supplied VBAT exceeds 1.4 V, and if the VCC is configured to select DC-DC Mode by setting the
ACS_VCC_CTRL_BUCK_ENABLE bit from the ACS_VCC_CTRL register. Use of the DC-DC converter requires both an
external VCC filtering capacitor and the DC-DC converter’s charge transferring inductor.
The DC-DC buck converter periodically refreshes the flow of current through the external inductor to maintain the
supply output. The refresh frequency for the buck converter is divided from SYSCLK (see Section 6.3.1, “System Clock
(SYSCLK)” on page 79) using the CLK_DIV_CFG2_DCCLK_PRESCALE bit field from the CLK_DIV_CFG2 register. This
prescaler provides a division of between 1 and 64 from SYSCLK, with a frequency defined by the following equation:
f SYSCLK
f DCCLK = ------------------------------------------------------------------------------------------------------------------
CLK_DIV_CFG2_DCCLK_PRESCALE + 1
To minimize the supply ripple present on the VCC supply voltage, DCCLK needs to be configured for an update
frequency between 4 and 12 MHz. The update frequency is generally set based on the expected level of VBAT, as
shown in Table 4. (For VBAT levels not specified, configure the DCCLK frequency based on the closest VBAT level
provided.) However, DCCLK frequencies that approach the SYSCLK frequency can negatively impact RF receive
sensitivity. To limit this impact, a compromise setting of 4 MHz is recommended for the DCCLK frequency in RSL10
applications using an 8 MHz SYSCLK setting.
When the DC-DC converter is disabled, the CLK_DIV_CFG2_DCCLK_ENABLE bit-field from the CLK_DIV_CFG2
register can be used to disable DCCLK as well.
www.onsemi.com
40
onsemi
RSL10 Hardware Reference
This recommendation is intended to improve the system stability, handling the kind of stability issues that
can arise from high current consumption cases when combined with non-ideal inductor and board series
resistance values.
• A pulse control (ACS_VCC_CTRL_PULSE_CTRL) bit that can be used to enable a self-clocking mode. By
default, the DC-DC converter is set to Single-Pulse Mode, where it is clocked with each pulse of a divided
clock that is pre-scaled from SYSCLK using the CLK_DIV_CFG2_DCCLK_PRESCALE bit-field from the
CLK_DIV_CFG2 register. In Multi-Pulse Mode, the DC-DC converter operates in a self-clocking mode that
continuously charges and discharges the DC-DC inductor until VCC reaches its trimmed level. Multi-Pulse
Mode is recommended only for cases where SYSCLK is below the desired DCCLK frequency, as this will
result in increased DC-DC current consumption.
• To support high-current use cases, a continuous conduction mode has been provided that can be enabled using
the ACS_VCC_CTRL_CCM_ENABLE bit. In this mode, the DC-DC converter continually operates to allow
support for higher current loads. As use of this mode increases the power consumption of the RSL10 system,
we recommend not using this mode for most use cases.
5.3.1.1.1 ACS_VCC_CTRL
www.onsemi.com
41
onsemi
RSL10 Hardware Reference
The bandgap block provides a 0.75 V reference voltage, stabilized over temperature and process variations by the
regulators. This voltage is soft programmable in steps of 2.5 mV from 0.67 to 0.825 V. This block also provides the bias
current for all analog blocks, except for the digital supply and POR blocks. This reference voltage is calibrated during
production, and use of this calibrated setting is recommended for all use cases.
ACS_BG_CTRL is the bandgap configuration and control register, whose bits can be set for various functions. The
ACS_BG_CTRL_SLOPE_TRIM bit field controls whether trimming depends on the temperature coefficient, and the
ACS_BG_CTRL_VTRIM bit field configures reference voltage trimming in 2.5 mV steps.
www.onsemi.com
42
onsemi
RSL10 Hardware Reference
5.3.2.1.1 ACS_BG_CTRL
The RF front-end is supplied by the RF supply voltage (VDDRF). This supply voltage can be supplemented by the
RF power amplifier supply voltage (VDDPA), if the TX power required by a user application exceeds the available TX
power levels possible from VDDRF.
The VDDRF block is used to provide a regulated voltage, trimmable from 0.75 to 1.38 V in 10 mV steps, from the
VCC supply. This voltage is used to supply the radio front-end, which requires a high current.
NOTE: The VDDRF pin can be driven by an external voltage regulator when the regulator is disabled. To
disable VDDRF, clear the ACS_VDDRF_CTRL_ENABLE bit from the ACS_VDDRF_CTRL register.
This supply is typically trimmed to a level that supplies the TX power amplifier with appropriate TX power for the
user application’s use case. If the TX power amplifier requires a supply at a level exceeding VCC, the VDDPA
separately powers the TX power amplifier, and the VDDRF supply needs to be trimmed to the lowest available
calibrated setting that provides the desired RX sensitivity (see Table 5).
In the ACS_VDDRF_CTRL register, the ACS_VDDRF_CTRL_READY bit configures the whether the supply voltage is
in Ready Mode. The ACS_VDDRF_CTRL_CLAMP bit controls the output in Disable Mode—it can be used to send the
output HIZ or clamp the output to ground. The ACS_VDDRF_CTRL_ENABLE bit enables or disables the VDDRF
regulator. The ACS_VDDRF_CTRL_VTRIM bit field controls configuration of the output voltage trimming in 10 mV
steps.
VDDPA is an optional RF TX power amplifier supply voltage. This block is used to provide a regulated voltage,
trimmable from 1.1 V to 1.7 V in 10 mV steps, from the VDDA voltage (charge pump). This voltage is used to supply
www.onsemi.com
43
onsemi
RSL10 Hardware Reference
the TX power amplifier block of the radio, whenever this block requires a supply voltage that exceeds the level of VCC
to achieve the desired TX output power. To enable VDDPA, set the ACS_VDDPA_CTRL_ENABLE bit from the
ACS_VDDPA_CTRL register.
NOTE: The VDDPA pin can be driven by an external voltage regulator when the regulator is disabled.
ACS_VDDPA_CTRL_VDDPA_SW_CTRL, in the ACS_VDDRF_CTRL register, is the bit that controls the power amplifier
supply, setting the output to HIZ in disable mode, and connecting the switched output to the VDDRF regulator (the
Enable bit must be reset in this case). The ACS_VDDPA_CTRL_ENABLE_ISENSE bit is used to enable or disable the
VDDPA regulator current sensing circuit. The ACS_VDDPA_CTRL_ENABLE bit enables or disables the VDDPA
regulator. And ACS_VDDPA_CTRL_VTRIM controls configuration of the output voltage trimming in 10 mV steps.
The VDDRF supply can be broken down into its two internal supply voltages that can be independently over driven
at the VDDRF_SW and VDDSYN_SW pads. The VDDRF_SW and VDDSYN_SW pads supply inputs are only
intended for test purposes, and as such can be left floating separately or shorted together externally, but not otherwise
connected.
5.3.3.1.1 ACS_VDDRF_CTRL
www.onsemi.com
44
onsemi
RSL10 Hardware Reference
5.3.3.1.2 ACS_VDDPA_CTRL
www.onsemi.com
45
onsemi
RSL10 Hardware Reference
The RSL10 SoC includes internally regulated digital supply voltages, for which the calibrated settings are strongly
recommended:
• VDDC is the core digital voltage that is used for most of the RSL10 system’s digital components.
• VDDCRET replaces VDDC in power modes that use state retention of the RSL10 system’s digital
components.
• VDDM is the memory digital voltage that is used for memories and memory-mapped elements of the RSL10
system.
• VDDMRET replaces VDDM in power modes that use state retention of memories and memory-mapped
elements of the RSL10 system.
• VDDTRET is a retention regulator that complements the VDDCRET regulator to maintain the baseband timer
execution.
This block is used twice to provide two regulated voltages derived from the VCC supply. These supplies are
trimmable from 0.75 V to 1.38 V in 10 mV steps. The default voltage at startup is controlled by the POR block and
Program ROM, to ensure safe operation with an untrimmed bandgap.
NOTE: The VDDC and VDDM supplies can also be driven by an external voltage regulator when the
regulators are disabled.
In Run Mode, both VDDC and VDDACS (Analog Control Subsystem) regulators’ outputs are shorted together. If
VDDC is trimmed below 1.0 V for low frequency operating use cases, the VDDACS must also be trimmed lower. If
this is not done, the VDDC level saturates to the VDDACS voltage.
The digital retention supply regulator is designed to consume less power and to guarantee the retention of the state
of digital blocks (IVDDCRET) and the contents of memory (VDDMRET) to the extended supply limit.
The ACS_VDDC_CTRL and ACS_VDDM_CTRL registers contain bits with identical names and identical functions.
The STANDBY_VTRIM bit controls the VDDC standby voltage trimming in 10 mV steps. The ENABLE_LOW_BIAS bit is
used to specify whether the regulator biasing is normal or low. The SLEEP_CLAMP bit sets the output to HIZ or clamps
the output to ground, in Sleep Mode. The VTRIM bit configures output voltage trimming in 10 mV steps in both
ACS_VDDC_CTRL and CS_VDDM_CTRL.
The ACS_VDDRET_CTRL has three different bit fields used to trim each of the retention regulators. These are:
www.onsemi.com
46
onsemi
RSL10 Hardware Reference
• ACS_VDDRET_CTRL_VDDTRET_VTRIM bit controls the VDDTRET retention regulator voltage trimming value.
ACS_VDDRET_CTRL_VDDTRET_ENABLE enables or disables the VDDTRET retention regulator.
For proper operation across your RSL10 product’s full operating temperature, specific settings must be applied to
the RC oscillator frequency setting and retention regulator trims before entering sleep mode. The RC oscillator must be
set to 3 MHz. Non-automotive RSL10 products must apply retention regulator trims of 0x01. Automotive RSL10
products must apply retention regulator trims of 0x03.
The applicable sample applications now set the RC oscillator to 3 MHz and apply retention regulator trims of 0x01
before entering sleep mode. This default configuration is appropriate for all non-automotive RSL10 products.
Users of automotive RSL10 must manually apply retention regulator trims of 0x03. This can be done by selecting
0x3 for VDDTRet Trim value, VDDMRet Trim value, and VDDCRet Trim value under Retention Regulator Trim
Configuration in the RTE_Device.h file of applicable sample applications.
If the low power clock source is the RC 32 kHz oscillator (i.e., RTC_CLK_SRC is defined to
RTC_CLK_SRC_RC_OSC in the app.h file), VDDT retention regulator trim must always be set to 0x3 for all RSL10
products.
Failure to use the correct RC oscillator frequency and retention regulator trims can result in incorrect operation
across the temperature range when sleep mode is used. See the sample code readme files for additional detail.
5.3.4.1.1 ACS_VDDC_CTRL
www.onsemi.com
47
onsemi
RSL10 Hardware Reference
5.3.4.1.2 ACS_VDDM_CTRL
www.onsemi.com
48
onsemi
RSL10 Hardware Reference
5.3.4.1.3 ACS_VDDRET_CTRL
www.onsemi.com
49
onsemi
RSL10 Hardware Reference
The analog supply voltage makes use of an internal charge pump to generate a configurable regulated supply
voltage. This voltage is used for all of the non-RF analog components and the flash memory. This supply uses a boost
converter with an external capacitance between the CAP0 and CAP1 pads as part of its charge pump circuit, to
effectively increase the system supply (VCC) voltage as required by these blocks.
The charge pump has four different output power trimming modes to allow a better balance between consumption
and power delivery. The default maximum current draw of the output power is 4 mA. If an application requires a heavy
current draw on VDDA, the PTRIM bit (1:0) of the ACS_VDDA_CP_CTRL register can be configured to 0x3, to receive a
maximum current of 16 mA.
The VDDA charge pump periodically refreshes its external capacitance to maintain the supply output. The refresh
frequency for the charge pump is divided from SLOWCLK (see Section 6.3.3, “Slow Clock (SLOWCLK)” on page 81)
using the CLK_DIV_CFG2_CPCLK_PRESCALE bit field from the CLK_DIV_CFG2 register. This prescaler provides a
division of between 1 and 64 from SLOWCLK, with a frequency defined by the following equation:
f SLOWCLK
f CPCLK = -----------------------------------------------------------------------------------------------------------------
CLK_DIV_CFG2_CPCLK_PRESCALE + 1
This clock needs to be configured for an update frequency between 10 kHz and 400 kHz, with no restrictions on the
duty cycle of the source clock. When VDDA is disabled, the CLK_DIV_CFG2_CPCLK_ENABLE bit-field from the
CLK_DIV_CFG2 register can be used to disable the charge pump clock as well.
The analog supply voltage is accessible at the VDDA pad for capacitive filtering.
www.onsemi.com
50
onsemi
RSL10 Hardware Reference
5.3.5.1.1 ACS_VDDA_CP_CTRL
5.4.1 Overview
The available power modes in RSL10 consist of Standby Mode, Sleep Mode, and Run Mode. Before entering Sleep
Mode, RSL10 can be configured by the user to wake up from retention memory. RSL10 effectively uses power modes
between RF events, while maintaining a Bluetooth low energy connection, and minimizing power consumption while in
Standby Mode for duty cycled applications.
The POWER_MODE bit of the ACS_PWR_MODES_CTRL register holds a 32-bit key which specifies whether RSL10
enters Run Mode, Standby Mode, or Sleep Mode.
To minimize the power consumption for measurements, here are a few guidelines:
The 32 kHz crystal oscillator power consumption can be reduced (possibly as low as the level of the RC oscillator
consumption) by enabling the following settings in the ACS_XTAL32K_CTRL register:
In Run Mode (default functional mode), all the circuitry is powered on. Most of the blocks can be enabled/disabled
individually using memory-mapped registers (refer to Chapter 7, “Memory” on page 94).
Standby Mode can be used to reduce the average power consumption for inactive times, which typically range from
a few ms to a few hundreds of ms. In this state, the logic and memories are not clocked and are powered at a reduced
voltage to minimize the leakage current.
www.onsemi.com
51
onsemi
RSL10 Hardware Reference
The ACS (Analog Control System), bandgap, DC-DC converter, charge pump, and digital regulator are active. The
RF block can be disconnected from its supply through the ACS_VDDRF_CTRL register.
The reduced voltage level can be programmed in the STANDBY_VTRIM field of the ACS_VDDC_CTRL register.
Entering the Standby Mode by writing the standby key in the ACS_PWR_MODES_CTRL register (refer to
Section 5.4.4.2, “ACS_PWR_MODES_CTRL”) starts the following sequence:
IMPORTANT: For an RSL10 SoC in standby, the 48 MHz crystal oscillator, RF block and STANDBY_VTRIM
settings contribute significantly to the current of the battery (IBAT).
To minimize the power consumption, if the 48 MHz crystal oscillator and RF block are not required, both
should be turned off and the STANDBY_VTRIM setting should be lowered.
At wake-up (see Section 5.4.4.1, “Wakeup Sources” on page 52 for sources), the following sequence restarts the
system:
1. The RTC counter’s 8 LSBs are captured in a register to record the wakeup time. This value can be read from
the RTC_VALUE bit field in the ACS_WAKEUP_STATE register (see Section 5.4.4.4, “ACS_WAKEUP_STATE”
on page 55).
2. The VDDC and VDDM regulator output voltages are set to their normal voltages.
3. Memories are powered back on.
4. The wakeup DELAY is applied (see ACS_WAKEUP_CFG register, refer to Section 5.4.4.3,
“ACS_WAKEUP_CFG”).
5. Memory isolation is removed.
6. Clock is enabled and system execution is resumed.
• DC-DC overload
• Baseband timer
• Wakeup pad
• One of DIO [3:0]
www.onsemi.com
52
onsemi
RSL10 Hardware Reference
The ACS_WAKEUP_CFG_DELAY bit in the ACS_WAKEUP_CFG register controls the number of clock cycles (in
powers of 2, between 1 and 28) that elapse after VDDC wakeup.
For the ACS_WAKEUP_STATE register, the ACS_WAKEUP_STATE_WAKEUP_SRC bit indicates the source of the last
wakeup, while the ACS_WAKEUP_STATE_RCT_VALUE bit contains the value of the RTC counter captured at the last
wakeup event.
NOTE: A maximum sleep duration baseband timer can be enabled by software. See the RSL10 Firmware
Reference for how to configure this baseband timer.
5.4.4.2 ACS_PWR_MODES_CTRL
5.4.4.3 ACS_WAKEUP_CFG
www.onsemi.com
53
onsemi
RSL10 Hardware Reference
www.onsemi.com
54
onsemi
RSL10 Hardware Reference
5.4.4.4 ACS_WAKEUP_STATE
When operating in Sleep Mode, RSL10 will exhibit the lowest current consumption. Only the wakeup logic (see
Section 5.4.4.1, “Wakeup Sources” on page 52 for sources of wakeup) is kept powered. The bandgap, regulators, RF
block, etc. are disabled. The digital core and the memories can optionally be powered at low voltage.
When Sleep Mode is entered, a Power-On Reset (POR) is generated, which sets all registers in the digital core to
their default values. Only the registers inferred in the ACS keep their values.
IMPORTANT: The system cannot enter Sleep Mode if any interrupts are pending. If an interrupt is pending
when the system attempts to enter Sleep Mode, the system continues execution. This must be accounted for in all
code that uses interrupts that might become pending while the system attempts to enter into Sleep Mode.
The following sub-modes are typically selected using the configuration registers of the ACS:
1. Wakeup through an external event on the wakeup pad or the DIO[3:0] pads
(ACS_WAKEUP_CTRL_DIO*_WAKEUP bits). This is the minimum power consumption sub-mode.
www.onsemi.com
55
onsemi
RSL10 Hardware Reference
2. Wakeup through the RTC (the ACS_WAKEUP_CTRL_RTC_ALARM_WAKEUP bit), clocked either by the internal
RC oscillator or by the 32 kHz crystal oscillator. The sleep time can be programmed using the RTC
configuration registers of the ACS (see Section 6.3.5, “Real-Time Clock (RTC)”).
3. Wakeup through the baseband timer (the ACS_WAKEUP_CTRL_BB_TIMER_WAKEUP bit).
4. ACS_WAKEUP_CTRL_BOOT_FLASH_APP_REBOOT determines whether the reboot mode flag is set.
5. ACS_WAKEUP_CTRL_RC_CLOCK_MULT controls whether the startup RC oscillator is at 3 or 12 MHz.
6. ACS_WAKEUP_CTRL_RC_FTRIM_FLAG bit configures whether or not the oscillators are treated as calibrated.
7. ACS_WAKEUP_CTRL_BOOT_SELECT bit-field controls whether the system attempts to boot directly from flash
or from a custom location in memory. This field also configures whether or not the RF crystal oscillator will be
started.
The status bits in the ACS_WAKEUP_CTRL register that indicate whether a wakeup event has been triggered at least
once for specific causes since last being cleared:
• DCDC_OVERLOAD_WAKEUP means that the wakeup event was triggered by a DC-DC overload
• WAKEUP_PAD_WAKEUP means that the wakeup event was triggered by the wakeup pad
• RTC_ALARM_WAKEUP means that the wakeup event was triggered by the RTC reaching the alarm value
• BB_TIMER_WAKEUP means that the wakeup event was triggered by the baseband timer reaching the specified
timeout
• DIO*_WAKEUP means that the wakeup event was triggered by the specified DIO
Entering Sleep Mode by writing the sleep key in the ACS_PWR_MODES_CTRL register starts the following sequence:
At wakeup (through RTC or a pad), the following sequence restarts the system:
1. The RTC 8 LSBs are captured into a register to record the wakeup time
2. The bandgap is enabled.
3. The VCC regulator/DC-DC converter is enabled when the bandgap voltage is ready.
4. The other regulators are set according to the configuration registers when the VCC is ready.
5. Memories are powered back on when VDDC, VDDM and VDDA are ready.
www.onsemi.com
56
onsemi
RSL10 Hardware Reference
To use the RTC timer as wakeup source, refer to Section 6.3.5, “Real-Time Clock (RTC)”
1. Configure all memories to be powered up and accessible when waking up from Sleep Mode, in the
SYSCTRL_MEM_ACCESS_CFG register:
• The SYSCTRL_MEM_ACCES_CFG_WAKEUP_ADDR_PACKED bit field gives the wakeup restore address in
packed 7-bit format.
• The SYSCTRL_MEM_ACCES_CFG_DSP_DRAM*_ACCESS, SYSCTRL_MEM_ACCESS_CFG_DSP_PRAM*,
SYSCTRL_MEM_ACCESS_CFG_BB_DRAM_ACCESS*, SYSCTRL_MEM_ACCESS_CFG_DRAM_ACCESS* and
SYSCTRL_MEM_ACCESS_CFG_PRAM_ACCESS* bits control enabling or disabling access to the
corresponding DSP DRAM, DSP PRAM, baseband DRAM, DRAM and PRAM, respectively.
• The SYSCTRL_MEM_ACCES_CFG_FLASH_ACCESS bit controls the flash memory access.
• The SYSCTRL_MEM_ACCES_CFG_PROM_ACCESS bit configures PROM access.
2. Write the wakeup restore address to the SYSCTRL_WAKEUP_ADDR register, which contains the wakeup restore
address in unpacked 32-bit format (see Section 5.4.8, “SYSCTRL_WAKEUP_ADDR” on page 63 for more
information). The wakeup restore address must point to the first six words or the last six words of a RAM
instance. Table 6 on page 58 lists all possible addresses. Note that once the unpacked 32-bit wakeup restore
address SYSCTRL_WAKEUP_ADDR is written, the packed 7-bit wakeup restore address WAKEUP_ADDR_PACKED
field of the SYSCTRL_MEM_ACCESS_CFG mapped register is updated accordingly.
NOTE: The system booting software uses the address of the location of the boot information stored in
the retention memory in the form of a packed 7-bit address. To facilitate the packing and
unpacking of this address, the SYSCTRL_MEM_ACCESS_CFG mapped register contains a
WAKEUP_ADDR_PACKED field, which is linked to the SYSCTRL_WAKEUP_ADDR mapped register.
When either one is written to, the other is updated as well. The SYSCTRL_WAKEUP_ADDR mapped
register contains the 32-bit unpacked address, while the WAKEUP_ADDR_PACKED field contains
the 7-bit packed address. The bit packing is done as follows: 29->6, 21->5, 16:12->4:0.
Unpacking is done in the reverse order. Bit 0 is also replicated to bits 11:5 and 3 (either setting or
clearing all of these bits). All other unassigned bits are set to 0. For example, address
0x20006000 is packed as 0x46 and address 0x207FE8 is packed as 0x27. This packing scheme
allows the storage of any address that points to either the first six words or the last six words of a
RAM instance. When the WAKEUP_ADDR_PACKED field does not point to memory that is
currently accessible, then SYSCTRL_WAKEUP_ADDR reads back as all zeros.
3. Read the SYSCTRL_MEM_ACCESS_CFG register contents. If some of the memories that must be powered up
and accessible when waking up from Sleep Mode are not set, because their power bit is not set or because their
Retention Mode bit is set, then enable these bits in the read value (by using a logical OR operation). Write this
value to the ACS_WAKEUP_GP_DATA register (see Section 5.4.10, “ACS_WAKEUP_GP_DATA” on page 64).
4. Copy the following six words to memory starting from the wakeup restore address:
• SYSCTRL_DBG_LOCK register contents
• SYSCTRL_DBG_LOCK_KEY_0 register contents
www.onsemi.com
57
onsemi
RSL10 Hardware Reference
5. In the SYSCTRL_MEM_POWER_CFG register, configure all the memories that are to be kept in Retention Mode
even while the device is in Sleep Mode.
6. Set the BOOT_SELECT bit-field in the ACS_WAKEUP_CTRL register to BOOT_CUSTOM.
7. Enable the required retention regulators and set their trimming values as needed.
8. Enter Sleep Mode.
NOTE: To verify the wakeup pad value, read from the SYSCTRL_WAKEUP_PAD_WAKEUP_PAD_VALUE bit
in the SYSCTRL_WAKEUP_PAD register (see Section 5.4.9, “SYSCTRL_WAKEUP_PAD” on
page 63).
IMPORTANT: To configure the memory retention, the following operations are required:
Location Address
PRAM0 0x00200000
PRAM1 0x00202000
PRAM2 0x00204000
PRAM3 0x00206000
DSP_PRAM3 0x00208000
DSP_PRAM2 0x0020a000
DSP_PRAM1 0x0020c000
DSP_PRAM0 0x0020e000
DRAM0 0x20000000
DRAM1 0x20002000
DRAM2 0x20004000
DSP_DRAM0 0x20006000
DSP_DRAM1 0x20008000
DSP_DRAM2 0x2000a000
DSP_DRAM3 0x2000c000
DSP_DRAM4 0x2000e000
DSP_DRAM5 0x20010000
BB_DRAM0 0x20012000
BB_DRAM1 0x20014000
PRAM0_END 0x00201FE8
PRAM1_END 0x00203FE8
www.onsemi.com
58
onsemi
RSL10 Hardware Reference
Location Address
PRAM2_END 0x00205FE8
PRAM3_END 0x00207FE8
DSP_PRAM3_END 0x00209FE8
DSP_PRAM2_END 0x0020BFE8
DSP_PRAM1_END 0x0020DFE8
DSP_PRAM0_END 0x0020FFE8
DRAM0_END 0x20001FE8
DRAM1_END 0x20003FE8
DRAM2_END 0x20005FE8
DSP_DRAM0_END 0x20007FE8
DSP_DRAM1_END 0x20009FE8
DSP_DRAM2_END 0x2000BFE8
DSP_DRAM3_END 0x2000DFE8
DSP_DRAM4_END 0x2000FFE8
DSP_DRAM5_END 0x20011FE8
BB_DRAM0_END 0x20013FE8
BB_DRAM1_END 0x20015FE8
5.4.6 ACS_WAKEUP_CTRL
www.onsemi.com
59
onsemi
RSL10 Hardware Reference
www.onsemi.com
60
onsemi
RSL10 Hardware Reference
5.4.7 SYSCTRL_MEM_ACCESS_CFG
www.onsemi.com
61
onsemi
RSL10 Hardware Reference
www.onsemi.com
62
onsemi
RSL10 Hardware Reference
5.4.8 SYSCTRL_WAKEUP_ADDR
5.4.9 SYSCTRL_WAKEUP_PAD
www.onsemi.com
63
onsemi
RSL10 Hardware Reference
5.4.10 ACS_WAKEUP_GP_DATA
5.5 RESETS
The RSL10 SoC contains a variety of reset sources that can be used to reset the entire RSL10 system, or a set of its
system components. A system reset causes the system to restart, and status bits to be set for each of the relevant reset
causes. These reset status bits exist in the ACS_RESET_STATUS and DIG_RESET_STATUS registers. The reset bits and
their encoding can be seen in Figure 5, which also shows the ordering of reset flags. These flags remain set until cleared
by writing to their associated clear flags.
IMPORTANT: To clear the status bits that indicate the source of a reset, the DIG_RESET_STATUS register must
be cleared before the ACS_RESET_STATUS register.
We recommend clearing all reset status flags at the start of application execution (after the reset source has
been determined), to allow future executions to determine the cause of a reset or resets.
www.onsemi.com
64
onsemi
RSL10 Hardware Reference
WATCHDOG_RESET_FLAG
CLK_DET_RESET_FLAG
TIMEOUT_RESET_FLAG
CM3_SW_RESET_FLAG
VDDM_RESET_FLAG
VDDC_RESET_FLAG
VDDA_RESET_FLAG
POR_RESET_FLAG
PAD_RESET_FLAG
ACS_RESET_FLAG
Flags
LOCKUP_FLAG
Reset sources
NOTE: For a given reset cause, any bit with an explicit value will be set or cleared as appropriate. Other
bit values that are not explicit are marked as unknown, as they could be set or cleared based on
reset causes that could coexist with the given reset cause.
Exiting from any full system reset triggers the POR sequence. For all full system resets, the ACS_RESET_FLAG in
the DIG_RESET_STATUS register is set, indicating that an asynchronous reset has occurred, including a full reset of the
analog system resources. For a wakeup from sleep, no other asynchronous status bits will be set; but for all other
asynchronous reset sources, other status bits will be set by:
www.onsemi.com
65
onsemi
RSL10 Hardware Reference
• If a failure occurs within the power supply during power up, a timeout will occur, and the
TIMEOUT_RESET_FLAG bit will be set. This can happen if the startup sequence (bandgap startup, VCC
startup, VDDA, VDDC and VDDM startup) is too long (greater than 1 ms unexpected delay) due to a
configuration problem or too much capacitance on VCC or VDDA.
• The clock detection circuits (see Section 6.4.1, “Clock Detector and System Monitor” on page 90): if the clock
detection circuit causes a reset, the CLK_DETECT_RESET_FLAG bit will be set.
• The dedicated NRESET pad: if a reset using this pad occurs, the PAD_RESET_FLAG bit will be set.
• The watchdog timer (see Section 12.4, “Watchdog Timer” on page 375):
• If the Arm Cortex-M3 processor is still running when the watchdog reset occurs, the
WATCHDOG_REFRESH_FLAG bit will be set.
• If the Arm Cortex-M3 processor is locked up (for example, due to a fault that occurred while handling
other faults), the LOCKUP_FLAG bit will be set.
All watchdog timer resets are designed to reset the digital system and the analog control system’s registers, but
not the underlying analog control circuits.
• An LPDSP32 DSP reset (see Chapter 4, “LPDSP32 Processor” on page 33): resetting this block resets the
LPDSP32 DSP and its related components, and does not set a reset status bit.
• Resets for individual interfaces or peripherals only reset the associated components.
5.5.1.1 DIG_RESET_STATUS
www.onsemi.com
66
onsemi
RSL10 Hardware Reference
5.5.2 ACS_RESET_STATUS
www.onsemi.com
67
onsemi
RSL10 Hardware Reference
www.onsemi.com
68
onsemi
RSL10 Hardware Reference
The nRESET pad contains a pull-up resistor that cannot be disabled by the user. During the boot process, the
pull-up resistor is 100 k; after the boot process is complete, it automatically switches to 200 k without any user
intervention.
1. Analog test bus is used to monitor internal analog signals for characterization and debug.
• Bandgap regulated supply voltage
• VDDRF
• Baseband timer supply voltage
• VDDC
• VDDA
• VDDM
• VDDPA
2. Digital test bus is used to monitor internal digital signals for characterization and debug.
• Bandgap ready
• VCC ready
• DC-DC overload / activated
• VDDRF ready
• VDDC ready
• VDDM ready
• VDDA ready
• 32 kHz crystal oscillator clock
• 32 kHz RC oscillator clock
DIO0 can be used to output the RTC clock to control an external device. This mode is configured using the
ACS_AOUT_CTRL register, which has the following configurable bit-fields:
1. RTC_CLOCK_DIO0_START configures the RTC clock to be output to DIO0 starting at the defined interval,
between 125 ms and 8 s.
2. RTC_CLOCK_DIO0_STOP_SRC is used to select what DIO (from DIO0 to DIO3) will stop the output of the 32
kHz RTC clock.
www.onsemi.com
69
onsemi
RSL10 Hardware Reference
3. RTC_CLOCK_DIO0_STOP_EDGE is used to select whether this clock output is stopped on a rising or a falling
edge on the selected DIO. For a clean (glitchless) signal on DIO0, this event needs to occur synchronously
with the clock falling edge, as the detected event gates (sets to 0) the signal on DIO0.
The control register in the ACS configures which signal is brought out on the AOUT and DIO0 pads. The
ACS_AOUT_CTRL_TEST_AOUT bit field provides a selection from 32 test signals.
5.6.2 ACS_AOUT_CTRL
www.onsemi.com
70
onsemi
RSL10 Hardware Reference
www.onsemi.com
71
onsemi
RSL10 Hardware Reference
www.onsemi.com
72
CHAPTER 6
6. Clocking
6.1 OVERVIEW
All clocks and clock domains in the RSL10 system are derived from the system clock (SYSCLK) or the standby
clock (STANDBYCLK).
SYSCLK can be generated from one of five different sources for maximum flexibility. Available sources for
SYSCLK include:
1. The internal RC oscillator (discussed in Section 6.2.1, “RC Oscillator” on page 75)
2. The RF clock provided by the 48 MHz crystal oscillator (discussed in Section 6.2.2, “48 MHz Crystal
Oscillator” on page 75)
3. STANDBYCLK
4. The external clock pad (discussed in Section 6.2.5, “External Clock Input (EXTCLK)” on page 76)
5. The SWCLK pad from the SWJ-DP (discussed in Section 6.2.6, “Debug Port Clock” on page 77)
For more information about configuring the system clock, see Section 6.3.1, “System Clock (SYSCLK)” on
page 79.
Similarly, the STANDBYCLK can be generated from one of six different sources, including:
1. The internal standby oscillator (discussed in Section 6.2.3, “Standby RC Oscillator” on page 75)
2. The 32 kHz crystal oscillator (discussed in Section 6.2.4, “32 kHz Crystal Oscillator” on page 76)
3. A DIO source from one of DIOs 0 to 3
For more information about configuring STANDBYCLK, see Section 6.3.2, “Standby Clock (STANDBYCLK)”
on page 80.
A top-level clock diagram showing the clock generation and distribution of clocks within the RSL10 system is
provided in Figure 6.
www.onsemi.com
73
DETCLK
Activity detector
CLK_DET_SEL
/JTCK_PRESCALE JTCK_DIV
JTCK
from 1 to 16 (step 1)
SYSCLK (c)
STANDBYCLK
glitch-free
/DCCLK_PRESCALE /UARTCLK_PRESCALE /BBCLK_PRESCALE /USRCLK_PRESCALE /SLOWCLK_PRESCALE /AUDIOCLK_PRESCALE
from 1 to 64 (step 1) from 1 to 32 (step 1) from 1 to 8 (step 1) from 1 to 4096 (step 1) from 1 to 64 (step 1) from 1 to 64 (step 1)
/BBCLK_DIV /AUDIOSLOWCLK_PRESCALE
Oscillator RCCLK from 6 to 24 (step 1) from 1 to 4 (step 1)
3MHz
AUDIOSLOWCLK
74
SYSCLK_SRC_SEL
Typically 1.0 MHz
SLOWCLK (c, e)
RC32K
onsemi
/BB_CLK_PRESCALE
Baseband timer clock
from 1 to 8 (step 2(n+1))
www.onsemi.com
DIO[0:3] from 1 to 64 (step 1) /Fixed divider by 5 from 1 to 64 (step 1)
XTAL32K
CPCLK
SLOWCLK32 PWMCLK[1:0]
RSL10 Hardware Reference
ACS_RTC_CTRL.CLK_SRC_SEL CLOCK
DETECTOR
SYSCLK
SLOWCLK
/START_VALUE
from 1 to 232 (step 1) ACS state machine USRCLK
RFCLK Frequency
division done at
RTC RCCLK DIOx pad the clock
generator level
STANDBYCLK
ACS EXTCLK_DIV Frequency
division done at
JTCK_DIV the peripheral
level
AUDIOCLK
AUDIOSLOWCLK
DIOx_CFG
onsemi
RSL10 Hardware Reference
6.2.1 RC Oscillator
The RC oscillator is a ring oscillator that produces a trimmable output clock (RCCLK) that is used by the RSL10
system as SYSCLK at startup. It can be used while operating in Run Mode without RF traffic to minimize current
consumption and to maximize the amount of processing that can be completed while waiting for the 48 MHz oscillator
when it is started.
The frequency of the RC oscillator is trimmed using the ACS_RCOSC_CTRL_FTRIM_START bit-field from the
ACS_RCOSC_CTRL register, providing a default output frequency from this clock source of 3 MHz. If this bit-field has
been written, the ACS_RCOSC_CTRL_FTRIM_FLAG bit will indicate that the RC oscillator has been trimmed. This
trimming is supplemented by a frequency multiplier, enabled using the ASC_RCOSC_CTRL_CLOCK_MULT bit from the
ASC_RCOSC_CTRL register that multiplies the output of this RC oscillator by a factor of 4.
CAUTION: When enabled, the frequency multiplier applied to the RC oscillator modifies the effective RC constant of
the ring oscillator. As such, this configuration bit provides a nominal multiplication by 4, not an absolute multiplication
by 4, and separate configuration trim settings must be kept for both un-multiplied and multiplied settings.
Calibrated values for both the un-multiplied and multiplied trim settings are provided as part of the manufacturing
records in NVR4. For more information, see the RSL10 Firmware Reference.
RCCLK can be output through one or more DIO pads using the DIO components. For more information about the
DIO configuration, see Section 10.2, “Functional Configuration” on page 259.
The RF front-end for the RSL10 system includes a 48 MHz crystal oscillator. To use this crystal oscillator, the RF
front-end must be powered with access enabled, as described in Section 8.1, “Overview” on page 132.
To enable the 48 MHz crystal oscillator, set the XTAL_CTRL_XO_EN_B_REG bit from the RF front-end XTAL_CTRL
register. When enabled, the 48 MHz crystal oscillator takes some time before it is ready for use by the rest of the
system. When this clock is ready, the ANALOG_INFO_CLK_DIG_READY bit from the ANALOG_INFO RF front-end
register will be set. When the PLL based on this oscillator is ready, the ANALOG_INFO_CLK_PLL_READY bit from the
ANALOG_INFO RF front-end register will also be set. Information about further configuration of this oscillator can be
found in Section 8.2.1, “48 MHz Crystal Oscillator” on page 136.
NOTE: When processing RF traffic, the RF front-end is always directly clocked from the 48 MHz crystal
oscillator, with the analog components of the RF front-end using a frequency synthesizer to
produce an appropriate carrier for the RF traffic in the 2.4 GHz RF band.
The 48 MHz crystal oscillator is divided using the 3-bit prescaler defined in the CK_DIV_1_6_CK_DIV_1_6
bit-field from the CK_DIV_1_6 RF front-end register to produce RFCLK. This clock, which divides the 48 MHz clock
source by a factor between 1 and 7, can be used as the source for SYSCLK, or output through one or more DIO pads
using the DIO components. For more information about the DIO configuration, see Section 10.2, “Functional
Configuration” on page 259.
The standby RC oscillator is a ring oscillator that produces a trimmable output clock that can be used by the RSL10
system as a source for STANDBYCLK, and hence as a source for the RTC. This oscillator produces a nominal output
www.onsemi.com
75
onsemi
RSL10 Hardware Reference
frequency of 32 kHz. Enable the standby RC oscillator by setting the ACS_RCOSC_CTRL_RC_OSC_EN bit from the
ACS_RCOSC_CTRL register.
The frequency of the standby RC oscillator is trimmed using the ACS_RCOSC_CTRL_FTRIM_32K bit-field from the
ACS_RCOSC_CTRL register. The trimming range for this oscillator can be shifted down by approximately 25%
(producing a clock with a nominal output frequency of 24 kHz) by setting the ACS_RCOSC_CTRL_FTRIM_32K_ADJ bit
from the ACS_RCOSC_CTRL register.
IMPORTANT: If the standby RC oscillator is used as a source of timing for RF traffic, this oscillator should be
measured using the 48 MHz crystal oscillator and the audio sink counters. Appropriate adjustments should be
made to the Bluetooth baseband timer driven counters and RTC starting countdown setting stored to the
ACS_RTC_CFG_START_VALUE bit-field from the ACS_RTC_CFG register.
For more information about configuring the RTC, see Section 6.3.5, “Real-Time Clock (RTC)” on page 82. For
more information about measuring the standby RC oscillator using the audio sink, see Section 13.3, “Audio Sink Clock
Counters” on page 390.
The 32 kHz crystal oscillator provides a very low-power, accurate reference clock that can be used as the source for
the baseband and RTC when timing RF traffic and other elements where a high-accuracy clock is required. The 32 kHz
crystal oscillator is a Pierce oscillator that provides a 32768 Hz reference clock. Configure it by using the
ACS_XTAL32K_CTRL register. Configuration and status options for this oscillator include:
An input signal from the EXTCLK input pad can be used as an external input clock source that supplies SYSCLK.
Prior to use in clocking the system, this clock is prescaled using the CLK_SYS_CFG_EXTCLK_PRESCALE bit-field from
the CLK_SYS_CFG register. This produces a divided EXTCLK clock input that is prescaled by between 1 and 16 to
produce a potential SYSCLK frequency defined by:
f EXTCLK
f EXTCLK_DIV = -------------------------------------------------------------------------------------------------------------
CLK_SYS_CFG_EXTCLK_PRESCALE + 1
www.onsemi.com
76
onsemi
RSL10 Hardware Reference
The EXTCLK input can be configured for low-pass filtering and pull-up or pull-down resistor configuration using
the DIO_EXTCLK_CFG register. This configuration is identical to the input physical configuration applied to the DIO
inputs. For more information about the physical pad configuration of EXTCLK, see Section 10.3, “Physical
Configuration” on page 263. The divided EXTCLK input can be output through one or more DIO pads using the DIO
components. For more information about the DIO output configuration, see Section 10.2, “Functional Configuration”
on page 259.
A clock detection circuit can be used to monitor the divided EXTCLK input. For more information, see
Section 6.4.2, “External Clock Detector” on page 91.
The JTCK signal from the SWJ-DP interface in the RSL10 system can be used as an external input clock source
that supplies SYSCLK. Prior to use in clocking the system, this clock is prescaled using the
CLK_SYS_CFG_JTCK_PRESCALE bit-field from the CLK_SYS_CFG register. This produces a divided JTCK clock output
that is prescaled by between 1 and 16 to produce a potential SYSCLK frequency defined by:
f JTCK
f JTCK_DIV = ----------------------------------------------------------------------------------------------------
CLK_SYS_CFG_JTCK_PRESCALE + 1
IMPORTANT: Only use the JTCK pad as an input clock source if the SWJ-DP interface is configured for JTAG
mode or is not used. For more information about debug port configuration, see Section 3.2, “Debug Port” on
page 27.
The divided JTCK input can be output through one or more DIO pads using the DIO components. For more
information about the DIO configuration, see Section 10.2, “Functional Configuration” on page 259.
A clock detection circuit can be used to monitor the divided JTCK input. For more information, see Section 6.4.2,
“External Clock Detector” on page 91.
6.2.7.1 ACS_RCOSC_CTRL
www.onsemi.com
77
onsemi
RSL10 Hardware Reference
6.2.7.2 ACS_XTAL32K_CTRL
www.onsemi.com
78
onsemi
RSL10 Hardware Reference
The system clock (SYSCLK) is the primary clock for the RSL10 system and all other clocks except
STANDBYCLK. The internal clock structures for the RF front-end are derived from SYSCLK.
The CLK_SYS_CFG_SYSCLK_SRC_SEL bit field from the CLK_SYS_CFG register is used to configure the source for
this clock. The sources of this clock can be the following:
SYSCLK will typically be sourced only through STANDBYCLK when operating in Standby Mode where it is
inefficient to go to Sleep Mode, but there is a period of time when the system does not need to process RF traffic or
other data. If the clock source for SYSCLK is routed through STANDBYCLK, the following divided forms of
SYSCLK are sourced directly from SYSCLK:
If the clock source for SYSCLK is the EXTCLK or SWCLK/JTCK inputs, the frequency of the input clock must be
controlled to limit the SYSCLK frequency to a valid frequency.
www.onsemi.com
79
onsemi
RSL10 Hardware Reference
NOTE: The EXTCLK cannot be used as a source for SYSCLK with RF activity, even if its frequency
value is 48 MHz. It can only be used for SYSCLK without RF activity.
SYSCLK can be output through one or more DIO pads using the DIO components. For more information about the
DIO configuration, see Section 10.2, “Functional Configuration” on page 259.
IMPORTANT: When the RSL10 system is processing RF traffic that uses the Bluetooth low energy baseband,
SYSCLK must be sourced appropriately to provide the necessary BBCLK frequencies. For more information
about limitations on BBCLK, see Section 9.3.1, “Clock Structures” on page 207.
NOTE: For optimal system power performance when configuring the RSL10 system to execute from a
SYSCLK frequency of 48 MHz, contact your onsemi Customer Service Representative. For
other SYSCLK configurations, use the standard calibration configurations of the power supplies
provided for the device, as described in the Manufacturing Records section of the RSL10
Firmware Reference.
The RSL10 system includes a standby clock (STANDBYCLK) that is used as the source for the RTC (see
Section 6.3.5, “Real-Time Clock (RTC)”), and can be used as the source for SYSCLK in standby operating modes.
The ACS_RTC_CTRL_CLK_SRC_SEL bit field from the ACS_RTC_CTRL register is used to configure the source for
this clock. The sources for this clock can be the following:
STANDBYCLK can be enabled or disabled by configuring the ACS_RTC_CTRL_RTC_ENABLE bit from the
ACS_RTC_CTRL register.
CAUTION: Switching between STANDBYCLK sources is not guaranteed to be glitch-free. For this reason, changing
the selected STANDBYCLK clock source should only be done when SYSCLK is sourced from another clock.
Use of the 32 kHz crystal oscillator is recommended over use of the standby RC oscillator due to:
Typically, the standby RC oscillator should only be used as STANDBYCLK in cases where the external 32 kHz
crystal is not available.
www.onsemi.com
80
onsemi
RSL10 Hardware Reference
Typically, STANDBYCLK is supplied with a 32 kHz clock source. If STANDBYCLK is supplied at a frequency
other than 32 kHz, a correction factor can be applied to the timers that drive RF traffic to support input clock
frequencies from the DIOs in the range from 25 to 100 kHz.
IMPORTANT: In typical configurations, the RSL10 Bluetooth stack is provided with a 32 kHz crystal oscillator
source that provides 32768 Hz source with a variation of up to 500 ppm. If STANDBYCLK meets these operating
assumptions, use the LowPowerClock_Source_Set(0) API function from the Bluetooth stack library to inform
the Bluetooth stack.
If STANDBYCLK does not meet these operating conditions, the stack must be informed using the
LowPowerClock_Source_Set(1) API function call. In these cases, the RSL10 Bluetooth stack must also be
provided with the actual frequency of STANDBYCLK by setting the RTC clock period using the
RTCCLK_Period_Value_Set() API function from the Bluetooth stack library.
• If the clock source is stable with a variation of less than 500 ppm, the period can be set once during
initialization and used throughout the execution of an application.
• For all other clock sources with a higher error rate or that might vary over time due to changes in
environmental conditions, the application should periodically measure and update the RTC clock
period. For more information on measuring the RTC clock period, see Section 13.3, “Audio Sink Clock
Counters” on page 390.
STANDBYCLK can be output through one or more DIO pads using the DIO components. For more information
about the DIO configuration, see Section 10.2, “Functional Configuration” on page 259.
Slow clock (SLOWCLK) is a prescaled form of SYSCLK that is used as an intermediate divided clock for system
components that need a lower maximum clock frequency. This clock must always be set to 1 MHz, and is used as the
clock source for:
f SYSCLK
f SLOWCLK = --------------------------------------------------------------------------------------------------------------------------
CLK_DIV_CFG0_SLOWCLK_PRESCALE + 1
SLOWCLK can be output through one or more DIO pads using the DIO components. For more information about
the DIO configuration, see Section 10.2, “Functional Configuration” on page 259.
www.onsemi.com
81
onsemi
RSL10 Hardware Reference
6.3.4 Baseband Clock (BBCLK) and Other Clocks for the Bluetooth Low Energy Baseband
For more information about these clocks and timing in the Bluetooth low energy baseband, see Section 9.3.1,
“Clock Structures” on page 207.
The real-time clock (RTC) is supported by the RTC timer, which is clocked from the configured STANDBYCLK.
For information about configuring the clock source used by the RTC and RTC timer, see Section 6.3.2, “Standby Clock
(STANDBYCLK)”.
The RTC timer is a 32-bit free-running countdown timer that counts down from the value specified in the
ACS_RTC_CFG_START_VALUE bit-field of the ACS_RTC_CFG register. The current RTC counter value is available
through the ACS_RTC_COUNT register, and the current count can be reset by setting the ACS_RTC_CTRL_RESET bit from
the ACS_RTC_CTRL register. When the RTC timer reaches 0, the start value is loaded to the current count and the RTC
timer continues.
The RTC timer triggers an RTC clock (RTC_CLOCK_IRQ) interrupt when a rising edge is detected on bit 14 of the
RTC timer. For a typical STANDBYCLK configuration of 32,768 Hz, this produces an RTC clock interrupt at
one-second intervals.
The RTC timer also triggers an RTC alarm (RTC_ALARM_IRQ) interrupt when the RTC timer encounters an alarm
event, as configured using the ACS_RTC_CTRL_ALARM_CFG bit-field from the ACS_RTC_CTRL register. The RTC alarm
interrupt is only triggered if the RTC_ALARM_WAKEUP_CLEAR bit-field from the ACS_WAKEUP_CTRL register has been
used to clear the wakeup status after each RTC alarm event.
The ACS_RTC_CTRL_ALARM_CFG bit-field from the ACS_RTC_CTRL register specifies one of the following:
The user clock is an output clock that you can use as a clock source for the PCM interfaces or for any external
components. This clock is not used internally by the RSL10 system, so its usage can depend entirely on the outside
needs of the larger system containing RSL10.
USRCLK is derived from SYSCLK through a 12-bit integer division by the CLK_DIV_CFG0_USRCLK_PRESCALE
bit field in the CLK_DIV_CFG0 register. This prescaler provides a clock prescaled from SYSCLK by 1 to 4096, and
results in a USRCLK with a frequency defined by the following equation:
f SYSCLK
f USRCLK = ---------------------------------------------------------------------------------------------------------------------
CLK_DIV_CFG0_USRCLK_PRESCALE + 1
www.onsemi.com
82
onsemi
RSL10 Hardware Reference
USRCLK can be output through one or more DIO pads using the DIO components. For more information about the
DIO configuration, see Section 10.2, “Functional Configuration” on page 259.
The following power supply components each have their own clock sources:
• The VDDA charge pump is clocked using CPCLK, which is divided from SLOWCLK. Configuration and
restrictions on this clock are described in Section 5.3.5, “Analog Supply Voltage (VDDA)” on page 50.
IMPORTANT: The CPCLK setting of 0x07 (divide by 8 = 125 kHz) cannot be used when VDDPA is enabled. We
suggest using a slightly higher frequency setting, either 0x05 or 0x06. (For more information on VDDPA, see
Section 5.3.3, “RF Supply Voltage” on page 43.)
• The DC-DC buck converter is clocked using the DCCLK, which is divided from SYSCLK. Configuration and
recommendations for this clock are described in Section 5.3.1, “System Supply Voltage (VCC)” on page 39.
The following interface components each have a clock divided from SYSCLK that is used to clock the interface:
f SYSCLK
f AUDIOCLK = -----------------------------------------------------------------------------------------------------------------------------
CLK_DIV_CFG1_AUDIOCLK_PRESCALE + 1
f AUDIOCLK
f AUDIOSLOWCLK = ----------------------------------------------------------------------------------------------------------------------------------------------
CLK_DIV_CFG1_AUDIOSLOWCLK_PRESCALE + 1
NOTE: For correct operation of the DMIC inputs and output driver in the same
system, configuration of AUDIOCLK, AUDIOSLOWCLK, the DMIC
input decimation filters, and the output driver interpolation filters must
result in the same decimated sampling frequency for both the DMIC inputs
and the output driver outputs.
Both AUDIOCLK and AUDIOSLOWCLK can be output through one or more DIO pads using
the DIO components. For more information about the DIO configuration, see Section 10.2,
www.onsemi.com
83
onsemi
RSL10 Hardware Reference
I2C
The I2C clock is only used by the I2C interface when the interface is configured for master
mode. For information about configuring the I2C clock, see Section 11.4.2, “Master Mode
Specific Configuration” on page 315.
PWM
For more information about this interface and its clocks, see Section 11.6, “Pulse Width
Modulation (PWM)” on page 333.
SPI
For more information about these interfaces and their clocks, see Section 11.7, “Serial
Peripheral Interfaces (SPI)” on page 335.
UART
The UART interface indirectly divides SYSCLK to achieve the baud rate for UART
communications. For the UART TX output, this baud rate is applied directly; for the UART RX
input, this baud rate is used in the asynchronous recovery of data from this pad. For more
information about this interface and its clock, see Section 11.8, “Universal Asynchronous
Receiver-Transmitter (UART) Interfaces” on page 344.
The ADCs use either SLOWCLK or SLOWCLK divided by a fixed divisor of 5 to sample analog signals.
Information on the ADC interface clocking and sample configuration can be found in Section 11.2.2, “ADC Sampling
Configuration” on page 302.
The PCM interface does not have its own divided clock, but is asynchronously clocked relative to the clock input
provided at the PCM clock input pad. This clock source can be provided by the RSL10 system by routing a clock output
to the same DIO that is acting as the PCM clock input (see Section 10.2, “Functional Configuration” on page 259 for
more information about configuring a DIO as both a clock output and a PCM clock input; see Section 11.5, “Pulse Code
Modulation (PCM) Interface” on page 324 for more information about the PCM interface).
www.onsemi.com
84
onsemi
RSL10 Hardware Reference
6.3.9.1 CLK_SYS_CFG
6.3.9.2 CLK_DIV_CFG0
www.onsemi.com
85
onsemi
RSL10 Hardware Reference
6.3.9.3 CLK_DIV_CFG1
www.onsemi.com
86
onsemi
RSL10 Hardware Reference
6.3.9.4 CLK_DIV_CFG2
www.onsemi.com
87
onsemi
RSL10 Hardware Reference
6.3.9.5 ACS_RTC_CFG
www.onsemi.com
88
onsemi
RSL10 Hardware Reference
6.3.9.6 ACS_RTC_COUNT
6.3.9.7 ACS_RTC_CTRL
www.onsemi.com
89
onsemi
RSL10 Hardware Reference
The clock detector is used to monitor the clocks that are crucial to proper system execution. This circuit can be used
to detect the presence of these key clock signals. If required, and if the clock is missing or not toggling, this block can
be configured to reset the digital portions of the device, as described in Section 5.5, “Resets” on page 64.
www.onsemi.com
90
onsemi
RSL10 Hardware Reference
The clock source monitored by the clock detector depends on the power mode (see Section 5.4, “Power Modes” on
page 51), and the state of the system power supplies in that mode. The clock detector will indicate that a clock is present
in the system whenever the monitored clock is at or above a minimum frequency of 4 kHz. This clock selection is
automatically controlled by the underlying power-supply state machines of the RSL10 SoC, selecting the following
clock sources for each mode:
System startup
RC oscillator (see Section 6.2.1, “RC Oscillator” on page 75)
System shutdown
No clock monitored as the system is already being reset or being held in a reset state pending
recovery of a supplied voltage above the monitored minimum thresholds configured for proper
system execution.
Run Mode
CPCLK (see Section 6.3.7, “Power Supply Clocks” on page 83)
To enable resets using the clock detector, use the ACS_CLK_DET_CTRL register to:
To disable resets using the clock detector, or to disable the clock detector itself, use the ACS_CLK_DET_CTRL
register to:
The external clock sources that can be used to supply SYSCLK can be monitored using the external clock detector.
This clock detector selects between monitoring the external clock input (see Section 6.2.5, “External Clock Input
(EXTCLK)” on page 76) and monitoring the JTCK clock from the SWJ-DP debug interface (see Section 6.2.6, “Debug
Port Clock” on page 77), as configured using the CLK_DET_CFG_CLK_DET_SEL bit from the CLK_DET_CFG register.
This clock detector is disabled by default, and can be enabled by setting the CLK_DET_CFG_CLK_DET_ENABLE bit
from the CLK_DET_CFG register.
When enabled, the external clock detector will monitor the specified clock using a divided form of SLOWCLK as
configured using the CLK_DET_CFG_CLK_DET_DIV bit field from the CLK_DET_CFG register. The external clock
detector will indicate that the monitored clock is present by setting the CLK_DET_STATUS_CLK_DET_STATUS bit from
the CLK_DET_STATUS register if the frequency of the monitored clock is at least 54% of the monitoring clock source.
www.onsemi.com
91
onsemi
RSL10 Hardware Reference
When enabled, the clock detector can be used to trigger the CLKDET_IRQ interrupt. Configuration of this interrupt
uses the CLK_DET_CFG_CLK_DET_INT_SEL bit field from the CLK_DET_CFG register, which can be configured to
cause an interrupt if:
If an external clock detector interrupt has been triggered, the CLK_DET_INT_STATUS_CLK_DET_STATUS bit from
the CLK_DET_STATUS register will be set until the CLK_DET_STATUS register is read.
6.4.3.1 CLK_DET_CFG
www.onsemi.com
92
onsemi
RSL10 Hardware Reference
6.4.3.2 CLK_DET_STATUS
6.4.3.3 ACS_CLK_DET_CTRL
www.onsemi.com
93
CHAPTER 7
7. Memory
7.1 MEMORY ARCHITECTURE
The RSL10 system uses a memory architecture based on the predefined memory map of the Arm Cortex-M3
processor — a state-of-the-art 32-bit core with embedded multiplier and ALU for handling typical control functions as
well as dedicated LPDSP32 functions.
The implementation of the memory architecture uses a number of single-port memories and memory-mapped
registers interconnected with memory buses and support elements. All memories are accessible through the
Arm Cortex-M3 processor, although some interfaces and peripherals provide additional access paths to specific
memory elements. The connections to the components that make up the memory for the RSL10 system are shown in
Figure 7.
The memory architecture for RSL10, including the memory instances, registers, and other components, are
accessible from the Arm Cortex-M3 processor through one or more of the processor’s standard buses. All the memory
instances are shown in Table 7.
www.onsemi.com
94
onsemi
RSL10 Hardware Reference
Buses connected to the Arm Cortex-M3 processor implement the standard Arm Cortex-M3 core memory map.
These buses, which can also be seen in Figure 7 on page 94, are as follows:
In front of each memory instance, an arbiter manages the simultaneous accesses between the masters - the
Arm Cortex-M3 processor, the LPDSP32 or the baseband controller (BB), and the DMA.
The arbitration scheme is configurable per memory instance, or per memory instance group, in the
SYSCTRL_MEM_ARBITER_CFG register.
www.onsemi.com
95
onsemi
RSL10 Hardware Reference
Round-robin mode:
Depending on the ROUND_ROBIN_TOKEN configuration bit, the following arbitration scheme is
used:
In this mode the priority order is normally Arm Cortex-M3 processor > LPDSP32/BB >
DMA, but if a real-time DMA channel memory access has been blocked for 7 consecutive
cycles, then the priority order becomes DMA > Arm Cortex-M3 processor > LPDSP32/BB.
A real-time DMA channel is defined as a DMA channel with the MSB of its priority level
equal to 1.
In this mode, the priorities are rotated between the following three-memory priorities during
each SYSCLK cycle:
Smart mode:
This mode is only available for BB memories. In this mode, the priority order is normally
Arm Cortex-M3 processor > DMA > BB, but if the baseband divided clock is active, then the
priority order becomes BB > Arm Cortex-M3 processor > DMA.
The arbitration between the flash memory copier and DMA depends on the ROUND_ROBIN_TOKEN configuration
bit, but in either mode, the DMA only has priority over the flash memory copier when the DMA has the (round-robin)
priority token.
IMPORTANT: We recommend that the memories used by the baseband controller not be configured in the fixed
Arm Cortex-M3 processor priority mode or the round-robin mode, as in these modes the functionality of the
baseband controller cannot be guaranteed.
The memory provided on the RSL10 SoC is divided into five distinct areas with distinct uses. These areas are
mapped into the RSL10 memory map, as shown in Figure 8 on page 97.
www.onsemi.com
96
onsemi
RSL10 Hardware Reference
$UP&RUWH[0 access
DSP access
Bit band region :
- 0x2000 0000 – 0x200F FFFF (RAM, 1MB) 0xFFFF FFFF
DMA access
- 0x4000 0000 – 0x400F FFFF (Peripherals, 1MB) SYSTEM
%DVHEDQG access
0xE00F FFFF
Private Peripheral Bus (PPB)
0xE000 0000
www.onsemi.com
97
onsemi
RSL10 Hardware Reference
The address ranges are in hexadecimal format. The following subsections provide a brief description and usage of
each area. These areas are as follows:
1. Program ROM, as described in the Program ROM Chapter of the RSL10 Firmware Reference
2. Flash Memory
3. Program RAM
4. Data RAM
5. Shared RAM Instances
6. Other Memory Mapped Areas
These sections are mapped into the RSL10 memory map, as shown in Figure 8 on page 97. The address ranges are
in hexadecimal format. The following subsections provide a brief description and usage of each.
The Arm Cortex-M3 processor address space includes 384 KB of flash memory as non-volatile memory. It can
only be written through the flash memory interface. The flash memory is used for storing:
The flash memory is organized into programmable rows of 256 bytes (64 words, further organized into 32 word
pairs), and erasable sectors each containing 2048 bytes (512 words) of flash memory.
For more information about the use of these sectors, refer to the Hardware Definitions Chapter of the RSL10
Firmware Reference.
NVR1, NVR2 and NVR3 each consist of one 2048-byte sector of flash memory. NVR4 consists of four 256-byte
redundant pages gathered into one sector of flash memory.
When the NVR4 is read, the RECALL bit in FLASH_IF_CTRL must be set. While this bit is set, accessing the main
flash or redundancy sectors is not possible. NVR4 is only programmed during the production test and cannot be written
www.onsemi.com
98
onsemi
RSL10 Hardware Reference
by users. When reading from NVR4, bit 8 of FLASH_ADDR is not used in the address decoding, as both pages for this
bit are expected to be identical.
NOTE: The system library provides the Sys_ReadNVR4() function to support reading the NVR4 sector.
See the RSL10 Firmware Reference manual for more information.
IMPORTANT: NVR 1-2-3 sectors are only guaranteed for 1,000 program and erase cycles versus 100,000
programming cycles for all other memory sectors.
The addresses of the sectors that the redundancy sectors are replacing can be read through the
FLASH_PATCH_ADDR[3:0] registers. These registers contain the first address of the defective sector that will be
patched. The FLASH_PATCH_ADDR registers are loaded from the MANU_FLASH_RR* locations in NVR4 using the flash
memory’s CMD_LOAD_TRIM operation (see Table 9 on page 106), which is typically executed during boot as part of the
CMD_WAKE_UP operation.
NOTE: NVR4 cannot be patched, since it contains the patch configuration. NVR3 cannot be patched, as
the manufacturing initialization function (MANU_INFO_INIT) implementation enables recall
mode to read from NVR4 rather than using the Sys_ReadNVR4() function, as described in the
RSL10 Firmware Reference.
The two customer-configurable redundancy sectors are the last two sectors of the main flash memory area. Use of
these sectors is configured using the CMD_WRITE_USER_RED* commands to set to the NVR4 MANU_FLASH_RR*
configurations that are loaded to the FLASH_PATCH_ADDR registers.
CAUTION: If a redundancy sector is used, it should not be used as a regular sector in the main flash area as this
configuration results in this sector being used for two addressable locations in the flash memory area. To ensure that the
customer-configurable redundancy sectors are not overwritten, the flashloader does not support writing to either of the
potentially reassigned customer-configurable redundancy sectors.
Low-level Configuration
Sector Address Configuration Register NVR4 Configuration Address
Command
USER_RED1 0x0015F800 FLASH_PATCH_ADDR[2] MANU_FLASH_RR2 CMD_WRITE_USER_RED1
USER_RED2 0x0015F000 FLASH_PATCH_ADDR[3] MANU_FLASH_RR3 CMD_WRITE_USER_RED2
www.onsemi.com
99
onsemi
RSL10 Hardware Reference
NOTE: After production testing, the MANU_FLASH_RR* locations in NVR4 that define the user
redundancy sectors remain erased. This means a user patch address can be stored in NVR4
without erasing the sector.
CAUTION: The NVR4 MANU_FLASH_RR* configurations can only be written once using the CMD_WRITE_USER_RED*
commands. If either of the MANU_FLASH_RR* configurations is overwritten with a second target, the redundancy
sector configuration stored to that MANU_FLASH_RR* is likely to fail its ECC check (causing the redundancy sector
to not be used) or to select an unexpected sector to be patched.
In case multiple patch configuration registers contain the same address, the following priority is observed (from
highest to lowest): USER_RED2, USER_RED1, RED2, RED1. This allows a user application to patch a sector that has
already been patched for yield regions in the same way as other sectors would be patched.
1. When writing to the flash memory, the ECC bits are automatically generated by the flash memory interface
and appended to the data.
2. When reading from the flash memory, the error detection and/or correction is applied automatically.
The algorithm relies on the (72, 64) extended Hamming code, where 64 data bits from a pair of words of flash
memory are extended by seven parity bits plus one overall parity bit, to form a 72-bit double word. This is a Single
Error Correcting, Double Error Detecting (SECDED) code, and allows correcting a single bit error or detecting two-bit
errors. The flash memory ECC generation, error detection, and error correction are performed by a dedicated hardware
block with no incurred latency on flash read/write operations.
IMPORTANT: Since the flash memory is organized into 64-bit double words, flash memory is written two words
at a time with the ECC bits calculated based on the two written words. Writes of individual words (or an odd
number of words) are not possible while ECC is enabled, without corrupting the ECC bits, and as such, are not
supported by the flash write library described in the RSL10 Firmware Reference.
While we recommend always keeping the error correcting code enabled, it is possible to disable the ECC when
reading (or writing) from the flash, by clearing the appropriate bits in the FLASH_ECC_CTRL register:
• The FLASH_ECC_CTRL_IDBUS_ECC_CTRL bit disables ECC for accesses over the memory buses.
• The FLASH_ECC_CTRL_CMD_ECC_CTRL bit disables ECC for accesses using the flash memory’s command
interface.
• The FLASH_ECC_CTRL_COPY_ECC_CTRL bit disables ECC for accesses using the flash copier.
IMPORTANT: When writing to the flash with ECC disabled, each word of flash is written individually (written
to the FLASH_DATA[0] register) along with the four associated ECC bits (written to the four LSBs of the
FLASH_DATA[1] register). When reading back from the flash with ECC enabled, both words in a pair must have
been written with the correct ECC bits set to avoid correctly detecting ECC errors.
If the error correcting code detects an uncorrectable error, a FLASH_ECC_IRQn interrupt will be triggered. This
interrupt can also be configured to trigger after correcting a certain number of detected correctable errors. This interrupt
www.onsemi.com
100
onsemi
RSL10 Hardware Reference
condition is configured by writing the number of corrected bit errors that should be allowed to the
FLASH_ECC_CTRL_ECC_COR_CNT_INT_THRESHOLD bit-field in the FLASH_ECC_CTRL register.
• Read operations are limited to minimum timing delays. To guarantee timing of all flash reads, set the
FLASH_DELAY_CTRL_SYSCLK_FREQ bit-field to indicate a value greater than or equal to the SYSCLK
frequency.
• Erase and program operations have both minimum and maximum timing delay limitations. Due to these
limitations, the FLASH_DELAY_CTRL_SYSCLK_FREQ bit-field must be set to within 10% of the actual
SYSCLK frequency.
CAUTION: Erasing and programming flash memory is not allowed when using the RC oscillator with the multiplier
enabled as the source for SYSCLK, because the variation of this clock source over temperature (specified at 25%
maximum) is more than the maximum allowed flash erase and program timing variation of 10% .
The firmware directly supports setting the required delays when updating the SYSCLK configuration, with the flash
delay registers reset whenever the SystemCoreClock global variable is updated and the
SystemCoreClockUpdate() function from the CMSIS library is executed (for more information see the RSL10
Firmware Reference).
IMPORTANT: A minimum SYSCLK frequency of 1 MHz is required to safely complete a flash memory
operation.
CAUTION: When the command CMD_PROGRAM_SEQ is in execution, any access through the I/D buses generates
a bus fault.
7.2.3 RAM
www.onsemi.com
101
onsemi
RSL10 Hardware Reference
The DSP PRAM consists of 4 instances of 2048 x 40 bits (DSP_PRAM0 - DSP_PRAM3) that can be
independently accessed by the Arm Cortex-M3 processor or the LPDSP32 DSP system via dynamic arbitration.
• When used as program memory or flash memory overlay by the Arm Cortex-M3 processor, the DSP PRAM is
seen as 32-bit words, and appears in reversed order on the Arm Cortex-M3 processor memory map. Since the
memory is 40-bit native, the upper byte in each word is not used. The main purpose of the DSP PRAM is to
mirror the frequently used functions of the software stack and the application stored in the flash memory. The
objective is to minimize the number of flash memory accesses in order to lower the overall power
consumption.
• When used by the LPDSP32, the DSP PRAM is seen as 40-bit data, and appears in normal order on the
Arm Cortex-M3 processor memory map, as viewed by the LPDSP32. The bits 39:32 of each word are mapped
as bits 7:0 at a different address. When this different address is read, bits 31:8 return zero. This address is
mainly used for storing or observing the LPDSP32 program code.
The PRAM0 to PRAM3 and DSP_PRAM0 to DSP_PRAM3 (when not used by the LPDSP32) can be made to
operate in default or overlay mode, by configuring the corresponding bit of the SYSCTRL_FLASH_OVERLAY_CFG
register. When the bit is cleared, the memories are only mapped to the default addresses range given in Figure 8. When
this bit is set, the memories are also mapped to the flash memory read-only addressing range as follows:
• 24 KB of DRAM are shared between the Bluetooth stack and the user application. The DRAM is subdivided
into 3 instances of 2048 words (DRAM0 - DRAM2) that are used to store any type of data needed for user
applications.
• 48 KB of DSP DRAM are shared between the CSS and the DSS. The DSP DRAM is subdivided into 6
instances of 2048 words (DSP_DRAM0 - DSP_DRAM5) that are independently attributed to the CSS or the
DSS via dynamic arbitration.
• 16 KB of BB DRAM act as the exchange memory between the Arm Cortex-M3 processor and the baseband
controller. The BB DRAM is subdivided into 2 instances of 2048 words (BB_DRAM0 and BB_DRAM1) that
are directly accessible by the Arm Cortex-M3 processor and the DMA, parallel to the baseband controller. A
configurable arbiter manages the simultaneous accesses between the Arm Cortex-M3 processor, the DMA,
and the baseband controller. The arbiter can be configured through the SYSCTRL_MEM_ARBITER_CFG register.
www.onsemi.com
102
onsemi
RSL10 Hardware Reference
• When used as program memory or flash memory overlay by the Arm Cortex-M3 processor, the DSP PRAM is
seen as 32-bit words and appears in reversed order on the Arm Cortex-M3 processor memory map. Since the
memory is 40-bit native, the upper byte of each word is not used. The main purpose of the DSP PRAM is to
mirror the frequently used functions of the software stack and the application stored in the flash memory. The
objective is to minimize the number of flash memory accesses in order to lower the overall power
consumption.
• When used by the LPDSP32, the DSP PRAM is seen as 40-bit data, and appears in normal order on the
Arm Cortex-M3 processor memory map as viewed by the LPDSP32. The bits 39:32 of each word are mapped
as bits 7:0 at a different address. When this different address is read, bits 31:8 return zero. It is mainly used for
storing or observing the LPDSP32 program code.
The LPDSP32 has the following program memory mapping (refer to Figure 9 on page 104):
www.onsemi.com
103
onsemi
RSL10 Hardware Reference
0xFF FFFF
Reserved
0x00 4000
0x00 3FFE 0x00 3FFF
DSP_PRAM3
0x00 3000 10 KB 0x00 3001
0x00 2FFE 0x00 2FFF
DSP_PRAM2
0x00 2000 10 KB 0x00 2001
0x00 1FFE DSP_PRAM1 0x00 1FFF
0x00 1000 10 KB 0x00 1001
0x00 0FFE 0x00 0FFF
DSP_PRAM0
10 KB
0x00 0000 0x00 0001
39 0
The LPDSP32 has 3 usable data memory mappings (refer to Figure 10 on page 105), which are accessible through
the LPDSP32 data memory A (DMA) and data memory B (DMB) buses:
IMPORTANT: In case simultaneous accesses of LPDSP32-DMA and LPDSP32-DMB are performed on the
same memory instance, then the LPDSP32-DMA access takes priority.
www.onsemi.com
104
onsemi
RSL10 Hardware Reference
0xFF FFFF
Reserved
0xC0 0008
0xC0 0007 0xC0 0004
Mapped Registers
0xC0 0003 0xC0 0000
0xBF FFFF
Reserved
0x80 8000
0x80 7FFF DRAM2 0x80 7FFC
0x80 6003
8 KB 0x80 6000
0x80 5FFF 0x80 5FFC
DRAM1
0x80 4003
8 KB 0x80 4000
0x80 3FFF 0x80 3FFC
DSP_DRAM5
0x80 2003
8 KB 0x80 2000
0x80 1FFF DSP_DRAM4 0x80 1FFC
NOTE: The different data memory mappings do not require any hardware configuration. The mapping
that is used must simply be respected by the software that is running on the LPDSP32.
IMPORTANT: The last 16 KB of data memory (DRAM1 and DRAM2) is not used by the LPDSP32 in a normal
application. This memory has been mapped to the LPDSP32’s data memory space so that it can test these
memories during production testing.
www.onsemi.com
105
onsemi
RSL10 Hardware Reference
Writing to flash memory consists of an erase cycle, followed by a program cycle. Following the erase cycle, the
erased cells have a value of all ones. Programming the flash cells clears some of these cells to zero.
IMPORTANT: The flash write library contains functions that the user application can use to perform writes. A
copy of this flash write library is provided in the RSL10 program ROM, and can be used to write to the flash at
any time. Refer to the RSL10 Firmware Reference for more information.
NOTE: While writing to, or erasing, any flash memory, no flash memory instance can be accessed from
the I-Code or D-Code buses. This includes any case where a low-level flash command is issued
or when a low-level flash command is triggered by writing to the FLASH_IF_CTRL register.
Low-level commands, which are written with the FLASH_CMD_CTRL register, are used to write to the flash; see
Table 9. Each command returns to idle state except the CMD_PROGRAM_SEQ. If the command is busy, the P-Bus write
access is ignored, except in these circumstances:
• Writing to the FLASH_DATA[0:1] registers during the CMD_PROGRAM_SEQ, when new data is requested.
• Writing to the four FLASH_COPY (except FLASH_COPY_CTRL) registers.
• Writing to fields FLASH_ECC_CTRL_CMD_ECC_CTRL, FLASH_ECC_CTRL_COPIER_ECC_CTRL and
FLASH_ECC_CTRL_IDBUS_ECC_CTRL of the FLASH_ECC_CTRL register.
• Clearing the ECC_STATUS bits.
Command Description
CMD_IDLE Set the flash memory control signals so that the flash memory is in Standby Mode.
CMD_WAKE_UP Power-up sequence.
This sequence starts automatically when the flash memory is powered-up through the
SYSCTRL_MEM_POWER_CFG register.
Depending on the LOAD_AUTO setting, the CMD_LOAD_TRIM command is executed after
this command.
CMD_LOAD_TRIM Transfer settings from the NVR4 sector to the PATCH_ADDR[3:0] registers and to the
flash memory internal configuration registers. The status bit TRIMMED_STATUS is updated
at the end of the command, indicating if there was an uncorrectable ECC error or a word pair
contained all ones or zeroes when reading NVR4, in which case the default trim values are
used to guarantee the proper flash memory read functionality.
CMD_READ Execute a read access:
• If ECC is enabled, a pair of 32-bit words is read from flash memory.
• If ECC is disabled, a single 36-bit word is read from flash memory.
www.onsemi.com
106
onsemi
RSL10 Hardware Reference
Command Description
CMD_PROGRAM_NOSEQ Execute a non-sequential programming access:
• If ECC is enabled, a pair of 32-bit words is written to flash memory.
• If ECC is disabled, a single 36-bit word is written to flash memory.
CMD_PROGRAM_SEQ Initiate a sequential programming access to flash memory:
• If ECC is enabled, up to 32 pairs of 32-bit words can be written to the same row
within a flash memory sector.
• If ECC is disabled, up to 64 words of 36 bits can be written to the same row within
a flash memory sector.
CMD_PROGRAM_SEQ_END Terminate a sequential programming access.
This command is only accepted when the sector addressed by FLASH_ADDR is in an
unlocked flash memory zone.
CMD_SECTOR_ERASE Erase a sector of the flash memory.
This command is only accepted when the sector addressed by FLASH_ADDR is in an
unlocked flash memory zone.
CMD_MASS_ERASE Perform a mass erase. This command is only accepted when all of the areas in the main
flash are unlocked or NVR1-3 are unlocked.
• All sectors of the main flash array are erased when the main flash is unlocked.
• The NVR1-3 sectors are erased when NVR1-3 are unlocked.
• The RED1-2 sectors are erased when RED1-2 are unlocked.
NOTE: The redundancy sectors are erased separately from both the main
flash and the NVR1-3 sectors, as the redundancy sectors could
replace any of these sectors. The user redundancy sectors are
erased with the main flash. If these sectors were used to patch an
NVR sector, use the mass erase command only if erasing both the
main flash and NVR sectors.
CMD_SET_LOW_POWER Set the LPWR flash memory pin respective to the hold & setup time. This command is called
automatically when LP_MODE bit in FLASH_IF_CTRL is changed from 0 to 1.
CMD_UNSET_LOW_POWER Unset the LPWR flash memory pin respective to the hold & setup time. This command is
called automatically when LP_MODE bit in FLASH_IF_CTRL is changed from 1 to 0.
CMD_SET_RECALL Set the RECALL flash memory pin respective to the hold & setup time. This command is
called automatically when RECALL bit in FLASH_IF_CTRL is changed from 0 to 1.
CMD_UNSET_RECALL Unset the RECALL flash memory pin respective to the hold & setup time. This command is
called automatically when RECALL bit in FLASH_IF_CTRL is changed from 1 to 0.
CMD_SET_VREAD0 Set the VREAD0 flash memory pin respective to the hold & setup time. This command is
called automatically when VREAD0_MODE bit in FLASH_IF_CTRL is changed from 0 to 1.
CMD_UNSET_VREAD0 Set the VREAD0 flash memory pin respective to the hold & setup time. This command is
called automatically when VREAD0_MODE bit in FLASH_IF_CTRL is changed from 1 to 0.
CMD_SET_VREAD1 Set the VREAD1 flash memory pin respective to the hold & setup time. This command is
called automatically when VREAD1_MODE bit in FLASH_IF_CTRL is changed from 0 to 1.
CMD_UNSET_VREAD1 Set the VREAD1 flash memory pin respective to the hold & setup time. This command is
called automatically when VREAD1_MODE bit in FLASH_IF_CTRL is changed from 1 to 0.
www.onsemi.com
107
onsemi
RSL10 Hardware Reference
Command Description
CMD_WRITE_USER_RED1 Write contents of the FLASH_DATA register to MANU_FLASH_RR2 in NVR4. This value is
loaded to the FLASH_PATCH_ADDR[2] register on boot, to configure USER_RED1 to
patch the specified memory sector.
CMD_WRITE_USER_RED2 Write contents of the FLASH_DATA register to MANU_FLASH_RR3 in NVR4. This value is
loaded to the FLASH_PATCH_ADDR[3] register on boot, to configure USER_RED2 to
patch the specified memory sector.
The low-level commands can be written to the FLASH_CMD_CTRL register. These commands are then interpreted
by a state machine, which acts on the different flash memory control signals to perform the relevant action
• By setting the LP_MODE bit of the FLASH_IF_CTRL configuration register, it is possible to read the flash
memory when its power supply voltage (VDDA) is below 2.75 V with reduced power consumption.
• The LP_MODE bit can only be modified when the flash is enabled. The state of the flash LP_MODE bit is
maintained while the flash is disabled. When this LP_MODE bit is modified, the command
CMD_SET_LOW_POWER is executed, and during the next 15 s any flash memory read access is wait stated.
Once the flash memory is configured to enable writing to its desired areas, with the required delays set up, the flash
memory programming procedure can be executed for either non-sequential or sequential programming as described in
the following sections.
Reading from flash memory using the flash command interface can use non-sequential and sequential data
accesses, using the same portions of the FLASH_DATA registers that are used for the write commands
CAUTION: Each group of 64 flash memory words (called a row) is allowed to be in programming mode for at most 5
ms between two erase events. This allows writing all words in each row three times with ECC disabled, or 5 times with
ECC mode enabled. Exceeding this programming time between erase cycles can damage the flash cells.
• If the ECC is disabled, {FLASH_DATA[1](3:0), FLASH_DATA[0]} are treated as a 36-bit write value,
written to one half of a double word pair and one half of the associated ECC bits
3. Write the command CMD_PROGRAM_NOSEQ to the FLASH_CMD_CTRL register to start the non-sequential
sequence.
4. Poll the flash memory interface busy bit to check when the write is done.
5. The address is automatically incremented by 4 or 8, depending on the CMD_ECC_CTRL value.
6. The non-sequential programming sequence can be executed when the Arm Cortex-M3 processor runs a
program from the flash memory, since the Arm Cortex-M3 processor is held in a wait state while the flash
command is executing.
www.onsemi.com
108
onsemi
RSL10 Hardware Reference
1. To write to the lower part of the main block of the flash memory (only possible if the main block is unlocked
against Program/Erase), it is necessary to:
a. Define the access permissions to the lower part of the flash memory (the MAIN_LOW_W_EN field in the
FLASH_MAIN_CTRL register).
b. Write a 32-bit unlock key to the FLASH_MAIN_WRITE_UNLOCK register.
2. To write to the middle part of the main block of the flash memory (only possible if the main block is unlocked
against Program/Erase), it is necessary to:
a. Define the access permissions to the middle part of the flash memory (field MAIN_MIDDLE_W_EN field in
the FLASH_MAIN_CTRL register).
b. Write a 32-bit unlock key to the FLASH_MAIN_WRITE_UNLOCK register.
3. To write to the high part of the main block of the flash memory (only possible if the main block is unlocked
against Program/Erase), it is necessary to:
a. Define the access permissions to the high part of the flash memory (field MAIN_HIGH_W_EN field in the
FLASH_MAIN_CTRL register).
b. Write a 32-bit unlock key to the FLASH_MAIN_WRITE_UNLOCK register.
4. A similar procedure needs to be applied to access the NVR block of the flash memory:
a. Define the access permissions to the NVR block of the flash memory (field NVR[1|2|3]_W_EN field in
the FLASH_NVR_CTRL register).
b. Write a 32-bit unlock key to the FLASH_NVR_WRITE_UNLOCK register.
This module copies data from flash memory into any DMA-accessible memory, or the CRC block. In 40-bit mode,
the copier packs the 32-bit flash memory words into 40-bit words. This is useful to copy LPDSP32 programs from flash
www.onsemi.com
109
onsemi
RSL10 Hardware Reference
memory to DSP_PRAM. This module can also run in comparison mode. In this mode, the 36-bit data read from flash
memory is verified against a reference value, but not written to any memory. This is useful to verify that a sector has
been properly erased. It is also used for production testing purposes.
1. FLASH_COPY_SRC_ADDR_PTR: defines the flash memory source address (byte oriented). In 32-bit copier
mode or in comparator mode, the pointer must point to the beginning of a word (2 LSBs are ignored).
2. FLASH_COPY_DST_ADDR_PTR: Defines the destination address into 32-bit word memory space. This pointer
is not used in comparator mode, or when the copier destination is the CRC block. Addressing corresponds to
logical memory instances in normal order, as viewed by the Arm Cortex-M3 processor.
3. FLASH_COPY_WORD_CNT: indicates how many words are to be written to the destination (copier mode), or the
number of words to be read and verified (comparator mode).
4. FLASH_COPY_CFG_MODE: configures MODE (copier or comparator), flash memory access COPY_MODE (40-bit
or 32-bit), COPY_DEST (memory or CRC), COMP_MODE (constant or checkerboard), COMP_ADDR_DIR (up or
down), and COMP_ADDR_STEP (increment FLASH_COPY_SRC_ADDR_PTR by 1 or 2 words).
5. We recommend that the 40-bit copier mode only be used for DSP_PRAM destination. When a 32-bit memory is
used as destination, then only 32-bit bytes are written and the 8 LSBs are discarded.
6. In copier mode, the flash memory is read with or without ECC, depending on the COPIER_ECC_CTRL bit of
the FLASH_ECC_CTRL register. In comparator mode, the flash memory is always read without ECC.
7. FLASH_COPY_CTRL: provides START and STOP commands and read-only BUSY and ERROR status bits.
8. When both the START and STOP commands are issued at the same time, the STOP command takes priority.
9. When the START command is issued, the BUSY status bit is set and the ERROR bit is cleared.
10. While the copier is busy:
a. 32-bit copier mode:
i. A 32-bit word is read from flash memory.
ii. The 32-bit word is written to the destination memory.
iii. When the write has completed without error, the source address is incremented by 4, the destination
address is incremented by 4, and the word counter is decremented.
d. Comparator mode:
i. A 36-bit word is read from the flash memory.
ii. In constant mode, or in checkerboard mode with an even source address, the 36-bit word is compared
with FLASH_DATA[1][3:0] and FLASH_DATA[0][31:0].
iii. In checkerboard mode with an odd source address, the 36-bit word is inverted and compared with
FLASH_DATA[1][3:0] and FLASH_DATA[0][31:0].
iv. When the comparison matches, the source address is updated according to COMP_ADDR_DIR and
COMP_ADDR_SIZE, and the word counter is decremented.
www.onsemi.com
110
onsemi
RSL10 Hardware Reference
11. When the word counter reaches zero, or when a write error has occurred (copier mode only), or when a
verification error occurs (comparator mode only), then the BUSY status bit is cleared and an interrupt is
generated for the Arm Cortex-M3 processor. In the case of an error, the ERROR bit is set.
12. The copy or comparator operation can be stopped before completion, through the STOP command. The
operation can be continued by giving the START command, as the address pointers and word counter have the
values required to continue the copy operation.
13. When the flash memory copier is running, the FLASH_COPY_CFG, FLASH_COPY_SRC_ADDR_PTR,
FLASH_COPY_DST_ADDR_PTR and FLASH_WORD_CNT registers are not writable.
14. The priority handling between the flash memory copier and any DMA memory access, when writing to the
flash memory copier’s destination memory, is explained in Chapter 7, “Memory Arbitration” on page 95. The
flash memory copier acts as a DMA access regarding the priority handling between the flash memory copier,
Arm Cortex-M3 processor, LPDSP32 and baseband controller.
NOTE: While the flash memory copier is running, it constantly tries to read from the flash memory and
write to its destination memory. If either memory instance is not available due to an access
conflict with the Arm Cortex-M3 processor, LPDSP32, or DMA, the flash memory is re-read to
ensure an atomic read and write occurs. We recommend avoiding such memory access conflicts,
as they result in additional reads from flash memory and thus increase power consumption.
IMPORTANT: The flash copier has a known issue when configured for comparison mode. When verifying that
an area of memory is the expected value, the flash copier indicates that an error has occurred, if the next address
to compare is pointing to an area outside of memory. To work around this issue, instead of relying on the
FLASH_COPY_CTRL_ERROR bit, a user application can verify that FLASH_COPY_SRC_ADDR_PTR points to the
address one further than the last address that would have been checked. If FLASH_COPY_SRC_ADDR_PTR is set to
this value, the comparison has succeeded; if not, the comparison points to the first word that has failed the
comparison.
7.5.1 SYSCTRL_FLASH_OVERLAY_CFG
www.onsemi.com
111
onsemi
RSL10 Hardware Reference
7.5.2 SYSCTRL_FLASH_READ_CNT
7.5.3 SYSCTRL_MEM_ERROR
www.onsemi.com
112
onsemi
RSL10 Hardware Reference
Hex
Field Name Value Symbol Value Description
Value
MEM_ERROR_CLEAR MEM_ERROR_CLEAR Clear the memory error flags 0x1
BB_MEM_ERROR BB_MEM_NO_ERROR_DETECTED No baseband memory error detected 0x0*
BB_MEM_ERROR_DETECTED Baseband has accessed an isolated 0x1
memory
FLASH_COPIER_MEM_ERROR FLASH_COPIER_MEM_NO_ERROR_DETECTED No flash copier memory error 0x0*
detected
FLASH_COPIER_MEM_ERROR_DETECTED Flash copier has accessed an isolated 0x1
memory
DMA_MEM_ERROR DMA_MEM_NO_ERROR_DETECTED No DMA memory error detected 0x0*
DMA_MEM_ERROR_DETECTED DMA has accessed an isolated 0x1
memory
LPDSP32_DMEM_ERROR LPDSP32_DMEM_NO_ERROR_DETECTED No LPDSP32 data memory error 0x0*
detected
LPDSP32_DMEM_ERROR_DETECTED LPDSP32 has accessed an isolated 0x1
data memory
LPDSP32_PMEM_ERROR LPDSP32_PMEM_NO_ERROR_DETECTED No LPDSP32 program memory error 0x0*
detected
LPDSP32_PMEM_ERROR_DETECTED LPDSP32 has accessed an isolated 0x1
program memory
7.5.4 SYSCTRL_MEM_POWER_CFG
www.onsemi.com
113
onsemi
RSL10 Hardware Reference
www.onsemi.com
114
onsemi
RSL10 Hardware Reference
7.5.5 SYSCTRL_MEM_ACCESS_CFG
www.onsemi.com
115
onsemi
RSL10 Hardware Reference
www.onsemi.com
116
onsemi
RSL10 Hardware Reference
7.5.6 SYSCTRL_MEM_RETENTION_CFG
www.onsemi.com
117
onsemi
RSL10 Hardware Reference
7.5.7 SYSCTRL_MEM_ARBITER_CFG
www.onsemi.com
118
onsemi
RSL10 Hardware Reference
www.onsemi.com
119
onsemi
RSL10 Hardware Reference
www.onsemi.com
120
onsemi
RSL10 Hardware Reference
7.5.8 SYSCTRL_MEM_TIMING_CFG
www.onsemi.com
121
onsemi
RSL10 Hardware Reference
7.6.1 FLASH_IF_CTRL
www.onsemi.com
122
onsemi
RSL10 Hardware Reference
7.6.2 FLASH_MAIN_WRITE_UNLOCK
7.6.3 FLASH_MAIN_CTRL
www.onsemi.com
123
onsemi
RSL10 Hardware Reference
7.6.4 FLASH_DELAY_CTRL
www.onsemi.com
124
onsemi
RSL10 Hardware Reference
7.6.5 FLASH_CMD_CTRL
7.6.6 FLASH_IF_STATUS
www.onsemi.com
125
onsemi
RSL10 Hardware Reference
www.onsemi.com
126
onsemi
RSL10 Hardware Reference
7.6.7 FLASH_ADDR
7.6.8 FLASH_DATA
7.6.9 FLASH_NVR_WRITE_UNLOCK
www.onsemi.com
127
onsemi
RSL10 Hardware Reference
7.6.10 FLASH_NVR_CTRL
7.6.11 FLASH_PATCH_ADDR
7.6.12 FLASH_COPY_CFG
www.onsemi.com
128
onsemi
RSL10 Hardware Reference
7.6.13 FLASH_COPY_CTRL
7.6.14 FLASH_COPY_SRC_ADDR_PTR
www.onsemi.com
129
onsemi
RSL10 Hardware Reference
7.6.15 FLASH_COPY_DST_ADDR_PTR
7.6.16 FLASH_COPY_WORD_CNT
7.6.17 FLASH_ECC_CTRL
Hex
Field Name Value Symbol Value Description
Value
ECC_COR_CNT_INT_THRESHOLD FLASH_ECC_COR_INT_THRESHOLD_DISABLED Interrupt is disabled 0x0
FLASH_ECC_COR_INT_THRESHOLD_1 Send a Arm Cortex-M3 core 0x1*
interrupt when one or more
correctable errors are
detected.
FLASH_ECC_COR_INT_THRESHOLD_255 Send a Arm Cortex-M3 core 0xFF
interrupt when 255 or more
correctable errors are
detected.
COPIER_ECC_CTRL FLASH_COPIER_ECC_DISABLE Disables ECC when reading 0x0
flash through flash copier
FLASH_COPIER_ECC_ENABLE Enables ECC when reading 0x1*
flash through flash copier
CMD_ECC_CTRL FLASH_CMD_ECC_DISABLE Disables ECC when reading 0x0
flash through flash mapped
register
FLASH_CMD_ECC_ENABLE Enables ECC when reading 0x1*
flash through flash mapped
register
IDBUS_ECC_CTRL FLASH_IDBUS_ECC_DISABLE Disables ECC when reading 0x0
flash through I-Bus and
D-Bus
FLASH_IDBUS_ECC_ENABLE Enables ECC when reading 0x1*
flash through I-Bus and
D-Bus
www.onsemi.com
130
onsemi
RSL10 Hardware Reference
7.6.18 FLASH_ECC_STATUS
Hex
Field Name Value Symbol Value Description
Value
ECC_COR_ERROR_CNT_CLEAR FLASH_ECC_COR_ERROR_CNT_CLEAR Reset the flash corrected errors 0x1
counter
ECC_UNCOR_ERROR_CNT_CLEAR FLASH_ECC_UNCOR_ERROR_CNT_CLEAR Reset the flash uncorrected errors 0x1
counter
ECC_ERROR_ADDR_CLEAR FLASH_ECC_ERROR_ADDR_CLEAR Reset the flash address of the latest 0x1
detected error
ECC_COR_ERROR_CNT_STATUS FLASH_ECC_NO_CORRECTED_ERROR Indicates 0x0*
FLASH_ECC_COR_ERROR_CNT is
zero
FLASH_ECC_CORRECTED_ERROR Indicates 0x1
FLASH_ECC_COR_ERROR_CNT is
not zero
ECC_UNCOR_ERROR_CNT_STATUS FLASH_ECC_NO_UNCORRECTED_ERROR Indicates 0x0*
FLASH_ECC_UNCOR_ERROR_CNT
is zero
FLASH_ECC_UNCORRECTED_ERROR Indicates 0x1
FLASH_ECC_UNCOR_ERROR_CNT
is not zero
7.6.19 FLASH_ECC_ERROR_ADDR
7.6.20 FLASH_ECC_UNCOR_ERROR_CNT
7.6.21 FLASH_ECC_COR_ERROR_CNT
www.onsemi.com
131
CHAPTER 8
8. RF Front-End
8.1 OVERVIEW
The RF front-end (RFFE) transceiver is an ultra low-power 2.4 GHz radio, handling data rates up to 2 Mbps. It
supports several wireless protocols such as Bluetooth low energy technology, custom, or proprietary protocols. The RF
front-end communicates with:
• The Arm Cortex-M3 processor and the DMA, through a dedicated APB bridge that accesses the RF front-end
internal configuration registers (refer to Appendix A, “Control and Configuration Registers” on page 415).
The Arm Cortex-M3 processor always has priority over the DMA. A read operation inserts two wait states,
and additional wait states are inserted when an SPI operation is active. A write operation inserts two or more
wait states, and additional wait states are inserted when an SPI operation is active.
• The Arm Cortex-M3 processor uses a simple baseband to provide packet handling, data transfers (supported
by interrupts and GPIOs as proprietary debug resources).
• The baseband controller communicates through the internal SPI interface and dedicated CLK and DATA
signals. All these signals are multiplexed through the DIO block, as shown in Figure 34 on page 348.
An RF front-end arbiter deals with simultaneous accesses between the Arm Cortex-M3 processor, the DMA, and
the internal SPI (baseband controller), with priority given to the SPI interface. The RF is powered by the VDDRF and
VDDM regulators. Once these are enabled, the registers described in this chapter control the power, access, and
interrupts.
Within the RFFE system block, as seen in Figure 11 on page 133, the analog components consists of the:
• Integrated inductors
• 48 MHz crystal oscillator and PLL
• Full Tx and Rx chains including:
• On chip matching
• Frequency synthesis
• Power amplifier (PA) for Tx
• Low-noise amplifier (LNA) for receiving with phase
• Signal strength (received signal strength indication or RSSO) components for Rx
www.onsemi.com
132
onsemi
RSL10 Hardware Reference
The RF front-end implements a full transceiver, with the following digital features:
• Encoding (refer to Section 8.4, “Modulator and Radio Configuration” on page 141)
• IEEE 802.15.4 chip encoding and decoding
• Manchester encoding
• Data whitening
Combined with the 2 Mbps analog front end, the RFFE chip is capable of addressing Bluetooth low energy
technology and custom or proprietary protocols.
In order to modify the RF power and access configurations, the SYSCTRL_RF_POWER_CFG (refer to Section 8.1.2,
“SYSCTRL_RF_POWER_CFG”) and SYSCTRL_RF_ACCESS_CFG (refer to Section 8.1.3,
“SYSCTRL_RF_ACCESS_CFG”) registers respectively are used. By enabling the RF_POWER bit in
SYSCTRL_RF_POWER_CFG, the VDDM is connected to the RF block. To remove the RF block isolation, enable the
RF_ACCESS bit in SYSCTRL_RF_ACCESS_CFG.
The registers configuring the RF front-end are accessed internally, directly by the analog Bluetooth baseband or
through an SPI bus tied to the peripheral bus, with the internal RFFE SPI interface having priority over the SPI bus tied
www.onsemi.com
133
onsemi
RSL10 Hardware Reference
to the APB interface. For this reason, registers are grouped into their byte accesses only. In many instances where the
grouped registers do not share a common use case, the registers are considered unnamed, and are only given a number.
For these registers, this chapter uses the ungrouped register names.
IMPORTANT: The RF front-end registers support read-only bit-band access. Any register bit that normally has
read-write access only has read access defined when used in a bit-band configuration, as bit-band write access
requires a read-modify-write that is not supported by the SPI bus tied to the APB interface.
For example, register RF_REG00 is an unnamed register that groups together the MODE, MODE2, FOURFSK_CODING,
and DATAWHITE_BTLE registers, and an explicit description of RF_REG00 is not included (whereas descriptions of the
four grouped registers are).
Many of the RF front-end registers are supported by two distinct register banks to allow efficient switching
between register configurations needed to change the modulation parameters during run time. The banked registers are
marked in Section 8.5, “RF Front-End Registers” on page 160. Bank selection is controlled using the BANK bit-field
from the BANK register (RF_REG05).
NOTE: Register bank 0 is typically used by the Bluetooth baseband for 1 Mbps configurations, and
register bank 1 is typically used for 2 Mbps configurations.
8.1.2 SYSCTRL_RF_POWER_CFG
8.1.3 SYSCTRL_RF_ACCESS_CFG
www.onsemi.com
134
onsemi
RSL10 Hardware Reference
The RFFE implements the physical layer requirements of Bluetooth low energy technology, as accessed through
the Bluetooth baseband hardware (see Chapter 9, “Bluetooth Low Energy Baseband” on page 202). It can also be used
for a variety of standard (e.g., 802.15.4-based) protocols, proprietary protocols, and user- or onsemi-defined custom
protocols.
IMPORTANT: When controlled by the Bluetooth baseband hardware, the RF front end is configured during
BLE initialization, setting the contents of all registers in both register banks (with the exception of the PA_PWR
register). If a non-standard configuration is required for a use case that also uses the Bluetooth baseband, any
register updates must be applied after initialization of the Bluetooth baseband.
The RF_REG00 MODE and MODE2 sub-registers and configuration options effectively define how the RFFE
functions. (refer to Section 8.5.1, “RF_REG00” for full register details.)
NOTE: There are restrictions on writing to registers (i.e., no bit-band access, access to internal bus, etc.).
The following are the various configurations for MODE and MODE2 operations:
• MODE
• MODE_TX_NRX: if set to 1, uses Tx, otherwise Rx.
• MODE_EN_SERIALIZER: if set to 1, enables the serializer.
• MODE_EN_DESERIALIZER: if set to 1, enables the deserializer.
• MODE_EN_FSM: if set to 1, enables the radio FSM.
• MODE_NOT_TO_IDLE: in FSM Mode, if set to 1, indicates to the FSM to go into Suspend Mode after a Tx
or Rx packet.
• MODE 2
• MODE2_TESTMODE: set the output Test Mode.
• MODE2_PSK_NFSK: if set to 1, the PSK Mode is selected, FSK otherwise.
• MODE2_DIFF_CODING: if set to 1, enables the differential coding/decoding.
www.onsemi.com
135
onsemi
RSL10 Hardware Reference
The RF_XTAL_CTRL register allows modifications to the crystal timing trim settings (from 43 to 341 s), to bypass
control algorithms, and provides configuration used to vary power consumption and control the oscillator.
IMPORTANT: When using the Bluetooth baseband or Bluetooth stack library, the default configuration of the
48 MHz crystal is required. For other configurations, the default configuration options for this register are
recommended.
Additionally, the ANALOG_INFO_CLK register provides status information for the RFFE analog components,
indicating when the various components of the oscillator are ready and providing information regarding the RF
sub-band comparator outputs
For more information on integration and use of this clock by the rest of the system, see Section 6.2.2, “48 MHz
Crystal Oscillator” on page 75.
IMPORTANT: 48 MHz crystal oscillator cannot be enabled unless the RFFE is powered and accessible.
NOTE: A delay of 1.3 s is enforced at startup prior to any RF related block being accessible after
enable.
The 48 MHz crystal oscillator can be trimmed by changing the PLL_CTRL_XTAL_TRIM bit-field from the
PLL_CTRL register. This trim bit field is divided into 5 MSBs that provide coarse trimming, and 3 LSBs for fine
trimming.
If the XTAL_CTRL_BYPASS bit in the XTAL_CTRL register is cleared, the crystal is automatically trimmed to 48
MHz using an iterative algorithm, with the trimming rate configured using the XTAL_CTRL_XTAL_CKDIV bit-field
(larger divisors provide longer clock trimming periods for more averaging). If the XTAL_CTRL_BYPASS bit in the
XTAL_CTRL register is set, the value set to the PLL_CTRL_XTAL_TRIM bit-field is used directly.
The digital Tx and Rx contain a full packet handler. It has various features, including:
The RFFE has an internal SPI and 10 GPIOs; for more information see Section 11.9, “Support Interfaces” on
page 347.
The RFFE has a number of GPIOs that can be configured to assist in monitoring IRQs and other signals while
debugging protocol implementations that use the RFFE. The configuration of the GPIOs is specified by the
PAD_CONF_*_PAD_*_CONF bit-fields from the PAD_CONF_1 to PAD_CONF_5 registers. The values of these fields are
associated with the following functions, as shown in Table 10:
www.onsemi.com
136
onsemi
RSL10 Hardware Reference
Table 10. Functions Associated with Register Values Configuring the GPIO
The RFFE chip has six IRQs that can be used to increase the usability of the chip. These are defined below:
RF_TX_IRQ
Interrupt is raised at the end of a packet transmission.
The IRQ is cleared by reading the IRQ_STATUS register.
RF_RXSTOP_IRQ
Interrupt is raised when the FSM stops the Rx Mode, independently of whether a packet has
been received or not.
The IRQ is cleared by reading the IRQ_STATUS or the DESER_STATUS register.
RF_IRQ_RECEIVED_IRQ
Interrupt is raised when a packet is received and stored in the FIFO.
The IRQ is cleared by reading the IRQ_STATUS or the DESER_STATUS register.
RF_SYNC_IRQ
Interrupt is raised when the sync word is detected in Rx Mode.
The IRQ is cleared by reading the IRQ_STATUS or the DESER_STATUS register.
RF_TXFIFO_IRQ
Interrupt is raised when the TXFIFO_NEAR_UNDERFLOW is high.
Since the IRQ is tied to the “near underflow” flag of the FIFO, it can be cleared by filling the
FIFO with enough data.
RF_RXFIFO_IRQ
Interrupt is raised when the RXFIFO_NEAR_OVERFLOW is high.
Since the IRQ is tied to the “near overflow” flag of the FIFO, it can be cleared by emptying the
FIFO.
www.onsemi.com
137
onsemi
RSL10 Hardware Reference
The IRQs can be activated by the IRQS_MASK field of the IRQ_CONF register. For example, the RF_RXSTOP_IRQn
can be activated by setting bit field IRQS_MASK to 1. By default, the IRQs are active high, but this behavior can be
switched by writing 1 to the IRQ_ACTIVE_LOW field of the IRQ_CONF register. The pad can also be configured to be in
HIZ state when the IRQ is not active, by setting the IRQ_CONF_IRQ_HIGH_Z field of the same register to 1.
The packet handler supports several packet formats. Some of the possible packet formats are shown in Figure 12.
en_packet_len_fix=1
Preamble Sync word
Message en_address=0
0 to 256 8, 16 or 32
up to 255 bytes en_crc=0
bytes bits
en_packet_len_fix=0
Preamble Sync word
Length Message en_address=0
0 to 256 8, 16 or 32
byte up to 255 bytes en_crc=0
bytes bits
en_packet_len_fix=0
Preamble Sync word packet_len_pos=0
0 to 256 8, 16 or 32 Length Message CRC
en_address=0
bytes bits byte up to 255 bytes 1−32 bits
en_crc=1
en_packet_len_fix=0
Preamble Sync word packet_len_pos=0
0 to 256 8, 16 or 32 Length Address Message CRC
en_address=1
bytes bits byte byte up to 255 bytes 1−32 bits
en_crc=1
en_packet_len_fix=0
Preamble Sync word packet_len_pos=1
0 to 256 8, 16 or 32 Protocol Length Address Message CRC
en_address=1
bytes bits ID byte byte up to 255 bytes 1−32 bits
en_crc=1
Figure 12. Various packet formats supported by the serializer. The bytes in blue can be inserted automatically.
8.3.1.1 Preamble
The preamble can be added automatically to the data, even if the packet structure is handled completely by the
micro-controller. This feature can be turned on by simply setting the EN_PREAMBLE field of the PACKET_HANDLING
register to 1. The length of the preamble in bytes is found in the PREAMBLE_LEN field of the PREAMBLE_LENGTH
register increased by 1, and the preamble itself is located in the PREAMBLE register.
8.3.1.2 Pattern
The pattern (or synchronization word) is introduced automatically if the preamble is present. The length of the
pattern is contained in the PATTERN_WORD_LEN field of the PACKET_EXTRA register. The pattern itself is found in the
PATTERN registers. In the case of 8 or 16 bits, it is always the LSBs that are used. Pattern detection is enabled by setting
the EN_PATTERN bit of the PACKET_HANDLING register. Pattern detection can accept some errors: this is useful with
very short preambles, since the clock recovery is not yet complete. The maximum number of errors accepted in pattern
recognition is located in the PATTERN_MAX_ERR field of the PACKET_EXTRA register.
www.onsemi.com
138
onsemi
RSL10 Hardware Reference
register specifies the position of this byte. If it is set to 0, this means that the first byte of the serializer contains the
packet length; if it is set to 1, the second bite contains the packet length; and so on.
The packet length can be specified in several ways: for instance, it can take into account the CRC, or the packet
length itself. The PACKET_LEN_CORR of the previous register contains the correction to apply to the packet length byte.
The packet handler always considers the length of the packet, from the first byte after the packet length byte, until the
last byte before the CRC. This field corrects the packet length. For example, if a standard protocol, such as Bluetooth
low energy technology, considers that the CRC is taken into account in the packet length, a packet length of 5 means
that there are 3 data bytes and 2 CRC bytes. So the PACKET_LEN_CORR has to be set to - 2.
packet_len_corr=0
length byte = 3
packet_len_corr=−2
length byte = 5
packet_len_corr=−2
length byte = 5
packet_len_corr=−4
length byte = 7
Figure 13. Examples of Packet Length Definition and the Associated Correction
In the case of a variable packet length, the PACKET_LENGTH register has another meaning: on the Rx side, this
register can be used to specify the maximum packet length. If a protocol supports only packets with a maximum of 64
bytes, this register can be set to 64. If a received packet has a length greater than 64, a packet length error is generated
by the deserializer.
8.3.1.4 Address
An address can be inserted automatically after the packet length, if the ADDRESS_TX field of the
ADDRESS_CONF_EN register is set to 1. The address is given by the ADDRESS bit of the ADDRESS register. On the Rx
side, if the ADDRESS_CONF_EN_ADDRESS_RX field is set to 1, an address comparison is made. If the addresses do not
match, an address error is generated by the deserializer. Moreover, a broadcast address can be specified in the
ADDRESS_BR bit of the ADDRESS_BROADCAST register. The Rx broadcast address reception can be enabled by setting
the ADDRESS_RX_BR of the ADDRESS_CONF_EN register to 1; in such a case, the RS accepts the normal address and the
broadcast address during reception. Confirmation of broadcast address reception is found in the IS_ADDRESS_BR field
of the RF_DESER_STATUS register.
The address length can be 8 or 16 bits depending on the value of the ADDRESS_LEN of the ADDRESS_CONF register.
8.3.1.5 Multi-Frame
If the MULTI_FRAME bit of the PACKET_HANDLING_EN register is set to 1, Multi-Frame Mode is enabled. (A frame
is composed of the data and the corresponding CRC.) In this mode, a preamble and a single synchronization word are
followed by multiple frames. As long as the MULTI_FRAME bit is set to 1, Multi-Frame Mode is enabled.
www.onsemi.com
139
onsemi
RSL10 Hardware Reference
8.3.2 CRC
The CRC is a hash function of the data, used to detect errors during transmission. The value of the CRC is added
at the end of the packet. Errors during transmission are detected by a difference between the calculated CRC and the
received one. The CRCs are generally specified by a polynomial.
The digital baseband can calculate the CRC on the fly, and insert it at the end of the packet. The CRC polynomial is
programmable, and it can have a length from 1 to 32 bits. The length of the polynomial is specified by the polynomial
itself. The CRC polynomial is contained in the RF_CRC_POLYNOMIAL register. The polynomial is represented in
Koopman notation: the nth bit specifies the (n+1) order; the order 0 (the 1 at the end of the polynomial) is ignored.
Some examples:
This hardware CRC implementation works on the serialized stream, so the bit order depends on the
PACKET_HANDLING_LSB_FIRST value. At the insertion of the CRC, the value of the CRC is simply shifted out.
The start value of the CRC register is contained in the RF_CRC_RST register.
CRC calculation, insertion, and validation are performed automatically if the EN_CRC field of the
PACKET_HANDLING_EN register is set to 1.
www.onsemi.com
140
onsemi
RSL10 Hardware Reference
The CRC calculation of the packet length value can be controlled through the CRC_ON_PKTLEN field of the same
register. This is useful for the standards in which the CRC is on the MAC layer – for example, the IEEE 802.15.4
standard.
The two FIFOs’ data is accessible via the RF_TXFIFO and RF_RXFIFO registers. This access can be achieved in
burst mode without having to manually increment addresses. A write to the RF_TXFIFO register corresponds to a push,
while a read of the RF_RXFIFO register corresponds to a pop. Reading the RF_TXFIFO register is possible, but this
results in no action on the FIFO (no pop implied). Writing to the RF_RXFIFO register is not possible.
The status of each FIFO can be read in the TXFIFO_STATUS_BIST and RXFIFO_STATUS_BIST registers. There
are indications regarding overflows, underflows, or if the FIFO is empty or full. The NEAR_UNDERFLOW and
NEAR_OVERFLOW fields are controlled by the FIFO_FIFO_THR value of the FIFO register for the Rx, and the
FIFO_THR_TX value of the FIFO2 register of the Tx. Table 14 on page 141 gives the thresholds for the value of
FIFO_FIFO_THR.
The FIFOs can be flushed at any time by setting bit 0 of their respective status registers to 1. Alternatively, the
FIFOs can be flushed at the beginning of a reception (Rx case), or at the end of a transmission (Tx case).
During the reception of a message, many events can occur: for instance, a CRC error, or a packet length error. In all
cases, the data must be stored in the FIFO, at least temporarily. If an event occurs, there are two choices: keep the data
in the FIFO and let the external controller examine the content, or simply flush the received data. To avoid a situation in
which the user starts to look at the FIFO’s content before the end of the packet, it is important that the FIFO status is
only updated at the end of the packet.
The Rx FIFO supports the above two choices. The automatic flush is controlled by the
FIFO_FLUSH_ON_ADDR_ERR, FIFO_FLUSH_ON_PL_ERR, FIFO_FLUSH_ON_CRC_ERR, and FIFO_FLUSH_ON_OVFLW
fields of the FIFO register. The RX_FIFO_ACK field of the same register is responsible for choosing the behavior of the
FIFO status. If it is set to 1, the packet has to be received correctly before updating the FIFO status.
www.onsemi.com
141
onsemi
RSL10 Hardware Reference
Option Description
Data whitening The data can be whitened by setting the EN_DATAWHITE bit of the CODING register. The
whitening sequence is a PN9. Whitening is used to avoid long sequences of 0 or 1.
In the case of the Bluetooth low energy technology standard, the LFSR used is a Galois
LFSR7 with a specific reset status. This particular LFSR can be activated by setting the
DW_BTLE bit of the DATAWHITE_BTLE register; note that the EN_DATAWHITE bit field of
the CODING register also needs to be set. On the same register, the DW_BTLE_RST field
specifies the reset status of the LFSR.
Manchester Manchester encoding is available through the EN_MANCHESTER bit of the CODING register.
The code is the same as that used in the IEEE 802.3 standard: a 1 is coded by a rising edge
(01) and a 0 is coded by a falling edge (10).
NOTE: This can be inverted by using the BIT_INVERT configuration.
IEEE 802.15.4 Bit to Chip The IEEE 802.15.4 standard specifies a conversion from a sequence of 4 bits to a transmitted
sequence of 32 chips. This conversion can be activated by setting the EN_802154_B2C bit
of the CODING register to 1.
NOTE: On the Rx side when this bit is set, the chip sequence synchronization
is made on sequences of 0000: this is mainly due to the fact that on the
IEEE 802.15.4 standard, the preamble is composed by this sequence.
However, pattern recognition is working transparently. For further
information, see the IEEE Computer Society publication Part 15.4 of
Wireless Medium Access Control (MAC) and Physical Layer (PHY)
Specifications for Low-Rate Wireless Personal Area Networks
(WPANs).
Linear to Frequency The IEEE 802.15.4 standard specifies an O-QPSK modulation. This can be considered linear,
since the In phase and Quadrature phases are encoded directly. However, on the RFFE chip,
there is a direct modulation, meaning that the frequency is encoded directly. To maintain the
linear code and to be able to modulate in the frequency domain, a linear to frequency coding is
available, and can be activated by setting the EN_802154_L2F bit of the CODING register
to 1.
NOTE: On the Rx side, a phase ambiguity can arise: to get rid of it, the Rx
correlators work on the frequency spreading sequences, and not on the
phase sequences.
Bit Inversion When the bit BIT_INVERT of the CODING register is set to 1, the encoding stream and the
decoding stream are inverted.
Bit Order in Quadrature Modulations The bit order in quadrature modulation (especially O-QPSK) can be determined by the
EVEN_BEFORE_ODD, OFFSET, and I_NQ_DELAYED bits of the CODING modulation.
Differential Encoding This can be activated by setting the DIFF_CODING of the MODE2 register. This encoding is
not available for every coding option. However, on the Rx side, every coding option (especially
the 2 bits/symbol modulation) is available.
f sys
dr_m = ----------- – 1
8DR
www.onsemi.com
142
onsemi
RSL10 Hardware Reference
N
dr_eff = ---- dr_m
D
In Tx, this interpolation adds a gain on the signal, meaning that the modulation index changes. The amplitude is
multiplied by the following, where the TX_FRAC_GAIN bit is specified in the register FRAC_CONF:
D
G = ------------------------------------------
3 + tx_frac_gain
2
For the Rx, there is also an amplitude gain due to the fractional data rate. The gain is given by the same calculation
as is used in Tx. Since the fractional data-rate block is located at the input of the demodulator, this has to be taken into
account when calculating the amplitude of the signal at the output of the matched filter (see Section 8.4.3.4, “Matched
Filtering” on page 154).
19 21
f RF 2
center_frequency = ------------------------------------
f refTx
The RFFE chip has the option of having two different clock references, depending on the operational mode: Tx or
Rx. The Tx reference clock is five times larger than the Rx clock. So to have the same frequency in Rx and Tx, the
digital central frequency needs to be changed. However, the digital block has the capability of switching automatically
between the Tx value and the Rx value. To switch this feature on, the ADAPT_CFREQ bit of the CENTER_FREQ register
must be set to 1.
NOTE: The meaning of the CENTER_FREQUENCY field changes if automatic adaptation is turned on.
When it is set to 0, its meaning is that specified in the previous equation.
If it is set to 1, it is specified in the following formula, where fRF is the RF frequency, and frefTx is the reference
frequency in Tx Mode:
21
f RF 2
center_frequency = -------------------------
f refTx
The corresponding frequencies are obtained by dividing the value by 4 for the Tx Mode, and by adding this value to
the same value divided by 4 in Rx Mode.
www.onsemi.com
143
onsemi
RSL10 Hardware Reference
8.4.1.3 Channels
In the RFFE it is possible to work with channels.This means that only a base frequency and the channel spacing
need to be specified; then the user needs only to specify the channel wanted. The advantage of this is that channel
specification requires only one register access, while the central frequency specification requires four register accesses.
This function is activated by setting the EN_CHANNEL_SEL bit of the CHANNELS_2 register to 1. The channel
spacing is specified in the CHANNEL_SPACING field of the CHANNELS_1 register. The value in this field is given by the
following formula, where fsp is the channel spacing:
25
f SP 2
CHANNEL_SPACING = ------------------------
f refTx
If channel 4 is wanted (that means 4 × fsp from the central frequency), the value 0x4 must be written to the
CHANNEL register.
T_GRANULARITY_TX – 2
T_GRAN_TX = 2
T_GRANULARITY_RX – 2
T_GRAN_RX = 2
Therefore, the timings can range from 0.25 s to 262.1 ms, a range of sufficient size for the purpose.
• T_GRANULARITY_TX = 2
• T_SUBBAND_TX = 4
• T_TX_RF = 0
• T_DLL = 4
• T_PLL_TX = 2
If the FSM is activated with the Activate Tx Only command, which means without performing subband selection,
then during the startup sequence of the Tx, the FSM timer is set to 4; this is the maximum value between T_TX_RF,
T_PLL_TX, and T_DLL, meaning Tx will be activated after 5 s.
www.onsemi.com
144
onsemi
RSL10 Hardware Reference
If subband selection is performed during the activation, the T_PLL_TX and T_DLL values are increased by the value
of T_SUBBAND_TX. As result, the internal timer starts with a value of 8, which is the maximum value between
T_PLL_TX + T_SUBBAND_TX, T_DLL + T_SUBBAND_TX, and T_TX_RF.
Tx Off time is equivalent to Tx ramp-down from the instant that the FSM state is set to idle.
The granularity is 4 s and in this case the maximum value is 4, so the internal timer is set to 4.
NOTE: Since the granularity of the counter is 4 s, this whole sequence takes 20 s.
NOTE: This is only the power-up sequence for the Rx; if the required data is at the antenna at the exact
moment of the rising edge of the digital enable signal, the data is only made available after the
Rx processing delay. If subband selection is activated, the behavior is similar to the Tx case; the
subband time is added to the PLL power-up time only.
Rx Off time happens immediately when the FSM state changes to idle.
• 0b000: 0.25 s
• 0b001: 0.31 s
• 0b010: 0.5 s
• 0b011: 0.81 s
• 0b100: 1.5 s
• 0b101: 2.1 s
• 0b110: 2.8 s
• 0b111: 4.1 s
The steepness of the ramp-up is controlled by the TAU_PA_RAMPUP(1:0) parameter. The ramp-up duration
depends on the final value of the PA back-off (in the PA_CONF register). In the case of the maximum final value of the
PA back off and starting from step 0, the conversion table is as follows:
• 0b00: 6.0 s
• 0b01: 3.0 s
• 0b10: 2.0 s
• 0b11: 1.5 s
www.onsemi.com
145
onsemi
RSL10 Hardware Reference
For Bluetooth Low Energy configuration, subband selection is used in Tx but not in Rx. Tx On time takes 30 s
and Rx On time takes 4 s. Tx ramp-up and ramp-down times are equal to 2 s for maximum PA final value.
coef_1, coef_2, ... coef_14, coef_15, coef_15, coef_14, ..., coef_2, coef_1
The over-sampling is set to 8; hence, the pulse shape is four symbols long.
If the PULSE_NSYM bit of the MOD_TX register is set to 1, the second half of the pulse shape is inverted.
NOTE: The modulation is obtained by converting both the convolution of the pulse shape and the
data-stream into a series of pulses (not rectangles). In the case of a GFSK modulation, the
specified pulse shape is not the impulse response of an exponential filter, but the convolution of
this response with a rectangle that is 1 symbol long.
2 f
h = ---------------
DR
After the pulse shaper, the data is multiplied by a specified factor M, and then added to the central frequency. If a
series of 1 is assumed, the output of the pulse shape has an output of Q. The modulation index can be rewritten as:
2 M Q f refTx
h = -----------------------------------------------
19
DR 2
The factor M is specified through mantissa (man) and exponent (exp), by the formula:
man exp
M = 1 + ---------- 2
16
• Fix the pulse shape and adapt the multiplication factor to achieve the desired modulation index.
• Fix the multiplication factor and adapt the pulse shape.
The second method is not optimal. In fact, it can occur that the exponent part of the multiplicative factor has to be
used. Moreover, there is a loss of granularity if this method is used.
The exponent and the mantissa value can be specified in the TX_MULT register (TX_MULT_EXP and TX_MULT_MAN
fields).
NOTE: If the interpolator is used, the interpolation gain has to be taken into account.
www.onsemi.com
146
onsemi
RSL10 Hardware Reference
A rectangular pulse shape is chosen with a value of 120 (coef_0,.., coef_11 = 0, coef_12...coef_15=120). The value
Q is equal to 120: The modulation index for an MSK modulation is 0.5. The multiplicative factor M is:
19
h DR 2
M = --------------------------------- = 7.282
2Q f refTx
This value must be split into mantissa and exponent. The exponent is the floor of the log2 of M, which is 2. The
resulting mantissa is 13.
13 2
M = 1 + ------ 2 = 7.25
16
In the case of a 4-FSK modulation, the definition of index modulation must be considered to be the same, but this
results in the additional deviations being at +3 and -3 times the nominal deviation. So, for example, if a 2-FSK
configuration is defined for ±250 kHz, it results in the 4FSK version also having ±750 kHz as frequency deviations.
8.4.2.3 Interpolator
At the end of the Tx chain there is an interpolator. Its main purpose is to avoid quantization steps when the Tx is
working with low data rates. In fact, a quantization step can result in a wider spectrum. The interpolator is a simple first
order cascaded integrator-comb (CIC) interpolator. The input clock is the 8x symbol frequency. The output frequency
fout is specified by the ck_tx_m(4:0) of the MOD_TX register. Its definition is:
f in
f out = ------------------------------
ck_tx_m + 1
The interpolator is enabled using the EN_INTERP bit of the same register. If the interpolator is disabled, the output
signal is re-sampled at the fout frequency.
NOTE: It is preferable that the fout frequency is an integer multiple of the fin frequency (8x symbol rate).
NOTE: The back-off value is also used by the PA ramp-up algorithm. The value at the end of the
ramp-up is the actual value in the register.
The bias current PA backoff bias (IQ_RXTX_1 in register BIAS_0) allows the slope of the back-off curve to be
changed. However, this generates a discontinuity on the curve between maximum output power (PA_PWR=12) and the
first back-off step (PA_PWR=11)
When the bit PA_PWR(4) = 1, additional (but discontinuous) power reduction steps can be configured. Power levels
are -30dBm for -1 (PA_PWR(4:0) = 11111), and -40dBm for -3 (PA_PWR(4:0) = 11101), the step -2 (PA_PWR(4:0) =
11110) being very much dependent on the PA backoff bias (IQ_RXTX_1(3:0)), in the range from -26dto -40dBm.
www.onsemi.com
147
onsemi
RSL10 Hardware Reference
NOTE: The PA_PWR(5) does not affect output power, but lengthens the PA power ramp-up sequence to
provide less a lower transient draw from the supply.
f sys
f sc = ---------------
1 + Kf
The bias of the filter can be tuned via the IQ_FI_BW and IQ_FI_FC fields of the register FILTER_BIAS.
An approximated configuration of the filter can be made by using the following equations:
f sc
f c = ---------------- 238 + 93.6 iq_fi_fc [kHz]
2MHz
f sc
bw = ---------------- 178 + 63.5 iq_fi_bw [kHz]
2MHz
For example, in Bluetooth low energy technology, DIV_FILT=7, IQ_FI_FC=8, and IQ_FI_BW=14, so:
16MHz
-------------------
8
f c = ------------------- 238 + 93.6 8 = 986.8kHz
2MHz
16MHz
-------------------
8
bw = ------------------- 178 + 63.5 14 = 1067kHz
2MHz
In the case of an analog baseband, there are some issues regarding the analog baseband blocks. In fact, the
intermodulation frequency needs to be kept high enough to avoid pulling. Moreover, some modulations require a larger
bandwidth of the channel filter: this can be achieved only by increasing the clock frequency of the channel filter and the
phase ADC.
Resampling is realized with a fractional decimator. (It is supposed that the front end sampling frequency is always
higher than the demodulator.) Fractional decimation is realized through an interpolator followed by a decimator.
www.onsemi.com
148
onsemi
RSL10 Hardware Reference
Interpolator Decimator
fH fOSR
Figure 14. Simplified Block Diagram of the Resampler Block for the Phase
Note that in Figure 14, acc stands for “accumulator”, and deriv stands for “derivator”. While the RSSI can be
resampled without any major problems, there might be an issue with the phase with this configuration if the signals are
not handled correctly. Since it can have a gain that is not a power of 2, the periodicity of the phase cannot be respected.
Moreover, because of the implicit filtering, there can be errors when the phase rolls over. This is not the case for the first
interpolator, since the first derivation gives the frequency, which has no rollover. The accumulator generates the phase
correctly, since in the accumulator the saturation implicitly recreates a good phase. The chosen solution to this issue is
to consider the signal to be a frequency, then perform a second order CIC decimator, without the second differentiator.
The resulting signal is simply the frequency without a differentiator, and so it is the phase.
There are several parameters that control the phase and RSSI decimation: EN_RESAMPLE_PH,
EN_RESAMPLE_RSSI, and DIV_PHADC from the FRONTEND register; RESAMPLE_RSSI_G1, RESAMPLE_RSSI_G2, and
RESAMPLE_PH_GAIN from the FRONTEND2 register; and RESAMPLE_PH_IF from the RX_IF register.
The incoming signals are clocked at the frequency given by the DIV_PHADC field. At the first stage they are
upsampled at the fsys frequency, giving a gain of DIV_PHADC+1. At the second stage, the gain is given by the ratio
between fsys and the oversampled frequency, and is equal to DR_M+1. These gains have to be compensated for, at least to
avoid overflows.
Since the phase is converted in frequency and the signal is at an IF, a DC value is present that is amplified during
the gain stages. It is interesting to cancel this DC value directly, which can be done using the RESAMPLE_PH_IF field.
The value of this field is given by the following equation, where fIF is the IF frequency, and fR is the frequency at the
input of the decimation block:
16f IF
resample_ph_if = -------------
fR
The phase then has two gain stages, due to the presence of the interpolator and the decimator. The first gain is given
by the ratio between the maximum frequency of the baseband – that is to say, 16MHz or 24MHz – and the phADC
frequency. This gain is equivalent to:
f sys
G 1 = ---------
fR
The second gain stage is due to the presence of the decimator, and is equivalent to the ratio between the maximum
baseband frequency and the oversampled frequency – that is to say, 8x the data rate. This gain is given by:
f sys
G 2 = -------------
f OSR
www.onsemi.com
149
onsemi
RSL10 Hardware Reference
These gain are compensated for, through the RESAMPLE_PH_GAIN: this variable is an unsigned word. The gain is
given by:
resample_ph_gain – 7
Gc = 2
On the RSSI side, an additional gain is added after the interpolator. This gain is given by 2 -resample_rssi_g1. A second
gain is placed after the decimator, and its value is given by 2 -resample_rssi_g2.
In this block, the IF is also canceled. The IF is specified in the IF2_CLK_OS field of the RX_IF register. This field
is given by the following equation,
where fIF is the intermediate frequency and fsym is the symbol rate:
128f IF
if2_clk_os = ----------------
f sym
In the case of an FSK modulation with 1 bit per symbol, the three values are used to recreate the ISI, so three bits of
the decision output are used: one corresponding to the present state, one for the previous, and one for the next. So the
recreated signal has a value of FSK_FCR_AMP3 in the case of a sequence [1;1;1], FSK_FCR_AMP2 for [1;1;0] or [0;1;1],
and FSK_FCR_AMP1 for [0;1;0]. Respectively, it is -FSK_FCR_AMP3 for [0;0;0], -FSK_FCR_AMP2 for [0;0;1] or [1;0;0],
and -FSK_FCR_AMP1 for [1;0;1].
In the case of a 4-FSK, the mapping is done with the decision values of the I and Q signals. When I and Q are equal
to [0;0] the recreated signal is -FSK_FCR_AMP1. It is FSK_FCR_AMP1 when I and Q are [0;1], - FSK_FCR_AMP3 if I and
Q are [1;0], and finally FSK_FCR_AMP3 with [1;1]. This configuration can be changed by changing the
FOURFSK_CODING register.
If rough carrier recovery is far from being completed, the +f and the – f might be on the same side. Hence, the
decision block only sees a sequence of 0s or 1s. In such a case, the fine carrier recovery works against the correct center
frequency by trying to put the – f to match the +f, which the fine carrier recovery sees as 1s. For this reason, fine
carrier recovery is only applied once the pattern has been detected.
The time constant of the fine carrier recovery block is found in the TAU_PHASE_RECOV register. The block is
enabled by setting the EN_FINE_RECOV bit of the CARRIER_RECOVERY register.
www.onsemi.com
150
onsemi
RSL10 Hardware Reference
m e
3 1 + ---- 2 f sym
8
f l = -----------------------------------------
4
2
The mantissa needs to be specified as an unsigned value, while the exponent is signed. The carrier is searched for in
the range:
f IF – f l :f IF + f l
3Kf sym
f l = --------------------
4
2
m e
K = 1 + ---- 2
8
Example
In the Bluetooth low energy technology standard, the carrier precision is given by ±150 kHz. This means that fl =
150 kHz. The symbol rate in Bluetooth low energy technology is the same as the bit rate, 1 Mbps. So the first equation
is:
6
3 3 K 1 10
150 10 = --------------------------------------
16
K = 0 ,8
1 + m e
---- 2 = 0 ,8
8
It is easy to calculate that the closest values are e = -1 and m = 5: these values give K = 0.8125, and a carrier
recovery range of ±152 kHz. So freq_lim_man(2:0) = 0b101 and freq_lim_exp(2:0) = 0b111 (the prefix 0b means a
binary representation).
www.onsemi.com
151
onsemi
RSL10 Hardware Reference
The differential RSSI is not just the simple derivative of the RSSI; because of its structure, it might miss some
ramp-up. The differential RSSI is the output of an FIR with the following transfer function, where is equal to 1, 2, 4,
or 6, depending on the value of RSSI_DET_DIFF_LL of the RSSI_DETECT register:
–
Hz z = 1 – z
The RSSI detection is fed to a state machine that controls the status of the carrier recovery and other blocks. The
detection can be sent directly or can be delayed: the delay is controlled by the RSSI_DET_WAIT field of the
RSSI_DETECT register. The delays are:
0b00 no delay
As soon as the state machine receives the RSSI detection, a series of tasks can be launched.
www.onsemi.com
152
onsemi
RSL10 Hardware Reference
This system is supposed to work with an 8-bit preamble, so the first two cases correspond to half
of, and the entirety of, the preamble, respectively. The other two cases will average on the sync
word too; in order to get rid of a biased sync word, sync word bias compensation should be
switched on.
www.onsemi.com
153
onsemi
RSL10 Hardware Reference
NOTE: This mode only works with 32-bit sync words and LSB first. It is enabled by setting the
EN_DELLINE_SYNC_DET bit of the register DEMOD_CTRL to 1.
When this mode is activated, it is recommended that the sync word correction bias be activated by setting the
EN_SYNC_WORD_CORR to 1. The SYNC_WORD_BIAS field of the same register also must be set. As a rule of thumb, it
needs to be fixed at ~12 × h, where h is the modulation index. The internal correlator will look for a peak. The precision
of this peak search can be controlled by MAX_ERR_IN_DL_SYNC. In practice, it defines the maximum number of errors
in the sync word, from 0 to 3.
The correction for carrier recovery will be available only after the entire sync word has entered the delay line. This
correction needs to be applied to the sync word in order to provide the decision block with a good input. Because of this,
the delay line needs to be set to a delay greater than 32 symbols.
There is an additional mode that can be used. The delay line is capable of detecting the sync word, so in theory the
sync detection in the deserializer is no longer needed. Moreover, the correlation peak also gives information regarding
the optimal sampling position of the sync word: it is in the middle of the peak. This information can be used to trigger
clock recovery. So the sync word detection in the delay line can be used to trigger correct packet reception. To enable
this functionality, the EN_SYNC_OK_DELAY_LINE bit of the register CARRIER_RECOVERY_EXTRA must be set to 1. In
this case, non-causal processing needs to be disabled. This mode gives the minimum delay on packet reception. Note
that this mode has been tested only for Bluetooth low energy technology-type modulation.
The filter is an FIR, and the coefficients are specified in the COEF* fields of the RX_PULSE_SHAPE registers. The
FIR is symmetrical and its impulse response is given by:
[coef1, coef2, ... coef7, coef8, coef8, coef7, ..., coef2, coef1]
In the case of an FSK modulation, the phase signal at the input of the filter is converted to frequency, and goes
through the FIR. In the case of a PSK modulation, the phase is converted to the linear domain by a simple look-up table
(LUT), and the I and Q signals go through the filter.
At the output of the filter there is a gain stage. This stage is used to normalize the amplitude of the signal. It is
mostly useful in the case of FSK modulation to normalize the modulation index, or in the case of a pre-processing in the
RX path that has a non-controllable gain. The gain is specified by a mantissa and exponent combination. The values of
these coefficients are specified by the FILTER_GAIN_M and FILTER_GAIN_E fields of the FILTER_GAIN register. The
mantissa has to be specified as an unsigned value and the exponent as a signed value. The gain after the FIR is specified
as:
m e
G = 1 + ---- 2
8
www.onsemi.com
154
onsemi
RSL10 Hardware Reference
• Clock recovery refers to the recovery of the sampling instant on the eye diagram. In practice, it is the capacity
to determine the best instant in which to sample the signal, in order to avoid ISI and to sample in the middle of
the eye.
• Data-rate recovery refers to the capability of determining the transmitter data rate. Generally, data rate
recovery is not needed, because the matching of the crystals between the TX and the RX should be good
enough, and the few tenths of ppm can be recovered by the simpler clock recovery algorithm. However, in
some special cases, the mismatch can be too high for simple clock recovery; for example, in the case of a
transmitter with only an RC oscillator, accuracy cannot be guaranteed. Note that once the data rate has been
recovered, the clock still needs to be recovered. Nothing ensures that once the data rate has been recovered, the
sampling instant is in the middle of the eye.
Both clock and data-rate recovery work together on the zero crossings of the signal. In particular, a correlation is
made between the input signal and an expected crossing signal.
This block takes several parameters: the time constants TAU_CLK_RECOV and TAU_DATARATE_RECOV which are
grouped together under the same register, the data-rate recover limit DR_LIMIT from the FILTER_GAIN register, and
the data-rate offset DATARATE_OFFSET from the DATARATE_OFFSET register. The time constants determine the time
that the block needs in order to achieve clock or data-rate recovery, respectively.
DATARATE_OFFSET specifies the initial expected data-rate offset. The offset is specified with a signed 8-bit word.
The full scale corresponds to 12.5% of mismatch.
DR_LIMIT specifies the range of data-rate recovery. The values are given in Table 16 on page 155.
NOTE: For small data-rate mismatches – for example, if only ppm of crystal oscillators are responsible
for a DR mismatch – a simple clock recovery is enough. Also, there is a potential issue in
data-rate recovery if carrier recovery is not performed correctly. This issue is seen in Figure 15.
www.onsemi.com
155
onsemi
RSL10 Hardware Reference
As Figure 15 shows, data recovery aims to align an internal counter to the zero crossings of the signal. In the case
shown by the right-hand image in Figure 15, the data rate is lowered in order to align the zero crossings. If the carrier is
not recovered correctly, the zero crossings are misaligned and appear as though they came from a faster signal. For this
reason, the conditions for the zero crossing detection of data-rate recovery are stricter.
Clock recovery does not change in the case of a 4-FSK modulation: it is always based on the zero crossing
detection. However, because of the 4-FSK modulation, the eye diagram horizontal opening is narrower than that of a
2-FSK modulation, as can be seen in Figure 16 on page 156.
Figure 16. Eye Diagram for 2-FSK Modulation and 4-FSK Modulation
This means that the time constant for the 4-FSK modulation needs to be increased in order to achieve better
filtering and be more precise regarding the sampling time. The latter is especially important because, as can be seen in
Figure 16, if the sampling time is not exact, there may be a wrong decision regarding the level. The same is not true for
the 2-FSK, for which, ideally, the sampling time can be between the two zero crossings.
8.4.3.6 Decision
Due to the Gaussian filter, the GFSK modulation scheme introduces inter-symbol interference (ISI). The ISI
decreases the sensitivity of the receiver, because during the decision the signal level can be smaller than in the case of a
rectangular pulse shape. ISI cancellation is carried out using the Viterbi algorithm.
www.onsemi.com
156
onsemi
RSL10 Hardware Reference
The Viterbi algorithm is simply enabled by setting the EN_VITERBI_GFSK bit of the DECISION register. The
amplitudes of the expected signal are specified in the FSK_FCR_AMP registers. The path length of the estimator is
specified by the VITERBI_LEN field of the DECISION register.
The RSSI-filtered value is also used by an AGC algorithm. The AGC consists of a simple counter. If the
RSSI-filtered value is greater than the value specified in the AGC_THR_HIGH register, the counter will increase; if it is
lower than the value specified in the AGC_THR_LOW register, the counter will decrease. The counter has three bits and
starts at 0. Its maximum value is fixed by the value of the ATT_CTRL_MAX field of the ATT_CTRL register. The value of
the counter is then used as the input of the AGC look-up table specified in the AGC_LUT registers. This LUT is
composed of 11-bit words that correspond to the attenuation of the analog RX path. The bits of the fields of the
AGC_LUT_* register are distributed in the following order:
• agc_level(2): if set, adds 6 dB of attenuation by LNA current reduction (changed mirror ratio).
• agc_level(3): if set, adds 5 dB of attenuation by LNA1 load resistive degeneration.
• agc_level(4): if set, adds 5 dB of attenuation by LNA1 load resistive degeneration.
• agc_level(6:5) — intermediate frequency amplifier Gm control
• 00: max gain
• 01: 6 dB attenuation
• 10: not valid setting
• 11: 12 dB attenuation
www.onsemi.com
157
onsemi
RSL10 Hardware Reference
• 11: lna_agc_bias_3
To increase the speed of the AGC, an improved version of the AGC algorithm has been implemented. When an
RSSI value is received, the AGC predicts what should be the AGC step. To do so, it needs to know the attenuation
between every AGC level. These attenuations can be specified by the fields RF_AGC_ATTXX of the register AGC_ATT.
The field AGC_ATT_01, for example, specifies the attenuation level between level 0 and level 1 of the AGC. These steps
must be specified with a resolution of 2 dB. For example, the value 0x3 means that the AGC step attenuates by 6 dB.
The attenuations can be optionally specified between 4 dB and 11 dB, with a resolution of 1 dB. In such a case, the
value 0x3 means that the AGC step attenuates by 4+3 = 7 dB. This option is selected by setting bit 33 of register
AGC_ATT to 1. To activate the mode of RSSI correction, the AGC_MODE bit of the register RSSI_CTRL needs to be set to
1.
The stability of the AGC can be improved for both algorithms by setting a wait state after the AGC changes its
state. The AGC algorithm can wait 0, 1, 2, or 3 RSSI measurements before updating the AGC state. This wait time can
be selected using the AGC_WAIT field of the RSSI_CTRL register.
The AGC algorithm can be switched off by setting the BYPASS_AGC bit of the RSSI_CTRL register to 1. The RX
chain attenuation is then determined by the SET_RX_ATT_CTRL field of the ATT_CTRL register.
To use the peak detector, the FSM needs to activate it: the bit USE_PEAK_DETECTOR of the CTRL_RX register needs
to be set to 1. The AGC algorithm will use the peak detector information if the EN_AGC_PEAK bit of the AGC_PEAK_DET
register is set to 1. The peak detector has three thresholds; the AGC algorithm uses one of these thresholds to determine
if the interferer is too strong, and another one to determine that no more interferer is present. These two thresholds are
selected via the PEAK_DET_THR_LOW field and the PEAK_DET_THR_HIGH bit of the AGC_PEAK_DET register. In the
same register there is also PEAK_DET_TAU, which defines a time constant for the filtering of the peak detector signals.
www.onsemi.com
158
onsemi
RSL10 Hardware Reference
In this case, the required number of steps is estimated using the RSSI value above
AGC_THR_HIGH; the peak detector alone increases by one AGC step per cycle.
In the course of your output power and frequency testing, you might need to configure the RF front-end to output a
CW signal. For instance, if your testing equipment uses a frequency divider/counter to measure output frequency, it
requires RSL10 to output an unmodulated signal.
The following steps describe how to use register settings to configure a CW signal output, for Tx or Rx, at a rate of
either 1 Mbps or 2Mbps:
1. Load the hci_app hex file into flash memory, and then reset the RSL10 Evaluation and Development Board.
This ensures that the RF registers are set correctly.
NOTE: The register-setting steps that follow can be performed using JTAG commander, or implemented
in the Arm Cortex-M3 processor code itself.
2. Set RF_REG00->MODE2_BYTE to 0.
3. Set RF_CENTER_FREQ to the frequency you desire. Find the required frequency using the equation
frequency = 0x8215c71c + n 0x71c7 , where n is the RF Bluetooth low energy channel number from 0 to
39.
4. RF_REG05->BANK_BYTE is set to 0, for 1 Mbps, by default. For 2 Mbps, set RF_REG05->BANK_BYTE to 1.
5. To configure for Rx mode, set RF_REG30->FSM_MODE_BYTE to 3.
6. To configure for Tx mode, set RF_REG30->FSM_MODE_BYTE to 7.
7. To configure for idle mode (disable RF), set RF_REG30->FSM_MODE_BYTE to 8.
8. To disable pulse shaping during Tx to keep the frequency from being offset from the center, set registers
RF_TX_PULSE0, RF_TX_PULSE1, RF_TX_PULSE2, and RF_TX_PULSE3 to zero.
When working in CW configuration, use your own preferred settings for VDDRF, VDDPA enabling, VCC,
VDDPA, DCCLK, the charge pump clock, and buck enabling.
DTM is a standard mechanism defined in the Bluetooth Specification for testing the radio performance and
interoperability of Bluetooth Low Energy devices.
Through DTM, an external Bluetooth test instrument can use a 2-wire UART interface to issue standardized HCI
(Host Control Interface) commands.
www.onsemi.com
159
onsemi
RSL10 Hardware Reference
DTM is required for Bluetooth and some regulatory approval processes. Therefore, if your product design needs
DTM, you must expose a UART interface.
Refer to the hci_app sample application for details on how to use DTM.
www.onsemi.com
160
onsemi
RSL10 Hardware Reference
8.5.1 RF_REG00
www.onsemi.com
161
onsemi
RSL10 Hardware Reference
www.onsemi.com
162
onsemi
RSL10 Hardware Reference
8.5.2 RF_REG01
www.onsemi.com
163
onsemi
RSL10 Hardware Reference
8.5.3 RF_REG02
Value
Field Name Value Symbol Hex Value
Description
FIFO_FIFO_FLUSH_ON_OVFLW FIFO_FIFO_FLUSH_ON_OVFLW_DEFAULT 0x0*
FIFO_FIFO_FLUSH_ON_ADDR_ERR FIFO_FIFO_FLUSH_ON_ADDR_ERR_DEFAULT 0x0*
FIFO_FIFO_FLUSH_ON_PL_ERR FIFO_FIFO_FLUSH_ON_PL_ERR_DEFAULT 0x0*
FIFO_FIFO_FLUSH_ON_CRC_ERR FIFO_FIFO_FLUSH_ON_CRC_ERR_DEFAULT 0x0*
FIFO_RX_FIFO_ACK FIFO_RX_FIFO_ACK_DEFAULT 0x0*
FIFO_FIFO_THR FIFO_FIFO_THR_DEFAULT 0x0*
DATARATE_OFFSET_DATARATE_OFFSET DATARATE_OFFSET_DATARATE_OFFSET_ 0x0*
DEFAULT
TAU_DATARATE_RECOV_TAU_DATARATE_ TAU_DATARATE_RECOV_TAU_DATARATE_ 0x0*
RECOV RECOV_DEFAULT
TAU_CLK_RECOV_TAU_CLK_RECOV TAU_CLK_RECOV_TAU_CLK_RECOV_DEFAULT 0x0*
8.5.4 RF_REG03
www.onsemi.com
164
onsemi
RSL10 Hardware Reference
8.5.5 RF_REG04
www.onsemi.com
165
onsemi
RSL10 Hardware Reference
8.5.6 RF_REG05
www.onsemi.com
166
onsemi
RSL10 Hardware Reference
8.5.7 RF_CENTER_FREQ
8.5.8 RF_REG07
www.onsemi.com
167
onsemi
RSL10 Hardware Reference
8.5.9 RF_REG08
www.onsemi.com
168
onsemi
RSL10 Hardware Reference
8.5.10 RF_REG09
www.onsemi.com
169
onsemi
RSL10 Hardware Reference
5:2 PACKET_LENGTH_OPTS_PACKET_ Signed value that specifies the correction to apply to the specified packet
LEN_CORR length (due to differences between standards). The packet length here is
specified by the byte number after the packet length byte, with the exclusion
of the CRC.
1:0 PACKET_LENGTH_OPTS_PACKET_ Unsigned value that specifies the position of the packet length after the
LEN_POS pattern
8.5.11 RF_REG0A
8.5.12 RF_SYNC_PATTERN
www.onsemi.com
170
onsemi
RSL10 Hardware Reference
8.5.13 RF_REG0C
9 CONV_CODES_CONF_CC_EN_TX_ if set to 1 enables the stop word at the end of the transmission. Necessary
STOP in order to keep a stream coherent with the convolutional coding
3:2 PACKET_EXTRA_PATTERN_MAX_ERR unsigned value that specifies the maximum number of errors in the pattern
recognition
1:0 PACKET_EXTRA_PATTERN_WORD_ Pattern word length: 00 => 8bits, 01 => 16 bits, 10 => 24 bits, 11 => 32 bits
LEN
www.onsemi.com
171
onsemi
RSL10 Hardware Reference
8.5.14 RF_CRC_POLYNOMIAL
8.5.15 RF_CRC_RST
8.5.16 RF_REG0F
www.onsemi.com
172
onsemi
RSL10 Hardware Reference
8.5.17 RF_REG10
www.onsemi.com
173
onsemi
RSL10 Hardware Reference
8.5.18 RF_TX_PULSE0
8.5.19 RF_TX_PULSE1
www.onsemi.com
174
onsemi
RSL10 Hardware Reference
8.5.20 RF_TX_PULSE2
8.5.21 RF_TX_PULSE3
www.onsemi.com
175
onsemi
RSL10 Hardware Reference
8.5.22 RF_RX_PULSE
8.5.23 RF_REG16
www.onsemi.com
176
onsemi
RSL10 Hardware Reference
8.5.24 RF_REG17
11:9 CARRIER_RECOVERY_EXTRA_NC_ Select the output position for the 'not-causal processing': 000 => 4 symbol,
SEL_OUT 001 => 6 symbols, 010 => 8 symbols, 011 => 12 symbols, 100 => 16
symbols, 101 => 24 symbols, 110 => 32 symbols, 111 => 40 symbols
8 CARRIER_RECOVERY_EXTRA_EN_ if set to 1 enables the not causal processing
NOT_CAUSAL
6:4 CARRIER_RECOVERY_EXTRA_FREQ_ Mantissa of the carrier recovery frequency limit (unsigned).
LIMIT_MAN
2:0 CARRIER_RECOVERY_EXTRA_FREQ_ Exponent of the carrier recovery frequency limit (signed). Formula:
LIMIT_EXP carrier_offset_max=(1+m/8)*2^e/4*f_sym
www.onsemi.com
177
onsemi
RSL10 Hardware Reference
8.5.25 RF_REG18
11:8 RSSI_BANK_TAU_RSSI_FILTERING Time constant of the RSSI filtering block: 0: 4symbols, 1: 8symbols, 2: 16
symbols, 3: 32symbols, 4: 64symbols, 5: 128symbols, 6: 256symbols, 7:
512symbols, 8: 1024symbols
4 DECISION_USE_VIT_SOFT If set to 1 uses the Viterbi soft decoding
3:2 DECISION_VITERBI_LEN Sets the Viterbi path length: 00: 1 bit, 01: 2 bits, 10: 4 bits, 11: 8 bits
1 DECISION_VITERBI_POW_NLIN if set to 1, the Viterbi algorithm uses power instead of amplitude to evaluate
the error on the path
0 DECISION_EN_VITERBI_GFSK If set to 1 enables the Viterbi algorithm for the GFSK decoding; this will
override the old ISI correction algorithm.
www.onsemi.com
178
onsemi
RSL10 Hardware Reference
8.5.26 RF_REG19
27:24 PLL_BANK_IQ_PLL_0_TX Charge pump bias for Tx case. Real value in Tx is iq_pll_0 xor iq_pll_0_tx. If set
to 0, Tx and Rx have the same value.
22 PLL_BANK_LOW_DR_TX If set to 1 the Tx will work in low data-rate mode
21:20 PLL_BANK_PLL_FILTER_RES_ Allow to modify the value of the loop filter resistor R2 when bit 5 is high (TX
TRIM mode): 00 => normal resistor (R_2_typ), 01 => 123%, 10 => 130% 11 => 170%
www.onsemi.com
179
onsemi
RSL10 Hardware Reference
8.5.27 RF_REG1A
8.5.28 RF_REG1B
27 IEEE802154_OPTS_EN_L2F_RX if set to 1 enables the frequency to linear conversion in the Rx side (always
controlled by the en_802154_l2f configuration bit).
www.onsemi.com
180
onsemi
RSL10 Hardware Reference
8.5.29 RF_AGC_LUT1
www.onsemi.com
181
onsemi
RSL10 Hardware Reference
8.5.30 RF_AGC_LUT2
8.5.31 RF_AGC_LUT3
www.onsemi.com
182
onsemi
RSL10 Hardware Reference
8.5.32 RF_AGC_LUT4
8.5.33 RF_REG20
www.onsemi.com
183
onsemi
RSL10 Hardware Reference
8.5.34 RF_AGC_ATT1
www.onsemi.com
184
onsemi
RSL10 Hardware Reference
8.5.35 RF_REG22
8.5.36 RF_REG23
www.onsemi.com
185
onsemi
RSL10 Hardware Reference
8.5.37 RF_REG24
www.onsemi.com
186
onsemi
RSL10 Hardware Reference
8.5.38 RF_REG25
8.5.39 RF_REG26
www.onsemi.com
187
onsemi
RSL10 Hardware Reference
8.5.40 RF_REG27
8.5.41 RF_REG28
www.onsemi.com
188
onsemi
RSL10 Hardware Reference
www.onsemi.com
189
onsemi
RSL10 Hardware Reference
8.5.42 RF_PLL_CTRL
9 PLL_CTRL_1_EN_LOW_CHP_ When high (recommended), allows use of a lower bias current for the required
BIAS output pumping current.
8 PLL_CTRL_1_CHP_DEAD_ZONE_ Debug: enable charge-pump dead zone (degraded PLL characteristics for test)
EN
7:6 PLL_CTRL_1_CHP_CURR_ Debug: charge-pump offset current values selection bits (see bit 6 to enable this
OFFSET_TRIM mode): 00 => d_phi = 15, 01 => d_phi=22.5, 10 => d_phi = 30, 11 => d_phi = 60.
Also sets the bias current of the common mode control block of the
charge-pump. Must be sets to 01 to ensure a proper operation of the VCO
tuning voltage comparator for sub-band selection, if used
5 PLL_CTRL_1_HIGH_BW_FILTER Enable the PLL filter high bandwidth needed in TX (must be high together with
_EN bit 4 in TX, low in RX)
4 PLL_CTRL_1_FAST_CHP_EN Enable the high current output of the charge-pump for PLL TX high bandwidth
mode (must be high together with bit 5 in TX, low in RX)
www.onsemi.com
190
onsemi
RSL10 Hardware Reference
www.onsemi.com
191
onsemi
RSL10 Hardware Reference
8.5.43 RF_REG2A
8.5.44 RF_XTAL_CTRL
www.onsemi.com
192
onsemi
RSL10 Hardware Reference
www.onsemi.com
193
onsemi
RSL10 Hardware Reference
8.5.45 RF_REG2C
www.onsemi.com
194
onsemi
RSL10 Hardware Reference
8.5.46 RF_REG2D
www.onsemi.com
195
onsemi
RSL10 Hardware Reference
8.5.47 RF_REG2E
www.onsemi.com
196
onsemi
RSL10 Hardware Reference
8.5.48 RF_REG2F
www.onsemi.com
197
onsemi
RSL10 Hardware Reference
8.5.49 RF_REG30
www.onsemi.com
198
onsemi
RSL10 Hardware Reference
8.5.50 RF_REG31
8.5.51 RF_REG32
8.5.52 RF_TXFIFO
8.5.53 RF_RXFIFO
www.onsemi.com
199
onsemi
RSL10 Hardware Reference
8.5.54 RF_DESER_STATUS
8.5.55 RF_IRQ_STATUS
8.5.56 RF_REG37
8.5.57 RF_REG38
8.5.58 RF_REG39
www.onsemi.com
200
onsemi
RSL10 Hardware Reference
8.5.59 RF_REVISION
www.onsemi.com
201
CHAPTER 9
The Bluetooth low energy baseband controller is responsible for real-time operations, and performs packet and
frame processing. Its architecture is illustrated in Figure 17.
PBus SBus
ARM Cortex-M3
external interrupts
CSS
Timing
Test muxes Registers
generators
Core level
Exchange
Radio Frequency Interrupt AES
Control data Memory controller memory
controller selection generator CCM
(BB_DRAM)
• The RF front-end through the support interfaces, as described in Section 11.9, “Support Interfaces” on
page 347.
The Bluetooth baseband hardware fills the logical layers of the Bluetooth low energy data transfer architecture
shown in Figure 18. This supplements the physical layers implemented by the RF front-end (refer to Chapter 8, “RF
Front-End” on page 132) and the L2CAP and host layers that are supported by the Bluetooth stack firmware (refer to
the “Bluetooth Stack and Profiles” chapter from the RSL10 Firmware Reference).
www.onsemi.com
202
onsemi
RSL10 Hardware Reference
L2CAP
L2CAP Channels
Layer
Logical Links
Logical
Layer Logical Transports
Physical Links
Physical
Physical Channels
Layer
Physical Transports
The Bluetooth low energy baseband controller is implemented with the features listed in Table 17.
• The registers that can be used to access the baseband hardware, and how the baseband uses the exchange
memory and other control structures to control data transferred to the RF front-end
• The baseband timing
• The hardware aspects of the security manager as accessible through the GAP layer
See the RSL10 Firmware Reference for more information about host and profile layer support.
This interrupt indicates that a hardware error has been detected. The error type can be recovered by reading the
ERRORTYPESTAT register (refer to Figure 19 for register overview and Table 18 on page 204 for a detailed description
of each bit).
www.onsemi.com
203
onsemi
RSL10 Hardware Reference
RAL_ERROR 0: No error Indicates Resolving Address List engine faced a bad setting.
1: Error occurred
CONCEVTIRQ_ERROR 0: No error Indicates whether two consecutive and concurrent
1: Error occurred ble_event_irq have been generated, and not acknowledged in
time by the RSL10 software.
RXDATA_PTR_ERROR 0: No error Indicates whether Rx data buffer pointer value programmed is null:
1: Error occurred this is a major programming failure.
TXDATA_PTR_ERROR 0: No error Indicates whether Tx data buffer pointer value programmed is null
1: Error occurred during Advertising / Scanning / Initiating events, or during Master /
Slave connections with non-null packet length: this is a major
programming failure.
RXDESC_EMPTY_ERROR 0: No error Indicates whether Rx Descriptor pointer value programmed in register
1: Error occurred is null: this is a major programming failure.
LLCHMAP_ERROR 0: No error Indicates Link Layer Channel Map error, happens when actual
1: Error occurred number of CS-LLCHMAP bits set to one is different from
CS-NBCHGOOD at the beginning of Frequency Hopping process.
ADV_UNDERRUN 0: No error Indicates Advertising Interval Underrun: occurs if time between two
1: Error occurred consecutive intervals.
IFS_UNDERRUN 0: No error Indicates Inter Frame Space Underrun: occurs if IFS time is not
1: Error occurred enough to update and read Control Structure/Descriptors, and/or
White List parsing is not finished and/or Decryption time is too long to
be finished on time.
WHITELIST_ERROR 0: No error Indicates White List Timeout error: occurs if White List parsing is not
1: Error occurred finished on time.
www.onsemi.com
204
onsemi
RSL10 Hardware Reference
For debugging purposes, the baseband controller instantiates a diagnostic port that can be configured through the
following baseband controller registers.
• BB_DIAGCNTL
• BB_DIAGSTAT
• BB_DEBUGADDMAX
• BB_DEBUGADDMIN
• BB_ERRORTYPESTAT
The 8-bit diagnostic bus can be mapped to any DIO output, as described in Figure 34 on page 348.
The link layer software interfaces with the baseband by writing/reading its registers and the exchange memory.
Baseband access methods need to be adapted to the physical interface between the CPU and baseband (e.g. AHB, SPI,
etc.). An abstraction layer is therefore implemented so that LL software is, as much as possible, independent from the
physical interface. Only the link layer baseband abstraction layer is modified for compatibility with the physical
interface.
www.onsemi.com
205
onsemi
RSL10 Hardware Reference
The abstraction layer contains a few primitives, allowing atomic read/writes and copies of data from system RAM
to exchange memory.
The following functions and macros are used by the link layer software to access the baseband registers, exchange
memory, and RF registers:
REG_BLE_RD(addr)
This macro reads a 32-bit value from a Bluetooth low energy technology core register
REG_BLE_WR(addr, value)
This function writes a 32-bit value to a Bluetooth low energy technology core register
EM_BLE_RD(addr)
This function reads a 16-bit value from the Bluetooth low energy technology exchange memory
EM_BLE_WR(addr, value)
This function writes a 16-bit value to the exchange memory
RF_BLE_RD(addr)
This macro reads a value from an RF register
RF_BLE_WR(addr, value)
This function writes a value to an RF register
These macros are defined in reg_access.h and provide direct access to the baseband outside of the link layer
software.
The control structure contains information that instructs the hardware to perform actions relevant to a specific
Bluetooth link layer state (advertising, scanning, initiating, master connection, and slave connection).
The control structure is located in the exchange memory and is statically allocated at build time. The number of
allocated control structures is one more than the maximum number of links supported by the built firmware.
www.onsemi.com
206
onsemi
RSL10 Hardware Reference
ET offset
Exchange CS link handle 0
Table
FT offset CS link handle 1
Frequency
Table CS link handle 2
Encrypt
offset
Encryption
Area
CS offset
Control
Control Structure
Structure Area
Area
Exchange
Memory
Area
The Bluetooth low energy baseband is clocked using a baseband clock (BBCLK), a divided baseband clock
(BBCLK_DIV), and a baseband timer clock. For more information about these clocks, see Section 6.3.4, “Baseband
Clock (BBCLK) and Other Clocks for the Bluetooth Low Energy Baseband” on page 82.
BBCLK is a prescaled form of SYSCLK (see Section 6.3.1, “System Clock (SYSCLK)” on page 79) that is
provided to the Bluetooth low energy baseband. BBCLK is derived from SYSCLK clock through a 3-bit integer
division by the CLK_DIV_CFG0_BBCLK_PRESCALE bit field in the CLK_DIV_CFG0 register. For proper baseband
operation during RF transmissions, BBCLK must be configured in the range from 6 to 24 MHz with operation at 8 MHz
or 16 MHz recommended. This prescaler provides a clock prescaled from SYSCLK by 1 to 8, and results in an BBCLK
with a frequency as defined by the following equation:
f SYSCLK
f BBCLK = -----------------------------------------------------------------------------------------------------------------
CLK_DIV_CFG0_BBCLK_PRESCALE + 1
For proper baseband operation BBCLK_DIV must be configured to supply a 1 MHz reference, divided from
BBCLK. BBCLK_DIV is divided using the BBIF_CTRL_CLK_SEL bit-field of the BBIF_CTRL register. This bit-field
should be set so that the following equation is correct:
f BBCLK
f BBCLK_DIV = -------------------------------------------------------------------------- = 1MHz
BBIF_CTRL_CLK_SEL + 1
The reset and the low power timing generator clock (32 kHz), or a divided clock for lower power consumption, are
divided from the standby clock (Section 6.3.2, “Standby Clock (STANDBYCLK)” on page 80) with the baseband timer
configuring and potentially further dividing this using the ACS_BB_TIMER_CTRL_BB_CLK_PRESCALE bit from the
www.onsemi.com
207
onsemi
RSL10 Hardware Reference
ACS_BB_TIMER_CTRL register. The reset signal for this block is controlled by the
ACS_BB_TIMER_CTRL_BB_TIMER_NRESET bit, and is re-synchronized on the baseband timer clock, and consequently,
it can take up to one clock cycle of this divided clock before the baseband timer is effectively reset.
For more information on RTC configuration, see Section 6.3.5, “Real-Time Clock (RTC)” on page 82.
9.3.1.1 ACS_BB_TIMER_CTRL
The system is synchronized as per a base time unit, called a “slot”, which is equal to 625 s. A hardware counter
named “base time counter” manages the system slot counting. A hardware counter named “fine time counter” performs
a 1 s precision countdown within a slot.
Fine Time
counter
624……….0 624……….0 624……….0 624……….0 624……….0 624……….0
Slot
Base Time
counter
0x9F10 0x9F11 0x9F12 0x9F13 0x9F14 0x9F15
The base time counter starts at 0 on power-up. It is 27 bits wide, and it is incremented every 625 s.
www.onsemi.com
208
onsemi
RSL10 Hardware Reference
The real time scheduling and the system wakeup are synchronized over several interrupts. These interrupts are
generated by the hardware (BaseBand / Core). Refer to Figure 22 on page 209.
IRQ
Yes
Rx ISR
End
This latency allows the firmware to safely program the control structure fields and Tx buffers, before hardware
fetching takes place.
www.onsemi.com
209
onsemi
RSL10 Hardware Reference
T R T R T R
Master X X X X X X
CŽŶŶĞĐƚŝŽŶ Interval
R T R T R T
Slave X X X X X X
www.onsemi.com
210
onsemi
RSL10 Hardware Reference
The firmware checks the control structure (i.e., CS-CONFLICT) bit and the number of descriptors consumed, to
see if it is a normal or a dual mode arbitration conflict end of event.
Start Start
IRQ IRQ
Rx End
End
IRQ IRQ
IRQ
Prog Latency Prog Latency
T R T R T R T R
Master X X X X X X X X
ŽŶŶĞĐƚŝŽŶ Interval
T R T R T R R T
Slave X X X X X X X X
Rx End
IRQ IRQ
Prog Latency
R
Channel = 38 Rx
Scanner X
Ch Ch Ch
37 38 39
T R T R T R
Advertiser X X X X X X
Prog Latency
End
Start IRQ
IRQ
www.onsemi.com
211
onsemi
RSL10 Hardware Reference
Wakeup Start to compensate the low power clock drift (wakeup interrupt).
Slot synchronization System is ready (slot interrupt), so the activity can start.
Wake up Slot
IRQ IRQ
End
IRQ
Prog Latency
Master/Slave
Clock correction
latency
Upon wakeup, the hardware base time counter has to be updated as to the passed sleep duration. For that, the
firmware computes the correction values to apply on the base and fine counters by setting appropriate registers. The
core applies the correction for the next slot interrupt. The maximum time to correct the clock value is 1 slot (default
value) and is known in the firmware as “clock correction latency”.
The event arbiter checks whether the event should be programmed, or if it is in the past and should be pushed into
the canceled queue.
The ciphering process is started by a command, defined by an API, with two parameters:
When the interrupt is generated, a kernel message is sent to the requester with the ciphered data.
www.onsemi.com
212
onsemi
RSL10 Hardware Reference
BB_BDADDRU Bluetooth low energy device address (MSB part) register1 0x40001528
www.onsemi.com
213
onsemi
RSL10 Hardware Reference
www.onsemi.com
214
onsemi
RSL10 Hardware Reference
1. In typical use cases, the Bluetooth device address should be set to the value stored to the Device Configuration Record
(NVR3) at the DEVICE_INFO_BLUETOOTH_ADDR location. For more information see the RSL10 Firmware Reference.
9.4.1 BBIF_CTRL
www.onsemi.com
215
onsemi
RSL10 Hardware Reference
9.4.2 BBIF_STATUS
www.onsemi.com
216
onsemi
RSL10 Hardware Reference
9.4.3 BBIF_COEX_CTRL
9.4.4 BBIF_COEX_STATUS
www.onsemi.com
217
onsemi
RSL10 Hardware Reference
9.4.5 BBIF_COEX_INT_CFG
9.4.6 BBIF_COEX_INT_STATUS
www.onsemi.com
218
onsemi
RSL10 Hardware Reference
9.4.7 BBIF_SYNC_CFG
9.4.8 BB_RWBBCNTL
www.onsemi.com
219
onsemi
RSL10 Hardware Reference
www.onsemi.com
220
onsemi
RSL10 Hardware Reference
9.4.9 BB_VERSION
www.onsemi.com
221
onsemi
RSL10 Hardware Reference
9.4.10 BB_RWBLEBCONF
www.onsemi.com
222
onsemi
RSL10 Hardware Reference
9.4.11 BB_INTCNTL
www.onsemi.com
223
onsemi
RSL10 Hardware Reference
9.4.12 BB_INTSTAT
www.onsemi.com
224
onsemi
RSL10 Hardware Reference
9.4.13 BB_INTRAWSTAT
www.onsemi.com
225
onsemi
RSL10 Hardware Reference
www.onsemi.com
226
onsemi
RSL10 Hardware Reference
9.4.14 BB_INTACK
www.onsemi.com
227
onsemi
RSL10 Hardware Reference
9.4.15 BB_BASETIMECNT
www.onsemi.com
228
onsemi
RSL10 Hardware Reference
9.4.16 BB_FINETIMECNT
9.4.17 BB_BDADDRL
9.4.18 BB_BDADDRU
9.4.19 BB_ET_CURRENTRXDESCPTR
www.onsemi.com
229
onsemi
RSL10 Hardware Reference
9.4.20 BB_DEEPSLCNTL
9.4.21 BB_DEEPSLWKUP
www.onsemi.com
230
onsemi
RSL10 Hardware Reference
9.4.22 BB_DEEPSLSTAT
9.4.23 BB_ENBPRESET
9.4.24 BB_FINECNTCORR
9.4.25 BB_BASETIMECNTCORR
www.onsemi.com
231
onsemi
RSL10 Hardware Reference
9.4.26 BB_DIAGCNTL
9.4.27 BB_DIAGSTAT
www.onsemi.com
232
onsemi
RSL10 Hardware Reference
9.4.28 BB_DEBUGADDMAX
9.4.29 BB_DEBUGADDMIN
9.4.30 BB_ERRORTYPESTAT
www.onsemi.com
233
onsemi
RSL10 Hardware Reference
www.onsemi.com
234
onsemi
RSL10 Hardware Reference
9.4.31 BB_SWPROFILING
www.onsemi.com
235
onsemi
RSL10 Hardware Reference
9.4.32 BB_RADIOCNTL0
9.4.33 BB_RADIOCNTL1
www.onsemi.com
236
onsemi
RSL10 Hardware Reference
9.4.34 BB_RADIOCNTL2
9.4.35 BB_RADIOPWRUPDN0
www.onsemi.com
237
onsemi
RSL10 Hardware Reference
9.4.36 BB_RADIOPWRUPDN1
9.4.37 BB_RADIOTXRXTIM0
9.4.38 BB_RADIOTXRXTIM1
www.onsemi.com
238
onsemi
RSL10 Hardware Reference
9.4.39 BB_SPIPTRCNTL0
9.4.40 BB_SPIPTRCNTL1
9.4.41 BB_SPIPTRCNTL2
9.4.42 BB_ADVCHMAP
www.onsemi.com
239
onsemi
RSL10 Hardware Reference
9.4.43 BB_ADVTIM
9.4.44 BB_ACTSCANSTAT
9.4.45 BB_WLPUBADDPTR
9.4.46 BB_WLPRIVADDPTR
9.4.47 BB_WLNBDEV
www.onsemi.com
240
onsemi
RSL10 Hardware Reference
9.4.48 BB_AESCNTL
9.4.49 BB_AESKEY31_0
9.4.50 BB_AESKEY63_32
9.4.51 BB_AESKEY95_64
www.onsemi.com
241
onsemi
RSL10 Hardware Reference
9.4.52 BB_AESKEY127_96
9.4.53 BB_AESPTR
9.4.54 BB_TXMICVAL
9.4.55 BB_RXMICVAL
www.onsemi.com
242
onsemi
RSL10 Hardware Reference
9.4.56 BB_RFTESTCNTL
9.4.57 BB_RFTESTTXSTAT
www.onsemi.com
243
onsemi
RSL10 Hardware Reference
9.4.58 BB_RFTESTRXSTAT
9.4.59 BB_TIMGENCNTL
9.4.60 BB_GROSSTIMTGT
9.4.61 BB_FINETIMTGT
www.onsemi.com
244
onsemi
RSL10 Hardware Reference
9.4.62 BB_COEXIFCNTL0
www.onsemi.com
245
onsemi
RSL10 Hardware Reference
www.onsemi.com
246
onsemi
RSL10 Hardware Reference
9.4.63 BB_COEXIFCNTL1
www.onsemi.com
247
onsemi
RSL10 Hardware Reference
9.4.64 BB_COEXIFCNTL2
9.4.65 BB_BBMPRIO0
www.onsemi.com
248
onsemi
RSL10 Hardware Reference
9.4.66 BB_BBMPRIO1
9.4.67 BB_RALPTR
9.4.68 BB_RALNBDEV
www.onsemi.com
249
onsemi
RSL10 Hardware Reference
9.4.69 BB_RAL_LOCAL_RND
9.4.70 BB_RAL_PEER_RND
9.4.71 BB_ISOCHANCNTL0
www.onsemi.com
250
onsemi
RSL10 Hardware Reference
9.4.72 BB_ISOMUTECNTL0
9.4.73 BB_ISOCURRENTTXPTR0
www.onsemi.com
251
onsemi
RSL10 Hardware Reference
9.4.74 BB_ISOCURRENTRXPTR0
9.4.75 BB_ISOTRCNL0
9.4.76 BB_ISOEVTCNTLOFFSETL0
9.4.77 BB_ISOEVTCNTLOFFSETU0
www.onsemi.com
252
onsemi
RSL10 Hardware Reference
9.4.78 BB_ISOCHANCNTL1
9.4.79 BB_ISOMUTECNTL1
www.onsemi.com
253
onsemi
RSL10 Hardware Reference
9.4.80 BB_ISOCURRENTTXPTR1
9.4.81 BB_ISOCURRENTRXPTR1
9.4.82 BB_ISOTRCNL1
www.onsemi.com
254
onsemi
RSL10 Hardware Reference
9.4.83 BB_ISOEVTCNTLOFFSETL1
9.4.84 BB_ISOEVTCNTLOFFSETU1
9.4.85 BB_ISOCHANCNTL2
www.onsemi.com
255
onsemi
RSL10 Hardware Reference
9.4.86 BB_ISOMUTECNTL2
9.4.87 BB_ISOCURRENTTXPTR2
www.onsemi.com
256
onsemi
RSL10 Hardware Reference
9.4.88 BB_ISOCURRENTRXPTR2
9.4.89 BB_ISOTRCNL2
9.4.90 BB_ISOEVTCNTLOFFSETL2
9.4.91 BB_ISOEVTCNTLOFFSETU2
www.onsemi.com
257
onsemi
RSL10 Hardware Reference
9.4.92 BB_BBPRIOSCHARB
www.onsemi.com
258
CHAPTER 10
The RSL10 system contains 16 digital input/output (DIO) pads that can be configured:
DIOs support all digital inputs and output functions that are not supported directly by a dedicated I/O. For more
information about the functional configuration of DIO pads, see Section 10.2, “Functional Configuration” below.
Dedicated I/Os are supplied for the following pads which are not part of the DIO pad set:
• The wake up pad (WAKEUP)—for more information, see Section 5.4, “Power Modes” on page 51.
• The external clock input pad (EXTCLK)—for more information, see Section 6.2.5, “External Clock Input
(EXTCLK)” on page 76.
• The JTCK and JTMS (also used as SWCLK and SWDIO) pads for the standard SWJ-DP debug port included
with the Arm Cortex-M3 core — for more information, see Section 3.2, “Debug Port” on page 27.
• A reset pad (NRESET) - for more information, see Section 5.5, “Resets” on page 64.
The DIO pads support a variety of physical configuration parameters that might be required to properly interface
with external components, including:
A complete description of the physical configuration of DIOs can be found in Section 10.3, “Physical
Configuration” on page 263.
All of the DIO pads are powered from the VDDO power supply. For more information about this power supply and
its configuration, see Section 5.2.2, “Digital Output Supply Voltage (VDDO)” on page 39.
The DIO pads can be configured using the DIO_CFG_IO_MODE bit field from the DIO_CFG_* registers:
Table 19 contains a list of the functional modes a DIO can be configured for. Table 20 contains a list of the input
sources that a given DIO can be assigned to supply.
NOTE: ADC, wakeup and STANDBYCLK functions are only available on DIO[0:3]. See Section 11.2,
“Analog-to-Digital Converters (ADCs)” on page 301, Section 5.4, “Power Modes” on page 51,
and Section 6.3.2, “Standby Clock (STANDBYCLK)” on page 80, respectively, for information
on configuring these functions.
www.onsemi.com
259
onsemi
RSL10 Hardware Reference
In addition to standard digital functional configuration, certain DIOs can be configured for special modes. These
special modes are described in Section 10.2.1, “Special Functional Configurations” on page 262.
CAUTION: While a DIO can be configured to be both an output and an input, it is the user application's responsibility
to ensure that the DIO is not driving an output to a pad that is also being driven externally. If a DIO pad signal has two
drivers, the physical values and inputs that are read from this pad are considered undefined.
www.onsemi.com
260
onsemi
RSL10 Hardware Reference
www.onsemi.com
261
onsemi
RSL10 Hardware Reference
RSL10 contains two special functional configurations that affect a subset of the DIOs. These special functional
configurations are described in Table 21.
www.onsemi.com
262
onsemi
RSL10 Hardware Reference
For more information about analog inputs, see Section 11.2, “Analog-to-Digital Converters
(ADCs)” on page 301.
STANDBYCLK The STANDBYCLK function is only available on DIO[3:0]. For more information on
STANDBYCLK configuration, see Section 6.3.2, “Standby Clock (STANDBYCLK)” on
page 80.
Wakeup The wakeup function is only available on DIO[3:0]. For more information on wakeup
configuration, see Section 5.4, “Power Modes” on page 51.
Arm Cortex-M3 13 When configured for JTAG mode, the SWJ-DP debug port interface uses the following
Processor 14 and 15 pads to implement a 4 or 5-wire JTAG interface:
SWJ-DP JTAG • DIO 13 configured as JNTRST (5-wire JTAG interface only)
• DIO 14 configured as JTDI
• DIO 15 configured as JTDO
The RSL10 system includes physical configuration parameters for each DIO. These parameters are set using
configuration bits from the appropriate DIO_CFG_* register.
If the DIO is configured as an input pad, it has the following configuration options:
• The DIO_CFG_PULL_CTRL bit field is used to configure the pad to use a pull-up or pull-down resistor. Options
include:
• No pull resistor
• A weak (250 k) pull-up resistor
• A weak (250 k) pull-down resistor
• A strong (10 k) pull-up resistor
• In the reset state while the NRESET pad is driven low, the DIO output drive is disabled and a weak (250 k)
pull-down resistor is enabled. After reset is released, the default DIO configuration is applied.
www.onsemi.com
263
onsemi
RSL10 Hardware Reference
• The DIO_CFG_LPF bit enables or disables a low-pass filter that can be used to clean up the DIO’s received
input signal.
IMPORTANT: For optimal noise performance, we recommend enabling the low-pass filters provided for DIO
inputs for input signals received at 1 MHz or less. For signals that use a frequency that exceeds 1 MHz, the DIO
low-pass filters should be disabled.
In addition to the configurable physical parameters, all DIO pads contain Schmitt triggers to filter out noise
observed at the inputs.
If the DIO is configured as an output pad, it has the following configuration option:
• The DIO_CFG_DRIVE bit allows you to select the drive strength for the DIO output.
NOTE: The DIO_PAD_CFG_DRIVE bit-field from the DIO_PAD_CFG register can be used to increase the
drive strength of all outputs by 50% or more if needed for a user application.
www.onsemi.com
264
onsemi
RSL10 Hardware Reference
10.4.1 DIO_CFG
www.onsemi.com
265
onsemi
RSL10 Hardware Reference
www.onsemi.com
266
onsemi
RSL10 Hardware Reference
www.onsemi.com
267
onsemi
RSL10 Hardware Reference
10.4.2 DIO_DATA
www.onsemi.com
268
onsemi
RSL10 Hardware Reference
www.onsemi.com
269
onsemi
RSL10 Hardware Reference
www.onsemi.com
270
onsemi
RSL10 Hardware Reference
10.4.3 DIO_DIR
www.onsemi.com
271
onsemi
RSL10 Hardware Reference
www.onsemi.com
272
onsemi
RSL10 Hardware Reference
www.onsemi.com
273
onsemi
RSL10 Hardware Reference
10.4.4 DIO_MODE
www.onsemi.com
274
onsemi
RSL10 Hardware Reference
10.4.5 DIO_INT_CFG
www.onsemi.com
275
onsemi
RSL10 Hardware Reference
10.4.6 DIO_INT_DEBOUNCE
10.4.7 DIO_PCM_SRC
www.onsemi.com
276
onsemi
RSL10 Hardware Reference
www.onsemi.com
277
onsemi
RSL10 Hardware Reference
www.onsemi.com
278
onsemi
RSL10 Hardware Reference
10.4.8 DIO_SPI_SRC
www.onsemi.com
279
onsemi
RSL10 Hardware Reference
www.onsemi.com
280
onsemi
RSL10 Hardware Reference
10.4.9 DIO_UART_SRC
10.4.10 DIO_I2C_SRC
www.onsemi.com
281
onsemi
RSL10 Hardware Reference
www.onsemi.com
282
onsemi
RSL10 Hardware Reference
10.4.11 DIO_AUDIOSINK_SRC
10.4.12 DIO_NMI_SRC
www.onsemi.com
283
onsemi
RSL10 Hardware Reference
10.4.13 DIO_BB_RX_SRC
www.onsemi.com
284
onsemi
RSL10 Hardware Reference
www.onsemi.com
285
onsemi
RSL10 Hardware Reference
10.4.14 DIO_BB_SPI_SRC
www.onsemi.com
286
onsemi
RSL10 Hardware Reference
10.4.15 DIO_RF_SPI_SRC
www.onsemi.com
287
onsemi
RSL10 Hardware Reference
www.onsemi.com
288
onsemi
RSL10 Hardware Reference
10.4.16 DIO_RF_GPIO03_SRC
www.onsemi.com
289
onsemi
RSL10 Hardware Reference
www.onsemi.com
290
onsemi
RSL10 Hardware Reference
www.onsemi.com
291
onsemi
RSL10 Hardware Reference
10.4.17 DIO_RF_GPIO47_SRC
www.onsemi.com
292
onsemi
RSL10 Hardware Reference
www.onsemi.com
293
onsemi
RSL10 Hardware Reference
10.4.18 DIO_RF_GPIO89_SRC
www.onsemi.com
294
onsemi
RSL10 Hardware Reference
www.onsemi.com
295
onsemi
RSL10 Hardware Reference
10.4.19 DIO_DMIC_SRC
www.onsemi.com
296
onsemi
RSL10 Hardware Reference
10.4.20 DIO_LPDSP32_JTAG_SRC
www.onsemi.com
297
onsemi
RSL10 Hardware Reference
www.onsemi.com
298
onsemi
RSL10 Hardware Reference
10.4.21 DIO_JTAG_SW_PAD_CFG
www.onsemi.com
299
onsemi
RSL10 Hardware Reference
10.4.22 DIO_EXTCLK_CFG
10.4.23 DIO_PAD_CFG
www.onsemi.com
300
CHAPTER 11
This chapter provides information about the interfaces available to the Arm Cortex-M3 processor that can be used
to pass data between RSL10 and external components. These interfaces are:
I2C
A subset of the Philips I2C interface, this external interfaces supports both master and slave
mode transfers.
Support
Several internal connections that link the RF front-end and the Bluetooth Low Energy
technology baseband hardware.
The analog-to-digital converters (ADCs) provide an analog to digital conversion of up to eight differential
combinations of four internal signals and four external signals. Each conversion is a differential measurement with a
configurable resolution for the converter of 8 or 14 bits of precision.
IMPORTANT: For accurate ADC measurements across operating conditions, the VDDC supply voltage level
must be a minimum of 1.00 V. For more information about VDDC configuration, see Section 5.3.4, “Digital
Supply Voltages” on page 46, and the “Manufacturing Calibrated Settings” from the RSL10 Firmware Reference.
www.onsemi.com
301
onsemi
RSL10 Hardware Reference
The purpose of the ADCs is to sample analog signals that are relevant to the user’s application use cases—for
example, the voltage associated with a potentiometer-based volume control, or a supply voltage for battery monitoring
applications using the Bluetooth low energy battery service (BAS).
The signals measured by the ADC block are configured using the NEG_INPUT_SEL and POS_INPUT_SEL bit-fields
from the ADC_INPUT_SEL register set. The negative and positive signals used for each differential measurement are
selected from:
For more information about DIO configuration for ADCs, see Chapter 10, “Digital Input/
Output” on page 259.
AOUT The analog test output signal. The signal provided to AOUT can be configured using the
ACS_AOUT_CTRL_TEST_AOUT bit field from the ACS_AOUT_CTRL register, which allows the
ADCs to additionally measure a number of other internal power supply outputs and status flags.
For more information about the internal power supplies, see Section 5.3, “Internal Power
Supply Voltages” on page 39.
VDDC For more information about VDDC and its configuration, see Section 5.3.4, “Digital Supply
Voltages” on page 46.
VBAT/2 A divided form of the battery supply voltage, measured through a fixed resistive divider which
ensures that the measured value is in the expected range of the ADC for accurate measurement.
To save power, the resistive divider can be configured to only be enabled when a conversion is
taking place by setting the ADC_CFG_DUTY_DIVIDER bit-field from the ADC_CFG register to
ADC_VBAT_DIV2_DUTY. For additional information about VBAT, see Section 5.2.1, “Battery
Supply Voltage (VBAT)” on page 38.
The ADC signals are sampled at a sampling rate derived from SLOWCLK, and configured using the
ADC_CFG_FREQ bit-field from the ADC_CFG register. Configuration of SLOWCLK is described in Section 6.3.3, “Slow
Clock (SLOWCLK)” on page 81.
ADC measurements using this divided clock can be configured for two sampling modes:
Low-Frequency Mode
SLOWCLK is first prescaled by a fixed factor of 10, with a maximum sampling rate of 5 kHz.
ADC measurement results have a resolution of 14 bits.
www.onsemi.com
302
onsemi
RSL10 Hardware Reference
High-Frequency Mode
SLOWCLK is prescaled by a factor of 2, with sampling rates of up to 25 kHz where ADC
measurement results have a resolution of 14 bits, or up to 50 kHz where ADC measurement
results have a resolution of 8 bits.
In addition to selecting the sampling mode, the ADC_CFG_FREQ bit-field defines the frequency at which
measurements are taken, and the native voltage range of measurements. Lower reference measurement rates provide a
larger native voltage range, and in the case of High-Frequency Mode, provide a higher resolution ADC measurement.
The ADC block samples data at the specified frequency, with data samples read from all eight channels in Normal
Mode, and from only one channel sampled in continuous mode. This results in a lower effective sample rate for Normal
Mode operations.
• If the ADC block is configured in Normal Mode, each ADC channel is sampled in sequence and an ADC
interrupt occurs once every eighth sample. The channel number that triggers the interrupt (or phase offset) can
be defined as part of the ADC_INT_CH_NUM bit field in the ADC_BATMON_INT_ENABLE register. Between each
interrupt, the data value for each ADC channel is updated to a new, valid sample.
• If the ADC is configured in Continuous Mode, only one ADC channel is sampled and an interrupt occurs
every sample. The sampled channel is defined in the ADC_INT_CH_NUM bit field as part of the
ADC_BATMON_INT_ENABLE register.
The resulting sample rates per channel as a function of SLOWCLK are shown in Table 22.
NOTE: For a typical SLOWCLK frequency of 1.00 MHz, the ADC samples all eight channels in Normal
mode at a configurable rate between 6.25 kHz and 19.5 Hz.
www.onsemi.com
303
onsemi
RSL10 Hardware Reference
The converted output from the most recent conversion of each channel can be found in the
ADC_DATA_TRIM_CH[0-7] and ADC_DATA_AUDIO_CH[0-7] registers. Data read from both registers that refer to each
channel are equivalent, and only the interpretation of the underlying measurement is different.
ADC_DATA_TRIM_CH[0-7]
The output data value from the ADC is represented as trimmer data providing a 14-bit unsigned
value scaled between 0x000 and 0x3FFF to represent a signal in the range from 0 to 2.0 V. Any
measurement outside of the range from 0 to 2.0 V is saturated.
ADC_DATA_AUDIO_CH[0-7]
The output data value from the ADC is represented as audio data providing a 14-bit signed value
scaled between 0xFFFFE000 and 0x00001FFF to represent a signal in the range from 0 to 2.0 V.
Measurements outside of the range from 0 to 2.0 V can extend this range if the ADC sampling
configuration extends the range of measured values.
NOTE: These two 8x32-bit registers are included sequentially at the memory locations shown in
Section 11.2.6, “ADC Registers” on page 305.
For improved accuracy in the ADC data, the RSL10 SoC provides an offset correction factor in the ADC_OFFSET
register that automatically applies a compensation value to the measured ADC data. This value normally should be the
difference between the expected and measured ADC output when the input is 0 V. The value of this register is
automatically updated with a measured compensation value that corrects the measurements when an ADC channel
selects GND as the source for both the positive and negative sources for the channel. If no channels are configured in
this way, the offset register can be configured to provide any desired compensation (including selecting no
compensation by setting this register to 0x00000000).
The ADC block additionally provides resources that can be used to monitor the power supply through VBAT/2
(useful if the system is supplied directly from VBAT), or VCC (useful if the system is being supplied through the
DC-DC converter). From the information obtained from these supplies, you can detect when the battery is getting close
to the end of life.
The supply threshold level can be defined between 0 V and 2 V using 256 steps of approximately 7.8 mV. This is
defined in the ADC_BATMON_CFG_SUPPLY_THRESHOLD bit field. Select either VBAT/2 or VCC as the source to
monitor by setting the ADC_BATMON_CFG_SUPPLY_SRC bit. Both of these values are part of the ADC_BATMON_CFG
register.
When the monitored supply is measured as being below the specified threshold, the value of the
ADC_BATMON_COUNT_VAL register is incremented. This counter register is reset when read. The value of this register is
compared with the value stored to the ADC_BATMON_CFG_ALARM_COUNT_VALUE bit-field from the ADC_BATMON_CFG
register, and if the counter value ever exceeds the alarm value, an alarm is generated.
A single interrupt line is shared between the ADC and the power supply monitoring circuitry. This interrupt can be
independently configured to trigger when one or both of the following conditions are met:
www.onsemi.com
304
onsemi
RSL10 Hardware Reference
• Triggering when a specified ADC channel is sampled. To enable this trigger condition, use the
ADC_INT_ENABLE bit from the ADC_BATMON_INT_ENABLE register. To specify the ADC channel, use the
ADC_INT_CH_NUM bit-field from this same register.
• Triggering when a power supply monitor alarm occurs. To enable this trigger condition, use the
BATMON_ALARM_INT_ENABLE bit from the ADC_BATMON_INT_ENABLE register.
NOTE: To configure a single ADC and/or battery monitoring interrupt, set the ADC_INT_CH_NUM field to
the selected battery monitoring source.
The source of the interrupt can always be determined using fields within the ADC_BATMON_STATUS register. The
BATMON_ALARM_STAT bit indicates an alarm condition within the battery monitoring circuit. The ADC_READY_STAT bit
indicates that a new set of samples are available in the ADC_xxx_DATA registers. The ADC_OVERRUN_STAT bit indicates
that the ADC_xxx_DATA registers were not read between successive samples, and one or more samples were
overwritten.
NOTE: All three flags in the ADC_BATMON_STATUS register are sticky, and each must be separately
cleared by setting the appropriate ADC_BATMON_STATUS_*_CLEAR bit from the
ADC_BATMON_STATUS register.
11.2.6.1 ADC_DATA_TRIM_CH
11.2.6.2 ADC_DATA_AUDIO_CH
www.onsemi.com
305
onsemi
RSL10 Hardware Reference
11.2.6.3 ADC_INPUT_SEL
11.2.6.4 ADC_CFG
www.onsemi.com
306
onsemi
RSL10 Hardware Reference
11.2.6.5 ADC_OFFSET
11.2.6.6 ADC_BATMON_CFG
www.onsemi.com
307
onsemi
RSL10 Hardware Reference
11.2.6.7 ADC_BATMON_INT_ENABLE
www.onsemi.com
308
onsemi
RSL10 Hardware Reference
11.2.6.8 ADC_BATMON_COUNT_VAL
11.2.6.9 ADC_BATMON_STATUS
www.onsemi.com
309
onsemi
RSL10 Hardware Reference
RSL10 can configure any of the DIO pads as software-controlled general-purpose DIO (GPIO) pads. The function
of these GPIO pads is defined by a user application, which can use them for any general-purpose input or output.
The DIO_MODE register indicates which DIO pads have been configured for GPIO functionality; bits in this register
are set (for example, DIO_IS_GPIO) if they are configured as GPIOs, and cleared otherwise (for example,
DIO_IS_NOT_GPIO). For any pads that are defined as a GPIO, the DIO_DIR register can be written to set the input/
output direction for these pads.
The value observed at the digital input pads can be read from the DIO_DATA register. This value is read as 0 for all
pads configured as ADC inputs (see Section 11.2, “Analog-to-Digital Converters (ADCs)”), because the digital input is
not enabled in this mode. For all other modes, the physical value of the pad is directly measured. The output value for
the digital output pads can also be set using the DIO_DATA register for any pads that are configured as GPIO outputs.
NOTE: If a DIO is configured for a GPIO mode, bit 0 of the DIO_CFG_* register for a DIO can be used
to detect or set the data value for the GPIO (hence the DIO_MODE_GPIO_IN_0,
DIO_MODE_GPIO_IN_1 and DIO_MODE_GPIO_OUT_0, DIO_MODE_GPIO_OUT_1 bit setting
pairs).
The GPIO interface provides a set of four configurable interrupts which, when enabled, signal the occurrence of an
event or a condition on a specified GPIO pad. See Section 14.1, “Nested Vectored Interrupt Controller (NVIC)” on
page 400 for information regarding interrupt configuration and handling.
Each of the GPIO interrupts support triggering an interrupt from any of the 16 DIOs as an input source. Each of the
GPIO interrupts also supports triggering on one of five possible GPIO events. The source and event trigger for each
interrupt can be configured using one of the DIO_INT_CFG_* registers. For each of the four interrupts:
www.onsemi.com
310
onsemi
RSL10 Hardware Reference
• To select the GPIO pad to use as a trigger for the interrupt, set the INT_CFG_SRC bit field.
• To select the event to use as a trigger for the interrupt, use the INT_CFG bit field. A list of the possible
triggering events (including a description of each event) is listed in Table 23.
The external interfaces include an I2C interface supporting both master and slave mode transfers. This interface
implements a subset of the Philips I2C interface as described in the Philips I2C Bus Specification document.
The I2C interface uses the rising edges of a serial clock signal (SCL) to clock in data from a serial data signal
(SDA) to communicate between devices. The I2C interface is designed to handle bus traffic operating at up to 1 MHz;
however, for communications to proceed on the I2C interface, the following relation between the system clock (which is
used internally to clock the I2C interface) and the SCL must hold:
The example timing diagram shown in Figure 28 provides some information about the important elements in an
I2C transaction, which are described in further detail in the previously mentioned bus specification. These elements are:
Start Condition
The SDA transitions from the idle high state to the low state while the SCL remains high. This
can also happen during a transmission as a repeated start condition, which indicates that the
transaction is starting again without an intermediate stop condition.
Address Bits
During the first byte transmitted, the first seven bits on the SDA provide the address of the
device with which the master device wants to communicate. A device that is properly addressed
must acknowledge this transaction if communications are to conform to the I2C standard.
www.onsemi.com
311
onsemi
RSL10 Hardware Reference
During any transaction, the I2C_STATUS_READ_WRITE bit from the I2C_STATUS register
indicates whether the current I2C transaction is a read or write transaction.
Data Byte
All other bytes, excluding the addressing and read/write byte, that are transmitted on the SDA
are considered data bytes for the transaction.
A receiving slave device should not acknowledge a byte if the slave device is not the device that
was addressed, or if the device cannot handle the byte received. A master device should not
acknowledge a byte if the master is receiving and wants to end the transaction. If a not
acknowledge is encountered, the master device should generate a stop condition.
Stop Condition
The SDA transitions from a low state to high state while the SCL remains high. This ends an I2C
transaction.
SCL
SDA
Start Address Read/Write Acknowledge Data Acknowledge Data Not Acknowledge Stop
Condition (Bits 0-6) (Bit 7) by Slave (Bits 0-7) by Master or (Bits 0-7) by Master Receiver; Condition
Slave Acknowledge or Not
Acknowledge by
Slave Receiver
For information about configuring the DIO to create an I2C bus that is needed to support the I2C interface, see
Section 10.2, “Functional Configuration” on page 259.
IMPORTANT: I2C interfaces are defined using open-collector pads for the I2C bus. Because these pads do not
drive a high signal for the bus signals—relying on the bus’s pull-up resistors for proper operation—user
applications using this interface must use either the internal pull-up resistors implemented for the DIO pads, or
a set of external pull-up resistors on the DIOs assigned to be the I2C bus lines.
The I2C_CTRL1 register is the interface control register that contains write-only control bits. Each of these bits is
used to trigger an event and these bits are summarized in Table 24.
www.onsemi.com
312
onsemi
RSL10 Hardware Reference
CAUTION: When using the I2C control bits to control a transfer in master mode with auto acknowledgements, it is not
possible to use the I2C_CTRL1_LAST_DATA bit to terminate a transfer after reading only one byte. This transfer is not
supported in this specific mode since events only occur after an acknowledgement, and the first acknowledgement by
a master device using auto acknowledgements is after the first data byte. Even if a read transfer in this mode should
consist of only one read byte, a second byte will be read due to the automatic acknowledgement of the first byte.
The I2C_STATUS register contains bit fields that are defined as either event bits or state bits. The event bits are
used to indicate that an event has occurred, and the state bits are used to indicate an interface operating state. These
status bits are summarized in Table 25.
www.onsemi.com
313
onsemi
RSL10 Hardware Reference
NOTE: The interface supports both master operation and slave operation. A user application can use the
interface in both modes, provided the application ensures that the I2C bus is not currently in use.
Check the I2C_STATUS_BUS_FREE bit in the I2C_STATUS register to verify that the I2C bus is
not currently in use when attempting to initialize a transfer as a master device.
IMPORTANT: The RSL10 I2C interface is not fully compatible with multi-master operation on the I2C bus.
When RSL10 is operating as a master of the I2C bus and there is a conflict on the I2C bus where RSL10 loses
arbitration, the RSL10 device continues in master mode until a stop occurs instead of immediately switching over
to its slave mode as proscribed by the I2C specification. Once a stop condition occurs, the RSL10 interface stops
attempting to send data, and the conflicting I2C master receives a NACK. Once it has received this NACK, it can
restart the transmission without further conflicts from RSL10.
The I2C interface uses the I2C_DATA register to transmit and receive data through a 1-byte internal buffer. As use
of the I2C_DATA register has side effects that can advance the I2C interface state machine, this register is mirrored
www.onsemi.com
314
onsemi
RSL10 Hardware Reference
without side effects in the I2C_DATA_M register. If the internal buffer is full, the I2C_STATUS_BUFFER_FULL bit from
the I2C_STATUS register is set.
Generally each byte of an I2C transaction must be acknowledged or not-acknowledged by a user application. Use
the I2C_CTRL0_AUTO_ACK_ENABLE bit from the I2C_CTRL0 register to select whether the application itself handles
this acknowledgement manually or the interface handles it automatically. In either case, if the interface does not have
the needed data or a place to put data, the transaction is paused by stretching the clock signal until the interface can
continue. If the clock is being stretched, the I2C_STATUS_CLK_STRETCH bit from the I2C_STATUS register is set as an
indicator.
Use of the above mentioned data registers and the general behavior of the I2C state machine is described in
Section 11.4.3.1, “Operation Using Manual Acknowledgement” on page 317 for manual acknowledgement mode, and
in Section 11.4.3.2, “Operation Using Auto Acknowledgement” on page 317 for automatic acknowledgement mode.
NOTE: If at any point, when operating in either master or slave mode, a user application needs to reset
the I2C bus lines (for example, after encountering a bus error condition), the application should
write the I2C_CTRL1_RESET bit from the I2C_CTRL1 register. This resets both the I2C bus and
the internal state machines of the I2C interface to allow the system to cleanly start again from a
known state.
In slave mode, the device is receiving the serial clock signal from an external master device, which also controls
addressing, direction, and the start/stop conditions for each I2C transfer.
When in slave mode, the I2C interface can be held while waiting for data to be read or for new data to be available
for transmission. In this case, the SCL line is held low by the slave interface - stretching the clock. The
I2C_CTRL0_SPEED bit field in the I2C_CTRL0 register is used to configure the settling time required for the SDA line
by selecting the number of SYSCLK cycles between when data is put on the SDA line and the SCL line is released.
To enable a device in slave mode, set the I2C_CTRL0_SLAVE_ENABLE bit from the I2C_CTRL0 register. This
allows the device to respond to communications on both the I2C general call address (0x00) and at a programmable
slave address that can be selected using the I2C_CTRL0_SLAVE_ADDRESS bit field in the I2C_CTRL0 register. During
a transaction, the I2C_STATUS_GEN_CALL bit in the I2C_STATUS register can be queried to identify the addresses that
were used to address the device.
A device receiving data in a slave mode configuration can use the I2C_CTRL1_LAST_DATA bit from the
I2C_CTRL1 register to automatically NACK the last data byte, to indicate to a master device that it should send a stop
condition.
NOTE: The I2C_CTRL1_LAST_DATA bit is cleared when a new transfer is initiated on the I2C bus.
In master mode, the device provides the serial clock signal and controls all transfer information. To configure the
clock signal, select a prescaling division by 3 using the I2C_CTRL0_SPEED bit field in the I2C_CTRL0 register. The
interface clock frequency for a given configuration can be calculated using:
www.onsemi.com
315
onsemi
RSL10 Hardware Reference
f SYSCLK
f I2C MASTER = -------------------------------------------------------------------------
3 I2C_CTRL0_SPEED + 1
A user application must manually control all components of a master mode transaction. To transmit or receive
using master mode, a device must:
1. Check that the I2C bus lines are not currently in use by reading the I2C_STATUS_BUS_FREE bit in the
I2C_STATUS register. The device can only start a transaction if the lines are free.
2. Start a transaction, sending the start condition, address and direction, by loading the appropriate address and
direction to the I2C_ADDR_START register.
3. Handle data and interrupts as appropriate for the transaction (see Section 11.4.3, “I2C Interrupts”).
4. Complete the transaction by sending a stop condition.
A stop condition can be generated using either the I2C_CTRL1_STOP_CMD bit or the I2C_CTRL1_LAST_DATA
bit in the I2C_CTRL1 register.
When using the I2C_CTRL1_LAST_DATA bit, a stop condition is automatically generated after the current data
byte transfer is completed. If the interface is receiving data, this bit also automatically generates the required
NACK of the last data byte that is received.
NOTE: If the I2C interface is used for transmitting, the last byte of data to be transmitted must be written
to the I2C_DATA register before setting the I2C_CTRL1_LAST_DATA bit, as this bit triggers a
stop condition at the end of the current transfer.
NOTE: As previously noted, the I2C_CTRL1_LAST_DATA bit is cleared when a new transfer is initiated
on the I2C bus.
When using the I2C_CTRL1_STOP_CMD bit, a stop condition is issued immediately. This bit is normally set
when the I2C_CTRL1_ACK or I2C_CTRL1_NACK bits in the I2C_CTRL1 register are set.
CAUTION: Using the stop event (STOP) immediately transmits a stop condition as soon as possible. This can result in
a terminated transfer, and remote devices on the bus might detect I2C errors.
The I2C interface uses an associated interrupt which, when enabled, signals the receipt of a correct address byte and
the completion of each data byte in the transaction.
When enabled, the I2C interrupt signals the stop condition following a transaction for a master transfer. The system
can also be configured to receive this interrupt when operating in slave mode by setting the
I2C_CTRL0_STOP_INT_ENABLE bit from the I2C_CTRL0 register.
Section 14.1, “Nested Vectored Interrupt Controller (NVIC)” on page 400 for information regarding interrupt
configuration and handling.
Several status indicators from the I2C_STATUS register can be used with the interrupt to identify the state of the
I2C interface:
www.onsemi.com
316
onsemi
RSL10 Hardware Reference
• If the I2C_STATUS_ADDR_DATA bit is set, the interrupt was generated in response to a recognized sequence
including a start condition and address on the I2C interface.
• If the I2C_STATUS_STOP_DETECTED bit is set, the interrupt was generated in response to a stop interrupt
being detected on the I2C interface. This bit is cleared immediately when a new transaction starts. No interrupt
is generated for I2C transactions that use an address that was not recognized by the I2C interface.
• If the I2C_STATUS_DATA_EVENT bit is set, the interrupt indicates that data has been received and can be read,
or that data is needed to continue with the transmission of data.
• If the I2C_STATUS_BUS_ERROR_S bit is set, then a bus error has occurred. If the I2C_STATUS_BUS_ERROR
bit is also set, the bus error has not yet been cleared.
• If the I2C_STATUS_ERROR_S bit is set, then either a bus error or an I2C watchdog timeout has occurred. If the
I2C_STATUS_ERROR bit is also set, the error has not yet been cleared.
When handling a transaction, an interrupt is issued whenever data or an acknowledgement is required (in addition
to interrupts triggered by stop conditions).
NOTE: An interrupt is not generated following a NACK for any data condition. However, an interrupt is
generated (if operating in master mode or stop interrupts are enabled) on the stop condition that
is expected to follow the NACK.
An interrupt is also generated if the interface cannot send data that has been provided because the interface is idle
or has already received a NACK from the slave device during the current transaction. As noted above, when the
interface is waiting for data, the clock line is automatically stretched until the required data is provided.
A special interrupt is also generated for a master read once the acknowledge bit from the address byte has been
received. This scenario is a special case because it does not require data nor acknowledgement to trigger an interrupt,
but instead is designed to allow the interface to check whether or not a slave device has acknowledged the transfer at
that point. Provided the slave device has responded, the interface can issue either an ACK or a NACK command to
continue the transfer.
NOTE: Use of the I2C_CTRL1_NACK, I2C_CTRL1_ACK and I2C_CTRL1_STOP_CMD bits from the
I2C_CTRL1 register is only defined when an acknowledgement is needed during a data transfer.
Interface behavior in response to these control bits being set at other times is undefined.
When the interface handles a transaction, interrupts are issued whenever new data can be written or new data has
been received. This allows a user application to maintain a transaction without introducing delay.
www.onsemi.com
317
onsemi
RSL10 Hardware Reference
NOTE: An interrupt is not generated following a NACK for any data condition. However, an interrupt is
generated (if operating in master mode or stop interrupts are enabled) on the stop condition that
is expected to follow the NACK.
Additionally, interrupts are generated if data was supplied but cannot be sent because the interface has received a
NACK from the slave device, or is currently idle (as the interface would be following a stop condition). If data is
required but is not currently available because the buffer is empty, the clock is stretched and an additional interrupt is
generated. If new data was received, but the previous data has not been read (resulting in the buffer not being available),
the clock is stretched until the buffer becomes free.
IMPORTANT: When receiving data in master mode, the timing of interrupts for auto acknowledgement of data
prevents a user application from cleanly terminating a transfer using the LAST_DATA event. As a result, if the
interface is running in this mode, a dummy byte must be transferred to cleanly terminate the current transfer
with a stop condition following this byte.
11.4.4.1 I2C_CTRL0
www.onsemi.com
318
onsemi
RSL10 Hardware Reference
www.onsemi.com
319
onsemi
RSL10 Hardware Reference
www.onsemi.com
320
onsemi
RSL10 Hardware Reference
11.4.4.2 I2C_CTRL1
11.4.4.3 I2C_DATA
11.4.4.4 I2C_DATA_M
www.onsemi.com
321
onsemi
RSL10 Hardware Reference
11.4.4.5 I2C_ADDR_START
11.4.4.6 I2C_STATUS
www.onsemi.com
322
onsemi
RSL10 Hardware Reference
www.onsemi.com
323
onsemi
RSL10 Hardware Reference
RSL10 has access to a highly configurable pulse code modulation (PCM) interface that can be used to stream
control, configuration or signal data into and out of the microcontroller.
The PCM interface is multiplexed onto the DIO pads, which can be configured as the input and output signals that
form the PCM interface with the necessary physical pad configuration. For more information about configuring the
multiplexed DIO functionality, see Chapter 10, “Digital Input/Output” on page 259.
This interface makes use of four external signals in communications. These signals are:
CAUTION: Disabling the bus pull-up and pull-down resistors is not recommended for the PCM frame or PCM clock
inputs. If these pads are used as outputs, you can disable the pull-up resistors. For all other configurations, attempting
to use this interface without the pull resistors can result in unintended interface behavior that would result in the PCM
interface transmitting and/or receiving undefined data.
The PCM interface uses the PCM_CTRL_ENABLE bit in the PCM_CTRL register to enable and disable the PCM
interface entirely. When using the PCM interface in any mode, enable this bit and ensure that the proper DIO
multiplexing has been selected.
The PCM interface can be configured as a either a master device (controlling the frame signal, and potentially
providing the interface PCM_CLK through an internally routed DIO function), or as a slave device (receiving the frame
signal and usually not providing the PCM_CLK). To select between these configurations, configure the
PCM_CTRL_SLAVE bit as appropriate in the PCM_CTRL register. In master mode, configure the PCM frame signal as an
output; in slave mode, configure it as an input. The PCM clock signal is always an input to the PCM interface; this clock
signal can be sourced:
• Internally, using the DIO output mode for the pad used for the PCM clock to route an internal clock signal
within the RSL10 system to the same pad
• Externally, using an externally generated clock signal
One of the advantages of this interface is the high communication speed that allows the interface to operate at the
system clock frequency. PCM_CLK can operate at any division of SYSCLK, up to the same rate as SYSCLK.
The PCM interface is sensitive to only one edge of the PCM clock. All settings are clocked in and signal updates
are captured on the rising or falling edge as specified by the PCM_CLK_POL bit from the PCM_CTRL register. By default,
the PCM interface is only sensitive to falling edges of the PCM clock. For I2S standard compatibility, we recommend
configuring the interface to sample on the rising edges of this clock when using this interface in I2S mode.
Either the Arm Cortex-M3 processor or the DMA can control the data transferred by the PCM interface. Select the
controller by configuring the PCM_CTRL_CONTROLLER bit in the PCM_CTRL register.
IMPORTANT: The PCM interface configuration and internal status registers are tightly synchronized to the
input PCM clock. As a result, the PCM interface is only reset and the internal configuration of the PCM interface
is only updated on a PCM clock edge.
www.onsemi.com
324
onsemi
RSL10 Hardware Reference
The PCM interface uses a wide number of configuration options to help to define a set of signals that the system
can interpret. For the purpose of clarifying the following explanations, the signals generated by the system in the default
PCM configuration are shown in Figure 29.
3&0B&/.
3&0B)5$0(
3&0B6(52 %LW %LW %LW %LW %LW %LW %LW %LW %LW %LW %LW %LW
3&0B6(5, %LW %LW %LW %LW %LW %LW %LW %LW %LW %LW %LW %LW
:RUG :RUG
For more information about the required signal configuration and other interface configuration that is needed to
allow the interface to be compatible with I2S, including an example timing diagram, see Section 11.5.3, “I2S
Configuration and Usage”.
IMPORTANT: If the PCM interface is not idle when changing any configuration settings, changing the PCM
configuration during a transaction results in undefined behavior on the associated PCM signal lines.
The frame signal divides the communications on the PCM interface into data frames (or sub-frames, if the
FRAME_SUBFRAMES bit of the PCM_CTRL register is enabled). Each aspect of the PCM frame signal can be configured
as follows (all bits are in the PCM_CTRL register):
Interval In the default configuration of the FRAME_LENGTH bit field (configured for two words per
frame), and the FRAME_SUBFRAMES bit (configured to disable a frame signal being generated
for each word within a frame), the frame signal is generated once for every two-word frame.
Changing the FRAME_LENGTH bit field in PCM master mode allows the user to select the
number of words per frame, incrementing in multiples of two words, and hence the number of
words per data frame. The FRAME_LENGTH bit field is not used for PCM slave mode; it should
be left in the default configuration (configured for two words per frame), regardless of the actual
www.onsemi.com
325
onsemi
RSL10 Hardware Reference
frame length used, to get the expected behavior. Alternately, if the FRAME_SUBFRAMES bit is
configured to enable subframes, a frame signal is generated with every word of each data frame.
IMPORTANT: Configuring the FRAME_LENGTH bit field to something other than two words per frame while
setting the FRAME_SUBFRAMES bit, results in a configuration where the user receives a PCM frame signal for
every subframe word. Despite the well-defined behavior of the frame signal generated for this configuration, the
handling of data and interrupts by the PCM interface might not appear sensible and generally results in
undefined or unexpected data.
Shape The frame signal can be configured to take one of two shapes by setting the FRAME_WIDTH bit.
By default, the frame signal is configured to produce a short width frame signal which produces
a single cycle pulse in the frame signal at the beginning of each frame. Alternately, you can
configure the signal to produce a long width frame signal which uses a 50% duty cycle square
wave and is spaced to align with the specified width between frame signal events.
Alignment You can configure the PCM frame signal by using the FRAME_ALIGN bit so that the first bit of
sampled data is sampled at the same time as the frame signal, or the first bit of data is sampled
one cycle after the frame signal. In this way, the frame signal is aligned with the first bit of the
new data frame, or with the last bit of the previous data frame.
NOTE: Regardless of the PCM frame signal alignment configuration, the PCM
frame signal occurs at the beginning of each frame, and only one frame
signal occurs for each frame received. The PCM frame signal, if aligned
with the last bit, occurs one bit before the first data bit transmitted at the
start of a transaction, and does not occur on the last bit of the last frame of a
transaction. Similarly, if aligned with the first bit, the first frame signal is
aligned with the first data bit transmitted at the start of a transaction, and no
trailing frame signal occurs for a transaction.
IMPORTANT: To properly terminate a transmission, an expected frame signal pulse must be missed. When the
frame signal is configured to be aligned with the first bit of a transmission, this requires one additional PCM
clock pulse following the transmission of the last bit of the last frame.
For clarification of the above PCM frame signal timing configuration explanations, several examples of different
PCM frame signal traces are shown in Figure 30. In all cases the FRAME_ALIGN bit has been set to
PCM_FRAME_ALIGN_FIRST_BIT (which differs from the default configuration shown in Figure 29 on page 325) to
prevent any confusion as to what are the effects of the other frame signal configuration bits. The frame signal
configurations shown are:
1. Configured to indicate the subframe words of a frame with a short pulse frame signal
2. Configured to indicate the subframe words of a frame with a long width frame signal
3. Configured to use a 2-word frame with a short pulse frame signal
4. Configured to use a 2-word frame with a long width frame signal
5. Configured to use a 4-word frame with a short pulse frame signal
6. Configured to use a 4-word frame with a long width frame signal
www.onsemi.com
326
PCM_CLK
PCM_SERO Bit 8 Bit 0 Bit 1 Bit 2 Bit 7 Bit 8 Bit 0 Bit 1 Bit 7 Bit 8 Bit 0 Bit 1 Bit 2 Bit 7 Bit 8 Bit 0 Bit 1 Bit 7 Bit 8 Bit 0 Bit 1
327
PCM_SERI Bit 8 Bit 0 Bit 1 Bit 2 Bit 7 Bit 8 Bit 0 Bit 1 Bit 7 Bit 8 Bit 0 Bit 1 Bit 2 Bit 7 Bit 8 Bit 0 Bit 1 Bit 7 Bit 8 Bit 0 Bit 1
onsemi
www.onsemi.com
RSL10 Hardware Reference
onsemi
RSL10 Hardware Reference
The length of each word of a PCM transaction can be set to be between one and four bytes (8 and 32 bits) per word
by setting the WORD_SIZE bit field in the PCM_CTRL register. When transmitting data that uses less than 32 bits per
word, the TX_ALIGN bit from the PCM_CTRL register configures whether the data is loaded from the most significant
portion of the data register or from the least significant portion of the data register (both configurations are equivalent
when using 32-bit data words).
The PCM interface uses three associated interrupts that control transmission and reception of PCM data, and report
errors that have occurred while transmitting or receiving PCM data. Section 14.1, “Nested Vectored Interrupt Controller
(NVIC)” on page 400 for information regarding interrupt configuration and handling.
If a user application is transmitting data from the PCM interface, the PCM_TX interrupt signals:
• When the PCM_TX_DATA register value starts to be transmitted using the PCM interface
• That the application can now load into the PCM_TX_DATA register the next data word (of the specified size) to
be transmitted
If a user application is receiving data from the PCM interface, the PCM_RX interrupt signals that a data word of the
specified size was successfully received and written to the PCM_RX_DATA register.
The PCM transmit and receive interrupts are generated for every word of data transmitted in a valid PCM frame
regardless of the length of the PCM frame.
When the DMA is used to control data transfers over the PCM interface, the PCM_ERROR interrupt signals that
either:
• An overrun occurred when the DMA could not read the received data from the PCM_RX_DATA register to the
DMA buffer before this data was overwritten.
• An underrun occurred when the DMA could not write the PCM_TX_DATA register between loads of the internal
PCM transmission registers.
The PCM interface can be configured to be compatible with the I2S interface standard. Table 26 lists the required
signal and data management settings for the PCM interface to enable I2S communication.
www.onsemi.com
328
onsemi
RSL10 Hardware Reference
In master mode, the I2S configuration for the PCM interface has no special interface behaviors.
In slave mode, the behavior of the PCM interface is slightly different from any other configuration. When
configured for slave mode and a long frame width, the PCM interface synchronizes communications with both the
rising edge and falling edge of the frame signal (instead of synchronizing with only the rising edge as it does in all other
configurations). As shown in the I2S signal timing diagram (Figure 31), after transmitting the LSB of the current data
word the device repeatedly transmits the MSB of the next word until a rising or falling edge on the frame signal is
detected. Similarly, if a rising or falling edge is detected on the frame signal before the current data word has been
completely transmitted, the current data word is truncated and the next data word is sent. In this way, the interface is
compatible with I2S signals that transmit a different number of bits than the defined word size.
www.onsemi.com
329
PCM_CLK
PCM_FRAME
PCM_SERO Bit 15 Bit 14 Bit 13 Bit 2 Bit 1 Bit 0 Bit 15 Bit 14 Bit 13 Bit 2 Bit 1 Bit 0 Bit 15
PCM_SERI X Bit 15 Bit 14 Bit 13 Bit 2 Bit 1 Bit 0 X Bit 15 Bit 14 Bit 13 Bit 2 Bit 1 Bit 0 X Bit 15
Word 0 Word 1
330
onsemi
www.onsemi.com
RSL10 Hardware Reference
onsemi
RSL10 Hardware Reference
11.5.4.1 PCM_CTRL
www.onsemi.com
331
onsemi
RSL10 Hardware Reference
11.5.4.2 PCM_TX_DATA
11.5.4.3 PCM_RX_DATA
11.5.4.4 PCM_STATUS
www.onsemi.com
332
onsemi
RSL10 Hardware Reference
The RSL10 system contains two pulse-width modulator (PWM) drivers that can be configured to generate a single
output signal with a specified period and duty cycle. Each PWM driver can be used as independently as a simple D/A
converter.
The PWM drivers are multiplexed onto the DIO pads, which can be configured as output signals with the necessary
physical pad configuration. The DIOs support output of the PWM signals with the specified period and high-time in
each period (DIO_MODE_PWM*) and the inverse of the specified signal (DIO_MODE_PWM*_INV). For more information
about configuring the multiplexed DIO functionality, see Chapter 10, “Digital Input/Output” on page 259.
The timing and shape of the signal produced by each PWM is defined by clock signals divided from SLOWCLK
and the PWM_CFG_PWM_PERIOD and PWM_CFG_PWM_HIGH bit fields from the PWM_CFG_* register for that PWM.
The PWM drivers are each supported by a clock (PWM*CLK) that is divided from SLOWCLK using the
CLK_DIV_CFG1_PWM*CLK_PRESCALE bit fields from the CLK_DIV_CFG1 register. Each PWM clock’s prescaler
provides a clock prescaled from SLOWCLK by 1 to 64. For example, the frequency of the clock supplied to PWM0 is
defined by:
f SLOWCLK
f PWM0 = ---------------------------------------------------------------------------------------------------------------------------
CLK_DIV_CFG1_PWM0CLK_PRESCALE + 1
For more information about the clock divisor configuration, see Section 6.3.8, “Interface Clocks” on page 83.
The value written to the PWM_CFG_PWM_PERIOD bit field configures the number of PWM*CLK cycles in one
period of that PWM signal. Each period is (PWM_CFG_PWM_PERIOD + 1) PWM*CLK cycles in length, with a maximum
length of 256 PWM*CLK cycles.
Similarly, the value written to the PWM_CFG_PWM_HIGH bit field configures the number of PWM*CLK cycles for
which the PWM signal is high in each period. The PWM signal is high for the first (PWM_CFG_PWM_HIGH + 1)
PWM*CLK cycles of each period, to a maximum equal to the period of that PWM signal. After
(PWM_CFG_PWM_HIGH + 1) PWM*CLK cycles, the PWM signal is low for the remainder of the period.
www.onsemi.com
333
onsemi
RSL10 Hardware Reference
NOTE: If the specified high time is greater than or equal to the specified period for a PWM, the PWM
signal does not go low.
Figure 32 illustrates an example PWM configuration for PWM0 where the PWM period is configured for 10 cycles
(PWM_CFG_PWM_PERIOD set to 9), with a high time of 6 cycles (PWM_CFG_PWM_HIGH set to 5). This results in a PWM
signal that repeats every 10 PWM0CLK cycles with a duty cycle of 60%.
10 PWM0CLK Cycles
Each PWM driver can be independently enabled and disabled by configuring the appropriate
PWM_CTRL_PWM*_ENABLE bit from the PWM_CTRL register.
If the two PWM drivers use the same period and clock divisors, the relative timing between the PWM drivers can
be defined. To enable offset configuration, set the PWM_CTRL_PWM_OFFSET_ENABLE bit from the PWM_CTRL register. If
enabled, the number of cycles between the rising edge for PWM0 and the rising edge for PWM1 is equal to the value of
the PWM_CTRL_PWM_OFFSET bit field from the PWM_CTRL register.
NOTE: If the specified offset is greater than or equal to the specified period for the PWM drivers, the
behavior is undefined. The behavior is similarly undefined if the two PWM drivers do not share
the same period.
11.6.1.1 PWM_CFG
11.6.1.2 PWM_CTRL
www.onsemi.com
334
onsemi
RSL10 Hardware Reference
The RSL10 system includes two Serial Peripheral Interfaces (SPI) that allow the system to communicate with
external components including external analog front ends, external controllers, and non-volatile memories (NVM).
The SPI interfaces are multiplexed onto the DIO pads, which can be configured as the input and output signals that
form each SPI interface with the necessary physical pad configuration. For more information about configuring the
multiplexed DIO functionality, see Chapter 10, “Digital Input/Output” on page 259.
The SPI interfaces can be enabled or disabled using the SPI*_CTRL0_ENABLE bit in the SPI*_CTRL0 registers.
Data transfers using the SPI interfaces can be controlled directly by the Arm Cortex-M3 processor or indirectly
using the DMA. To select the controller for an SPI interface, use the SPI*_CTRL0_CONTROLLER bit in the
SPI*_CTRL0 register.
The SPI interfaces can be configured to operate as an SPI master device or an SPI slave device by configuring the
SPI*_CTRL0_SLAVE bit in the SPI*_CTRL0 register. The differences in the SPI pad configurations between master
and slave mode are as follows:
SPI*_CLK In master mode, the SPI*_CLK signal is supplied by the RSL10. The SPI*_CLK signal is
derived from SYSCLK using a power of two prescaler, configurable via the
SPI*_CTRL0_PRESCALE bit field from the SPI*_CTRL0 register, using the following equation:
f SYSCLK
f SPI*_CLK = --------------------------------------------------------------
SPI*_CTRL0_PRESCALE + 1
-
2
In slave mode, the SPI*_CLK signal is sourced from a remote SPI master device. For proper
operation, the frequency of the SPI_CLK inputs must abide by the following relation:
f SYSCLK 4 f SPI*_CLK
www.onsemi.com
335
onsemi
RSL10 Hardware Reference
For both master and slave mode, the SPI*_CTRL0_CLK_POLARITY bit in the SPI*_CTRL0
register is used to control both when data changes and when data is sampled. An SPI interface
using normal polarity updates output signals on the falling edge of SPI*_CLK, and samples
input signals on the rising edge of SPI*_CLK. If the polarity is inverted, output signals change
on the rising edge of SPI*_CLK and input signals are sampled on the falling edge.
NOTE: RSL10 does not support changing the SPI Clock Phase (CPHA), and
therefore only SPI Modes 0 & 2 are supported.
SPI*_CS In master mode, the SPI*_CS pad is an output controlled by the SPI*_CTRL1_CS bit from the
SPI*_CTRL1 register. The signal from this pad is generally routed to the chip select input of a
slave device.
In slave mode, the SPI*_CS pad is an input sourced from a remote SPI master device.
NOTE: For an SPI device, the chip select input is generally interpreted as an
active-low signal. As such, if the signal on the SPI*_CS pad is high, the SPI
slave ignores all communications using the interface. The minimum delay
between a falling edge on the SPI*_CS pad and the first edge on SPI*_CLK
1
is --- SPI*_CLK Period + 2 SYSCLK Periods .
2
SPI*_SERI This pad is a serial input signal that is used to receive data when the following conditions are
met:
SPI*_SERO This pad is a serial output signal that is used to transmit data when the following conditions are
met:
The SPI interfaces support a configurable word size for each transfer of 1 to 32 bits of data per word, as configured
using the SPI*_CTRL1_WORD_SIZE bit field in the SPI*_CTRL1 register. All data transactions using an SPI interface
start with the MSB of the word received, and transfer (SPI*_CTRL1_WORD_SIZE + 1) bits of data per word.
The SPI*_CTRL1_START_BUSY bit in the SPI*_CTRL1 register indicates if the SPI interface is currently
transferring data. When operating in master mode, this same bit can be used to start an SPI transfer.
NOTE: When the interface is disabled, any data currently being transmitted is allowed to complete
before the interface shuts down. If the interface is busy, the SPI*_CTRL* registers cannot be
modified until the interface is idle.
www.onsemi.com
336
onsemi
RSL10 Hardware Reference
If the SPI*_CTRL0_MODE_SELECT bit in the SPI*_CTRL0 register is set, the SPI interface operates in auto mode
to limit the overhead between SPI transfers. This mode works in conjunction with the SPI interface data registers. These
registers are:
SPI*_TX_DATA Shift register containing the data to transmit using the SPI interface.
SPI*_RX_DATA Shift register containing the most recent data word received from the SPI interface.
When operating as an SPI master in auto mode, these registers can be used to efficiently continue a transfer. In this
configuration, if writing to the SPI interface, writing the SPI*_TX_DATA register initiates another write transfer.
Similarly, if reading from the SPI interface, reading the SPI*_RX_DATA register initiates another read transfer.
CAUTION: The SPI*_CTRL1_START_BUSY bit is cleared for one cycle between transfers in auto mode. When polling
this bit to determine when a transfer completes, ensure that at least one cycle has elapsed after starting the transfer
before polling for the completion of a transfer.
In manual mode or when operating as an SPI slave, reading or writing either of these registers has no side effects.
IMPORTANT: When transmitting data as an SPI slave, the SPI interface must load the SPI*_TX_DATA register
between SPI*_CLK edges that update the SPI output signals. If no delay occurs between the words of the SPI
transfer, new data must be loaded in one SPI*_CLK cycle.
Section 14.1, “Nested Vectored Interrupt Controller (NVIC)” on page 400 for information regarding interrupt
configuration and handling.
If a user application is transmitting data using an SPI interface, the SPI*_TX interrupt signals:
• That the interface has started transmitting the data value from the SPI*_TX_DATA register
• That the application can now load the next data word (of the specified size) to be transmitted
If a user application is receiving data from an SPI interface, the SPI*_RX interrupt signals that a data word of the
specified size was successfully received and written to the SPI*_RX_DATA register.
To support tracking the status of an SPI transfer, the SPI*_STATUS registers include a pair of status bits that
indicate if data was transmitted (SPI*_STATUS_SPI*_TRANSMIT_STATUS) or received
(SPI*_STATUS_SPI*_RECEIVE_STATUS) using the SPI interface since the bit was last cleared. The transmit status bit
can be cleared by writing SPI*_TRANSMIT_CLEAR to the SPI*_STATUS register. The receive status bits can similarly
be cleared by writing SPI*_RECEIVE_CLEAR to the SPI*_STATUS register.
www.onsemi.com
337
onsemi
RSL10 Hardware Reference
If using the DMA to control data transfers over an SPI interface, transmit events are triggered on the completion of
a data transmission and receive events are triggered on the completion of a received data word. There are two methods
to ensure that the first DMA word is transferred:
• Configure the SPI interface for write or full-duplex mode before switching from Arm Cortex-M3 processor
control of the SPI interface to DMA control of the interface. Using this method generates a DMA TX request.
• Manually prepare the first data word to be transmitted by writing to the SPI*_TX_DATA register.
Additionally, while using the DMA to control data transfers over an SPI interface, the SPI*_ERROR interrupts
indicate when an error has occurred.
• An overrun occurs when the DMA cannot read the received data from the SPI*_RX_DATA register to the DMA
buffer before this data is overwritten. To monitor for overrun events, set the
SPI*_CTRL0_OVERRUN_INT_ENABLE bit in the SPI*_CTRL0 register. If an overrun occurs and this event
monitor is enabled, the SPI*_STATUS_SPI*_OVERRUN_STATUS bit in the appropriate SPI*_STATUS register
is set.
• An underrun occurs when the DMA cannot write the SPI*_TX_DATA register before a second data transfer
starts using this register’s previous data. To monitor for underrun events, set the
SPI*_CTRL0_UNDERRUN_INT_ENABLE bit in the SPI*_CTRL0 register. If an underrun occurs and this event
monitor is enabled, the SPI*_STATUS_SPI*_UNDERRUN_STATUS bit in the appropriate SPI*_STATUS
register is set.
11.7.4.1 SPI0_CTRL0
www.onsemi.com
338
onsemi
RSL10 Hardware Reference
www.onsemi.com
339
onsemi
RSL10 Hardware Reference
11.7.4.2 SPI0_CTRL1
www.onsemi.com
340
onsemi
RSL10 Hardware Reference
11.7.4.3 SPI0_TX_DATA
11.7.4.4 SPI0_RX_DATA
11.7.4.5 SPI0_STATUS
11.7.4.6 SPI1_CTRL0
www.onsemi.com
341
onsemi
RSL10 Hardware Reference
www.onsemi.com
342
onsemi
RSL10 Hardware Reference
11.7.4.7 SPI1_CTRL1
www.onsemi.com
343
onsemi
RSL10 Hardware Reference
11.7.4.8 SPI1_TX_DATA
11.7.4.9 SPI1_RX_DATA
11.7.4.10 SPI1_STATUS
The general-purpose Universal Asynchronous Receiver-Transmitter (UART) interface provides support for
communicating with devices supporting the standard UART transmission protocol.
The UART interface is multiplexed onto the DIO pads, which can be configured as the UART interface’s receiver
and transmitter signals, with the necessary physical pad configuration (pull-up/pull-down resistor and low pass filtering
configuration for the Rx signal, drive strength configuration for the Tx signal). For more information about configuring
the multiplexed DIO functionality, see Chapter 10, “Digital Input/Output” on page 259.
www.onsemi.com
344
onsemi
RSL10 Hardware Reference
The UART interface can be enabled or disabled using the UART_CFG_ENABLE bit in the appropriate UART_CFG
register. When disabled, the UART interface will immediately terminate any ongoing transfer, and setting the UART
transmit line high and ignoring any partially received receive data.
The UART interface operates in full-duplex mode using a standard data format of 1 start bit, 8 data bits and 1 stop
bit. All data bytes being sent or received are interpreted as starting with the LSB. Figure 33 shows the waveform for a
UART transmit or receive transaction.
'DWD%LWV
Data to be transmitted is written to the UART_TX_DATA register. Data that has been received over the UART
interface is stored in the UART_RX_DATA register. The UART_TX_DATA and UART_RX_DATA registers are only
accessible after the interface has been enabled via the UART_CFG register.
NOTE: When the UART interface is disabled using the UART_CFG_ENABLE bit, data transmissions that
are in progress complete before the interface shuts down.
The baud rates (specified in bits per second) for the UART interfaces are defined in terms of the UARTCLK
frequency and several configuration parameters, as seen in the following equation for baud rate calculation:
UART_CFG_PRESCALE UARTCLK
baud rate = ---------------------------------------------------------------------------------------------------------------------------------------
18
-
2 1 + 11 UART_CFG_PRESCALE_ENABLE
The CLK_DIV_CFG1_UARTCLK_PRESCALE bit field from the CLK_DIV_CFG1 register is used to prescale the
SYSCLK frequency to a reasonable frequency for UARTCLK. The UART_CFG_PRESCALE_ENABLE bit from the
UART_CFG registers can be used as a coarse divide-by-12 clock prescaler for further reducing the frequency of
UARTCLK to the appropriate range for the desired baud rate. The UART_CFG_PRESCALE bit field from UART_CFG
provides the necessary fine adjustments to match an exact baud rate. The configuration supports baud rates up to 1/4 of
the UARTCLK frequency. For more information about the clock divisor configuration, see Section 6.3.8, “Interface
Clocks” on page 83.
IMPORTANT: For proper functionality, UART interfaces require both sides of a connection to have an absolute
clock accuracy error of less than 2.5%. To allow for clock jitter, we recommend that all UART communications
use a clock with a maximum of 2% error versus the expected target frequency.
Data transfers using the UART interfaces can be controlled directly by the Arm Cortex-M3 processor or indirectly
using the DMA. Controller selection for the UART interface is configured using the DMA_ENABLE bit in the UART_CFG
registers.
www.onsemi.com
345
onsemi
RSL10 Hardware Reference
The UART interface uses three associated interrupts that separately control transmission and reception of UART
data and handling of UART transmission errors. Section 14.1, “Nested Vectored Interrupt Controller (NVIC)” on
page 400 for information regarding interrupt configuration and handling.
If a user application is transmitting data from the UART interface, the UART_TX interrupt signals that transmission
of the data value in the UART_TX_DATA register has started, and that the application can now load the next byte to be
transmitted.
If a user application is receiving data from the UART interface, the UART_RX interrupt signals that a data byte has
been successfully received and has been written to the UART_RX_DATA register.
In both Interrupt Mode and DMA Mode, the UART_ERROR interrupt is raised when an RX buffer overrun occurs.
When this happens, the UART_RX_OVERRUN_STATUS bit from the UART_STATUS register is set.
11.8.2.1 UART_CFG
11.8.2.2 UART_TX_DATA
www.onsemi.com
346
onsemi
RSL10 Hardware Reference
11.8.2.3 UART_RX_DATA
11.8.2.4 UART_STATUS
The RSL10 SoC includes several internal connections that link the RF front-end (see Chapter 8, “RF Front-End”
on page 132) and the Bluetooth low energy technology baseband hardware (see Chapter 9, “Bluetooth Low Energy
Baseband” on page 202). This includes:
• An internal SPI interface bus for control and configuration of the RF front-end
• RF front-end GPIO signals
• Bluetooth low energy technology baseband Tx, Rx, and synchronization control signals
• Bluetooth low energy technology baseband Tx, and Rx data signals
All signals from these support interfaces are accessible through the DIOs for debug and testing purposes. DIO
outputs can be configured to provide the signals from the support interfaces using the DIO_CFG registers. DIO inputs
can be configured to provide alternate sources for support interface inputs using the BB_*_SRC and RF_*_SRC
registers.
If your are using DIO[12:15], in addition to configuring the DIOs in the DIO_CFG_* register, disable the JTAG
bit-banding signals in the JTAG configuration register DIO_JTAG_SW_PAD_CFG as follows:
For more information on DIO configuration, see Chapter 10, “Digital Input/Output” on page 259. Figure 34 shows
how these interfaces (and their DIO connections) are connected internally on the RSL10 SoC, and Table 27 provides a
description of these connections.
www.onsemi.com
347
DIO[0:15] input mux
RF_SPI_CSN
spi_cs_n
BB_SPI_CSN
radio_out[46]
RF_SPI_MOSI
spi_mosi
BB_SPI_MOSI
radio_out[47]
BB_SPI_MISO
radio_in[47]
RF_SPI_MISO
spi_miso
GPIO[9:5] RF_GPIO[9:5]
348
GPIO3 RF_GPIO3 BB_TX_DATA
radio_out[0]
onsemi
www.onsemi.com
radio_out[16]
BB_RX_CLK
radio_in[3]
GPIO1 RF_GPIO1
RSL10 Hardware Reference
BB_RX_DATA
Figure 34. Interface between the Baseband Controller and the RF Front-End
radio_in[0]
GPIO0 RF_GPIO0
BB_DBG0
ble_dbg0[7:0]
Table 27. Interface Signals Between the Baseband Controller and the RF Front-End
When the RF front-end is isolated or powered down, signals provided by the RF front-end are forced to zero. When
the baseband controller is disabled, all signals provided by the Bluetooth baseband except SPI_CSN are forced to zero
(SPI_CSN is forced to one).
NOTE: Disabling or removing the clock source from the RF front-end or the baseband controller will
stop, and potentially corrupt, any ongoing SPI transaction. As a result, care should be taken to
disable the RF front-end and baseband controller only when the baseband-RF front-end interface
is idle, as indicated by the BBIF_SYNC_CFG_RF_ACTIVE bit from the BBIF_SYNC_CFG register.
The RF front-end supports five additional GPIOs that are not connected between the baseband controller and the
RF front-end.
All ten of the RF front-end GPIOs can be used to monitor or route internal signals from the RF front-end, and their
use is defined by the RF_REG*_PAD_CONF_*_PAD_*_CONF bit-fields from the RF_REG03, RF_REG04 registers. Using
the RF front-end GPIOs in their non-default configurations (i.e., using a setting other than the specified
PAD_CONF_*_PAD_*_CONF_DEFAULT bit-setting) is not recommended in any user applications.
www.onsemi.com
349
CHAPTER 12
12.Peripherals
12.1 CYCLIC REDUNDANCY CHECK (CRC) GENERATOR
The peripherals to the Arm Cortex-M3 processor include a CRC generator that provides support for two standard
cyclic redundancy check (CRC) algorithms (CRC-CCITT and CRC-32, defined by the IEEE 802.3 Ethernet standard).
The calculated outputs from this generator can be employed by a user application to ensure data integrity of
communications and non-volatile memory information. They do this by guaranteeing that all single-bit errors, two-bit
errors, burst errors (i.e., multiple bit errors in a row), and any error containing an odd number of bits can be detected.
NOTE: The integrity of Bluetooth communications is already protected by a 24-bit CRC. The integrity of
individual pairs of flash memory words are protected by the flash’s integrated error correction
code.
The CRC generator can be configured to select the CRC-CCITT algorithm, by clearing the CRC_CTRL_CRC_TYPE
bit from the CRC_CTRL register to the CRC_CCITT bit setting. The parameters associated with the CRC-CCITT
algorithm implementation are provided in Table 28.
No data manipulation is required for the output CRC generated for the standard CRC-CCITT algorithm (i.e., no
data byte reversal, reversal of the final result or other finalization).
The CRC generator can be configured to select the CRC-32 algorithm, by setting the CRC_CTRL_CRC_TYPE bit
from the CRC_CTRL register to the CRC_32 bit setting. The parameters associated with the CRC-32 algorithm
implementation are provided in Table 29.
The output CRC generated for the standard CRC-32 algorithm requires data byte reversal and reversal of the final
result.
The Arm Cortex-M3 processor’s CRC generator supports non-standard variants of the CRC-CCITT and CRC-32
standard implementation.
www.onsemi.com
350
onsemi
RSL10 Hardware Reference
• To use non-standard CRC ordering of data within each data byte, set the CRC_CTRL_BIT_ORDER bit from the
CRC_CTRL register.
• To use non-standard CRC ordering of the final result, set the CRC_CTRL_FINAL_CRC_REVERSE bit from the
CRC_CTRL register.
• To use non-standard CRC XOR of the final result, set the CRC_CTRL_FINAL_CRC_XOR bit from the
CRC_CTRL register. If configured for a non-standard XOR, this uses a final XOR value of 0xFFFF for
CRC-CCITT and 0x00000000 for CRC-32.
12.1.1.1 CRC_CTRL
www.onsemi.com
351
onsemi
RSL10 Hardware Reference
12.1.1.2 CRC_VALUE
12.1.1.3 CRC_ADD_1
12.1.1.4 CRC_ADD_8
12.1.1.5 CRC_ADD_16
www.onsemi.com
352
onsemi
RSL10 Hardware Reference
12.1.1.6 CRC_ADD_24
12.1.1.7 CRC_ADD_32
12.1.1.8 CRC_FINAL
12.2.1 Introduction
The direct memory access (DMA) controller module allows background transfers between peripherals and memory
without core intervention. This allows the system core to be used for other computational needs while allowing
high-speed sustained transfers to and from the peripherals. The DMA is connected to the Arm Cortex-M3 core, the
processor’s peripherals and interfaces, and the processor’s data memory via four independent channels, as shown in
Figure 35.
DMA
DMA Enabled
Enabled
DMA Enabled
Peripheral DMA Requests DMA Interrupts NVIC
Peripheral
Peripherals DMA
Peripheral Register
Access
DMA Data
Transfers
Peripheral
Registers
Peripheral Bus
(Memory Mapped
Registers) ARM
Memory
Cortex-
Arbiter
M3 Core
RAM Memory
(DRAM)
The DMA has eight independently configurable channels. To enable or disable a DMA channel, configure the
DMA_CTRL0_ENABLE bit from the appropriate DMA_CTRL0 register. If the DMA channel is in the midst of an operation
www.onsemi.com
353
onsemi
RSL10 Hardware Reference
when it is disabled, the operation is aborted. All pending bus requests are subsequently aborted when the channel is
disabled.
The DMA_NEXT_SRC_ADDR registers contain calculated values that indicate the address where
the next word will be read from for a DMA channel. This pointer is updated with each word
transferred, using the base source address, current transfer count of how many words have been
read from the DMA channel’s source (provided as DMA_WORD_CNT), and other source address
configurations. Since the base source address is not modified during a transfer, the increment
setting only affects the calculation of the next address.
NOTE: When the DMA channel is disabled, the next address is always the base
address.
Each transfer can be configured to use a static location for the source data, or to increment the
source data pointer after every word transferred. Configure this mode using the
DMA_CTRL0_SRC_ADDR_INC bit from the appropriate DMA_CTRL0 register. Transfers that use a
peripheral as the source typically have source incrementing disabled. Conversely, transfers that
use memory as the source typically have source incrementing enabled.
If the address is incremented, the increment can be configured to be positive or negative, and to
use a step size of between one and four 32-bit words, by setting the SRC_ADDR_STEP_MODE bit
and the SRC_ADDR_STEP_SIZE bit field from the appropriate DMA_CTRL0 register.
The DMA_NEXT_DEST_ADDR registers contain calculated values that indicate the address where
the next word will be written for a DMA channel. This pointer is updated with each word
transferred, using the base destination address, current transfer count of how many words have
been read from the DMA channel’s source (provided as DMA_WORD_CNT), and other destination
address configurations. Since the base destination address is not modified during a transfer, the
increment setting only affects the calculation of the next address.
NOTE: When the DMA channel is disabled, the next address is always the base
address.
Each transfer can be configured to use a static location for the destination data, or to increment
the destination data pointer after every word transferred. Configure this mode using the
DMA_CTRL0_DEST_ADDR_INC bit from the appropriate DMA_CTRL0 register. Transfers that use
a peripheral as the destination typically have destination incrementing disabled. Conversely,
transfers that use memory as the destination typically have destination incrementing enabled.
If the address is incremented, the increment can be configured to be positive or negative, and to
use a step size of between one and four 32-bit words, by setting the
www.onsemi.com
354
onsemi
RSL10 Hardware Reference
The transfer can also be configured to indicate when a portion of the transfer has been
completed, by setting the DMA_CTRL1_COUNTER_INT_VALUE bit field from the appropriate
DMA_CTRL1 register. This counter value can be set for any portion of the transfer length, from
one word, to one word less than the overall transfer length. The counter interrupt is never
triggered if the counter interrupt value is set to 0, to the transfer length, or to any value that
exceeds the transfer length.
Each transfer can be configured to run once (linear mode) and complete, or to run repeatedly
(circular mode), producing a circular buffer. When operating in circular mode, the DMA
channel’s transfer repeats until explicitly stopped by the user application. Configure this mode
using the DMA_CTRL0_ADDR_MODE bit from the appropriate DMA_CTRL0 register.
For more information about transfer length, see Section 12.2.3.3, “Transfer Length” on
page 359. For more information about interrupts indicating the transfer length and counter
configuration, see Section 12.2.5, “DMA Interrupt Configuration” on page 363.
For transfer types that use a source peripheral, select the desired source peripheral using the
DMA_CTRL0_SRC_SELECT bit field from the DMA channel’s DMA_CTRL0 register.
For transfer types that use a destination peripheral, select the desired destination peripheral
using the DMA_CTRL0_DEST_SELECT bit field from the DMA channel’s DMA_CTRL0 register.
For more information about transfer type behavior and the peripherals that can be used as
sources and destinations for DMA transfers, see Section 12.2.4, “DMA Transfer Types” on
page 359.
Interrupt Configuration
The interrupts used to coordinate with, and control, a DMA transfer can be defined using the
DMA_CTRL0_*_INT_ENABLE bits from the DMA channel’s DMA_CTRL0 register. For more
information, see Section 12.2.5, “DMA Interrupt Configuration” on page 363.
www.onsemi.com
355
onsemi
RSL10 Hardware Reference
Transfer Priority
The relative priority of this DMA channel’s transfer. For more information, see Section 12.2.6,
“Channel Priority”.
IMPORTANT: The DMA uses the current counter value to calculate the next source address and next
destination address. The base source address and base destination address are not changed. The starting length
is not changed either. Only the counter value is modified during a transfer. This allows the DMA configuration
to be reused (either explicitly through firmware or in circular mode) without rewriting the configuration register
for multiple transfers.
The DMA controller contains a set of summary status registers (DMA_STATUS) indicating the completion status of
each DMA channel (idle or complete), and each channel’s interrupt status. The firmware can use this to quickly assess
the status of a DMA channel.
To set the source word size used, write the correct encoding to the DMA_CTRL0_DEST_SRC_WORD_SIZE bit-field in
the appropriate DMA_CTRL0 register. To set the destination word size used, write the correct encoding to the
DMA_CTRL0_DEST_DEST_WORD_SIZE bit-field in the appropriate DMA_CTRL0 register.
• When the source word size is smaller than the destination word size, packing is used to consolidate data from
multiple source word transfers.
• When the destination word size is smaller than the source word size, unpacking is used to split data into
multiple destination word transfers.
For example, when reading 8-bit bytes from the I2C interface and storing them to data memory, four 8-bit data
words from the I2C interface are packed before they are written to memory. In this example, it is most efficient to make
the destination word size 32 bits to minimize bus utilization and maximize memory use efficiency.
When both the source and destination have the same word size, no packing or unpacking of data is performed.
www.onsemi.com
356
onsemi
RSL10 Hardware Reference
NOTE: When reading from or writing to memory, the DMA might utilize only a portion of the memory
data if the selected word sizes differ.
The packing and unpacking behavior is illustrated in Figure 36. The figure provides a mapping of how data is
transferred between source and destination for:
www.onsemi.com
357
onsemi
RSL10 Hardware Reference
32 8 HGF EDCBAs X X X X X X H Gd X X X X X X B Ad
X X X X X X F E d+p X X X X X X D C d+p
X X X X X X D C d+2p X X X X X X F E d+2p
X X X X X X B A d+3p X X X X X X H G d+3p
32 4 HGF EDCBAs X X X X X X X Hd X X X X X X X Ad
X X X X X X X G d+p X X X X X X X B d+p
X X X X X X X F d+2p X X X X X X X C d+2p
X X X X X X X E d+3p X X X X X X X D d+3p
X X X X X X X D d+4p X X X X X X X E d+4p
X X X X X X X C d+5p X X X X X X X F d+5p
X X X X X X X B d+6p X X X X X X X G d+6p
X X X X X X X A d+7p X X X X X X X H d+7p
16 32 XXXXDCBAs
X X X X H G F E s+p DCBAHGF Ed HGF EDCBAd
16 4 XXXXDCBAs X X X X X X X Dd X X X X X X X Ad
X X X X X X X C d+p X X X X X X X B d+p
X X X X X X X B d+2p X X X X X X X C d+2p
X X X X X X X A d+3p X X X X X X X D d+3p
8 32 X X X X X X B As
X X X X X X D C s+p
X X X X X X F E s+2p
X X X X X X H G s+3p BADC F E HGd HGF EDCBAd
8 16 XXXXXXBAs
X X X X X X D C s+p XXXXBADCd XXXXDCBAd
4 32 X X X X X X X As
X X X X X X X B s+p
X X X X X X X C s+2p
X X X X X X X D s+3p
X X X X X X X E s+4p
X X X X X X X F s+5p
X X X X X X X G s+6p
X X X X X X X H s+7p AB CD E F GHd HGF EDCBAd
4 16 X X X X X X X As
X X X X X X X B s+p
X X X X X X X C s+2p
X X X X X X X D s+3p X X X XAB CDd XXXXDCBAd
4 8 XXXXXXXAs
X X X X X X X B s+p XXXXXXABd XXXXXXBAd
www.onsemi.com
358
onsemi
RSL10 Hardware Reference
For memory-to-peripheral transfers, the counter in the DMA channel always operates on the peripheral’s word size.
For peripheral-to-memory, peripheral-to-peripheral and memory-to-memory transfers, the counter in the DMA channel
always operates on the source’s word size. The next address for reading or writing can be determined from:
This can result in an actual read or write if no previously loaded data is available, or use of the temporary register if
sufficient data has already been loaded.
When data is stored to memory, it is always right aligned. When the destination word size is larger than the source
word size, the data is stored starting from the LSB. The upper bits are always written as zero (padded mode). If the
configured destination word size is smaller than the configured source word size for a transfer to memory, the data is
aligned at the LSB and truncated (truncate mode).
In packing or unpacking data, the endianness of the data is important because the order in which data bytes are
extracted from a word is different between little and big endian. The DMA supports processing both little endian and
big endian data, through the DMA_CTRL0_BYTE_ORDER bit from the DMA_CTRL0 registers.
IMPORTANT: To provide a nibble ordering that is consistent with the byte endianness, the ordering of nibbles
must match the byte ordering. This ensures that transfers which use data packing of 4-bit words—for either the
source or destination—order data consistently.
NOTE: When packing data into memory for a transfer length that is not a multiple of the destination
word size, the final data memory word is automatically zero padded, before being written to data
memory at the end of the transfer.
The DMA supports several types of data transfers between the Arm Cortex-M3 processor’s memory and the
interfaces and peripherals connected to the peripheral bus, including:
• Memory-to-Memory transfers
• Memory-to-Peripheral transfers
• Peripheral-to-Memory transfers
• Peripheral-to-Peripheral transfers
The interfaces and peripherals mapped onto the peripheral bus that are valid sources of data for a DMA data
transfer are listed in Table 31.
www.onsemi.com
359
onsemi
RSL10 Hardware Reference
Each source interface or peripheral, when configured for DMA operation, asserts its DMA request signal when data
can be read from the interface. This signal is cleared automatically when a data value is read from the interface using
the peripheral bus.
The interfaces and peripherals mapped onto the peripheral bus that are valid destinations for data from a DMA data
transfer are listed in Table 32.
Each destination interface or peripheral, when configured for DMA operation, asserts its DMA request signal when
data can be written to the peripheral bus. This signal is cleared automatically when a data value is written to that
interface using the peripheral bus.
The peripheral bus (PBUS) option can be used as an uncontrolled DMA source or destination for transfers. This
can be used to source or sink data from any register mapped onto the peripheral bus. When configured for this mode, the
PBUS is configured as a peripheral that immediately accepts all DMA requests to the peripheral. An example use case
for this configuration includes using the DMA to load a sequence of data into the CRC generator (see Section 12.1,
“Cyclic Redundancy Check (CRC) Generator” on page 350).
CAUTION: When the DMA interface is used to control transfers that use an interface or peripheral, all accesses to that
interface or peripheral’s data registers using the peripheral bus clears the DMA request signals. If a DMA request signal
is cleared due to an Arm Cortex-M3 processor access, the underlying DMA transfer becomes corrupted.
www.onsemi.com
360
onsemi
RSL10 Hardware Reference
IMPORTANT: Due to the structure of the SPI interfaces, when a user application initializes a transmit transfer
using an SPI interface controlled by a DMA channel, the user application must preload the SPI interface’s
transmit data register (SPI*_TX_DATA) with the first data word of the transfer. For more information about the
SPI interfaces, see Section 11.7, “Serial Peripheral Interfaces (SPI)” on page 335.
NOTE: To ease understanding, throughout the remainder of this section, all interfaces and peripherals
used in DMA transfers are called peripherals due to their memory-mapping onto the peripheral
bus.
1. The DMA requests access to the Arm Cortex-M3 processor’s data memory via the Arm Cortex-M3
processor’s data memory arbiter.
2. The DMA is granted access to the Arm Cortex-M3 processor’s data memory.
3. The DMA reads the word at the next source address and stores the word in a temporary register.
4. The DMA releases the Arm Cortex-M3 processor’s data memory.
5. The DMA requests access to the Arm Cortex-M3 processor’s data memory via the Arm Cortex-M3
processor’s data memory arbiter.
6. The DMA is granted access to the Arm Cortex-M3 processor’s data memory.
7. The DMA writes the word at the next destination address.
8. The DMA releases the Arm Cortex-M3 processor’s data memory.
9. The DMA channel’s counter is incremented.
10. If the transfer length is not reached, the DMA waits one cycle before starting the next transfer. If the transfer
length is reached and the DMA is in linear mode, the DMA channel switches to the complete state. Circular
mode is not applicable to Memory-to-Memory transfers.
11. Any DMA interrupts that are triggered by this transfer are generated.
IMPORTANT: The maximum transfer rate for memory-to-memory transfers is one transfer every two
SYSCLK cycles.
12.2.4.2 Memory-to-Peripheral
The DMA memory-to-peripheral mode is used to transfer data from the Arm Cortex-M3 processor’s data memory
to a peripheral on the peripheral bus. If the peripheral is configured to operate in DMA mode, the operation sequence is
as follows (assuming 32-bit operation):
www.onsemi.com
361
onsemi
RSL10 Hardware Reference
1. The DMA channel receives a DMA request from both the source and destination peripherals in any order. For
the source peripheral, the following operation is required to generate a request:
a. The source peripheral generates a new data word.
b. The source peripheral asserts a signal on a DMA request line (indicates that the buffer is full).
c. The DMA channel receives a DMA request from the source peripheral.
The destination peripheral generates a request when it can receive an additional data word.
2. Through the peripheral bus bridge, the DMA requests access to the peripheral bus.
3. The DMA is granted access to the peripheral bus.
4. The DMA reads the word at the next source address and stores the word to a temporary register.
5. The DMA releases the peripheral bus.
6. The DMA channel acknowledges the source peripheral DMA request (implied by the previous read operation).
7. Through the peripheral bus bridge, the DMA requests access to the peripheral bus.
8. The DMA is granted access to the peripheral bus.
9. The DMA writes the word at the next destination address.
www.onsemi.com
362
onsemi
RSL10 Hardware Reference
10. The DMA channel acknowledges the destination peripheral DMA request (implied by the previous write
operation).
11. The DMA releases the peripheral bus.
12. The DMA channel’s counter is incremented.
13. If the transfer length is not reached, the DMA channel waits for the next peripheral DMA request. If the
transfer length is reached and the DMA is in linear mode, the DMA channel switches to the complete state. If
the DMA is in circular mode, the DMA resets the counter to 0 and remains enabled.
14. Any DMA interrupts triggered by this transfer are generated.
IMPORTANT: To ensure that DMA operations are atomic, the DMA channel operation does not begin until
DMA requests are received from both peripherals.
The DMA has a separate interrupt for each DMA channel. Each DMA channel can be configured using its
DMA_CTRL0 register to assert an interrupt for several independent conditions:
A transfer is complete
Set the DMA_CTRL0_COMPLETE_INT_ENABLE bit to enable this interrupt. A transfer is
considered complete when the last word is written to the DMA channel’s destination.
The DMA channel status register for each channel (DMA_STATUS) indicates which interrupts have triggered using
the DMA_*_INT_STATUS bits. When an interrupt is generated, the application is responsible for reading the status
register for that channel to determine which interrupts have been triggered. For all interrupts, the application’s interrupt
handlers are responsible for clearing the status, and thus clearing the pending interrupt, using the DMA_*_INT_CLEAR.
NOTE: A start interrupt is generated each time a transfer starts (including when a circular transfer
restarts). Similarly, a complete interrupt is generated each time a transfer is completed. A disable
interrupt is triggered whenever the channel is disabled for any reason (including when a linear
transfer is completed).
www.onsemi.com
363
onsemi
RSL10 Hardware Reference
When using a circular DMA transfer, the counter interrupt and complete interrupt can be used in tandem to create a
two-page buffer for continuous data transfers. When the first page has transferred, the counter interrupt triggers. When
the second page has transferred, the complete interrupt triggers. In this configuration:
For debug purposes, the DMA_STATUS registers also include the DMA_STATUS_STATE bit-field which indicates the
DMA channel’s current state. This can be used to investigate why a DMA transfer has stalled if it does not complete, as
it indicates whether the DMA is idle, is waiting on the source or destination, is waiting for a read/write to occur, or is in
another intermediate state.
Only one transfer using the DMA channels can be actively serviced at a time. To coordinate between DMA
channels, the DMA contains a channel arbiter that is responsible for determining which DMA channel is active. The
relative priority of each channel can be set using the DMA_CTRL0_CHANNEL_PRIORITY bit field from the DMA_CTRL0
registers.
When a DMA channel receives DMA requests from the peripherals it is configured to use, it indicates to the arbiter
that it is ready to transfer one word. Each DMA channel request is handled automatically. Several situations where
multiple requests might be pending are:
• Two or more DMA channels receive a DMA request during the same clock cycle.
• One or more DMA requests come in during the processing of another DMA request.
• A DMA channel is enabled with multiple requests already pending.
When choosing which DMA channel to activate, the DMA arbiter applies the channel’s priority settings as follows:
• When multiple channels are ready, the channel with the highest channel priority setting is activated.
• If more than one channel is ready to be activated and they share the same priority setting, the lowest numbered
channel is activated.
When a single channel is ready, the arbiter grants access and the channel begins to service that request immediately.
IMPORTANT: A lower priority DMA channel might never be served if a higher priority DMA channel is
generating requests too fast. This type of situation must be avoided by application design.
12.2.7 Data Memory Usage by the DMA and ARM Cortex-M3 Processor
The DMA has direct access to the Arm Cortex-M3 processor data memory and LPDSP32 data memories. This
access is limited by a system bus arbiter to avoid memory access conflicts between the DMA, the Arm Cortex-M3
processor, and the LPDSP32 DSP.
www.onsemi.com
364
onsemi
RSL10 Hardware Reference
When the DMA is granted access to memory, it performs a single operation (read or write) and releases the
processor data memory. This ensures that the DMA never blocks access to data memory from the processor for more
than a single memory operation.
Configuration of the memory arbiter for each memory instance uses the SYSCTRL_MEM_ARBITER_CFG register to
select between prioritizing the Arm Cortex-M3 processor, prioritizing LPDSP32, or selecting one of two round-robin
arbitration schemes:
• If the Arm Cortex-M3 is given priority access to a memory, access to the memory is given to the
Arm Cortex-M3 processor, then to the LPDSP32 DSP if the Arm Cortex-M3 processor is not using it, and
finally to the DMA if it would otherwise be idle.
• If the LPDSP32 DSP is given priority access to a memory, access to the memory is given to the LPDSP32
DSP, then to the Arm Cortex-M3 processor if the LPDSP32 DSP is not using it, and finally to the DMA if it
would otherwise be idle.
• If the SYSCTRL_MEM_ARBITER_CFG_ROUND_ROBIN_TOKEN bit indicates a real-time DMA round robin
scheme, the system behaves as though the Arm Cortex-M3 processor has been given priority access unless the
DMA has been blocked for 7 consecutive SYSCLK cycles. If the DMA remains blocked after 7 consecutive
cycles, the DMA is temporarily given the highest priority until it releases the memory again.
• If the SYSCTRL_MEM_ARBITER_CFG_ROUND_ROBIN_TOKEN bit indicates a normal round robin scheme,
priority rotates in sequence between the Arm Cortex-M3 processor, the LPDSP32 DSP, and the DMA.
Assuming that the Arm Cortex-M3 processor is performing only normal (non-bit-banded) memory transfers,
the worst-case access time to the Arm Cortex-M3 processor data memory for DMA transfers can be
established with high certainty. Typically, if the DMA and the processor are both always requesting data
memory access, they can each utilize the memory 50% of the time.
NOTE: If the Arm Cortex-M3 processor is utilizing bit-banding operations, data memory access for the
LPDSP32 and DMA might be delayed by an additional cycle because the memory controller
uses an additional cycle for these operations.
For more information about memories and memory arbitration, see Chapter 7, “Memory” on page 94.
www.onsemi.com
365
onsemi
RSL10 Hardware Reference
www.onsemi.com
366
onsemi
RSL10 Hardware Reference
12.2.8.1 DMA_CTRL0
The following bit fields and field names apply equally to all DMA_CTRL0[*] registers.
www.onsemi.com
367
onsemi
RSL10 Hardware Reference
www.onsemi.com
368
onsemi
RSL10 Hardware Reference
www.onsemi.com
369
onsemi
RSL10 Hardware Reference
12.2.8.2 DMA_SRC_BASE_ADDR
The following bit fields and field names apply equally to all DMA_SRC_BASE_ADDR[*] registers.
12.2.8.3 DMA_DEST_BASE_ADDR
The following bit fields and field names apply equally to all DMA_DEST_BASE_ADDR[*] registers.
12.2.8.4 DMA_CTRL1
The following bit fields and field names apply equally to all DMA_CTRL1[*] registers.
www.onsemi.com
370
onsemi
RSL10 Hardware Reference
12.2.8.5 DMA_NEXT_SRC_ADDR
The following bit fields and field names apply equally to all DMA_NEXT_SRC_ADDR[*] registers.
12.2.8.6 DMA_NEXT_DEST_ADDR
The following bit fields and field names apply equally to all DMA_NEXT_DEST_ADDR[*] registers.
12.2.8.7 DMA_WORD_CNT
The following bit fields and field names apply equally to all DMA_WORD_CNT[*] registers.
12.2.8.8 DMA_STATUS
The following bit fields and field names apply equally to all DMA_STATUS[*] registers.
www.onsemi.com
371
onsemi
RSL10 Hardware Reference
12.3 TIMERS
• The SysTick timer from the Arm Cortex-M3 processor, which is described in Section 14.2, “SysTick” on
page 408
• Four general-purpose timers
• A 24-bit counter
• A pair of configurable prescalers controlling a fixed prescale by 2 or 32, as well as a variable 3-bit prescale
factor
• 3 operating modes: single-shot, multiple-shot, and free-run
• A dedicated interrupt that can be used to signal timer expiration
• Dedicated configuration and status registers
The general-purpose timers are clocked from a divided form of slow clock. The divisor for each clock is
configurable by a pair of prescaling factors set using the appropriate TIMER_CFG_* register:
• The TIMER_CFG_CLK_SRC bit is used to select between fixed initial division of slow clock by 2 or by 32
www.onsemi.com
372
onsemi
RSL10 Hardware Reference
• The TIMER_CFG_PRESCALE bit field is used to increase the scaling factor by a power of two, allowing the
selection of a clock that is additionally divided by as much as 128 for each timer.
These prescaling divisions result in a wider range of timing that the timers can achieve; however, the granularity at
which the timer can be configured to trigger increases in parallel.
After prescaling slow clock, each timer can be configured to trigger after 1 to 224 cycles of the prescaled clock by
setting the TIMER_CFG_TIMEOUT_VALUE bit field in the appropriate TIMER_CFG_* register. The resulting timer delay
is equal to:
TIMER_CFG_CLK_SRC + TIMER_CFG_PRESCALE
2 TIMER_CFG_TIMEOUT_VALUE + 1
DELAY = -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
f SLOWCLK
The state of a timer can be read from the TIMER_CTRL_TIMER_STATUS bit of its TIMER_CTRL_* register.
If the timer is not running, it can be started by setting the TIMER_CTRL_TIMER_START bit of its TIMER_CTRL_*
register. If the timer is running, setting this same bit restarts the timer by reloading the timer value.
Each timer can be stopped at any time by setting the TIMER_CTRL_TIMER_STOP bit of its TIMER_CTRL_* register.
In Free-Run Mode, the timer loads the initial time-out value and counts down to 0. When it reaches 0, it issues an
interrupt, and reloads the time-out value and restarts the countdown timer. The process is repeated indefinitely until the
timer is explicitly stopped by writing a 1 to the TIMER_CTRL_TIMER_STOP bit of the TIMER_CTRL_* register.
In Multi-Shot Mode, the timer loads the initial time-out value and counts down to 0. When it reaches 0, it issues an
interrupt, and checks the TIMER_CFG_MULTI_COUNT bit field from the TIMER_CFG_* to determine if it must restart the
countdown timer. This process repeats (TIMER_CFG_MULTI_COUNT + 1) times before disabling the timer, unless
explicitly stopped by the TIMER_STOP bit. Single-shot mode is a special case of Multi-Shot Mode where the timer is
configured to trigger an interrupt only one time.
www.onsemi.com
373
onsemi
RSL10 Hardware Reference
12.3.3.1 TIMER_CFG
The following bit fields and field names apply equally to all TIMER_CFG[*] registers.
www.onsemi.com
374
onsemi
RSL10 Hardware Reference
12.3.3.2 TIMER_CTRL
The following bit fields and field names apply equally to all TIMER_CTRL[*] registers.
12.3.3.3 TIMER_VAL
The following bit fields and field names apply equally to all TIMER_VAL[*] registers.
The watchdog timer is a safety system that resets a system that has malfunctioned. This safety system uses a
countdown timer that must be periodically acknowledged by writing WATCHDOG_REFRESH to the
WATCHDOG_REFRESH_CTRL register before it reaches zero. The system assumes that the application’s failure to
acknowledge this countdown timer before it reaches zero indicates that the system is malfunctioning and must be reset.
The countdown timer value for the watchdog timer is not visible to the core.
IMPORTANT: The watchdog timer is disabled when the DEBUG_HALT_CTRL_C_DEBUGEN bit in the
DEBUG_HALT_CTRL register is set. This prevents watchdog timeouts during initial code development for the
RSL10.
www.onsemi.com
375
onsemi
RSL10 Hardware Reference
The watchdog timer runs on a prescaled clock that has been derived from the slow clock using a fixed division of
1024. This clock is used to decrement the value in the watchdog’s 13-bit counter.
When the watchdog timer is refreshed, a configurable number of bits in the 13-bit counter are set and the prescaling
counter is reset. The WATCHDOG_CTRL_TIMEOUT bit field in the WATCHDOG_CTRL register selects how many of these
bits to set when the timer is refreshed. The number of cycles that must elapse between refresh events to trigger a
watchdog timeout event is defined by the following equation:
The watchdog has an associated warning interrupt that is pended if the watchdog timer times out. When this
interrupt is pended, the watchdog timeout restarts, and if the watchdog timer still has not been reset and a second
watchdog timeout occurs, a hard reset occurs. For more information about resets, see Section 5.5, “Resets” on page 64.
12.4.1.1 WATCHDOG_CFG
www.onsemi.com
376
onsemi
RSL10 Hardware Reference
12.4.1.2 WATCHDOG_CTRL
www.onsemi.com
377
CHAPTER 13
13. Audio
13.1 DIGITAL MICROPHONE (DMIC) INPUTS
The DMIC block provides a serial audio interface for up to two channels, using a pulse density modulated (PDM)
digital output stream. The DMIC input data is decimated in a two-step process:
The interface consists of an input data line with the data time-interleaved between the two channels, and an output
clock signal. These two signals can be routed from any of the DIOs to the DMIC block. In addition, the AUDIOCLK or
AUDIOSLOWCLK has to be routed from the Clock Generation block to the DIO that is used for the DMIC clock signal.
For more information on DIO routing configuration for use as a DMIC interface, see Section 10.2, “Functional
Configuration” on page 259.
The two DMIC channels can be independently configured using the AUDIO_CFG register. The independent
configurations available for the interface are shown in the list that follows:
NOTE: The use of ‘*’ in the register or field name indicates either 0 or 1.
• The bit alignment of the decimated audio data from each of the DMIC inputs is configured with the
AUDIO_CFG_DMIC*_DATA_ALIGN bit:
• If the AUDIO_CFG_DMIC*_DATA_ALIGN bit is configured for MSB alignment, the data is written to the
AUDIO_DMIC*_DATA registers as an 18-bit MSB value with the bottom 14 bits set to zero.
• If the AUDIO_CFG_DMIC*_DATA_ALIGN bit is configured for LSB alignment, the data is written to the
AUDIO_DMIC*_DATA registers as a 16-bit LSB value with sign extension in the upper 16 bits.
NOTE: This also configures the DC removal filter to work with either 16-bit or 18-bit data. The 16-bit
data from each of the two channels is written to the AUDIO_DMIC_DATA register, with the
DMIC0 data placed in the 16 LSBs of this register, and the DMIC1 data placed in the 16 MSBs.
When the AUDIO_DMIC_DATA register is used, the AUDIO_CFG_DMIC*_DATA_ALIGN bits must
therefore be set to LSB aligned mode.
• When using the DMIC with interrupts, the AUDIO_CFG_DMIC*_INT_GEN_EN bit can be set to trigger the
DMIC_OUT_OD_IN interrupt when an audio input sample is received.
• When using the DMIC with the DMA, the AUDIO_CFG_DMIC*_DMA_REQ_EN bit is set so that DMA requests
are triggered whenever an audio input sample is received. For more details concerning the DMA refer to
Section 12.2, “Direct Memory Access (DMA) Controller” on page 353.
IMPORTANT: The DMIC interface is supported by only one DMA request line, which produces one read from
the DMIC interface per DMA request event. This limits DMA support in dual-channel DMIC configurations to
reads using the AUDIO_DMIC_DATA register and hence 16-bit samples. Reads from a single channel using the
DMA do not have this limitation.
www.onsemi.com
378
onsemi
RSL10 Hardware Reference
• The AUDIO_CFG_DEC_RATE bit-field defines the decimation rate applied to data input from the DMIC. The
decimation factor as a function of the AUDIO_CFG_DEC_RATE register is as follows:
Decimation Factor = AUDIO_CFG_DEC_RATE + 8 .
• The AUDIO_CFG_DMIC_CLK_SRC bit is used to select either clocking the DMIC input signal with the audio
clock (AUDIOCLK), or the pre-scaled version of this clock (AUDIOSLOWCLK). For more details concerning the
audio clocks, refer to Section 6.3.8, “Interface Clocks” on page 83.
In addition to the AUDIO_CFG register, detailed configuration of the DMIC interface is available through the
AUDIO_DMIC_CFG register. This configuration includes:
• The AUDIO_DMIC*_CFG_CLK_EDGE bit, which controls whether the data from the DMIC input is sampled on
the rising or falling edge of the DMIC input clock. Refer to Figure 37 for detailed timing.
DMIC clock
DMIC clock
• The AUDIO_DMIC*_DCRM bit-field, which can be used to configure the DMIC input’s DC removal filter. This
is a high-pass filter that can help in situations when there is a DC offset present in the input signal.
• The DMIC1 input can be delayed relative to the DMIC0 input by up to 1.875 sample periods, in steps of 0.125
sample periods. An additional delay of up to 31 DMIC clock periods can also be added, but is limited to
AUDIO_CFG_DEC_RATE + 7 clock periods. These delays are configured with the
AUDIO_DMIC_CFG_DMIC1_DELAY and AUDIO_DMIC_CFG_DMIC1_FRAC_DELAY bit-fields respectively.
The AUDIO_STATUS register contains information on the status of the DMIC inputs. This includes:
• The AUDIO_STATUS_DMIC*_DATA_RDY_FLAG status bits, which indicate when a new audio sample is
available from the DMIC inputs. These bits are reset when their respective AUDIO_DMIC*_DATA registers are
read, and can be used in place of the DMA or interrupt control, if polling is used to control the reading of data
from the DMIC input.
• The AUDIO_STATUS_DMIC*_OVERRUN_FLAG status bits, which are flags that indicate if an overrun has been
detected. An overrun occurs whenever an audio sample is not read from the AUDIO_DMIC*_DATA register
before it is overwritten with a subsequent sample. If an overrun has occurred, this flag remains set until the
corresponding AUDIO_STATUS_DMIC*_OVERRUN_FLAG_CLEAR bit is used to clear it.
www.onsemi.com
379
onsemi
RSL10 Hardware Reference
Data received from the DMIC input samples is decimated into 18-bit samples, using a two-phase decimation filter.
This filter includes:
• A configurable 5th-order SINC filter that decimates the input data by a factor in the range from 8 to 36 (as
defined by the AUDIO_CFG_DEC_RATE bit-field from the AUDIO_CFG register). This allows the use of digital
microphones that have a sigma-delta ADC up to 4th order.
• A low-pass wave digital filter structure that provides a fixed decimation by 8.
In addition to filtering, a gain of between 0 and 200% is applied to the audio samples, configurable through the
AUDIO_DMIC*_GAIN registers. This can be used to calibrate the gain of the individual microphones. If no
additional gain needs to be applied, use the DMIC*_NOMINAL_GAIN settings. The formula for setting the gain
is:
AUDIO_DMIC*_GAIN
Gain = ---------------------------------------------------------
2048
IMPORTANT: Avoid changing the decimation rate while reading input samples, as this can introduce audio
artifacts.
13.1.1.1 AUDIO_CFG
www.onsemi.com
380
onsemi
RSL10 Hardware Reference
www.onsemi.com
381
onsemi
RSL10 Hardware Reference
13.1.1.2 AUDIO_STATUS
www.onsemi.com
382
onsemi
RSL10 Hardware Reference
13.1.1.3 AUDIO_DMIC_CFG
www.onsemi.com
383
onsemi
RSL10 Hardware Reference
www.onsemi.com
384
onsemi
RSL10 Hardware Reference
13.1.1.4 AUDIO_DMIC0_GAIN
13.1.1.5 AUDIO_DMIC1_GAIN
www.onsemi.com
385
onsemi
RSL10 Hardware Reference
13.1.1.6 AUDIO_DMIC_DATA
13.1.1.7 AUDIO_DMIC0_DATA
13.1.1.8 AUDIO_DMIC1_DATA
The output driver provides a mono digital audio output from the RSL10 system. This output driver can be
connected to drive one or more DIO pairs, which are used as the driver for a speaker or receiver.
1. The gain stage applies a gain of between 0 and 200% to the audio samples that are being passed to the next
stage, configurable through the AUDIO_OD_GAIN register. The gain is set as follows:
AUDIO_OD_GAIN
Gain = ----------------------------------------------
2048
2. The interpolation filter stage upsamples and filters the audio samples that are being passed to the next stage.
The interpolation filter uses a low-pass wave digital filter structure that provides a fixed interpolation by 8.
NOTE: If no additional gain is expected, use the OD_NOMINAL_GAIN setting.
3. The sigma-delta modulator stage consists of a 4th-order three-level sigma-delta modulator for the output
channel, to produce a pulse density modulated (PDM) output signal provided to the next stage in the form of
two single bit signals, OD_P and OD_N.
4. The output driver routing stage sends the OD_P and OD_N signals to any DIO pair(s). For more information
on DIO configuration for use as an output driver, see Section 10.2, “Functional Configuration” on page 259.
IMPORTANT: If a higher load drive (lower output impedance) is required than is provided by a single DIO pair,
multiple DIO pairs can be connected in parallel. When connecting DIOs in parallel, pairs are best selected in such
a way that OD_P DIOs are close together on the package and the same applies to OD_N DIOs.
The output driver is enabled by setting the AUDIO_CFG_OD_ENABLE bit from the AUDIO_CFG register. Other
configurations of the output driver from this register include:
www.onsemi.com
386
onsemi
RSL10 Hardware Reference
• The AUDIO_CFG_OD_DATA_ALIGN bit can be used to select MSB or LSB alignment in the AUDIO_OD_DATA
register. When set to LSB alignment, the 16 bottom bits of the register are used. When MSB-aligned, the 32-bit
input data is rounded nearest to infinity with saturation to 18 bits.
• When using the output driver with interrupts, the AUDIO_CFG_OD_INT_GEN_EN bit can be set to trigger the
DMIC_OUT_OD_IN interrupt when another audio output sample is required.
• When using the output driver with the DMA, the AUDIO_CFG_OD_DMA_REQ_EN bit needs to be set so that
DMA requests are triggered when another audio sample is required. For more details concerning the DMA,
refer to Section 12.2, “Direct Memory Access (DMA) Controller” on page 353.
• The AUDIO_CFG_OD_UNDERRUN_PROTECT bit can be set to enable the mechanism that clears the
AUDIO_OD_DATA register if it has not been written to for 16 sample periods. Use of underrun protection is
recommended, as this prevents the OD from potentially driving a large DC value if, for some reason, the
system fails to supply new output samples.
• The AUDIO_CFG_OD_CLK_SRC bit is used to select either clocking the output driver with the audio clock
(AUDIOCLK), or the pre-scaled version of this clock (AUDIOSLOWCLK). For more details concerning the audio
clocks, refer to Section 6.3.8, “Interface Clocks” on page 83.
Detailed configuration of the output driver is available through the AUDIO_OD_CFG register. This configuration
includes:
• The AUDIO_OD_CFG_CLK_EDGE bit, which controls whether the output driver updates the output on the rising
or the falling edge of the output driver’s clock.
• The AUDIO_OD_CFG_DITHER bit can be used to enable or disable dithering of the output data stream. Use of
dithering is recommended, as this avoids idle tones and other artifacts produced by sigma-delta modulation.
• The AUDIO_OD_CFG_DCRM bit can be used to configure the output driver’s DC removal filter. This is a
high-pass filter that can help to remove noise artifacts, which can occur in situations where the level of the
output signal is very low, and there is a DC offset present in the signal (typically caused by rounding errors that
occur in the processing of the audio data). We recommend using the DC removal filter with a cut-off frequency
of 20 Hz.
The AUDIO_SDM_CFG register controls internal configuration of the sigma-delta modulator. For normal operation,
this register must be set to the SDM_CFG_NORMAL setting.
The AUDIO_STATUS register contains information on the status of the output driver. This includes:
• The AUDIO_STATUS_OD_STATUS bit, which indicates if the output driver is included in this version of RSL10
• The AUDIO_STATUS_OD_DATA_REQ_FLAG bit, which indicates when a new audio sample is required for the
output driver. This status bit is reset when the AUDIO_OD_DATA register is written, and can be used in place of
the DMA or interrupt control, if polling is used to control the writing of data to the OD output.
• The AUDIO_STATUS_OD_UNDERRUN_FLAG bit, which provides a flag that indicates if an underrun has been
detected. An underrun occurs whenever an audio sample is used by the output driver multiple times. If an
underrun has occurred, this flag remains set until the AUDIO_STATUS_OD_UNDERRUN_FLAG_CLEAR bit is
used to clear it.
www.onsemi.com
387
onsemi
RSL10 Hardware Reference
13.2.1.1 AUDIO_OD_CFG
www.onsemi.com
388
onsemi
RSL10 Hardware Reference
13.2.1.2 AUDIO_OD_GAIN
www.onsemi.com
389
onsemi
RSL10 Hardware Reference
13.2.1.3 AUDIO_OD_DATA
13.2.1.4 AUDIO_SDM_CFG
The audio sink clock counters can be used to measure the timing of the frame periods of a BLE/RF host relative to
the internal audio sampling rate or that of a connected external device. In addition, it can be used to measure the
frequency of the internal 32 kHz RC oscillator using the 48 MHz crystal oscillator.
• Support an asynchronous sample rate conversion of audio samples being sourced over the radio link, and
consumed by a connected device or the output driver. For details on asynchronous sample rate conversion, see
Section 13.4, “Asynchronous Sample Rate Converter (ASRC)” on page 394.
• Support an asynchronous sample rate conversion of audio samples being sourced from a connected device or
the DMIC inputs, and consumed over the radio link.
NOTE: Although the DMIC audio is the source, its sample clock is considered as the audio sink clock to
the RF host throughout this section.
• Generate control information to change the clock frequency of the connected device so that it becomes
synchronous with a radio link.
• Measure the internal 32 kHz RC oscillator.
• An example that uses the 48 MHz crystal oscillator to measure the internal 32 kHz RC oscillator using the
audio sink block can be seen in the calibration library, as described in the RSL10 Firmware Reference.
IMPORTANT: The audio sink clock being measured is sourced from a DIO or from STANDBYCLK, as specified by
the DIO configuration. For more information on DIO configuration for use as the audio sink source, see Section 10.2,
“Functional Configuration” on page 259.
The audio sink clock being measured is sourced from a DIO or from STANDBYCLK, as specified by the DIO
configuration. For more information on DIO configuration for use as the audio sink source, see Section 10.2,
“Functional Configuration” on page 259.
www.onsemi.com
390
onsemi
RSL10 Hardware Reference
The timing diagram in Figure 38 highlights the measurement registers in the Audio Sink module.
AUDIOSINK_CNT
AUDIOSINK_PERIOD_CNT
AUDIOSINK_PHASE_CNT AUDIOSINK_PHASE_CNT
SYSCLK
• The AUDIOSINK_CNT register holds the integer number of cycles of the audio sink clock being measured
between consecutive BLE/RF frame pulses.
• The AUDIOSINK_PERIOD_CNT register contains the period count of the audio sink clock being measured in
terms of SYSCLK cycles, which is typically derived from the 48 MHz crystal oscillator. (See Section 6.3.1,
“System Clock (SYSCLK)” on page 79 for more information.) The period can be measured over 1-16 audio
sink clock cycles. The number of audio sink clock cycles measured is controlled by the
AUDIOSINK_CFG_PERIODS_CFG bit field in the AUDIOSINK_CFG register. By using the value stored in the
AUDIOSINK_PERIOD_CNT register, the period can be calculated as:
AUDIOSINK_PERIOD_CNT
period = ----------------------------------------------------------------------------------------- period
AUDIOSINK_CFG_PERIODS + 1 SYSCLK
NOTE: The accuracy of the period measurement is improved by increasing the
AUDIOSINK_CFG_PERIODS_CFG value and/or the SYSCLK frequency.
• The AUDIOSINK_CTRL_PERIOD_CNT_START bit from the AUDIOSINK_CTRL register, which clears and
starts the period counter when a rising edge of the audio sink clock is detected.
• The AUDIOSINK_CTRL_PERIOD_CNT_STOP bit from the AUDIOSINK_CTRL register, which stops the
period counter mechanism manually.
• The AUDIOSINK_CTRL_PERIOD_STATUS bit, which indicates whether the period counter mechanism is
currently active or idle.
• The AUDIOSINK_PERIOD_CNT register, which contains the number of SYSCLK cycles between when the
counter started, and when the configured number of rising edges of the audio sink clock were detected
(saturated to 0xFFFF), at which point the counter is stopped automatically.
• The AUDIOSINK_PERIOD interrupt, which is triggered when the audio sink period counter finishes
counting the defined number of audio sink clock periods.
• The AUDIOSINK_PHASE_CNT register measures the time from the BLE/RF frame pulse to the first detected
rising edge of the audio sink clock, in terms of SYSCLK cycles. This measurement is used to improve the
resolution of the calculated number of audio sink clock cycle per BLE/RF frame. This counter is supported by:
www.onsemi.com
391
onsemi
RSL10 Hardware Reference
• The AUDIOSINK_CTRL_PHASE_CNT_START bit, which clears and starts the phase counter the next time a
synchronization pulse is generated by the BLE/RF blocks.
• The AUDIOSINK_CTRL_PHASE_CNT_START_NO_WAIT bit, which clears and starts the phase counter
immediately.
• The AUDIOSINK_CTRL_PHASE_CNT_STOP bit, which stops the phase counter mechanism manually.
• The AUDIOSINK_CTRL_PHASE_STATUS bit, which indicates whether the phase counter mechanism is
currently active or idle.
• The AUDIOSINK_PHASE_CNT register, which contains the number of SYSCLK cycles between when the
counter started, and when a rising edge has been detected on the audio sink clock (saturated to 0xFFFF), at
which point the counter is stopped automatically.
• The AUDIOSINK_PHASE interrupt, which is triggered when the phase counter is running and a rising edge
occurs on the audio sink clock, or if a synchronization error has been received from the BLE/RF block
(the AUDIOSINK_CTRL_PHASE_CNT_MISSED_STATUS bit is set if an error occurs, and is cleared
otherwise), at which point the counter mechanism is stopped automatically.
Using the values obtained from the AUDIOSINK_CNT and AUDIOSINK_PHASE_CNT registers plus the previous
period and phase count values, you can calculate the number of audio sink clock cycles between the previous (i-1) and
the current (i) synchronization pulses as follows:
AUDIOSINK_PHASE_CNT[i-1] – AUDIOSINK_PHASE_CNT[i]
audio sink clock cycles = AUDIOSINK_CNT[i] + --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AUDIOSINK_PERIOD_CNT[i-1] AUDIOSINK_PERIODS_CFG + 1
• Before a synchronization frame pulse will occur, start the phase counter mechanism.
• When the AUDIOSINK_PHASE interrupt occurs:
a. Save the AUDIOSINK_PHASE_CNT counter value from the previous frame.
b. Record the AUDIOSINK_PHASE_CNT counter value.
c. Record the value in the AUDIOSINK_CNT register.
d. Reset the AUDIOSINK_CNT register/counter.
e. Start the period counter.
www.onsemi.com
392
onsemi
RSL10 Hardware Reference
13.3.1.1 AUDIOSINK_CTRL
www.onsemi.com
393
onsemi
RSL10 Hardware Reference
13.3.1.2 AUDIOSINK_CFG
13.3.1.3 AUDIOSINK_CNT
13.3.1.4 AUDIOSINK_PHASE_CNT
13.3.1.5 AUDIOSINK_PERIOD_CNT
The asynchronous sample rate converter (ASRC) block provides a means of synchronizing the audio sample rate
between the radio and a local source or sink for the transferred audio data.
www.onsemi.com
394
onsemi
RSL10 Hardware Reference
The ASRC operates in one of four possible modes. Use of these operating modes is dependent on the relationship
between the source (Fsrc) and sink (Fsink) frequencies, as shown in Table 34. The four modes are as follows:
• Mode 0 is used when the sink frequency is greater than the source frequency.
• Mode 1 is used when the sink and source frequencies are nearly identical. Plus or minus 25% is included to
account for the possibility of frequency drift.
• Mode 2 is used when the sink frequency is guaranteed to be less than the source frequency, and greater than 0.4
times the source frequency.
• Mode 3 is used when the sink frequency is guaranteed to be less than one-half of the source frequency.
The ASRC is configured with the ASRC_CFG register. This register configures:
• The ASRC mode of operation as described above, controlled by the ASRC_CFG_ASRC_MODE setting.
• The ASRC bandwidth mode, configured with the WDF_TYPE bit that can select between:
• Low delay mode: This mode provides the lowest group delay setting, but at a slightly lower bandwidth.
• Wide band mode: This mode provides the highest bandwidth setting, but at a higher group delay.
The ASRC_PHASE_INC register contains a signed 32-bit value that controls the conversion rate with the ASRC. It is
dependent on ASRC_CFG_ASRC_MODE, and on the difference between Fsrc and Fsink. The formulas for setting
ASRC_PHASE_INC are listed in Table 34.
The ASRC is controlled by the ASRC_CTRL register. This register provides the following functionality:
• The ASRC can be enabled by setting the ASRC_CTRL_ASRC_ENABLE bit, and disabled by setting the
ASRC_CTRL_ASRC_DISABLE bit. Also the ASRC active status can be queried from the
ASRC_CTRL_ASRC_EN_STATUS bit.
• The ASRC_CTRL_ASRC_RESET bit can be used to reset the ASRC state memory (stored in the
ASRC_STATE_MEM registers).
• The ASRC_CTRL_PROC_STATUS bit indicates if the ASRC is currently processing data.
• The ASRC_CTRL_IN_REQ bit indicates if the ASRC_IN register is in use, or if it is ready for more data.
• The ASRC_CTRL_OUT_REQ bit indicates if the ASRC_OUT register contains no new data, or if it has new data
that can be read.
• The ASRC_CTRL_*_ERR bits indicate what errors have been captured by the ASRC block, and the
ASRC_CTRL_*_ERR_CLR bits can be written to clear these error indication bits.
www.onsemi.com
395
onsemi
RSL10 Hardware Reference
The ASRC is capable of processing one audio channel at a time. In cases where more than one channel needs to be
processed, the ASRC block’s internal states need to be saved to memory after a block has been processed, and restored
before the next block is processed, as follows:
• ASRC_PHASE_CNT: This register holds the current phase of the polyphase filter.
• ASRC_STATE_MEM: This 30-value register array holds the internal filter states of the polyphase filter. The
number of states that need to be stored depends on the ASRC_CFG_ASRC_MODE setting, as outlined in Table 34
on page 395.
IMPORTANT: The ASRC must be disabled when saving or restoring its internal states. Behavior of the ASRC
is undefined if the ASRC is active while its state is being updated.
Data is provided to the ASRC through the ASRC_IN register. Data is read from the ASRC through the ASRC_OUT
register, and the ASRC_OUT_CNT register indicates how many samples have been generated. Typically the counter is
cleared after each block of samples has been completely processed.
The ASRC supports four interrupts, configured using the ASRC_INT_ENABLE register:
1. The ASRC_INT_ENABLE_ASRC_IN_REQ bit can be enabled to trigger an ASRC_IN interrupt when more input
data is required. This mode is used when providing audio samples using the ARM Cortex-M3 processor when
using interrupts.
2. The ASRC_INT_ENABLE_ASRC_OUT_REQ bit can be enabled to trigger an ASRC_OUT interrupt when more
output data is available. This mode is used when reading audio samples using the ARM Cortex-M3 processor
when using interrupts.
3. The ASRC_INT_ENABLE_ASRC_IN_ERR bit can be enabled to trigger an ASRC_ERROR interrupt when data is
written to the ASRC_IN register before processing of the previously written value is complete.
4. The ASRC_INT_ENABLE_ASRC_UPDATE_ERR bit can be enabled to trigger an ASRC_ERROR interrupt when
any of the ASRC_PHASE_CNT, ASRC_PHASE_INC or ASRC_OUTPUT_CNT registers are written while
processing of a sample is ongoing.
www.onsemi.com
396
onsemi
RSL10 Hardware Reference
13.4.1.1 ASRC_CTRL
www.onsemi.com
397
onsemi
RSL10 Hardware Reference
13.4.1.2 ASRC_INT_ENABLE
13.4.1.3 ASRC_OUT
13.4.1.4 ASRC_IN
13.4.1.5 ASRC_CFG
www.onsemi.com
398
onsemi
RSL10 Hardware Reference
13.4.1.6 ASRC_OUTPUT_CNT
13.4.1.7 ASRC_PHASE_INC
13.4.1.8 ASRC_PHASE_CNT
13.4.1.9 ASRC_STATE_MEM
www.onsemi.com
399
CHAPTER 14
Private Peripherals
14.
The Arm Cortex-M3 processor is closely tied to a nested vectored interrupt controller (NVIC), which is an integral
part of the processor and provides the interrupt handling functionality. This block is implemented with the
Arm Cortex-M3 processor and is described in the ARM Cortex-M3 Technical Reference Manual.
The Arm Cortex-M3 processor as implemented for RSL10 uses pulse interrupts. These interrupts are sampled on
the rising edge of SYSCLK. A pulse interrupt can be reasserted during the ISR so that the interrupt can be in the
pending state and active at the same time. If another pulse arrives while the interrupt is still pending, the interrupt
remains pending and the ISR runs only once.
The NVIC handles a non-maskable interrupt (NMI), several faults, predefined interrupts, and a set of
general-purpose interrupts that are external to the Arm Cortex-M3 processor, and linked to its interfaces and
peripherals. A list of the interrupts supported by the NVIC for the Arm Cortex-M3 processor is provided in Table 35.
www.onsemi.com
400
onsemi
RSL10 Hardware Reference
www.onsemi.com
401
onsemi
RSL10 Hardware Reference
Table 36 lists the NVIC registers. The following subsections describe their bit fields and use by the RSL10
microcontroller.
www.onsemi.com
402
onsemi
RSL10 Hardware Reference
www.onsemi.com
403
onsemi
RSL10 Hardware Reference
IMPORTANT: The NVIC is a standard component provided with the Arm Cortex-M3 processor. The registers
for this peripheral are defined in core_cm3.h and augmented by defines for the bit fields, bit settings and
subregisters in rsl10_hw.h.
The Interrupt Controller Type register (SCnSCB_ICTR) indicates the number of interrupts supported by the NVIC.
This register is from the Arm Cortex-M3 processor’s SCnSCB register block. Table 37 describes this register.
• Enable interrupts
• Determine which interrupts are currently enabled
• Disable interrupts
• Determine which interrupts are currently disabled
These registers contain a bit for each of the external interrupts (vectors 16 to 57) listed in Table 35 on page 400.
Setting a bit in an Interrupt Set-Enable register enables the corresponding interrupt. Setting a bit in an Interrupt
Clear-Enable register disables the corresponding interrupt.
When the enable bit of a pending interrupt is set, the processor activates the interrupt based on its priority. When
the enable bit is cleared, asserting its interrupt signal pends the interrupt, but it is not possible to activate the interrupt,
regardless of its priority. Therefore, a disabled interrupt can serve as a latched general-purpose I/O bit that can be read
and cleared without invoking an interrupt.
NOTE: Clearing an Interrupt Set-Enable Register bit does not affect currently active interrupts. It only
prevents new activations.
These registers are part of the Arm Cortex-M3 processor’s NVIC register block. Table 38 describes the field of the
Interrupt Set-Enable registers. Table 39 describes the field of the Interrupt Clear-Enable registers.
www.onsemi.com
404
onsemi
RSL10 Hardware Reference
Writing 0 to a SETENA bit has no effect. Reading the bit returns its current
enable state. Reset clears the SETENA fields.
Writing 0 to a CLRENA bit has no effect. Reading the bit returns its current
enable state.
These registers contain a bit for each of the external interrupts (vectors 16 to 57) listed in Table 35 on page 400.
Setting a bit in an Interrupt Set-Pending register causes the corresponding interrupt to be pending. Setting a bit in an
Interrupt Clear-Pending register puts the interrupt into the non-pending state.
NOTE: Writing to an Interrupt Set-Pending register has no effect on an interrupt that is already pending
or is disabled. Similarly, writing to an Interrupt Clear-Pending register has no effect on an
interrupt that is active unless it is also pending.
These registers are part of the Arm Cortex-M3 processor’s NVIC register block. Table 40 describes the Interrupt
Set-Pending registers. Table 41 describes the Interrupt Clear-Pending registers.
www.onsemi.com
405
onsemi
RSL10 Hardware Reference
Writing 0 to a SETPEND bit has no effect. Reading the bit returns its current
state.
Writing 0 to a CLRPEND bit has no effect. Reading the bit returns its current
state.
Read the Active Bit registers (NVIC_IABR[0] to NVIC_IABR[2]) to determine which interrupts are active. This
register contains a flag for each of the external interrupts (vectors 16 to 57) listed in Table 35 on page 400. These
registers are part of the Arm Cortex-M3 processor’s NVIC register block. Table 42 describes the Active Bit register.
Use the Interrupt Priority Registers (NVIC_IP[0] to NVIC_IP[9]) to assign a priority to each of the available
interrupts. Each byte in an Interrupt Priority can be used to set the priority for one of the external interrupts (vectors 16
to 84) listed in Table 35 on page 400.
NOTE: Configuration of the interrupt priorities for standard Arm Cortex-M3 processor exceptions
(vectors 4 to 15) are set using the System Handler Priority registers. For more information, see
the ARMv7M Architecture Reference Manual.
The NVIC for the Arm Cortex-M3 processor in the RSL10 system has been implemented with three interrupt
priority bits per interrupt. These three priority bits are MSB aligned to an eight-bit priority bit field as required by Arm.
Generally, the lower the priority value, the higher the priority that interrupt is given.
The SCB_AIRCR_PRIGROUP bit field from the Application Interrupt and Reset Control register (see the ARMv7M
Architecture Reference Manual) is used to divide the interrupt priority settings into interrupt groups, and to prioritize
interrupts within those groups. The possible configurations for the division of the priority bit field into pre-emption
priority and subgroup priority is shown in Table 43.
www.onsemi.com
406
onsemi
RSL10 Hardware Reference
Table 43. Division of Priority into Pre-Empt Priority and Subgroup Priority
When choosing which interrupt to activate, the priority settings are applied as follows:
• When multiple interrupts are pending, but no interrupts are active, the interrupt with the lowest priority setting
is activated. If more than one pending interrupt shares the lowest priority setting, the interrupt with the lower
vector number is activated.
• If an interrupt is currently active, it can be pre-empted by any interrupt that is pended in a lower numbered
group. If multiple interrupts that could pre-empt the active interrupt are pending, the interrupt with the lowest
priority setting is activated. As before, if more than one pending interrupt shares the lowest priority setting, the
interrupt with the lower vector number is activated.
For example, setting the SCB_AIRCR_PRIGROUP bit field to 0x5 divides the three interrupt priority bits to use bits
[7:6] to assign the interrupt to a group, and bit [5] to assign the interrupt a priority relative to the other interrupts in that
group. Suppose the following interrupts are pending:
In this example, the DIO0 and DMA0 interrupts have the lowest priority, and the DMA0 interrupt is activated because
it has a lower vector number (24 versus 32). If the TIMER0 interrupt is then pended with a priority of 0x80, the DMA0
interrupt is not pre-empted because the TIMER0, DMA0 and DIO interrupts all share the same priority group. If the
WAKEUP interrupt is then pended with a priority level of 0x20, the DMA0 interrupt is pre-empted because the WAKEUP
interrupt belongs to a higher priority interrupt group.
IMPORTANT: The reset, NMI and fault vectors have priority levels of -3, -2, and -1 respectively. As such, these
events can always pre-empt interrupts with lower priorities.
These registers are part of the Arm Cortex-M3 processor’s NVIC register block. Table 44 describes the bit
assignments for a single interrupt within the Interrupt Priority registers.
The following registers are documented in the ARMv7M Architecture Reference Manual:
www.onsemi.com
407
onsemi
RSL10 Hardware Reference
14.2 SYSTICK
The Arm Cortex-M3 core peripherals include the system tick (SysTick) count-down timer from the
Arm Cortex-M3 processor implementation. This block is implemented as part of the NVIC, and is described in the
ARM Cortex-M3 Technical Reference Manual.
The clock used by the SysTick timer is selected using the SysTick_CTRL_CLKSOURCE bit from the
SysTick_CTRL register. This timer can be clocked from the system clock (SYSCLK) or from the SysTick-specific
reference clock (STCLK) that is divided from SLOWCLK by 32. For more information about SYSCLK, see
Section 6.3.1, “System Clock (SYSCLK)” on page 79. For more information about SLOWCLK, see Section 6.3.3,
“Slow Clock (SLOWCLK)” on page 81. The SysTick_CALIB register is configured to define a 10 ms timer period
based on STCLK.
The delay provided by the SysTick timer is defined using the selected clock and a reload value loaded to the
SysTick_LOAD register, as follows:
SysTick_LOAD + 1
DELAY = -----------------------------------------------------
f SYSCLK or STCLK
The current value of the SysTick counter can be read at any time from the SysTick_VAL register.
The SysTick timer is enabled by setting the SysTick_CTRL_ENABLE bit in the SysTick_CTRL register. SysTick
interrupts are enabled by setting the SysTick_CTRL_TICKINT bit in the SysTick_CTRL register. The
SysTick_CTRL_COUNTFLAG bit in the SysTick_CTRL register indicates if the SysTick timer has reached zero since
the last time this register was read, and is cleared automatically after being read. This bit can be used if an application
uses polling instead of interrupting to monitor for SysTick timer events.
IMPORTANT: If the SysTick timer is sourced from SYSCLK, and the clock to the Arm Cortex-M3 processor is
gated due to the use of a wait-for-interrupt (WFI) or wait-for-event (WFE) instruction, the SysTick timer will be
clocked at a much slower rate while waiting for the interrupt or event to occur. If using these instructions, we
recommend using STCLK as the source for the SysTick timer or using a general-purpose timer running at
SLOWCLK divided by 2 if the clock source should be faster.
www.onsemi.com
408
onsemi
RSL10 Hardware Reference
IMPORTANT: The SysTick timer is a standard component provided with the Arm Cortex-M3 processor. The
registers for this peripheral are defined in core_cm3.h and augmented by defines for the bit fields, bit settings
and subregisters in rsl10_hw.h.
14.2.1.1 SysTick_CTRL
14.2.1.2 SysTick_LOAD
14.2.1.3 SysTick_VAL
14.2.1.4 SysTick_CALIB
www.onsemi.com
409
onsemi
RSL10 Hardware Reference
The Debug Halting Control and Status Register (DHCSR) provides status information on the processor state, enables
core debugging, and allows an external system to halt and single-step the core. To write to this register,
DEBUG_HALT_KEY must be written to the CoreDebug_DHCSR_DBGKEY bit field.
The DHCSR is used to configure the Arm Cortex-M3 processor for halting debug. To enable halting debug, set the
CoreDebug_DHCSR_C_DEBUGEN bit. If halting debug is enabled:
The Debug Exception and Monitor Control Register (DEMCR) contains a number of possible exception conditions
that the debug tools might want to monitor during debug. When enabled, each of these vector catch configuration bits
monitors for the specified fault or reset event. When a fault or event that is being monitored is detected, a core halt
request is used to halt the core as soon as the currently executing instruction completes. Supported vector catch events
include debug traps that trigger on:
• A core reset
• A memory management fault
• Usage faults for:
• No coprocessor errors
• Unaligned accesses or division by 0
• State errors
• A bus fault
• Errors when handling an interrupt or exception
• A hard fault
The DHCSR also provides a variety of debug related status information, including:
• If the core has been reset or is resetting (CoreDebug_DHCSR_S_RESET_ST); this bit is cleared when read
• If an instruction has completed execution since this register has been last read; this bit is cleared when read
• If the core is in a locked state
• If the core is in Sleep Mode
• If the core has been halted
• If the most recent register read/write has completed; for more information, see Section 14.3.3, “Arm
Cortex-M3 Processor Core Register Access”
www.onsemi.com
410
onsemi
RSL10 Hardware Reference
NOTE: The DHCSR and all DEMCR bits that are not related to the debug monitor are only reset if a POR or
similar occurs. These registers are not reset for a core reset. For more information about resets,
see Section 5.5, “Resets” on page 64.
CAUTION: We strongly recommend that only the debugger use the DHCSR because accesses to this register from
application code can interfere with the debug behavior of the Arm Cortex-M3 processor debug port.
The NVIC from the Arm Cortex-M3 processor contains a debug monitor that can be used to control debug
activities. The debug monitor is tied to the debug monitor system interrupt (vector number 12) and is configured using
the DEMCR register. To enable the debug monitor and debug monitor exception, set the CoreDebug_DEMCR_MON_EN bit
from the DEMCR register. To manually pend the debug monitor exception, set the CoreDebug_DEMCR_MON_PEND bit
from the DEMCR register. To single-step the core using the debug monitor (if the debug monitor is enabled), set the
CoreDebug_DEMCR_MON_STEP bit from the DEMCR register.
The CoreDebug_DEMCR_MON_REQ bit from the DEMCR register indicates whether a debug monitor event was
caused by a manual request or a debug event (including a debug trap).
The Arm Cortex-M3 debug port includes a pair of registers that the debug port uses to provide read and write
access to the Arm Cortex-M3 processor’s core registers: the Debug Core Register Selector Register (DCRSR) and the
Debug Core Register Data Register (DCRDR). The DCRSR contains the selection of the register to be read or written, and
the type of access used. To define the read/write direction, write REGWNR_READ or REGWNR_WRITE to the
CoreDebug_DCRSR_REGWnR bit field. To set the register to be read, use the REGSEL_* bit settings for the
CoreDebug_DCRSR_REGSEL bit field from the DCRSR.
Data written using the DCRSR is copied from the DCRDR to the specified core register. Similarly, data read using the
DCRSR is written to the DCRDR, where it can be accessed using debug port memory reads. If the selector register selects
the core special registers, the data read or written is interpreted using the bit fields described in Table 45.
Table 45. Debug Core Register Data Register Special Register Mapping
The Debug Fault Status register (DFSR) is used to monitor debug events including:
www.onsemi.com
411
onsemi
RSL10 Hardware Reference
Each flag in the Debug Fault Status register is set independently when its debug condition occurs. The bits in this
register are not set unless the event is caught. One of four things occurs if an event is detected:
This register is part of the Arm Cortex-M3 processor’s SCB register block.
14.3.5 Arm Cortex-M3 Processor Debug Port Specific Control and Configuration Registers
IMPORTANT: The Arm Cortex-M3 core debug port components are part of a standard component provided
with the Arm Cortex-M3 processor. The registers for this peripheral are defined in core_cm3.h and augmented
by defines for the bit fields, bit settings and subregisters in rsl10_hw.h. These registers are only accessible through
the Arm Cortex-M3 processor’s private peripheral bus (see Section 7.1, “Memory Architecture” on page 94).
www.onsemi.com
412
onsemi
RSL10 Hardware Reference
www.onsemi.com
413
onsemi
RSL10 Hardware Reference
www.onsemi.com
414
APPENDIX A
Control and Configuration Registers
A.
This appendix lists all the registers that are available. Refer to the appropriate section for information about the
control and configuration registers for a block. The sections are:
www.onsemi.com
415
A.1 CHIP IDENTIFICATION
416
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.2 SYSTEM CONTROL
417
0x40000008 SYSCTRL_FLASH_OVERLAY_CFG (7) DSP_PRAM0_OVERLAY_CFG (7) DSP_PRAM0_OVERLAY_CFG 0X0 DSP_PRAM0 Flash overlay configuration
onsemi
www.onsemi.com
(4) DSP_PRAM3_OVERLAY_CFG (4) DSP_PRAM3_OVERLAY_CFG 0X0 DSP_PRAM3 Flash overlay configuration
(3) PRAM3_OVERLAY_CFG (3) PRAM3_OVERLAY_CFG 0X0 PRAM3 Flash overlay configuration
RSL10 Hardware Reference
418
(3) PRAM1_POWER (3) PRAM1_POWER 0X1 PRAM1 power configuration
onsemi
www.onsemi.com
(0) PROM_POWER (0) PROM_POWER 0X1 PROM power configuration
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x4000001C SYSCTRL_MEM_ACCESS_CFG (30:24) WAKEUP_ADDR_PACKED (30:24) WAKEUP_ADDR_PACKED 0X0 Wakeup restore address in packed 7-bit format.
When written, SYSCTRL_WAKEUP_ADDR is
updated. This field reads back as zero when
SYSCTRL_WAKEUP_ADDR does not point to an
enabled RAM instance.
(21) DSP_DRAM5_ACCESS (21) DSP_DRAM5_ACCESS 0X0 DSP PRAM0 access configuration
(20) DSP_DRAM4_ACCESS (20) DSP_DRAM4_ACCESS 0X0 DSP PRAM0 access configuration
(19) DSP_DRAM3_ACCESS (19) DSP_DRAM3_ACCESS 0X0 DSP PRAM0 access configuration
(18) DSP_DRAM2_ACCESS (18) DSP_DRAM2_ACCESS 0X0 DSP PRAM0 access configuration
(17) DSP_DRAM1_ACCESS (17) DSP_DRAM1_ACCESS 0X0 DSP PRAM0 access configuration
(16) DSP_DRAM0_ACCESS (16) DSP_DRAM0_ACCESS 0X0 DSP PRAM0 access configuration
(15) DSP_PRAM3_ACCESS (15) DSP_PRAM3_ACCESS 0X0 DSP PRAM0 access configuration
(14) DSP_PRAM2_ACCESS (14) DSP_PRAM2_ACCESS 0X0 DSP PRAM0 access configuration
(13) DSP_PRAM1_ACCESS (13) DSP_PRAM1_ACCESS 0X0 DSP PRAM0 access configuration
(12) DSP_PRAM0_ACCESS (12) DSP_PRAM0_ACCESS 0X0 DSP PRAM0 access configuration
(11) BB_DRAM1_ACCESS (11) BB_DRAM1_ACCESS 0X0 Baseband DRAM1 access configuration
(10) BB_DRAM0_ACCESS (10) BB_DRAM0_ACCESS 0X0 Baseband DRAM0 access configuration
(8) DRAM2_ACCESS (8) DRAM2_ACCESS 0X0 DRAM2 access configuration
(7) DRAM1_ACCESS (7) DRAM1_ACCESS 0X0 DRAM1 access configuration
419
(6) DRAM0_ACCESS (6) DRAM0_ACCESS 0X1 DRAM0 access configuration
onsemi
www.onsemi.com
(4) PRAM2_ACCESS (4) PRAM2_ACCESS 0X0 PRAM2 access configuration
(3) PRAM1_ACCESS (3) PRAM1_ACCESS 0X0 PRAM1 access configuration
(2) PRAM0_ACCESS (2) PRAM0_ACCESS 0X0 PRAM0 access configuration
RSL10 Hardware Reference
420
(3) PRAM1_RETENTION (3) PRAM1_RETENTION 0X1 PRAM1 retention configuration
onsemi
www.onsemi.com
(27:26) DSP_DRAM23_ARBITER (27:26) DSP_DRAM23_ARBITER 0X0 DSP DRAM2 and DRAM3 arbiter configuration
(25:24) DSP_DRAM01_ARBITER (25:24) DSP_DRAM01_ARBITER 0X0 DSP DRAM0 and DRAM1 arbiter configuration
RSL10 Hardware Reference
421
(0) LPDSP32_DEBUG_ENABLE (0) LPDSP32_DEBUG_ENABLE 0X0 LPDSP32 debug port enable
onsemi
www.onsemi.com
0x40000054 SYSCTRL_RF_ACCESS_CFG (1) RF_IRQ_ACCESS (1) RF_IRQ_ACCESS 0X0 RF IRQ access configuration
(0) RF_ACCESS (0) RF_ACCESS 0X0 RF access configuration
0x40000058 SYSCTRL_WAKEUP_PAD - (0) WAKEUP_PAD_VALUE 0X0 WAKEUP pad value
RSL10 Hardware Reference
422
64 in steps of 1)
onsemi
(5:0) PWM0CLK_PRESCALE (5:0) PWM0CLK_PRESCALE 0X0 Prescale value for the PWM0 peripheral clock (1 to
64 in steps of 1)
www.onsemi.com
0x4000010C CLK_DIV_CFG2 (15) CPCLK_DISABLE (15) CPCLK_DISABLE 0X0 Charge pump clock disable
(13:8) CPCLK_PRESCALE (13:8) CPCLK_PRESCALE 0X7 Prescale value for the charge pump clock from the
SLOWCLK clock (1 to 64 in steps of 1)
RSL10 Hardware Reference
423
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.5 WATCHDOG TIMER
424
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.6 GENERAL-PURPOSE TIMERS 0, 1, 2 AND 3
425
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.7 FLASH INTERFACE CONFIGURATION AND CONTROL
426
execute the CMD_SET_LOW_POWER or
onsemi
CMD_UNSET_LOW_POWER command.
0x40000504 FLASH_MAIN_WRITE_UNLOCK (31:0) UNLOCK_KEY - N/A 32-bit key to allow for write accesses into the Flash
www.onsemi.com
MAIN Block
0x40000508 FLASH_MAIN_CTRL (2) MAIN_HIGH_W_EN (2) MAIN_HIGH_W_EN 0X0 Authorize the write access to the high part of the
Flash MAIN block through the FLASH_IF registers.
RSL10 Hardware Reference
(1) MAIN_MIDDLE_W_EN (1) MAIN_MIDDLE_W_EN 0X0 Authorize the write access to the middle part of the
Flash MAIN block through the FLASH_IF registers.
(0) MAIN_LOW_W_EN (0) MAIN_LOW_W_EN 0X0 Authorize the write access to the lower part of the
Flash MAIN block through the FLASH_IF registers.
0x40000510 FLASH_DELAY_CTRL (7) READ_MARGIN (7) READ_MARGIN 0X0 Flash Read access time margin
(3:0) SYSCLK_FREQ (3:0) SYSCLK_FREQ 0X2 Configure Flash, memory and RF power-up delays
0x40000534 FLASH_CMD_CTRL (6:5) CMD_END - N/A Terminates an active Flash command if possible
(e.g. sequential programming sequence)
(4:0) COMMAND (4:0) COMMAND 0X0 Flash access command only writable when equal to
CMD_IDLE
Address Register Name Register Write Register Read Default Description
0x40000538 FLASH_IF_STATUS - (13) TRIMMED_STATUS 0X0 Flash trimming status
- (12) ISOLATE_STATUS 0X1 Flash isolate status
- (11) PROG_SEQ_DATA_REQ 0X0 Request new data while in sequential program mode
- (10) BUSY 0X0 Flash interface busy status bit
- (9) RED2_W_UNLOCK 0X0 Flash RED2 write unlock status bit
- (8) RED1_W_UNLOCK 0X0 Flash RED1 write unlock status bit
- (6) NVR3_W_UNLOCK 0X0 Flash NVR3 write unlock status bit
- (5) NVR2_W_UNLOCK 0X0 Flash NVR2 write unlock status bit
- (4) NVR1_W_UNLOCK 0X0 Flash NVR1 write unlock status bit
- (2) MAIN_HIGH_W_UNLOCK 0X0 Write unlock status bit of the high part of the Flash
MAIN block
- (1) MAIN_MIDDLE_W_UNLOCK 0X0 Write unlock status bit of the middle part of the Flash
MAIN block
- (0) MAIN_LOW_W_UNLOCK 0X0 Write unlock status bit of the lower part of the Flash
MAIN block
0x4000053C FLASH_ADDR (20:2) FLASH_ADDR (20:2) FLASH_ADDR 0X0 Flash Byte Address
0x40000540 FLASH_DATA (31:0) DATA (31:0) DATA 0X0 32-bit Flash Data
0x40000548 FLASH_NVR_WRITE_UNLOCK (31:0) UNLOCK_KEY - N/A 32-bit key to allow for write accesses NVR sectors of
the Flash
427
0x4000054C FLASH_NVR_CTRL (3) NVR3_W_EN (3) NVR3_W_EN 0X0 Authorize Write access to the Flash NVR3 sector
onsemi
www.onsemi.com
through the FLASH_IF registers.
(1) NVR1_W_EN (1) NVR1_W_EN 0X0 Authorize Write access to the Flash NVR1 sector
through the FLASH_IF registers.
RSL10 Hardware Reference
428
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.8 DMA CONTROLLER CONFIGURATION AND CONTROL
429
(11:9) SRC_SELECT (11:9) SRC_SELECT 0X0 Select the request line for the source
onsemi
(7:6) CHANNEL_PRIORITY (7:6) CHANNEL_PRIORITY 0X0 Select the priority level for this channel
(5:4) TRANSFER_TYPE (5:4) TRANSFER_TYPE 0X0 Select the type of transfer implemented by DMA
www.onsemi.com
channel
(3) DEST_ADDR_INC (3) DEST_ADDR_INC 0X0 Configure whether the destination address should
increment
RSL10 Hardware Reference
(2) SRC_ADDR_INC (2) SRC_ADDR_INC 0X0 Configure whether the source address should
increment
(1) ADDR_MODE (1) ADDR_MODE 0X0 Select the addressing mode for this channel
(0) ENABLE (0) ENABLE 0X0 Enable DMA Channel
0x40000620 DMA_SRC_BASE_ADDR (31:0) DMA_SRC_BASE_ADDR (31:0) DMA_SRC_BASE_ADDR 0X0 Base address for the source of data transferred
using DMA channel
0x40000640 DMA_DEST_BASE_ADDR (31:0) DMA_DEST_BASE_ADDR (31:0) DMA_DEST_BASE_ADDR 0X0 Base address for the destination of data transferred
using DMA channel
0x40000660 DMA_CTRL1 (31:16) COUNTER_INT_VALUE (31:16) COUNTER_INT_VALUE 0X0 Trigger a counter interrupt when the DMA transfer
word count reaches this value
(15:0) TRANSFER_LENGTH (15:0) TRANSFER_LENGTH 0X0 The length, in words, of each data transfer using
DMA channel
0x40000680 DMA_NEXT_SRC_ADDR - (31:0) DMA_NEXT_SRC_ADDR 0X0 Address of the next data to be transferred using
DMA channel
Address Register Name Register Write Register Read Default Description
0x400006A0 DMA_NEXT_DEST_ADDR - (31:0) DMA_NEXT_DEST_ADDR 0X0 Address where the next data to be transferred using
DMA channel will be stored
0x400006C0 DMA_WORD_CNT - (15:0) DMA_WORD_CNT 0X0 The number of words that have been transferred
using DMA channel during the current transfer
0x400006E0 DMA_STATUS (12) ERROR_INT_CLEAR - N/A Clear the state machine error interrupt flag
(11) COMPLETE_INT_CLEAR - N/A Clear the complete interrupt flag
(10) COUNTER_INT_CLEAR - N/A Clear the counter interrupt flag
(9) START_INT_CLEAR - N/A Clear the start interrupt flag
(8) DISABLE_INT_CLEAR - N/A Clear the channel disable flag
- (7:5) STATE 0X0 DMA channel state
- (4) ERROR_INT_STATUS 0X0 Indicate if a state machine error interrupt has
occurred on DMA channel
- (3) COMPLETE_INT_STATUS 0X0 Indicate if a complete interrupt has occurred on DMA
channel
- (2) COUNTER_INT_STATUS 0X0 Indicate if a counter interrupt has occurred on DMA
channel
- (1) START_INT_STATUS 0X0 Indicate if a start interrupt has occurred on DMA
channel
- (0) DISABLE_INT_STATUS 0X0 Indicate if a channel disable interrupt has occurred
on DMA channel
430
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.9 DIO INTERFACE AND DIGITAL PAD CONTROL
431
0x40000760 DIO_PCM_SRC (20:16) SERI (20:16) SERI 0X11 PCM_SERI input selection
onsemi
www.onsemi.com
0x40000764 DIO_SPI_SRC (20:16) SERI (20:16) SERI 0X11 SPI_SERI input selection
(12:8) CS (12:8) CS 0X11 SPI_CS input selection
RSL10 Hardware Reference
432
(4:0) TCK (4:0) TCK 0X11 LPDSP32_TCK input selection
onsemi
0x4000079C DIO_JTAG_SW_PAD_CFG (9) JTCK_LPF (9) JTCK_LPF 0X0 JTCK Low-Pass-Filter enable / disable
(8) JTMS_LPF (8) JTMS_LPF 0X0 JTMS Low-Pass-Filter enable / disable
www.onsemi.com
(7) CM3_JTAG_DATA_EN (7) CM3_JTAG_DATA_EN 0X1 CM3 JTAG on DIO[14:15]
(6) CM3_JTAG_TRST_EN (6) CM3_JTAG_TRST_EN 0X1 CM3 JTAG TRST on DIO13
RSL10 Hardware Reference
433
size = SPI0_WORD_SIZE + 1)
onsemi
0x40000808 SPI0_TX_DATA (31:0) SPI0_TX_DATA (31:0) SPI0_TX_DATA 0X0 Single word buffer for data to be transmitted over the
SPI interface
www.onsemi.com
0x4000080C SPI0_RX_DATA - (31:0) SPI0_RX_DATA 0X0 Single word buffer for data that has been received
over the SPI interface
0x40000810 SPI0_STATUS (3) SPI0_TRANSMIT_STATUS (3) SPI0_TRANSMIT_STATUS 0X0 Indicate that the transmission of the data is
RSL10 Hardware Reference
completed
(2) SPI0_RECEIVE_STATUS (2) SPI0_RECEIVE_STATUS 0X0 Indicate that new data has been received
(1) SPI0_OVERRUN_STATUS (1) SPI0_OVERRUN_STATUS 0X0 Indicate that an overrun has occurred when receiving
data on the SPI interface
(0) SPI0_UNDERRUN_STATUS (0) SPI0_UNDERRUN_STATUS 0X0 Indicate that an underrun has occurred when
transmitting data on the SPI interface
A.11 SPI1 INTERFACE CONFIGURATION AND CONTROL
434
0x40000908 SPI1_TX_DATA (31:0) SPI1_TX_DATA (31:0) SPI1_TX_DATA 0X0 Single word buffer for data to be transmitted over the
onsemi
SPI interface
0x4000090C SPI1_RX_DATA - (31:0) SPI1_RX_DATA 0X0 Single word buffer for data that has been received
www.onsemi.com
over the SPI interface
0x40000910 SPI1_STATUS (3) SPI1_TRANSMIT_STATUS (3) SPI1_TRANSMIT_STATUS 0X0 Indicate that the transmission of the data is
completed
RSL10 Hardware Reference
(2) SPI1_RECEIVE_STATUS (2) SPI1_RECEIVE_STATUS 0X0 Indicate that new data has been received
(1) SPI1_OVERRUN_STATUS (1) SPI1_OVERRUN_STATUS 0X0 Indicate that an overrun has occurred when receiving
data on the SPI interface
(0) SPI1_UNDERRUN_STATUS (0) SPI1_UNDERRUN_STATUS 0X0 Indicate that an underrun has occurred when
transmitting data on the SPI interface
A.12 PCM INTERFACE CONFIGURATION AND CONTROL
435
(2) RECEIVE_STATUS (2) RECEIVE_STATUS 0X0 Indicate that PCM data has been received
onsemi
(1) OVERRUN_STATUS (1) OVERRUN_STATUS 0X0 Indicate that an overrun has occurred when receiving
data on the PCM interface
www.onsemi.com
(0) UNDERRUN_STATUS (0) UNDERRUN_STATUS 0X0 Indicate that an underrun has occurred when
transmitting data on the PCM interface
RSL10 Hardware Reference
A.13 I2C INTERFACE CONFIGURATION AND CONTROL
436
transfer
onsemi
(3) STOP - N/A Issue a stop condition on the I2C interface bus
(1) NACK - N/A Issue a not acknowledge on the I2C interface bus
www.onsemi.com
(0) ACK - N/A Issue an acknowledge on the I2C interface bus
0x40000B08 I2C_DATA (7:0) I2C_DATA (7:0) I2C_DATA 0X0 Single byte buffer for data transmitted and received
RSL10 Hardware Reference
437
- (4) BUS_FREE 0X1 Indicate if the I2C interface bus is free
onsemi
- (3) ADDR_DATA 0X0 Indicate if the I2C data register holds an address or
data byte
www.onsemi.com
- (2) READ_WRITE 0X0 Indicate whether the I2C bus transfer is a read or a
write
- (1) GEN_CALL 0X0 Indicate whether the I2C bus transfer is using the
RSL10 Hardware Reference
438
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.15 PWM 0 AND 1 CONFIGURATION AND CONTROL
439
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.16 DMIC INPUT AND OUTPUT DRIVER CONFIGURATION AND CONTROL
440
sample is ready
onsemi
www.onsemi.com
(3) DMIC0_DMA_REQ_EN (3) DMIC0_DMA_REQ_EN 0X0 Enable the DMA request when a new DMIC0 sample
is ready
(2) DMIC0_INT_GEN_EN (2) DMIC0_INT_GEN_EN 0X0 Enable the interrupt generation when a new DMIC0
RSL10 Hardware Reference
sample is ready
(1) DMIC0_DATA_ALIGN (1) DMIC0_DATA_ALIGN 0X0 Data alignment in AUDIO_DMIC_DATA_0
(0) DMIC0_ENABLE (0) DMIC0_ENABLE 0X0 Enable DMIC0 input
Address Register Name Register Write Register Read Default Description
0x40000E04 AUDIO_STATUS - (11) OD_STATUS 0X1 Output driver feature status
(10) OD_UNDERRUN_FLAG_CLEAR - N/A Reset the output driver underrun detection sticky bit
- (9) OD_UNDERRUN_FLAG 0X0 Sticky bit indicating the detection of an output driver
underrun
- (8) OD_DATA_REQ_FLAG 0X0 Flag indicating that a new output driver sample is
required
(6) DMIC1_OVERRUN_FLAG_CLEAR - N/A Reset the DMIC1 overrun detection sticky bit
- (5) DMIC1_OVERRUN_FLAG 0X0 Sticky bit indicating the detection of a DMIC1 overrun
- (4) DMIC1_DATA_RDY_FLAG 0X0 Flag indicating the availability of a new DMIC1
sample
(2) DMIC0_OVERRUN_FLAG_CLEAR - N/A Reset the DMIC0 overrun detection sticky bit
- (1) DMIC0_OVERRUN_FLAG 0X0 Sticky bit indicating the detection of a DMIC0 overrun
- (0) DMIC0_DATA_RDY_FLAG 0X0 Flag indicating the availability of a new DMIC0
sample
0x40000E08 AUDIO_DMIC_CFG (28:24) DMIC1_FRAC_DELAY (28:24) DMIC1_FRAC_DELAY 0X0 DMIC1 fractional delay (each step represents a
DMIC clock cycle)
(19:16) DMIC1_DELAY (19:16) DMIC1_DELAY 0X0 DMIC1 delay (0 to 1.875 samples in steps of 0.125
samples)
(14:12) DMIC1_DCRM (14:12) DMIC1_DCRM 0X0 DMIC1 DC removal filter enable and cut-off
frequency
441
(10:8) DMIC0_DCRM (10:8) DMIC0_DCRM 0X0 DMIC0 DC removal filter enable and cut-off
onsemi
frequency
(1) DMIC1_CLK_EDGE (1) DMIC1_CLK_EDGE 0X0 DMIC1 input clock edge
www.onsemi.com
(0) DMIC0_CLK_EDGE (0) DMIC0_CLK_EDGE 0X0 DMIC0 input clock edge
0x40000E0C AUDIO_DMIC0_GAIN (11:0) GAIN (11:0) GAIN 0X800 DMIC calibration gain (unsigned value from 0 to +2)
RSL10 Hardware Reference
0x40000E10 AUDIO_DMIC1_GAIN (11:0) GAIN (11:0) GAIN 0X800 DMIC calibration gain (unsigned value from 0 to +2)
0x40000E14 AUDIO_DMIC_DATA - (31:16) DMIC1_DATA 0X0 DMIC1 input data (16-bit)
- (15:0) DMIC0_DATA 0X0 DMIC0 input data (16-bit)
0x40000E18 AUDIO_DMIC0_DATA - (31:0) DATA 0X0 DMIC0 input data (LSB or MSB aligned according to
AUDIO_CFG); data is sign extended from 16-bit to
32-bit when read in LSB aligned mode or zero
padded when read in MSB aligned mode
0x40000E1C AUDIO_DMIC1_DATA - (31:0) DATA 0X0 DMIC1 input data (LSB or MSB aligned according to
AUDIO_CFG); data is sign extended from 16-bit to
32-bit when read in LSB aligned mode or zero
padded when read in MSB aligned mode
0x40000E20 AUDIO_OD_CFG (19:16) DCRM (19:16) DCRM 0X0 Output driver DC removal filter enable and cut-off
frequency
(10) DITHER (10) DITHER 0X0 Sigma-delta modulator dithering enable
(0) CLK_EDGE (0) CLK_EDGE 0X1 Output driver output clock edge
Address Register Name Register Write Register Read Default Description
0x40000E24 AUDIO_OD_GAIN (11:0) GAIN (11:0) GAIN 0X800 Output driver calibration gain (unsigned value from 0
to +2)
0x40000E28 AUDIO_OD_DATA (31:0) DATA - N/A OD output data (LSB or MSB aligned according to
OD_CFG); data is truncated to 16 bits when written
in LSB aligned mode or rounded symmetrically with
saturation when written in MSB aligned mode
- (31:0) DATA_RD 0X0 OD output data (LSB or MSB aligned according to
OD_CFG); data is sign extended from 16-bit to 32-bit
when read in LSB aligned mode or zero padded in
MSB aligned mode
0x40000E30 AUDIO_SDM_CFG (31:0) SDM_CFG (31:0) SDM_CFG 0X0 Sigma-Delta modulator internal configuration for test
purposes
442
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.17 CRC GENERATOR CONTROL
443
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.18 AUDIO SINK CLOCK COUNTERS
444
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.19 ASRC CONFIGURATION AND CONTROL
445
(0) ASRC_IN_REQ (0) ASRC_IN_REQ 0X0 The ASRC_IN register interrupt status
onsemi
0x40001108 ASRC_OUT (15:0) ASRC_OUT (15:0) ASRC_OUT 0X0 Audio sample output
www.onsemi.com
0x4000110C ASRC_IN (15:0) ASRC_IN (15:0) ASRC_IN 0X0 Audio sample input
0x40001110 ASRC_CFG (2) WDF_TYPE (2) WDF_TYPE 0X0 WDF Type Selection
(1:0) ASRC_MODE (1:0) ASRC_MODE 0X0 ASRC mode
RSL10 Hardware Reference
0x40001114 ASRC_OUTPUT_CNT (11:0) ASRC_OUTPUT_CNT (11:0) ASRC_OUTPUT_CNT 0X0 ASRC output sample counter
0x40001118 ASRC_PHASE_INC (31:0) ASRC_STEP (31:0) ASRC_STEP 0X0 ASRC_PHASE_INC
0x4000111C ASRC_PHASE_CNT (31:0) ASRC_PHASE_CNT (31:0) ASRC_PHASE_CNT 0X0 ASRC phase counter
0x40001120 ASRC_STATE_MEM (31:0) ASRC_STATE_MEM (31:0) ASRC_STATE_MEM 0X0 ASRC State Memory 0 to 29
A.20 ANALOG-TO-DIGITAL CONVERTER AND BATTERY MONITORING
446
onsemi
(0) ADC_INT_ENABLE (0) ADC_INT_ENABLE 0X0 The ADC new sample ready interrupt mask
0x40001278 ADC_BATMON_COUNT_VAL - (7:0) SUPPLY_COUNT_VALUE 0X0 Number of times the battery voltage has fallen below
www.onsemi.com
the battery monitor voltage threshold. The counter is
reset when read.
0x4000127C ADC_BATMON_STATUS (12) BATMON_ALARM_CLEAR - N/A Battery monitoring alarm status bit
RSL10 Hardware Reference
447
onsemi
(5:0) VTRIM (5:0) VTRIM 0X23 Output voltage trimming configuration in 10 mV steps
0x40001314 ACS_VDDRF_CTRL - (24) READY 0X0 Supply ready
www.onsemi.com
(12) CLAMP (12) CLAMP 0X0 Disable mode clamp control
(8) ENABLE (8) ENABLE 0X0 Enable control
RSL10 Hardware Reference
(5:0) VTRIM (5:0) VTRIM 0X23 Output voltage trimming configuration in 10 mV steps
0x40001318 ACS_VDDPA_CTRL (12) VDDPA_SW_CTRL (12) VDDPA_SW_CTRL 0X0 Power amplifier supply control
(9) ENABLE_ISENSE (9) ENABLE_ISENSE 0X0 Enable current sensing circuit
(8) ENABLE (8) ENABLE 0X0 Enable control
(5:0) VTRIM (5:0) VTRIM 0X37 Output voltage trimming configuration in 10 mV steps
0x4000131C ACS_VDDRET_CTRL (18:17) VDDMRET_VTRIM (18:17) VDDMRET_VTRIM 0X3 VDDMRET retention regulator voltage trimming
(16) VDDMRET_ENABLE (16) VDDMRET_ENABLE 0X0 Enable/Disable the VDDMRET retention regulator
(10:9) VDDTRET_VTRIM (10:9) VDDTRET_VTRIM 0X3 VDDTRET retention regulator voltage trimming
(8) VDDTRET_ENABLE (8) VDDTRET_ENABLE 0X0 Enable/Disable the VDDTRET retention regulator
(2:1) VDDCRET_VTRIM (2:1) VDDCRET_VTRIM 0X3 VDDCRET retention regulator voltage trimming
(0) VDDCRET_ENABLE (0) VDDCRET_ENABLE 0X0 Enable/Disable the VDDCRET retention regulator
Address Register Name Register Write Register Read Default Description
0x40001320 ACS_RCOSC_CTRL (18) CLOCK_MULT (18) CLOCK_MULT 0X0 Enable 12 MHz mode of startup oscillator
(16) RC_OSC_EN (16) RC_OSC_EN 0X0 Enable/Disable the 32 kHz RC Oscillator
(15) FTRIM_FLAG (15) FTRIM_FLAG 0X0 Trimming flag
(13:8) FTRIM_START (13:8) FTRIM_START 0X20 Start RC oscillator frequency trimming
(6) FTRIM_32K_ADJ (6) FTRIM_32K_ADJ 0X0 Adjust 32 kHz oscillator frequency range
(5:0) FTRIM_32K (5:0) FTRIM_32K 0X20 32 kHz RC oscillator frequency trimming
0x40001324 ACS_XTAL32K_CTRL - (24) READY 0X0 XTAL ready status
(18) XIN_CAP_BYPASS_EN (18) XIN_CAP_BYPASS_EN 0X0 Switch to bypass the added XIN serial cap to reduce
the leakage
(17) EN_AMPL_CTRL (17) EN_AMPL_CTRL 0X0 XTAL enable amplitude control (regulation)
(16) FORCE_READY (16) FORCE_READY 0X0 XTAL bypass the ready detector
(13:8) CLOAD_TRIM (13:8) CLOAD_TRIM 0X9 XTAL load capacitance configuration
(7:4) ITRIM (7:4) ITRIM 0X7 XTAL current trimming
(1) IBOOST (1) IBOOST 0X0 XTAL current boosting (4x)
(0) ENABLE (0) ENABLE 0X0 Enable the XTAL 32 kHz oscillator
0x40001328 ACS_BB_TIMER_CTRL (9:8) BB_CLK_PRESCALE (9:8) BB_CLK_PRESCALE 0X0 Prescale value for the baseband timer clock
(0) BB_TIMER_NRESET (0) BB_TIMER_NRESET 0X0 nReset signal for the baseband timer
0x4000132C ACS_CLK_DET_CTRL - (8) CLOCK_PRESENT 0X1 Clock present flag
448
onsemi
(1) RESET_IGNORE (1) RESET_IGNORE 0X0 Clock detector reset condition ignore
(0) ENABLE (0) ENABLE 0X1 Clock detector enable
www.onsemi.com
0x40001330 ACS_RTC_CFG (31:0) START_VALUE (31:0) START_VALUE 0X7FFF Start value for the RTC timer counter (counts from
start_value down to 0)
0x40001334 ACS_RTC_COUNT - (31:0) VALUE 0X0 RTC timer current value
RSL10 Hardware Reference
0x40001338 ACS_RTC_CTRL (25) FORCE_CLOCK - N/A Force a clock on RTC timer (Test Purpose)
(24) RESET - N/A Reset the RTC timer
(7:4) ALARM_CFG (7:4) ALARM_CFG 0X0 Configure RTC timer alarm
(3:1) CLK_SRC_SEL (3:1) CLK_SRC_SEL 0X0 Select the RTC, standby and bb timer clock source
(0) ENABLE (0) ENABLE 0X0 Enable counter and RTC interrupt every 1s
0x40001340 ACS_PWR_MODES_CTRL (31:0) POWER_MODE - N/A 32-bit key to enter RUN, STANDBY or SLEEP mode
Address Register Name Register Write Register Read Default Description
0x40001344 ACS_WAKEUP_CTRL (24) PADS_RETENTION_EN (24) PADS_RETENTION_EN 0X0 Enable / Disable the retention mode of the pads
(20) BOOT_FLASH_APP_REBOOT (20) BOOT_FLASH_APP_REBOOT 0X0 Boot mode flag
- (19) RC_CLOCK_MULT 0X0 RC oscillator clock multiplier read only flag (mirror of
CLOCK_MULT of ACS_RCOSC_CTRL register)
- (18) RC_FTRIM_FLAG 0X0 RC oscillator trimming read only flag (mirror of
FTRIM_FLAG of ACS_RCOSC_CTRL register
(17:16) BOOT_SELECT (17:16) BOOT_SELECT 0X0 Boot selection to indicate boot source
- (15) DCDC_OVERLOAD_WAKEUP 0X0
- (14) WAKEUP_PAD_WAKEUP 0X0
- (13) RTC_ALARM_WAKEUP 0X0
- (12) BB_TIMER_WAKEUP 0X0
- (11) DIO3_WAKEUP 0X0
- (10) DIO2_WAKEUP 0X0
- (9) DIO1_WAKEUP 0X0
- (8) DIO0_WAKEUP 0X0
(7) DCDC_OVERLOAD_CLEAR - N/A
(6) WAKEUP_PAD_WAKEUP_CLEAR - N/A
(5) RTC_ALARM_WAKEUP_CLEAR - N/A
449
(4) BB_TIMER_WAKEUP_CLEAR - N/A
onsemi
www.onsemi.com
(2) DIO2_WAKEUP_CLEAR - N/A
(1) DIO1_WAKEUP_CLEAR - N/A
(0) DIO0_WAKEUP_CLEAR - N/A
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x40001348 ACS_WAKEUP_CFG (18:16) DELAY (18:16) DELAY 0X5 Delay from VDDC ready to digital clock enable
(power of 2)
(9) DCDC_OVERLOAD_EN (9) DCDC_OVERLOAD_EN 0X0 Enable / Disable the Wake-up functionality on the
DCDC overload flag
(8) WAKEUP_PAD_POL (8) WAKEUP_PAD_POL 0X0 Wake-up polarity on the WAKEUP pad
(7) DIO3_POL (7) DIO3_POL 0X0 Wake-up polarity on the DIO3 pad
(6) DIO2_POL (6) DIO2_POL 0X0 Wake-up polarity on the DIO2 pad
(5) DIO1_POL (5) DIO1_POL 0X0 Wake-up polarity on the DIO1 pad
(4) DIO0_POL (4) DIO0_POL 0X0 Wake-up polarity on the DIO0 pad
(3) DIO3_EN (3) DIO3_EN 0X0 Enable / Disable the Wake-up functionality on the
DIO3 pad
(2) DIO2_EN (2) DIO2_EN 0X0 Enable / Disable the Wake-up functionality on the
DIO2 pad
(1) DIO1_EN (1) DIO1_EN 0X0 Enable / Disable the Wake-up functionality on the
DIO1 pad
(0) DIO0_EN (0) DIO0_EN 0X0 Enable / Disable the Wake-up functionality on the
DIO0 pad
0x4000134C ACS_WAKEUP_STATE - (18:16) WAKEUP_SRC 0X0 Status register indicates the last wake-up source
- (7:0) RTC_VALUE 0X0 RTC counter value captured at wakeup event (only 8
LSBs, corresponds to 7.8 ms)
450
0x40001350 ACS_WAKEUP_GP_DATA (31:0) GP_DATA (31:0) GP_DATA 0X0 32-bit General-Purpose RW Data
onsemi
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x40001354 ACS_RESET_STATUS - (14) TIMEOUT_RESET_FLAG 0X0 Sticky flag that detects that a timeout in the power up
sequence
- (13) CLK_DET_RESET_FLAG 0X0 Sticky flag that detects that a clock detector reset
occurred
- (12) VDDA_RESET_FLAG 0X1 Sticky flag that detects that a VDDA reset occurred
(triggered by vdda_ready = 0)
- (11) VDDM_RESET_FLAG 0X1 Sticky flag that detects that a VDDM reset occurred
(triggered by vddm_ready = 0)
- (10) VDDC_RESET_FLAG 0X1 Sticky flag that detects that a VDDC reset occurred
(triggered by vddc_ready = 0)
- (9) PAD_RESET_FLAG 0X0 Sticky flag that detects that a reset occurred due to
pad NRESET
- (8) POR_RESET_FLAG 0X1 Sticky flag that detects that a POR reset occurred
(6) TIMEOUT_RESET_FLAG_CLEAR - N/A Reset the sticky TIMEOUT_RESET flag.
(5) CLK_DET_RESET_FLAG_CLEAR - N/A Reset the sticky CLK_DET_RESET flag.
(4) VDDA_RESET_FLAG_CLEAR - N/A Reset the sticky VDDA_RESET flag.
(3) VDDM_RESET_FLAG_CLEAR - N/A Reset the sticky VDDM_RESET flag.
(2) VDDC_RESET_FLAG_CLEAR - N/A Reset the sticky VDDC_RESET flag.
(1) PAD_RESET_FLAG_CLEAR - N/A Reset the sticky PAD_RESET flag.
451
(0) POR_RESET_FLAG_CLEAR - N/A Reset the sticky POR_RESET flag.
onsemi
0x40001358 ACS_AOUT_CTRL (13) RTC_CLOCK_DIO0_STOP_EDGE (13) RTC_CLOCK_DIO0_STOP_EDGE 0X0 Stop edge for RTC clock output on AOUT
(12:11) RTC_CLOCK_DIO0_STOP_SRC (12:11) RTC_CLOCK_DIO0_STOP_SRC 0X0 Stop source for RTC clock output on AOUT
www.onsemi.com
(10:8) RTC_CLOCK_DIO0_START (10:8) RTC_CLOCK_DIO0_START 0X0 Start event for RTC clock output on AOUT (RTC
prescaler and counter need to be enabled)
(4:0) TEST_AOUT (4:0) TEST_AOUT 0X0 AOUT test signal selection
RSL10 Hardware Reference
0x4000135C ACS_JIC_READ - (7:0) BYTE0_RO 0XFF JIC read only register bits (returning signals from
analog part: tied to 1)
A.22 BASEBAND CONTROLLER INTERFACE
452
active high.
onsemi
- (4) BLE_TX 0X0 Indicates if the RW-BLE core is busy and performs
Tx activity, active high.
www.onsemi.com
- (0) BLE_RX 0X0 Indicates if the RW-BLE core is busy and performs
Rx activity, active high
0x40001410 BBIF_COEX_INT_CFG (9:8) BLE_IN_PROCESS_EVENT (9:8) BLE_IN_PROCESS_EVENT 0X0 BLE_IN_PROCESS event interrupt configuration
RSL10 Hardware Reference
453
(9) ADVERTFILT_EN (9) ADVERTFILT_EN 0X0 Advertising channels error filtering enable control
onsemi
(8) RWBLE_EN (8) RWBLE_EN 0X0 Enable RW-BLE core exchange table pre-fetch
mechanism
www.onsemi.com
(7:4) RXWINSZDEF (7:4) RXWINSZDEF 0X0 Default Rx Window size in us (used when device is
master connected or performs its second receipt)
RSL10 Hardware Reference
(2:0) SYNCERR (2:0) SYNCERR 0X0 Indicates the maximum number of errors allowed to
recognize the synchronization word
0x40001504 BB_VERSION - (31:24) TYP 0X8 RW-BLE core type (BLE v4.2)
- (23:16) REL 0X0 RW-BLE core version - major release number
- (15:8) UPG 0X9 RW-BLE core upgrade - upgrade number
- (7:0) BUILD 0X1 RW-BLE core build - build number
Address Register Name Register Write Register Read Default Description
0x40001508 BB_RWBLEBCONF - (31) DMMODE 0X0 RW-BLE core dual mode
- (25:24) ISOPORTNB 0X3 Number of supported isochronous channels
- (23) DECIPHER 0X0 AES deciphering present
- (21) COEX 0X1 Coexistence mechanism
- (20:16) RFIF 0X3 Support of the RF front-end
- (15) USEDBG 0X1 Diagnostic port
- (14) USECRYPT 0X1 AES-CCM encryption
- (13:8) CLK_SEL 0X8 Operating frequency (in MHz)
- (7) INTMODE 0X0 Interruption mode
- (6) BUSTYPE 0X1 Processor bus type
- (5) DATA_WIDTH 0X1 Processor bus width
- (4:0) ADD_WIDTH 0XE Value of the RW_BLE_ADDRESS_WIDTH
parameter concerted into binary
0x4000150C BB_INTCNTL (15) CSCNTDEVMSK (15) CSCNTDEVMSK 0X1 CSCNT interrupt mask during event allowing to
enable CSCNT interrupt generation during events
(12) AUDIOINT2MSK (12) AUDIOINT2MSK 0X0 Audio channel 2 interrupt mask
(11) AUDIOINT1MSK (11) AUDIOINT1MSK 0X0 Audio channel 1 interrupt mask
(10) AUDIOINT0MSK (10) AUDIOINT0MSK 0X0 Audio channel 0 interrupt mask
454
(9) SWINTMSK (9) SWINTMSK 0X0 SW triggered interrupt mask
onsemi
(8) EVENTAPFAINTMSK (8) EVENTAPFAINTMSK 0X1 End of event / anticipated pre-fetch abort interrupt
mask
www.onsemi.com
(7) FINETGTIMINTMSK (7) FINETGTIMINTMSK 0X0 Fine target timer mask
(6) GROSSTGTIMINTMSK (6) GROSSTGTIMINTMSK 0X0 Gross target timer mask
RSL10 Hardware Reference
455
onsemi
www.onsemi.com
- (7) FINETGTIMINTRAWSTAT 0X0 Masked fine target timer error interrupt raw status
- (6) GROSSTGTIMINTRAWSTAT 0X0 Masked gross target timer interrupt raw status
- (5) ERRORINTRAWSTAT 0X0 Masked error interrupt raw status
RSL10 Hardware Reference
456
0x40001524 BB_BDADDRL (31:0) BDADDRL (31:0) BDADDRL 0X0 BLE device address (LSB part)
onsemi
0x40001528 BB_BDADDRU (16) PRIV_NPUB (16) PRIV_NPUB 0X0 BLE device address privacy indicator
www.onsemi.com
(15:0) BDADDRU (15:0) BDADDRU 0X0 BLE device address (MSB part)
0x4000152C BB_ET_CURRENTRXDESCPTR (31:16) ETPTR (31:16) ETPTR 0X0 Exchange table pointer that determines the starting
point of the exchange table
RSL10 Hardware Reference
(14:0) CURRENTRXDESCPTR (14:0) CURRENTRXDESCPTR 0X0 Rx descriptor pointer that determines the starting
point of the receive buffer chained list
0x40001530 BB_DEEPSLCNTL (31) EXTWKUPDSB (31) EXTWKUPDSB 0X0 External wake-up disable
- (15) DEEP_SLEEP_STAT 0X0 Indicator of current deep sleep clock mux status
(4) SOFT_WAKEUP_REQ (4) SOFT_WAKEUP_REQ 0X0 Wake up request from RW-BLE software applying
when system is in deep sleep mode
(3) DEEP_SLEEP_CORR_EN (3) DEEP_SLEEP_CORR_EN 0X0 625us base time reference integer and fractional part
correction applying when system has been woken-up
from deep sleep mode
(2) DEEP_SLEEP_ON (2) DEEP_SLEEP_ON 0X0 RW-BLE core power mode control
(1) RADIO_SLEEP_EN (1) RADIO_SLEEP_EN 0X0 Controls the radio module
(0) OSC_SLEEP_EN (0) OSC_SLEEP_EN 0X0 Controls the RF high frequency crystal oscillator
0x40001534 BB_DEEPSLWKUP (31:0) DEEPSLTIME (31:0) DEEPSLTIME 0X0 Determines the time in low_power_clk clock cycles
to spend in deep sleep mode before waking-up the
device
Address Register Name Register Write Register Read Default Description
0x40001538 BB_DEEPSLSTAT - (31:0) DEEPSLDUR 0X0 Actual duration of the last deep sleep phase
measured in low_power_clk clock cycle
0x4000153C BB_ENBPRESET (20:10) TWOSC (20:10) TWOSC 0X0 Time in low power oscillator cycles allowed for
stabilization of the high frequency oscillator when the
deep-sleep mode has been left due to sleep-timer
expiry (DEEPSLWKUP-DEEPSLTIME])
0x40001540 BB_FINECNTCORR (9:0) FINECNTCORR (9:0) FINECNTCORR 0X0 Phase correction value for the 625us reference
counter (i.e. fine counter) in us
0x40001544 BB_BASETIMECNTCORR (26:0) BASETIMECNTCORR (26:0) BASETIMECNTCORR 0X0 Base time counter correction value
0x40001550 BB_DIAGCNTL (31) DIAG3_EN (31) DIAG3_EN 0X0 Enable diagnostic port 3 output
(29:24) DIAG3 (29:24) DIAG3 0X0
(23) DIAG2_EN (23) DIAG2_EN 0X0 Enable diagnostic port 2 output
(21:16) DIAG2 (21:16) DIAG2 0X0
(15) DIAG1_EN (15) DIAG1_EN 0X0 Enable diagnostic port 1 output
(13:8) DIAG1 (13:8) DIAG1 0X0
(7) DIAG0_EN (7) DIAG0_EN 0X0 Enable diagnostic port 0 output
(5:0) DIAG0 (5:0) DIAG0 0X0
0x40001554 BB_DIAGSTAT - (31:24) DIAG3STAT 0X0 Directly connected to ble_dbg3[7:0] output (debug
use only)
457
- (23:16) DIAG2STAT 0X0 Directly connected to ble_dbg2[7:0] output (debug
use only)
onsemi
www.onsemi.com
- (7:0) DIAG0STAT 0X0 Directly connected to ble_dbg0[7:0] output (debug
use only)
RSL10 Hardware Reference
0x40001558 BB_DEBUGADDMAX (31:16) REG_ADDMAX (31:16) REG_ADDMAX 0X0 Upper limit for the register zone indicated by the
reg_inzone flag
(15:0) EM_ADDMAX (15:0) EM_ADDMAX 0X0 Upper limit for the exchange memory zone indicated
by the em_inzone flag
0x4000155C BB_DEBUGADDMIN (31:16) REG_ADDMIN (31:16) REG_ADDMIN 0X0 Lower limit for the register zone indicated by the
reg_inzone flag
(15:0) EM_ADDMIN (15:0) EM_ADDMIN 0X0 Lower limit for the exchange memory zone indicated
by the em_inzone flag
Address Register Name Register Write Register Read Default Description
0x40001560 BB_ERRORTYPESTAT - (19) RAL_UNDERRUN 0X0 Indicates Resolving Address List engine Under run
issue, happens when RAL List parsing not finished
on time
- (18) RAL_ERROR 0X0 Indicates Resolving Address List engine faced a bad
setting
- (17) CONCEVTIRQ_ERROR 0X0 Indicates whether two consecutive and concurrent
ble_event_irq have been generated, and not
acknowledged in time by the RW-BLE software
- (16) RXDATA_PTR_ERROR 0X0 Indicates whether Rx data buffer pointer value
programmed is null (major failure)
- (15) TXDATA_PTR_ERROR 0X0 Indicates whether Tx data buffer pointer value
programmed is null during advertising / scanning /
initiating events, or during master / slave connections
with non-null packet length (major failure)
- (14) RXDESC_EMPTY_ERROR 0X0 Indicates whether Rx descriptor pointer value
programmed in register is null (major failure)
- (13) TXDESC_EMPTY_ERROR 0X0 Indicates whether Tx descriptor pointer value
programmed in control structure is null during
advertising / scanning / initiating events (major
failure)
- (12) CSFORMAT_ERROR 0X0 Indicates whether CS-FORMAT has been
programmed with an invalid value (major failure)
- (11) LLCHMAP_ERROR 0X0 Indicates Link Layer channel map error, happens
458
when actual number of CS-LLCHMAP bit set to one
onsemi
www.onsemi.com
- (10) ADV_UNDERRUN 0X0 Indicates advertising interval under run
- (9) IFS_UNDERRUN 0X0 Indicates inter frame space under run, occurs if IFS
time is not enough to update and read control
RSL10 Hardware Reference
459
0x40001578 BB_RADIOCNTL2 (15:0) FREQTABLE_PTR (15:0) FREQTABLE_PTR 0X40 Frequency table pointer
onsemi
0x40001580 BB_RADIOPWRUPDN0 (23:16) RXPWRUP0 (23:16) RXPWRUP0 0X0 This register holds the length in us of the RX power
up phase for the current radio device
www.onsemi.com
(12:8) TXPWRDN0 (12:8) TXPWRDN0 0X0 This register extends the length in us of the TX
power down phase for the current radio device
RSL10 Hardware Reference
(7:0) TXPWRUP0 (7:0) TXPWRUP0 0X0 This register holds the length in us of the TX power
up phase for the current radio device
0x40001584 BB_RADIOPWRUPDN1 (23:16) RXPWRUP1 (23:16) RXPWRUP1 0X0 This register holds the length in us of the RX power
up phase for the current radio device
(12:8) TXPWRDN1 (12:8) TXPWRDN1 0X0 This register extends the length in us of the TX
power down phase for the current radio device
(7:0) TXPWRUP1 (7:0) TXPWRUP1 0X0 This register holds the length in us of the TX power
up phase for the current radio device
0x40001590 BB_RADIOTXRXTIM0 (31:24) TXPATHDLY0 (31:24) TXPATHDLY0 0X0
(20:16) RXPATHDLY0 (20:16) RXPATHDLY0 0X0
(14:8) RFRXTMDA0 (14:8) RFRXTMDA0 0X0
(6:0) SYNC_POSITION0 (6:0) SYNC_POSITION0 0X0
Address Register Name Register Write Register Read Default Description
0x40001594 BB_RADIOTXRXTIM1 (31:24) TXPATHDLY1 (31:24) TXPATHDLY1 0X0
(20:16) RXPATHDLY1 (20:16) RXPATHDLY1 0X0
(14:8) RFRXTMDA1 (14:8) RFRXTMDA1 0X0
(6:0) SYNC_POSITION1 (6:0) SYNC_POSITION1 0X0
0x400015A0 BB_SPIPTRCNTL0 (31:16) TXOFFPTR (31:16) TXOFFPTR 0X0 Pointer to the TxOFF sequence address section
(15:0) TXONPTR (15:0) TXONPTR 0X0 Pointer to the TxON sequence address section
0x400015A4 BB_SPIPTRCNTL1 (31:16) RXOFFPTR (31:16) RXOFFPTR 0X0 Pointer to the RxOFF sequence address section
(15:0) RXONPTR (15:0) RXONPTR 0X0 Pointer to the RxON sequence address section
0x400015A8 BB_SPIPTRCNTL2 (15:0) RSSIPTR (15:0) RSSIPTR 0X0 Pointer to the RSSI read sequence address section
0x400015B0 BB_ADVCHMAP (2:0) ADVCHMAP (2:0) ADVCHMAP 0X7 Advertising channel map, defined as per the
advertising connection settings. Contains advertising
channels index 37 to 39
0x400015C0 BB_ADVTIM (13:0) ADVINT (13:0) ADVINT 0X0 Advertising packet interval defines the time interval
in between two ADV_xxx packet sent (value in us)
0x400015C4 BB_ACTSCANSTAT - (24:16) BACKOFF 0X1 Active scan mode back-off counter initialization value
- (8:0) UPPERLIMIT 0X1 Active scan mode upper limit counter value
0x400015D0 BB_WLPUBADDPTR (15:0) WLPUBADDPTR (15:0) WLPUBADDPTR 0X0 Start address pointer of the public devices white list
0x400015D4 BB_WLPRIVADDPTR (15:0) WLPRIVADDPTR (15:0) WLPRIVADDPTR 0X0 Start address pointer of the private devices white list
460
0x400015D8 BB_WLNBDEV (15:8) NBPRIVDEV (15:8) NBPRIVDEV 0X0 Number of private devices in the white list
onsemi
(7:0) NBPUBDEV (7:0) NBPUBDEV 0X0 Number of public devices in the white list
0x400015E0 BB_AESCNTL (1) AES_MODE (1) AES_MODE 0X0 Cipher mode control
www.onsemi.com
(0) AES_START (0) AES_START 0X0 Starts AES-128 ciphering/deciphering process
0x400015E4 BB_AESKEY31_0 (31:0) AESKEY31_0 (31:0) AESKEY31_0 0X0 AES encryption 128-bit key (bits 31 down to 0)
RSL10 Hardware Reference
0x400015E8 BB_AESKEY63_32 (31:0) AESKEY63_32 (31:0) AESKEY63_32 0X0 AES encryption 128-bit key (bits 63 down to 32)
0x400015EC BB_AESKEY95_64 (31:0) AESKEY95_64 (31:0) AESKEY95_64 0X0 AES encryption 128-bit key (bits 95 down to 64)
0x400015F0 BB_AESKEY127_96 (31:0) AESKEY127_96 (31:0) AESKEY127_96 0X0 AES encryption 128-bit key (bits 127 down to 96)
0x400015F4 BB_AESPTR (15:0) AESPTR (15:0) AESPTR 0X0 Pointer to the memory zone where the block to
cipher/decipher using AES-128 is stored.
0x400015F8 BB_TXMICVAL - (31:0) TXMICVAL 0X0 AES-CCM plain MIC value. Valid on when MIC has
been calculated (in Tx)
0x400015FC BB_RXMICVAL - (31:0) RXMICVAL 0X0 AES-CCM plain MIC value. Valid on once MIC has
been extracted from Rx packet
Address Register Name Register Write Register Read Default Description
0x40001600 BB_RFTESTCNTL (31) INFINITERX (31) INFINITERX 0X0 Applicable in RF test mode only
(27) RXPKTCNTEN (27) RXPKTCNTEN 0X0 Applicable in RF test mode only
(15) INFINITETX (15) INFINITETX 0X0 Applicable in RF test mode only
(14) TXLENGTHSRC (14) TXLENGTHSRC 0X0 Applicable only in Tx/Rx RF test mode
(13) PRBSTYPE (13) PRBSTYPE 0X0 Applicable only in Tx/Rx RF test mode
(12) TXPLDSRC (12) TXPLDSRC 0X0 Applicable only in Tx/Rx RF test mode
(11) TXPKTCNTEN (11) TXPKTCNTEN 0X1 Applicable in RF test mode only
(8:0) TXLENGTH (8:0) TXLENGTH 0X0 Tx packet length in number of byte
0x40001604 BB_RFTESTTXSTAT (31:0) TXPKTCNT (31:0) TXPKTCNT 0X0 Reports number of transmitted packet during test
modes
0x40001608 BB_RFTESTRXSTAT (31:0) RXPKTCNT (31:0) RXPKTCNT 0X0 Reports number of correctly received packet during
test modes
0x40001610 BB_TIMGENCNTL (31) APFM_EN (31) APFM_EN 0X1 Controls the anticipated pre-fetch abort mechanism
(25:16) PREFETCHABORT_TIME (25:16) PREFETCHABORT_TIME 0X1FE Defines the instant in us at which immediate abort is
required after anticipated pre-fetch abort
(8:0) PREFETCH_TIME (8:0) PREFETCH_TIME 0X96 Defines exchange table pre-fetch instant in us
0x40001614 BB_GROSSTIMTGT (22:0) GROSSTARGET (22:0) GROSSTARGET 0X0 Gross timer target value on which a
ble_grosstgtim_irq must be generated (precision of
10ms)
461
0x40001618 BB_FINETIMTGT (26:0) FINETARGET (26:0) FINETARGET 0X0 Fine timer target value on which a ble_finetgtim_irq
onsemi
www.onsemi.com
Tx and Rx
(21:20) WLCRXPRIOMODE (21:20) WLCRXPRIOMODE 0X0 Defines BLE packet ble_rx mode behavior
(17:16) WLCTXPRIOMODE (17:16) WLCTXPRIOMODE 0X0 Defines BLE packet ble_tx mode behavior
RSL10 Hardware Reference
(15:14) MWSTXFREQMSK (15:14) MWSTXFREQMSK 0X0 Determines how MWS Tx Frequency impacts BLE
Tx and Rx
(13:12) MWSRXFREQMSK (13:12) MWSRXFREQMSK 0X1 Determines how MWS Rx Frequency impacts BLE
Tx and Rx
(11:10) MWSTXMSK (11:10) MWSTXMSK 0X0 Determines how mws_tx impacts BLE Tx and Rx
(9:8) MWSRXMSK (9:8) MWSRXMSK 0X1 Determines how mws_rx impacts BLE Tx and Rx
(7:6) TXMSK (7:6) TXMSK 0X0 Determines how TXx impact BLE Tx and Rx
(5:4) RXMSK (5:4) RXMSK 0X1 Determines how RXx impact BLE Tx and Rx
(3) MWSWCI_EN (3) MWSWCI_EN 0X0 Enable / Disable control of the WCI MWS
Coexistence interface / Valid in Dual Mode only
(2) MWSCOEX_EN (2) MWSCOEX_EN 0X0 Enable / Disable control of the MWS Coexistence
control / Valid in Dual Mode only
(1) SYNCGEN_EN (1) SYNCGEN_EN 0X0 Determines whether ble_sync is generated or not
(0) COEX_EN (0) COEX_EN 0X0 Enable / disable control of the coexistence control
Address Register Name Register Write Register Read Default Description
0x40001624 BB_COEXIFCNTL1 (28:24) WLCPRXTHR (28:24) WLCPRXTHR 0X0 Determines the threshold for Rx priority setting
(applies on ble_rx if WLCRXPRIOMODE equals
"10")
(20:16) WLCPTXTHR (20:16) WLCPTXTHR 0X0 Determines the threshold for priority setting (applies
on ble_tx if WLCTXPRIOMODE equals "10")
(14:8) WLCPDURATION (14:8) WLCPDURATION 0X0 Determines how many us the priority information
must be maintained (applies on ble_tx and ble_rx if
WLCTXPRIOMODE equals "10")
(6:0) WLCPDELAY (6:0) WLCPDELAY 0X0 Determines the delay (in us) in Tx/Rx enables rises
the time BLE Tx/Rx priority has to be provided
(applies on ble_tx and ble_rx if WLCTXPRIOMODE
equals "10")
0x40001628 BB_COEXIFCNTL2 (11:8) RX_ANT_DELAY (11:8) RX_ANT_DELAY 0X0 Time (in us) by which is anticipated bt_rx to be
provided before effective Radio receipt operation
(3:0) TX_ANT_DELAY (3:0) TX_ANT_DELAY 0X0 Time (in us) by which is anticipated bt_tx to be
provided before effective Radio transmit operation
0x4000162C BB_BBMPRIO0 (31:28) BLEM7 (31:28) BLEM7 0X3 Set priority value for passive scanning
(27:24) BLEM6 (27:24) BLEM6 0X4 Set priority value for non-connectable advertising
(23:20) BLEM5 (23:20) BLEM5 0X8 Set priority value for connectable advertising BLE
message
(19:16) BLEM4 (19:16) BLEM4 0X9 Set priority value for active scanning BLE message
462
(15:12) BLEM3 (15:12) BLEM3 0XA Set priority value for initiating (scanning) BLE
message
onsemi
(11:8) BLEM2 (11:8) BLEM2 0XD Set priority value for data channel transmission BLE
message
www.onsemi.com
(7:4) BLEM1 (7:4) BLEM1 0XE Set priority value for LLCP BLE message
(3:0) BLEM0 (3:0) BLEM0 0XF Set priority value for initiating (connection request
RSL10 Hardware Reference
463
(15:0) ISO0TXPTR1 (15:0) ISO0TXPTR1 0X0 Tx ISO Buffer pointer 1 of ISO Channel 0
onsemi
0x4000165C BB_ISOCURRENTRXPTR0 (31:16) ISO0RXPTR0 (31:16) ISO0RXPTR0 0X0 Rx ISO Buffer pointer 0 of ISO Channel 0
www.onsemi.com
(15:0) ISO0RXPTR1 (15:0) ISO0RXPTR1 0X0 Rx ISO Buffer pointer 1 of ISO Channel 0
0x40001660 BB_ISOTRCNL0 (23:16) ISO0RXLEN (23:16) ISO0RXLEN 0X0 Negotiated, maximum expected number of bytes for
ISO Channel 0 Rx payloads
RSL10 Hardware Reference
(7:0) ISO0TXLEN (7:0) ISO0TXLEN 0X0 Negotiated, number of bytes for ISO Channel 0 Tx
payloads
0x40001664 BB_ISOEVTCNTLOFFSETL0 (31:0) EVT_CNT_OFFSETL0 (31:0) EVT_CNT_OFFSETL0 0X0 LSB part of EVT_CNT_OFFSET0[39:0] field
0x40001668 BB_ISOEVTCNTLOFFSETU0 (6:0) EVT_CNT_OFFSETU0 (6:0) EVT_CNT_OFFSETU0 0X0 MSB part of EVT_CNT_OFFSET0[39:0] field
0x40001670 BB_ISOCHANCNTL1 (4) RETXACKEN1 (4) RETXACKEN1 0X0 Generate Tx ACK
(3) SYNCGEN1 (3) SYNCGEN1 0X0 Enable audio syn_p generation
(2) ISOCHANEN1 (2) ISOCHANEN1 0X0 Enable ISO channel
(1:0) ISOTYPE1 (1:0) ISOTYPE1 0X0 ISO Channel Type
Address Register Name Register Write Register Read Default Description
0x40001674 BB_ISOMUTECNTL1 (31) TOGO1 (31) TOGO1 0X0 Indicates which buffer is in use (direct copy of
ET-ISOBUFSEL)
(19) MUTE_SINK1 (19) MUTE_SINK1 0X0 HW mute control
(18) MUTE_SOURCE1 (18) MUTE_SOURCE1 0X0 HW mute control
(17) INVL1_1 (17) INVL1_1 0X1 SW mute status for ISO buffer 1 (i.e updated when
ET-ISOBUFSEL = 0)
(16) INVL1_0 (16) INVL1_0 0X1 SW mute status for ISO buffer 0 (i.e updated when
ET-ISOBUFSEL = 1)
(7:0) MUTE_PATTERN1 (7:0) MUTE_PATTERN1 0X0 Value of the ISO channel 0 Mute Pattern to be used
when HW muting is enabled
0x40001678 BB_ISOCURRENTTXPTR1 (31:16) ISO1TXPTR0 (31:16) ISO1TXPTR0 0X0 Tx ISO Buffer pointer 0 of ISO Channel 1
(15:0) ISO1TXPTR1 (15:0) ISO1TXPTR1 0X0 Tx ISO Buffer pointer 1 of ISO Channel 1
0x4000167C BB_ISOCURRENTRXPTR1 (31:16) ISO1RXPTR0 (31:16) ISO1RXPTR0 0X0 Rx ISO Buffer pointer 0 of ISO Channel 1
(15:0) ISO1RXPTR1 (15:0) ISO1RXPTR1 0X0 Rx ISO Buffer pointer 1 of ISO Channel 1
0x40001680 BB_ISOTRCNL1 (23:16) ISO1RXLEN (23:16) ISO1RXLEN 0X0 Negotiated, maximum expected number of bytes for
ISO Channel 0 Rx payloads
(7:0) ISO1TXLEN (7:0) ISO1TXLEN 0X0 Negotiated, number of bytes for ISO Channel 0 Tx
payloads
0x40001684 BB_ISOEVTCNTLOFFSETL1 (31:0) EVT_CNT_OFFSETL1 (31:0) EVT_CNT_OFFSETL1 0X0 LSB part of EVT_CNT_OFFSET0[39:0] field
464
0x40001688 BB_ISOEVTCNTLOFFSETU1 (6:0) EVT_CNT_OFFSETU1 (6:0) EVT_CNT_OFFSETU1 0X0 MSB part of EVT_CNT_OFFSET0[39:0] field
onsemi
www.onsemi.com
(2) ISOCHANEN2 (2) ISOCHANEN2 0X0 Enable ISO channel
(1:0) ISOTYPE2 (1:0) ISOTYPE2 0X0 ISO Channel Type
RSL10 Hardware Reference
0x40001694 BB_ISOMUTECNTL2 (31) TOGO2 (31) TOGO2 0X0 Indicates which buffer is in use (direct copy of
ET-ISOBUFSEL)
(19) MUTE_SINK2 (19) MUTE_SINK2 0X0 HW mute control
(18) MUTE_SOURCE2 (18) MUTE_SOURCE2 0X0 HW mute control
(17) INVL2_1 (17) INVL2_1 0X1 SW mute status for ISO buffer 1 (i.e updated when
ET-ISOBUFSEL = 0)
(16) INVL2_0 (16) INVL2_0 0X1 SW mute status for ISO buffer 0 (i.e updated when
ET-ISOBUFSEL = 1)
(7:0) MUTE_PATTERN2 (7:0) MUTE_PATTERN2 0X0 Value of the ISO channel 0 Mute Pattern to be used
when HW muting is enabled
0x40001698 BB_ISOCURRENTTXPTR2 (31:16) ISO2TXPTR0 (31:16) ISO2TXPTR0 0X0 Tx ISO Buffer pointer 0 of ISO Channel 2
(15:0) ISO2TXPTR1 (15:0) ISO2TXPTR1 0X0 Tx ISO Buffer pointer 1 of ISO Channel 2
0x4000169C BB_ISOCURRENTRXPTR2 (31:16) ISO2RXPTR0 (31:16) ISO2RXPTR0 0X0 Rx ISO Buffer pointer 0 of ISO Channel 2
(15:0) ISO2RXPTR1 (15:0) ISO2RXPTR1 0X0 Rx ISO Buffer pointer 1 of ISO Channel 2
Address Register Name Register Write Register Read Default Description
0x400016A0 BB_ISOTRCNL2 (23:16) ISO2RXLEN (23:16) ISO2RXLEN 0X0 Negotiated, maximum expected number of bytes for
ISO Channel 2 Rx payloads
(7:0) ISO2TXLEN (7:0) ISO2TXLEN 0X0 Negotiated, number of bytes for ISO Channel 2 Tx
payloads
0x400016A4 BB_ISOEVTCNTLOFFSETL2 (31:0) EVT_CNT_OFFSETL2 (31:0) EVT_CNT_OFFSETL2 0X0 LSB part of EVT_CNT_OFFSET2[39:0] field
0x400016A8 BB_ISOEVTCNTLOFFSETU2 (6:0) EVT_CNT_OFFSETU2 (6:0) EVT_CNT_OFFSETU2 0X0 MSB part of EVT_CNT_OFFSET2[39:0] field
0x400016B0 BB_BBPRIOSCHARB (15) BLEPRIOMODE (15) BLEPRIOMODE 0X0 Determine BLE priority scheduling arbitration mode
(7:0) BLEMARGIN (7:0) BLEMARGIN 0X0 Determine the decision instant margin for priority
scheduling arbitration
465
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.24 RF FRONT-END 2.4 GHZ
466
(7) MODE_NOT_TO_IDLE (7) MODE_NOT_TO_IDLE 0X0 In FSM mode, if set to 1 indicates to the FSM to go in
onsemi
www.onsemi.com
(4) MODE_EN_DESERIALIZER (4) MODE_EN_DESERIALIZER 0X0 If set to 1 enables the deserializer
(3) MODE_EN_SERIALIZER (3) MODE_EN_SERIALIZER 0X0 If set to 1 enables the serializer
RSL10 Hardware Reference
(2) MODE_TX_NRX (2) MODE_TX_NRX 0X0 if set to 1 use the Tx, otherwise the Rx
(1:0) MODE_MODE (1:0) MODE_MODE 0X0 Select the working mode of the digital baseband: 00)
the digital baseband is off (no ck) 01) the clock is
generated but the blocks are reset (Tx,Rx,FIFOs and
FSM) 10) 10: the digital baseband is freezed 11)
working
Address Register Name Register Write Register Read Default Description
0x40010004 RF_REG01 (31:24) (31:24) 0X0 Time constant of the fine carrier recovery block
TAU_PHASE_RECOV_TAU_PHASE_REC TAU_PHASE_RECOV_TAU_PHASE_REC
OV OV
(23:16) (23:16) 0X0 Time constant of the rough carrier recovery block
TAU_ROUGH_RECOV_TAU_ROUGH_REC TAU_ROUGH_RECOV_TAU_ROUGH_REC
OV OV
(15) (15) 0X0 If set to 1, enables the automatic AFC correction.
CARRIER_RECOVERY_EN_CORRECT_C CARRIER_RECOVERY_EN_CORRECT_C
FREQ_AFC FREQ_AFC
(14) (14) 0X0 If set to 1, the IF correction is negative
CARRIER_RECOVERY_CORRECT_CFRE CARRIER_RECOVERY_CORRECT_CFRE
Q_IF_NEG Q_IF_NEG
(13) (13) 0X0 If set to 1, enables the automatic IF correction
CARRIER_RECOVERY_EN_CORRECT_C CARRIER_RECOVERY_EN_CORRECT_C
FREQ_IF FREQ_IF
(12) CARRIER_RECOVERY_AFC_NEG (12) CARRIER_RECOVERY_AFC_NEG 0X0 If set to 1 correct the AFC negatively
(11) (11) 0X0 If set to 1 enables the starter mode, i.e. a 32x faster
CARRIER_RECOVERY_STARTER_MODE CARRIER_RECOVERY_STARTER_MODE carrier recovery.
(10) CARRIER_RECOVERY_EN_AFC (10) CARRIER_RECOVERY_EN_AFC 0X0 if set to 1 enables the Automatic Frequency Control
(9) (9) 0X0 If set to 1 enables the fine carrier recovery
CARRIER_RECOVERY_EN_FINE_RECO CARRIER_RECOVERY_EN_FINE_RECO
V V
467
(8) (8) 0X0 If set to 1 enables the rough carrier recovery
onsemi
CARRIER_RECOVERY_EN_ROUGH_REC CARRIER_RECOVERY_EN_ROUGH_REC
OV OV
www.onsemi.com
(6) MOD_TX_PULSE_NSYM (6) MOD_TX_PULSE_NSYM 0X0 If set to 1, the Tx pulse shape is an odd function.
(5) MOD_TX_EN_INTERP (5) MOD_TX_EN_INTERP 0X0 If set to 1, enables the Tx CIC interpolator.
(4:0) MOD_TX_CK_TX_M (4:0) MOD_TX_CK_TX_M 0X0 Unsigned value that determine the Tx CIC
RSL10 Hardware Reference
468
(23:20) PAD_CONF_1_PAD_1_CONF (23:20) PAD_CONF_1_PAD_1_CONF 0X0 Configuration of GPIO pad 1
onsemi
www.onsemi.com
not active.
(14) IRQ_CONF_IRQ_ACTIVE_LOW (14) IRQ_CONF_IRQ_ACTIVE_LOW 0X0 If set to 1, the IRQ are active low
RSL10 Hardware Reference
(13:8) IRQ_CONF_IRQS_MASK (13:8) IRQ_CONF_IRQS_MASK 0X0 Mask to determine which IRQs are enabled (active
high)
(7:5) FIFO_2_FIFO_THR_TX (7:5) FIFO_2_FIFO_THR_TX 0X0 Threshold indicating the 'almost empty' state
(4) FIFO_2_WAIT_TXFIFO_WR (4) FIFO_2_WAIT_TXFIFO_WR 0X0 If set to 1, the FSM will wait a Tx FIFO write before
starting the Tx in case of an empty Tx FIFO.
(3) FIFO_2_STOP_ON_RXFF_OVFLW (3) FIFO_2_STOP_ON_RXFF_OVFLW 0X0 If set to 1, stops the reception in case of a FIFO
overflow.
(2) FIFO_2_STOP_ON_TXFF_UNFLW (2) FIFO_2_STOP_ON_TXFF_UNFLW 0X0 If set to 1, stops the transmission in case of a FIFO
underflow.
(1) FIFO_2_RXFF_FLUSH_ON_START (1) FIFO_2_RXFF_FLUSH_ON_START 0X0 If set to 1, flushes the Rx FIFO when the Rx is
enabled, in order to receive a packet with an empty
FIFO.
(0) FIFO_2_TXFF_FLUSH_ON_STOP (0) FIFO_2_TXFF_FLUSH_ON_STOP 0X0 If set to 1, flushes the Tx FIFO after the end of a
packet transmission in order to have an empty FIFO.
Address Register Name Register Write Register Read Default Description
0x40010010 RF_REG04 (31:30) MAC_CONF_MAC_TIMER_GR (31:30) MAC_CONF_MAC_TIMER_GR 0X0 MAC timer granularity. The granularity is given by
(2^(2mac_timer_gr))x1us
(29) MAC_CONF_RX_MAC_ACT (29) MAC_CONF_RX_MAC_ACT 0X0 If set to 1, the FSM will switch to Rx or Tx after an Rx
mode.
(28) MAC_CONF_RX_MAC_TX_NRX (28) MAC_CONF_RX_MAC_TX_NRX 0X0 If set to 1, the FSM will switch to Tx after an Rx
mode, Rx otherwise.
(27) (27) 0X0 If set to 1, the MAC timer is activated at the reception
MAC_CONF_RX_MAC_START_NSTOP MAC_CONF_RX_MAC_START_NSTOP of the sync word, at the end of the packet otherwise.
(26) MAC_CONF_TX_MAC_ACT (26) MAC_CONF_TX_MAC_ACT 0X0 If set to 1, the FSM will switch to Rx or Tx after a Tx
mode.
(25) MAC_CONF_TX_MAC_TX_NRX (25) MAC_CONF_TX_MAC_TX_NRX 0X0 If set to 1, the FSM will switch to Tx after an Tx
mode, Rx otherwise.
(24) (24) 0X0 If set to 1, the MAC timer is activated at beginning of
MAC_CONF_TX_MAC_START_NSTOP MAC_CONF_TX_MAC_START_NSTOP the packet, otherwise at the end of the packet
transmission.
(23:20) PAD_CONF_5_PAD_9_CONF (23:20) PAD_CONF_5_PAD_9_CONF 0X0 Configuration of GPIO pad 9
(19:16) PAD_CONF_5_PAD_8_CONF (19:16) PAD_CONF_5_PAD_8_CONF 0X0 Configuration of GPIO pad 8
(15:12) PAD_CONF_4_PAD_7_CONF (15:12) PAD_CONF_4_PAD_7_CONF 0X0 Configuration of GPIO pad 7
(11:8) PAD_CONF_4_PAD_6_CONF (11:8) PAD_CONF_4_PAD_6_CONF 0X0 Configuration of GPIO pad 6
(7:4) PAD_CONF_3_PAD_5_CONF (7:4) PAD_CONF_3_PAD_5_CONF 0X0 Configuration of GPIO pad 5
469
(3:0) PAD_CONF_3_PAD_4_CONF (3:0) PAD_CONF_3_PAD_4_CONF 0X0 Configuration of GPIO pad 4
onsemi
0x40010014 RF_REG05 (30) CHANNEL_SWITCH_IQ (30) CHANNEL_SWITCH_IQ 0X0 Switch I and Q channels
(29:24) CHANNEL_CHANNEL (29:24) CHANNEL_CHANNEL 0X0 Channel number
www.onsemi.com
(18) BANK_DATARATE_TX_NRX (18) BANK_DATARATE_TX_NRX 0X0 Select the data-rate register: 0-> Rx data-rate, 1-> Tx
data-rate
RSL10 Hardware Reference
470
onsemi
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x40010020 RF_REG08 (31:24) (31:24) 0XFF The packet length in the fixed packet length mode. In
PACKET_LENGTH_PACKET_LEN PACKET_LENGTH_PACKET_LEN the variable packet length mode, it specifies the
maximal packet length defined by the standard. In
case of error a packet_len_err is raised.
(23) PACKET_HANDLING_LSB_FIRST (23) PACKET_HANDLING_LSB_FIRST 0X0 If set to 1, the LSB is the first bit to be sent, the MSB
otherwise
(22) PACKET_HANDLING_EN_CRC (22) PACKET_HANDLING_EN_CRC 0X0 If set to 1, enables the automatic CRC evaluation
and insertion
(21) (21) 0X0 If set to 1, enables the CRC calculation on the packet
PACKET_HANDLING_EN_CRC_ON_PKT PACKET_HANDLING_EN_CRC_ON_PKT length part of the packet.
LEN LEN
(20) (20) 0X0 If set to 1, enables the automatic preamble insertion
PACKET_HANDLING_EN_PREAMBLE PACKET_HANDLING_EN_PREAMBLE
(19) (19) 0X0 If set to 1, enables the multi-frame packet
PACKET_HANDLING_EN_MULTI_FRAM PACKET_HANDLING_EN_MULTI_FRAM (preamble-pattern-data-CRC-data-CRC-...)
E E
(18) (18) 0X0 Enables the data-whitening on the CRC (active low)
PACKET_HANDLING_ENB_DW_ON_CRC PACKET_HANDLING_ENB_DW_ON_CRC
(17) PACKET_HANDLING_EN_PATTERN (17) PACKET_HANDLING_EN_PATTERN 0X0 If set to 1, enables the automatic pattern insertion
and recognition
(16) PACKET_HANDLING_EN_PACKET (16) PACKET_HANDLING_EN_PACKET 0X0 If set to 1 enables the packet handler
(15) CODING_EN_DATAWHITE (15) CODING_EN_DATAWHITE 0X0 If set to 1 enables the data-whitening
471
(14) CODING_I_NQ_DELAYED (14) CODING_I_NQ_DELAYED 0X0 If set to 1, the channel I is considered 'delayed' in
onsemi
www.onsemi.com
two channels (2 bits per symbol modulation).
(12) CODING_BIT_INVERT (12) CODING_BIT_INVERT 0X0 If set to 1, it inverts the bit value (Tx and Rx)
RSL10 Hardware Reference
(11) CODING_EVEN_BEFORE_ODD (11) CODING_EVEN_BEFORE_ODD 0X0 Determines the bit order in case of a 2 bits per
symbol modulation: if set to 1 the first bit (bit 0, even)
goes to the I path
(10) CODING_EN_802154_L2F (10) CODING_EN_802154_L2F 0X0 If set to 1 enables the linear to frequency encoding
needed in order to modulate an OQPSK as an MSK.
(9) CODING_EN_802154_B2C (9) CODING_EN_802154_B2C 0X0 If set to 1 enables the bit to chips encoding used in
the IEEE 802.15.4 standard
(8) CODING_EN_MANCHESTER (8) CODING_EN_MANCHESTER 0X0 If set to 1 enables the Manchester encoding
(7) CHANNELS_2_EN_CHANNEL_SEL (7) CHANNELS_2_EN_CHANNEL_SEL 0X0 If set to 1 enables the definition of channels
(3:0) (3:0) 0X0 channel spacing: the formula that determines this
CHANNELS_2_CHANNEL_SPACING_HI CHANNELS_2_CHANNEL_SPACING_HI value is the same as for the central frequency.
v=ch_sp/144e6*2^25
Address Register Name Register Write Register Read Default Description
0x40010024 RF_REG09 (27) ADDRESS_CONF_ADDRESS_LEN (27) ADDRESS_CONF_ADDRESS_LEN 0X0 If set to 1 the address length is 16 bits, 8 otherwise.
(26) (26) 0X0 If set to 1 enables the broadcast address detection
ADDRESS_CONF_EN_ADDRESS_RX_BR ADDRESS_CONF_EN_ADDRESS_RX_BR on Rx.
(25) ADDRESS_CONF_EN_ADDRESS_RX (25) ADDRESS_CONF_EN_ADDRESS_RX 0X0 If set to 1 enables the address detection on Rx
(24) ADDRESS_CONF_EN_ADDRESS_TX (24) ADDRESS_CONF_EN_ADDRESS_TX 0X0 If set to 1 enables the address insertion on Tx
(23:16) (23:16) 0X0 Length of the preamble -1
PREAMBLE_LENGTH_PREAMBLE_LEN PREAMBLE_LENGTH_PREAMBLE_LEN
(15:8) PREAMBLE_PREAMBLE (15:8) PREAMBLE_PREAMBLE 0X0 Preamble to be inserted
(6) (6) 0X0 If set to 1, the packet length is fixed and specified in
PACKET_LENGTH_OPTS_EN_PACKET_ PACKET_LENGTH_OPTS_EN_PACKET_ the PACKET_LEN register
LEN_FIX LEN_FIX
(5:2) (5:2) 0X0 Signed value that specifies the correction to apply to
PACKET_LENGTH_OPTS_PACKET_LEN PACKET_LENGTH_OPTS_PACKET_LEN the specified packet length (due to differences
_CORR _CORR between standards). The packet length here is
specified by the byte number after the packet length
byte, with the exclusion of the CRC.
(1:0) (1:0) 0X0 Unsigned value that specifies the position of the
PACKET_LENGTH_OPTS_PACKET_LEN PACKET_LENGTH_OPTS_PACKET_LEN packet length after the pattern
_POS _POS
0x40010028 RF_REG0A (31:16) (31:16) 0X0 Broadcast address
ADDRESS_BROADCAST_ADDRESS_BR ADDRESS_BROADCAST_ADDRESS_BR
472
(15:0) ADDRESS_ADDRESS (15:0) ADDRESS_ADDRESS 0X0 Address of the node
onsemi
0x4001002C RF_SYNC_PATTERN (31:0) PATTERN (31:0) PATTERN 0X0 Pattern (sync word) to be inserted or recognized.
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x40010030 RF_REG0C (30:26) (30:26) 0X0 polynom of the third convolutional code
CONV_CODES_POLY_CC_POLY_2 CONV_CODES_POLY_CC_POLY_2
(25:21) (25:21) 0X0 polynom of the second convolutional code
CONV_CODES_POLY_CC_POLY_1 CONV_CODES_POLY_CC_POLY_1
(20:16) (20:16) 0X0 polynom of the first convolutional code
CONV_CODES_POLY_CC_POLY_0 CONV_CODES_POLY_CC_POLY_0
(11:10) (11:10) 0X0 Set the memory length of the viterbi decoder: 00 =>
CONV_CODES_CONF_CC_VITERBI_LE CONV_CODES_CONF_CC_VITERBI_LE 5, 01 => 10, 10 => 20, 11 => 30
N N
(9) (9) 0X0 if set to 1 enables the stop word at the end of the
CONV_CODES_CONF_CC_EN_TX_STOP CONV_CODES_CONF_CC_EN_TX_STOP transmission. Necessary in order to keep a stream
coherent with the convolutional coding
(8) (8) 0X0 If set to 1 enablse the convolutional codes
CONV_CODES_CONF_EN_CONV_CODE CONV_CODES_CONF_EN_CONV_CODE
(7:6) (7:6) 0X0 length of the stop word, same as the pattern word
PACKET_EXTRA_STOP_WORD_LEN PACKET_EXTRA_STOP_WORD_LEN length
(5) PACKET_EXTRA_EN_STOP_WORD (5) PACKET_EXTRA_EN_STOP_WORD 0X0 If set to 1 adds the stop word (0x00) after the CRC
(4) (4) 0X0 If set to 1 the packet information are sampled at the
PACKET_EXTRA_PKT_INFO_PRE_NPO PACKET_EXTRA_PKT_INFO_PRE_NPO end of the packet instead of the sync word detection.
ST ST
(3:2) (3:2) 0X0 unsigned value that specifies the maximum number
PACKET_EXTRA_PATTERN_MAX_ERR PACKET_EXTRA_PATTERN_MAX_ERR of errors in the pattern recognition
473
(1:0) (1:0) 0X0 Pattern word length: 00 => 8bits, 01 => 16 bits, 10 =>
onsemi
www.onsemi.com
notation, i.e. the nth bit codes the (n+1) coefficient.
Example: x^16+x^12+x^5+1 => 0x8810
0x40010038 RF_CRC_RST (31:0) CRC_RST_CRC_RST (31:0) CRC_RST_CRC_RST 0X0 CRC reset value
RSL10 Hardware Reference
474
(15:8) (15:8) 0X0
TX_PULSE_SHAPE_1_TX_COEF2 TX_PULSE_SHAPE_1_TX_COEF2
onsemi
(7:0) TX_PULSE_SHAPE_1_TX_COEF1 (7:0) TX_PULSE_SHAPE_1_TX_COEF1 0X0 These registers specify the Tx pulse shape. The
pulse shape is formed by:
www.onsemi.com
coef1-coef16-coef16-coef1. Since the oversampling
ratio is 8, the pulse shape is 4 symbols long. Every
coefficient is an 8 bits signed.
RSL10 Hardware Reference
475
0x40010058 RF_REG16 (28:25) RX_IF_RESAMPLE_PH_IF (28:25) RX_IF_RESAMPLE_PH_IF 0X0 IF value for the phase resampler.
onsemi
(24:16) RX_IF_IF2_CLK_OS (24:16) RX_IF_IF2_CLK_OS 0X0 IF value for the carrier recovery
(15:8) (15:8) 0X0 FSK amplitude 1 (lowest): in FSK w/o ISI is used to
www.onsemi.com
FSK_FCR_AMP_1_FSK_FCR_AMP1 FSK_FCR_AMP_1_FSK_FCR_AMP1 specify the expected amplitude. In 4FSK is the
lowest amplitude (+/-1). in FSK w/ ISI it specify the
lowest amplitude (generally it corresponds to a
sequence 0-1-0.
RSL10 Hardware Reference
(7:6) FILTER_GAIN_DR_LIMIT (7:6) FILTER_GAIN_DR_LIMIT 0X0 Set the data-rate recovery limits: 00 => 0%, 01 =>
3.125 %, 10 => 6.25 %, 11 => 12.5%
(5:3) FILTER_GAIN_FILTER_GAIN_M (5:3) FILTER_GAIN_FILTER_GAIN_M 0X0 Mantissa of the final stage gain of the matched filter
(2:0) FILTER_GAIN_FILTER_GAIN_E (2:0) FILTER_GAIN_FILTER_GAIN_E 0X0 Exponent of the final stage gain of the matched filter
Address Register Name Register Write Register Read Default Description
0x4001005C RF_REG17 (31:24) (31:24) 0X0 FSK amplitude 3 (highest): in 4FSK is the high
FSK_FCR_AMP_3_FSK_FCR_AMP3 FSK_FCR_AMP_3_FSK_FCR_AMP3 amplitude (+/-3). in FSK w/ ISI it specify the highet
amplitude (generally it corresponds to a sequence
1-1-1.
(23:16) (23:16) 0X0 FSK amplitude 2 (mid): in 4FSK is the threshold. in
FSK_FCR_AMP_2_FSK_FCR_AMP2 FSK_FCR_AMP_2_FSK_FCR_AMP2 FSK w/ ISI it specify the mid amplitude (generally it
corresponds to a sequence 0-1-1 or 1-1-0.
(14:13) (14:13) 0X0 Set the maximum errors in the delay line sync
CARRIER_RECOVERY_EXTRA_MAX_ER CARRIER_RECOVERY_EXTRA_MAX_ER detection
R_IN_DL_SYNC R_IN_DL_SYNC
(12) (12) 0X0 If set to 1 uses the pattern_ok signal in delay line to
CARRIER_RECOVERY_EXTRA_EN_SYN CARRIER_RECOVERY_EXTRA_EN_SYN synchronize the deserializer
C_OK_DELAY_LINE C_OK_DELAY_LINE
(11:9) (11:9) 0X0 Select the output position for the 'not-causal
CARRIER_RECOVERY_EXTRA_NC_SEL CARRIER_RECOVERY_EXTRA_NC_SEL processing': 000 => 4 symbol, 001 => 6 symbols,
_OUT _OUT 010 => 8 symbols, 011 => 12 symbols, 100 => 16
symbols, 101 => 24 symbols, 110 => 32 symbols,
111 => 40 symbols
(8) (8) 0X0 if set to 1 enables the not causal processing
CARRIER_RECOVERY_EXTRA_EN_NOT CARRIER_RECOVERY_EXTRA_EN_NOT
_CAUSAL _CAUSAL
(6:4) (6:4) 0X0 Mantissa of the carrier recovery frequency limit
CARRIER_RECOVERY_EXTRA_FREQ_L CARRIER_RECOVERY_EXTRA_FREQ_L (unsigned).
IMIT_MAN IMIT_MAN
476
onsemi
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x40010060 RF_REG18 (31:16) (31:16) 0X0 Unsigned value that specifies the IF for the Rx mode.
CORRECT_CFREQ_IF_CORRECT_CFRE CORRECT_CFREQ_IF_CORRECT_CFRE
Q_IF Q_IF
(15:14) (15:14) 0X0 Speed on the RSSI triangular dithering signal (cf reg
RSSI_BANK_RSSI_TRI_CK_DIV RSSI_BANK_RSSI_TRI_CK_DIV RSSI_TUN)
(13) RSSI_BANK_FAST_RSSI (13) RSSI_BANK_FAST_RSSI 0X0 If set to 1, the RSSI filtering is 8x faster
(12) RSSI_BANK_EN_FAST_PRE_SYNC (12) RSSI_BANK_EN_FAST_PRE_SYNC 0X0 If the packet mode is set, indicates to switch the fast
modes during the preamble reception
(11:8) (11:8) 0X0 Time constant of the RSSI filtering block: 0:
RSSI_BANK_TAU_RSSI_FILTERING RSSI_BANK_TAU_RSSI_FILTERING 4symbols, 1: 8symbols, 2: 16 symbols, 3:
32symbols, 4: 64symbols, 5: 128symbols, 6:
256symbols, 7: 512symbols, 8: 1024symbols
(4) DECISION_USE_VIT_SOFT (4) DECISION_USE_VIT_SOFT 0X0 If set to 1 uses the viterbi soft decoding
(3:2) DECISION_VITERBI_LEN (3:2) DECISION_VITERBI_LEN 0X0 Sets the Viterbi path length: 00: 1 bit, 01: 2 bits, 10: 4
bits, 11: 8 bits
(1) DECISION_VITERBI_POW_NLIN (1) DECISION_VITERBI_POW_NLIN 0X0 if set to 1, the Viterbi algorithm uses power instead of
amplitude to evaluate the error on the path
(0) DECISION_EN_VITERBI_GFSK (0) DECISION_EN_VITERBI_GFSK 0X0 If set to 1 enables the Viterbi algorithm for the GFSK
decoding; this will override the old ISI correction
algorithm.
0x40010064 RF_REG19 (29:28) (29:28) 0X0 Same as pll_filter_res_trim but for Tx case. Real
PLL_BANK_PLL_FILTER_RES_TRIM_ PLL_BANK_PLL_FILTER_RES_TRIM_ value in Tx is pll_filter_res_trim xor
477
TX TX pll_filter_res_trim_tx. If set to 0, Tx and Rx have the
onsemi
same value.
(27:24) PLL_BANK_IQ_PLL_0_TX (27:24) PLL_BANK_IQ_PLL_0_TX 0X0 Charge pump bias for Tx case. Real value in Tx is
www.onsemi.com
iq_pll_0 xor iq_pll_0_tx. If set to 0, Tx and Rx have
the same value.
(22) PLL_BANK_LOW_DR_TX (22) PLL_BANK_LOW_DR_TX 0X0 If set to 1 the Tx will work in low data-rate mode
RSL10 Hardware Reference
(21:20) (21:20) 0X0 Allow to modify the value of the loop filter resistor R2
PLL_BANK_PLL_FILTER_RES_TRIM PLL_BANK_PLL_FILTER_RES_TRIM when bit 5 is high (TX mode): 00 => normal resistor
(R_2_typ), 01 => 123%, 10 => 130% 11 => 170%
(19:16) PLL_BANK_IQ_PLL_0 (19:16) PLL_BANK_IQ_PLL_0 0X0 Charge pump bias
(13) PA_PWR_MIN_PA_PWR (13) PA_PWR_MIN_PA_PWR 0X0 Sets the minimum power during the PA ramp-up: if 0
the ramp-up starts at -3, if 1 the ramp-up starts at -1
(12:8) PA_PWR_PA_PWR (12:8) PA_PWR_PA_PWR 0X0 Signed value that sets the PA power: minimum value
is -3 (-40dBm), max value is 12 (3.3dBm).
(7:4) CLK_CH_FILTER_DIV_RSSI (7:4) CLK_CH_FILTER_DIV_RSSI 0X0 Unsigned value that specifies the division factor for
the clock controlling the RSSI.
(3:0) CLK_CH_FILTER_DIV_FILT (3:0) CLK_CH_FILTER_DIV_FILT 0X0 Unsigned value that specifies the division factor for
the clock controlling the channel filter.
Address Register Name Register Write Register Read Default Description
0x40010068 RF_REG1A (31:28) ATT_CTRL_ATT_CTRL_MAX (31:28) ATT_CTRL_ATT_CTRL_MAX 0X0 Maximum attenuation level in AGC algorithm
(27:24) (27:24) 0X0 Attuenuation level if the AGC is bypassed
ATT_CTRL_SET_RX_ATT_CTRL ATT_CTRL_SET_RX_ATT_CTRL
(23:22) RSSI_CTRL_AGC_DECAY_TAU (23:22) RSSI_CTRL_AGC_DECAY_TAU 0X0 Time constant of the decay speed; high values
corresponds to a slow decay
(21) RSSI_CTRL_AGC_USE_LNA (21) RSSI_CTRL_AGC_USE_LNA 0X0 If set to 1 the AGC algorithm uses the LNA bias.
(20) RSSI_CTRL_AGC_MODE (20) RSSI_CTRL_AGC_MODE 0X0 Select the AGC algorithm: 0 -> old algorithm, 1 ->
new algorithm
(19:18) RSSI_CTRL_AGC_WAIT (19:18) RSSI_CTRL_AGC_WAIT 0X0 Sets the wait time of the AGC after switching
between states: 00 => don't wait, 01 => wait 1x RSSI
filtering period, 10 => wait 2x RSSI filtering period, 11
=> wait 3x RSSI filtering period
(17) (17) 0X0 If set to 1, the AGC is blocked during the payload
RSSI_CTRL_PAYLOAD_BLOCKS_AGC RSSI_CTRL_PAYLOAD_BLOCKS_AGC
(16) RSSI_CTRL_BYPASS_AGC (16) RSSI_CTRL_BYPASS_AGC 0X0 If set to 1, the AGC algorithm is bypassed
(12:8) FILTER_BIAS_IQ_FI_BW (12:8) FILTER_BIAS_IQ_FI_BW 0X0 Bias for the bandwidth of the channel filter
(4:0) FILTER_BIAS_IQ_FI_FC (4:0) FILTER_BIAS_IQ_FI_FC 0X0 Bias for the central frequency of the channel filter
0x4001006C RF_REG1B (31) IEEE802154_OPTS_EN_DW_TEST (31) IEEE802154_OPTS_EN_DW_TEST 0X0 If set to 1 enables the Tx data-whitening before the
convolutional code block
(30:29) (30:29) 0X0 sets the clock output mode for BER mode or RW
IEEE802154_OPTS_BER_CLK_MODE IEEE802154_OPTS_BER_CLK_MODE mode: 00 => data change on falling edge, 01 => data
478
change on rising edge, 10 => clock signal is a
onsemi
www.onsemi.com
(28) (28) 0X0 If set to 1, the signal rx_data in testmodes is not
IEEE802154_OPTS_RX_DATA_NOT_S IEEE802154_OPTS_RX_DATA_NOT_S sampled. Used for debug purposes
AMPLED AMPLED
RSL10 Hardware Reference
(27) IEEE802154_OPTS_EN_L2F_RX (27) IEEE802154_OPTS_EN_L2F_RX 0X0 if set to 1 enables the frequency to linear conversion
in the Rx side (always controlled by the
en_802154_l2f configuration bit).
(26:24) IEEE802154_OPTS_C2B_THR (26:24) IEEE802154_OPTS_C2B_THR 0X0 Threshold of the chip2bit correlator of the IEEE
802.15.4 protocol.
(23:20) (23:20) 0X0 Time constant of the peak detector monostable
AGC_PEAK_DET_PEAK_DET_TAU AGC_PEAK_DET_PEAK_DET_TAU circuit; if set to 0 the monostable is bypassed
(19:18) (19:18) 0X0 Threshold for the low level of the peak detector: 0 =>
AGC_PEAK_DET_PEAK_DET_THR_LOW AGC_PEAK_DET_PEAK_DET_THR_LOW 0, 1 => 1, 2 => 2, 3 => N.A.
(17) (17) 0X0 Threshold for the high level of the peak detector: 0
AGC_PEAK_DET_PEAK_DET_THR_HIG AGC_PEAK_DET_PEAK_DET_THR_HIG => 2, 1 => 3
H H
(16) AGC_PEAK_DET_EN_AGC_PEAK (16) AGC_PEAK_DET_EN_AGC_PEAK 0X0 If set to 1 enables the AGC peak detector
(15:8) (15:8) 0X0 AGC threshold high level
AGC_THR_HIGH_AGC_THR_HIGH AGC_THR_HIGH_AGC_THR_HIGH
(7:0) AGC_THR_LOW_AGC_THR_LOW (7:0) AGC_THR_LOW_AGC_THR_LOW 0X0 AGC threshold low level
Address Register Name Register Write Register Read Default Description
0x40010070 RF_AGC_LUT1 (31:22) (31:22) 0X0 Look up table with the AGC values: agc_level_0 is
AGC_LUT_1_AGC_LEVEL_2_LO AGC_LUT_1_AGC_LEVEL_2_LO supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
(21:11) AGC_LUT_1_AGC_LEVEL_1 (21:11) AGC_LUT_1_AGC_LEVEL_1 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
(10:0) AGC_LUT_1_AGC_LEVEL_0 (10:0) AGC_LUT_1_AGC_LEVEL_0 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
0x40010074 RF_AGC_LUT2 (31:23) (31:23) 0X0 Look up table with the AGC values: agc_level_0 is
AGC_LUT_2_AGC_LEVEL_5_LO AGC_LUT_2_AGC_LEVEL_5_LO supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
(22:12) AGC_LUT_2_AGC_LEVEL_4 (22:12) AGC_LUT_2_AGC_LEVEL_4 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
(11:1) AGC_LUT_2_AGC_LEVEL_3 (11:1) AGC_LUT_2_AGC_LEVEL_3 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
(0) AGC_LUT_2_AGC_LEVEL_2_HI (0) AGC_LUT_2_AGC_LEVEL_2_HI 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
0x40010078 RF_AGC_LUT3 (31:24) (31:24) 0X0 Look up table with the AGC values: agc_level_0 is
AGC_LUT_3_AGC_LEVEL_8_LO AGC_LUT_3_AGC_LEVEL_8_LO supposed the lowest attenuation, while agc_level_11
479
is the one with a maximum of attenuation.
onsemi
(23:13) AGC_LUT_3_AGC_LEVEL_7 (23:13) AGC_LUT_3_AGC_LEVEL_7 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
www.onsemi.com
(12:2) AGC_LUT_3_AGC_LEVEL_6 (12:2) AGC_LUT_3_AGC_LEVEL_6 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
RSL10 Hardware Reference
(1:0) AGC_LUT_3_AGC_LEVEL_5_HI (1:0) AGC_LUT_3_AGC_LEVEL_5_HI 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
0x4001007C RF_AGC_LUT4 (31:25) (31:25) 0X0 Look up table with the AGC values: agc_level_0 is
AGC_LUT_4_AGC_LEVEL_11_LO AGC_LUT_4_AGC_LEVEL_11_LO supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
(24:14) AGC_LUT_4_AGC_LEVEL_10 (24:14) AGC_LUT_4_AGC_LEVEL_10 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
(13:3) AGC_LUT_4_AGC_LEVEL_9 (13:3) AGC_LUT_4_AGC_LEVEL_9 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
(2:0) AGC_LUT_4_AGC_LEVEL_8_HI (2:0) AGC_LUT_4_AGC_LEVEL_8_HI 0X0 Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
Address Register Name Register Write Register Read Default Description
0x40010080 RF_REG20 (31:28) TIMINGS_3_T_DLL (31:28) TIMINGS_3_T_DLL 0X0 Time needed by the DLL blocks to switch on.
(27:24) TIMINGS_3_T_PLL_TX (27:24) TIMINGS_3_T_PLL_TX 0X1 Time needed by the PLL blocks in Tx mode to switch
on.
(23:20) TIMINGS_2_T_SUBBAND_TX (23:20) TIMINGS_2_T_SUBBAND_TX 0XF Time needed by the subband algorithm to calibrate in
Tx.
(19:16) TIMINGS_2_T_TX_RF (19:16) TIMINGS_2_T_TX_RF 0XFF Time needed by the Tx RF blocks to switch on.
(14:12) (14:12) 0X0 Fixes the granularity of the timer in Tx mode. The
TIMINGS_1_T_GRANULARITY_TX TIMINGS_1_T_GRANULARITY_TX granularity is given by (2^(t_granularity-2))x1us
(10:8) (10:8) 0X1 Fixes the granularity of the timer in Rx mode. The
TIMINGS_1_T_GRANULARITY_RX TIMINGS_1_T_GRANULARITY_RX granularity is given by (2^(t_granularity))x1us
(3:0) AGC_LUT_5_AGC_LEVEL_11_HI (3:0) AGC_LUT_5_AGC_LEVEL_11_HI 0XF Look up table with the AGC values: agc_level_0 is
supposed the lowest attenuation, while agc_level_11
is the one with a maximum of attenuation.
0x40010084 RF_AGC_ATT1 (31:30) AGC_ATT_1_AGC_ATT_AB_LO (31:30) AGC_ATT_1_AGC_ATT_AB_LO 0X3
(29:27) AGC_ATT_1_AGC_ATT_9A (29:27) AGC_ATT_1_AGC_ATT_9A 0X3
(26:24) AGC_ATT_1_AGC_ATT_89 (26:24) AGC_ATT_1_AGC_ATT_89 0X3
(23:21) AGC_ATT_1_AGC_ATT_78 (23:21) AGC_ATT_1_AGC_ATT_78 0X3
(20:18) AGC_ATT_1_AGC_ATT_67 (20:18) AGC_ATT_1_AGC_ATT_67 0X3
(17:15) AGC_ATT_1_AGC_ATT_56 (17:15) AGC_ATT_1_AGC_ATT_56 0X3
480
(14:12) AGC_ATT_1_AGC_ATT_45 (14:12) AGC_ATT_1_AGC_ATT_45 0X3
onsemi
www.onsemi.com
(5:3) AGC_ATT_1_AGC_ATT_12 (5:3) AGC_ATT_1_AGC_ATT_12 0X3
(2:0) AGC_ATT_1_AGC_ATT_01 (2:0) AGC_ATT_1_AGC_ATT_01 0X3 These fields specify the attenuation levels
RSL10 Hardware Reference
0x40010088 RF_REG22 (29) (29) 0X0 If set to 1 enables filter Tx configuration for the fast
TIMING_FAST_RX_EN_FAST_RX_TXF TIMING_FAST_RX_EN_FAST_RX_TXF Rx PLL
ILT ILT
(28) TIMING_FAST_RX_EN_FAST_RX (28) TIMING_FAST_RX_EN_FAST_RX 0X0 If set to 1 enables the fast Rx PLL
(27:24) (27:24) 0X0 Time to switch off the fast CHP in Rx mode
TIMING_FAST_RX_T_RX_FAST_CHP TIMING_FAST_RX_T_RX_FAST_CHP
(23:20) TIMINGS_5_T_RX_RF (23:20) TIMINGS_5_T_RX_RF 0X0 Time needed by the Rx RF blocks to switch on.
(19:16) TIMINGS_5_T_RX_BB (19:16) TIMINGS_5_T_RX_BB 0X0 Time needed by the Rx BB blocks to switch on.
(15:12) TIMINGS_4_T_SUBBAND_RX (15:12) TIMINGS_4_T_SUBBAND_RX 0X0 Time needed by the subband algorithm to calibrate in
Rx
(11:8) TIMINGS_4_T_PLL_RX (11:8) TIMINGS_4_T_PLL_RX 0X0 Time needed by the PLL blocks in Rx mode to switch
on.
(1) AGC_ATT_2_AGC_ATT_1DB (1) AGC_ATT_2_AGC_ATT_1DB 0X0 If set to 1 the attenuation are specified by 1dB steps
from 4dB to 11dB
(0) AGC_ATT_2_AGC_ATT_AB_HI (0) AGC_ATT_2_AGC_ATT_AB_HI 0X0
Address Register Name Register Write Register Read Default Description
0x4001008C RF_REG23 (31:28) BIAS_1_IQ_RXTX_3 (31:28) BIAS_1_IQ_RXTX_3 0X0 PrePA Casc bias
(27:24) BIAS_1_IQ_RXTX_2 (27:24) BIAS_1_IQ_RXTX_2 0X0 PrePA In bias
(23:20) BIAS_0_IQ_RXTX_1 (23:20) BIAS_0_IQ_RXTX_1 0X0 PA backoff bias
(19:16) BIAS_0_IQ_RXTX_0 (19:16) BIAS_0_IQ_RXTX_0 0X0 PA bias
(14:12) (14:12) 0X0 Select the number of wait states during the APB
INTERFACE_CONF_APB_WAIT_STATE INTERFACE_CONF_APB_WAIT_STATE transaction
(9:8) INTERFACE_CONF_SPI_SELECT (9:8) INTERFACE_CONF_SPI_SELECT 0X0 Select the spi mode: 00 legacy spi, 01 advanced spi,
10 BLIM4SME spi
(7) TIMEOUT_EN_RX_TIMEOUT (7) TIMEOUT_EN_RX_TIMEOUT 0X0 If set to 1 enables the timeout of the Rx when the
system is on FSM mode
(6:4) TIMEOUT_T_TIMEOUT_GR (6:4) TIMEOUT_T_TIMEOUT_GR 0X0 Granularity of the timer in timeout Rx mode
(3:0) TIMEOUT_T_RX_TIMEOUT (3:0) TIMEOUT_T_RX_TIMEOUT 0X0 Time that has to occur before the timeout.
0x40010090 RF_REG24 (31:28) BIAS_5_IQ_PLL_4_RX (31:28) BIAS_5_IQ_PLL_4_RX 0X0 VCO bias for Rx
(27:24) BIAS_5_IQ_PLL_4_TX (27:24) BIAS_5_IQ_PLL_4_TX 0X0 VCO bias for Tx
(23:20) BIAS_4_IQ_PLL_2 (23:20) BIAS_4_IQ_PLL_2 0X0 Sub-band comparator bias
(19:16) BIAS_4_IQ_PLL_1 (19:16) BIAS_4_IQ_PLL_1 0X0 Dynamic divider bias
(15:12) BIAS_3_IQ_RXTX_8 (15:12) BIAS_3_IQ_RXTX_8 0X0 IFA ctrl_c bias
(11:8) BIAS_3_IQ_RXTX_7 (11:8) BIAS_3_IQ_RXTX_7 0X0 IFA ctrl_r bias
481
(7:4) BIAS_2_IQ_RXTX_6 (7:4) BIAS_2_IQ_RXTX_6 0X0 VCOM_MX bias
onsemi
www.onsemi.com
(27:24) BIAS_9_IQ_BB_5 (27:24) BIAS_9_IQ_BB_5 0X0 Peak detector bias
(23:20) BIAS_8_IQ_BB_4 (23:20) BIAS_8_IQ_BB_4 0X0 RSSI_D bias
RSL10 Hardware Reference
482
(11:7) BIAS_EN_1_EN_BIAS_PLL (11:7) BIAS_EN_1_EN_BIAS_PLL 0X0 Bias enable for PLL (same order as biases)
onsemi
(6:0) BIAS_EN_1_EN_BIAS_RXTX (6:0) BIAS_EN_1_EN_BIAS_RXTX 0X0 Bias enable for RxTx (same order as biases)
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x400100A0 RF_REG28 (31) CTRL_RX_SWITCH_LP (31) CTRL_RX_SWITCH_LP 0X0 If set to 1 switch the low-pass filter in the Rx chain
(30) CTRL_RX_USE_PEAK_DETECTOR (30) CTRL_RX_USE_PEAK_DETECTOR 0X0 If set to 1, the peak detector is powered on during the
Rx by the FSM
(29) CTRL_RX_START_MIX_ON_CAL (29) CTRL_RX_START_MIX_ON_CAL 0X0 If set to 1, the mixer is enabled during the sub-band
selection phase
(28:24) CTRL_RX_CTRL_RX (28:24) CTRL_RX_CTRL_RX 0X0 bits(1:0) => resonance 1 LNA, bits(3:2) =>
resonance 2 LNA, bit(4) => IFA PTAT-R only
(23:20) SWCAP_FSM_SB_CAP_RX (23:20) SWCAP_FSM_SB_CAP_RX 0X0 VCO subband selection (Rx in FSM mode)
(19:16) SWCAP_FSM_SB_CAP_TX (19:16) SWCAP_FSM_SB_CAP_TX 0X0 VCO subband selection (Tx in FSM mode)
(10) DLL_CTRL_CK_LAST_SEL_DELAY (10) DLL_CTRL_CK_LAST_SEL_DELAY 0X0
(9) DLL_CTRL_CK_FIRST_SEL_DELAY (9) DLL_CTRL_CK_FIRST_SEL_DELAY 0X0
(8) DLL_CTRL_CK_EXT_SEL (8) DLL_CTRL_CK_EXT_SEL 0X0 Low: input clock comes from ck_xtal pin (default).
High: input clock comes from ck_ext pin
(7) DLL_CTRL_CK_DIG_EN (7) DLL_CTRL_CK_DIG_EN 0X0 Debug: enable to use the alternate ck_dig pin to
output the PLL reference clock signal
(6) DLL_CTRL_CK_TEST_EN (6) DLL_CTRL_CK_TEST_EN 0X0 Debug: enable to output on GPIO the PLL reference
clock signal via ck_test pin
(5) DLL_CTRL_TOO_FAST_ENB (5) DLL_CTRL_TOO_FAST_ENB 0X0 When low, enable auxiliary wide lock range phase
detector when fast mode locking is enabled
(fast_enb = 0). When high, only the narrow lock
range phase detector is enabled and bit 2 (fast_enb)
483
must be high to avoid false frequency lock (slow
onsemi
mode locking)
(4) DLL_CTRL_LOCKED_DET_EN (4) DLL_CTRL_LOCKED_DET_EN 0X0 Enable reference frequency multiplier locked
www.onsemi.com
detector. When this signal is high, the dll_locked
output goes high when the output multiplied clock is
nearly about three times the frequency of the input
clock.
RSL10 Hardware Reference
(3) (3) 0X0 If for some reason the reference frequency multiplier
DLL_CTRL_LOCKED_AUTO_CHECK_EN DLL_CTRL_LOCKED_AUTO_CHECK_EN is out of lock (usually because some input clocks
from ck_xtal or ck_ext are missing) and this signal is
high, the frequency multiplier will try to lock again
automatically. Otherwise, a manual reset should be
performed via dll_rstb input(see Table 3) to relock the
frequency multiplier. This mode only works if bit 4 is
also high (locked detector enabled, see below)
(2) DLL_CTRL_FAST_ENB (2) DLL_CTRL_FAST_ENB 0X0 Enable, when low, fast mode locking of the reference
frequency multiplier (default). Bit 5 must also be set
low in this mode of operation (see below)
(1:0) DLL_CTRL_CK_SEL (1:0) DLL_CTRL_CK_SEL 0X2 Selection of the clock used as frequency reference of
the PLL (also to ck_test and ck_dig outputs): 00 =>
ref = ck_xtal ot ck_ext (if bit 8 is high), 01 => ref =
same as ck_sel = 00 if dll_en = 0, otherwise
frequency(ref) = 3x frequency(ck_xtal) or 3x
frequency(ck_ext) (if bit 8 is high), 10 => ref = same
as ck_sel = 01 but output frequency divided by 2
(used in normal RX mode when dll_en = 0), 11 => ref
= same as ck_sel = 01 but output frequency divided
by 5 (used for RX mode with external signal at 132
MHz when dll_en = 0)
Address Register Name Register Write Register Read Default Description
0x400100A4 RF_PLL_CTRL (31:24) XTAL_TRIM_XTAL_TRIM (31:24) XTAL_TRIM_XTAL_TRIM 0X80 trimming of the xtal: 5MSB thermometric, 3LSB
direct
(20) PLL_CTRL_2_PLL_RX_48MEG (20) PLL_CTRL_2_PLL_RX_48MEG 0X0 If set to 1 the PLL is set to 48MHz in Rx instead of
24MHz (need also to change ck_sel)
(19) (19) 0X0 If set to 1, in case of swcap_fsm=1, the register for
PLL_CTRL_2_SWCAP_TX_SAME_RX PLL_CTRL_2_SWCAP_TX_SAME_RX Rx and Tx swcap is the same
(18) PLL_CTRL_2_SWCAP_FSM (18) PLL_CTRL_2_SWCAP_FSM 0X0 If set to 1 use the swcap_fsm register as reference
for the sub-band selection
(17) PLL_CTRL_2_DLL_RSTB (17) PLL_CTRL_2_DLL_RSTB 0X0 Reset signal of the DLL (active low)
(16) (16) 0X0 VCO sub-band selection bits
PLL_CTRL_2_VCO_SUBBAND_TRIM_H PLL_CTRL_2_VCO_SUBBAND_TRIM_H
I I
(15:13) (15:13) 0X0 VCO sub-band selection bits
PLL_CTRL_1_VCO_SUBBAND_TRIM_L PLL_CTRL_1_VCO_SUBBAND_TRIM_L
O O
(12) PLL_CTRL_1_SUB_SEL_OFFS_EN (12) PLL_CTRL_1_SUB_SEL_OFFS_EN 0X0 Add offset to sub-band selection comparator
(11) (11) 0X0 Debug: VCO signal divided by the programmable
PLL_CTRL_1_DIV2_CLKVCO_TEST_E PLL_CTRL_1_DIV2_CLKVCO_TEST_E divider is divided by a: 0 => division ratio set to 1, 1
N N => division ratio set to 2; before to be outputted to
ck_div_test
(10) (10) 0X0 Debug: enable to output on GPIO the VCO signal
PLL_CTRL_1_VCODIV_CLK_TEST_EN PLL_CTRL_1_VCODIV_CLK_TEST_EN divided by the programmable divider
484
(9) PLL_CTRL_1_EN_LOW_CHP_BIAS (9) PLL_CTRL_1_EN_LOW_CHP_BIAS 0X0 When high, allow to decrease half time the bias
onsemi
www.onsemi.com
(8) PLL_CTRL_1_CHP_DEAD_ZONE_EN (8) PLL_CTRL_1_CHP_DEAD_ZONE_EN 0X0 Debug: enable charge-pump dead zone (degraded
PLL characteristics for test)
(7:6) (7:6) 0X0 Debug: charge-pump offset current values selection
RSL10 Hardware Reference
PLL_CTRL_1_CHP_CURR_OFFSET_TR PLL_CTRL_1_CHP_CURR_OFFSET_TR bits (see bit 6 to enable this mode): 00 => d_phi = 15,
IM IM 01 => d_phi=22.5, 10 => d_phi = 30, 11 => d_phi =
60. Also sets the bias current of the common mode
control block of the charge-pump. Must be sets to 01
to ensure a proper operation of the VCO tuning
voltage comparator for sub-band selection, if used
(5) (5) 0X0 Enable the PLL filter high bandwidth needed in TX
PLL_CTRL_1_HIGH_BW_FILTER_EN PLL_CTRL_1_HIGH_BW_FILTER_EN (must be high together with bit 4 in TX, low in RX)
(4) PLL_CTRL_1_FAST_CHP_EN (4) PLL_CTRL_1_FAST_CHP_EN 0X0 Enable the high current output of the charge-pump
for PLL TX high bandwidth mode (must be high
together with bit 5 in TX, low in RX)
(3:2) PLL_CTRL_1_CHP_MODE_TRIM (3:2) PLL_CTRL_1_CHP_MODE_TRIM 0X0 Charge-pump active if 00 else this allow to open the
PLL and force the VCO tune voltage to reach: 01 =>
minimum frequency inside sub-band selection, 10 =>
medium frequency inside sub-band selection, 11 =>
maximum frequency inside sub-band selection.
(1) PLL_CTRL_1_CHP_CMC_EN (1) PLL_CTRL_1_CHP_CMC_EN 0X0 Enable the common mode control block of the
charge-pump. Must be high to ensure proper
operation of the VCO tuning voltage comparator for
sub-band selection, if used
Address Register Name Register Write Register Read Default Description
0x400100A8 RF_REG2A (28) ENABLES_SEPARATE_PPA_CASC (28) ENABLES_SEPARATE_PPA_CASC 0X0 If set to 1, the en PPA cascode bit is independent
from the en PA
(27:22) ENABLES_EN_RXTX (27:22) ENABLES_EN_RXTX 0X0 Enable signals: 0 => LNA, 1 => LNA, 2 => IFA, 3 =>
Tx, 4 => PA, 5 => PPA casc
(21:16) ENABLES_EN_BB (21:16) ENABLES_EN_BB 0X0 Enable signals for the BB: 0 => Filter, 1 => Filter
central frequency bias, 2 => Filter bandwidth bias, 3
=> ADC, 4 => RSSI, 5 => peak detector
(15:13) RSSI_TUN_RSSI_TUN_GAIN (15:13) RSSI_TUN_RSSI_TUN_GAIN 0X3 RSSI tuning for gain
(12:8) RSSI_TUN_RSSI_ODD_OFFSET (12:8) RSSI_TUN_RSSI_ODD_OFFSET 0X0 RSSI tuning for odd stages: offset to the even
triangular wave
(7:4) RSSI_TUN_RSSI_EVEN_MAX (7:4) RSSI_TUN_RSSI_EVEN_MAX 0X7 RSSI tuning for even stages: maximum value of the
triangular wave. If max = min, static signal.
(3:0) RSSI_TUN_RSSI_EVEN_MIN (3:0) RSSI_TUN_RSSI_EVEN_MIN 0X7 RSSI tuning for even stages: minimum value of the
triangular wave
485
onsemi
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x400100AC RF_XTAL_CTRL (31:28) XTAL_CTRL_XO_THR_HIGH (31:28) XTAL_CTRL_XO_THR_HIGH 0XC High threshold for xtal trimming
(27:24) XTAL_CTRL_XO_THR_LOW (27:24) XTAL_CTRL_XO_THR_LOW 0X3 Low threshold for xtal trimming
(23:22) (23:22) 0X2 Value of after_startup_curr_sel when level is higher
XTAL_CTRL_XO_A_S_CURR_SEL_HIG XTAL_CTRL_XO_A_S_CURR_SEL_HIG than xo_thr_high
H H
(21:20) (21:20) 0X0 Value of after_startup_curr_sel when level is lower
XTAL_CTRL_XO_A_S_CURR_SEL_LOW XTAL_CTRL_XO_A_S_CURR_SEL_LOW than xo_thr_low
(18) XTAL_CTRL_XTAL_CTRL_BYPASS (18) XTAL_CTRL_XTAL_CTRL_BYPASS 0X0 Bypass the Xtal control algorithm
(17) XTAL_CTRL_DIG_CLK_IN_SEL (17) XTAL_CTRL_DIG_CLK_IN_SEL 0X0 If set to 1 selects the clk_in_dig signal for the digital
block, otherwise the internal xtal
(16) XTAL_CTRL_XO_EN_B_REG (16) XTAL_CTRL_XO_EN_B_REG 0X1 Xtal oscillator enable (active low)
(15:14) XTAL_CTRL_XTAL_CKDIV (15:14) XTAL_CTRL_XTAL_CKDIV 0X0 Xtal trimming speed: 00 => 43us, 01 => 85us, 10 =>
171us, 11 => 341us
(13) XTAL_CTRL_CLK_OUT_EN_B (13) XTAL_CTRL_CLK_OUT_EN_B 0X0 When high, disable the output clock to go to main IP
(clk_out output stay low).
(12) XTAL_CTRL_REG_VALUE_SEL (12) XTAL_CTRL_REG_VALUE_SEL 0X0 When low, all main ctrl signals are used instead of
corresponding ctrl signal or some control bits of
xtal_reg. They are: xo_en_b, ext_clk_mode and
lp_mode. When high, corresponding ctrl signal and
some control bits of xtal_reg are used instead of
main ctrl signals. They are: xo_en_b_reg,
ext_clk_mode (bit 0) and lp_mode (bit 1).
486
(11:10) (11:10) 0X1 Selection of the current before amplitude stabilization
onsemi
www.onsemi.com
typ. 0.40 mA, '11': typ. 0.61 mA
(9:8) (9:8) 0X1 Selection of the starting-up current in active
XTAL_CTRL_STARTUP_CURR_SEL XTAL_CTRL_STARTUP_CURR_SEL transistors of the core oscillator: '00': typ. 0.41 mA,
'01': typ. 0.59 mA, '10': typ. 0.88 mA, '11': typ. 1.24
RSL10 Hardware Reference
mA
(7) XTAL_CTRL_INV_CLK_DIG (7) XTAL_CTRL_INV_CLK_DIG 0X0 Invert clock on clk_dig output
(6) XTAL_CTRL_INV_CLK_PLL (6) XTAL_CTRL_INV_CLK_PLL 0X0 Invert clock on clk_pll output
(5) XTAL_CTRL_FORCE_CLK_READY (5) XTAL_CTRL_FORCE_CLK_READY 0X0 Debug: allow to force output clocks on clk_pll,
clk_dig and clk_out (if these outputs are enabled)
and bypass the xtal internal clock detector that gates
these clock outputs.
(4) XTAL_CTRL_CLK_DIG_EN_B (4) XTAL_CTRL_CLK_DIG_EN_B 0X0 When high, disable the output clock to go to digital
(clk_dig output stay low).
(3) XTAL_CTRL_BUFF_EN_B (3) XTAL_CTRL_BUFF_EN_B 0X0 When low (and if xtal_en_b(_reg) is low), the xtal
buffer is enabled otherwise it is disabled. Could be
used to decrease the power consumption of the xtal
while maintaining oscillation in the xtal oscillator
(2) XTAL_CTRL_HP_MODE (2) XTAL_CTRL_HP_MODE 0X0 When high, bias current in the clock buffer is
increased compared to normal operation (high
bandwidth mode in 132 MHz clock input buffer).
(1) XTAL_CTRL_LP_MODE (1) XTAL_CTRL_LP_MODE 0X0 When high, bias current in the clock buffer is reduced
compared to normal operation (low power mode).
Usable only if bit 12 is high (see below) otherwise it
is bypassed by lp_mode pin input on main interface
Address Register Name Register Write Register Read Default Description
0x400100B0 RF_REG2C (31:24) (31:24) 0X0 Offset to add in frequency count in order to
SUBBAND_OFFSET_SB_OFFSET SUBBAND_OFFSET_SB_OFFSET compensate the offset of the varicap.
(23:20) SWCAP_LIM_SB_MAX_VAL (23:20) SWCAP_LIM_SB_MAX_VAL 0X0 maximum subband value in linear search subband
(freq and comp)
(19:16) SWCAP_LIM_SB_MIN_VAL (19:16) SWCAP_LIM_SB_MIN_VAL 0X0 minimum subband value in linear search subband
(freq and comp)
(15) SUBBAND_CONF_SB_FLL_MODE (15) SUBBAND_CONF_SB_FLL_MODE 0X0 Enables the FLL mode for the subband selection
(overrides other settings)
(14) SUBBAND_CONF_SB_INV_BAND (14) SUBBAND_CONF_SB_INV_BAND 0X0 invert the meaning of sb_high and sb_low
(13:12) (13:12) 0X0 The length to count in frequency mode: 00 => 256
SUBBAND_CONF_SB_FREQ_CNT SUBBAND_CONF_SB_FREQ_CNT (Rx: 10.7us, Tx: 2.13us),01 => 512 (Rx: 21.3us, Tx:
4.26us),11 => 1024 (Rx: 42.7us, Tx: 8.53us),01 =>
4096 (Rx: 171us, Tx: 34.1us)
(11:10) SUBBAND_CONF_SB_WAIT_T (11:10) SUBBAND_CONF_SB_WAIT_T 0X0 time to wait to the PLL to settle: 00 => Rx 8us, Tx
2us, 01 => Rx 12us, Tx 3us, 10 => Rx 16us, Tx 4us,
11 => Rx 24us, Tx 6u
(9:8) SUBBAND_CONF_SB_MODE (9:8) SUBBAND_CONF_SB_MODE 0X0 sub-band algorithm mode: 00 => SAR w/
comparators, 01 => linear w/ comparators, 00 =>
SAR w/ frequency ratios, 01 => linear w/ frequency
ratios
(5:4) PA_CONF_SW_CN (5:4) PA_CONF_SW_CN 0X0 Harmonic 2 notch tuning
(3) PA_CONF_TX_SWITCHPA (3) PA_CONF_TX_SWITCHPA 0X0 If set to 1, enables the PA only with the digital block,
487
otherwise it's the RF Tx timing
onsemi
(2) PA_CONF_TX_0DBM (2) PA_CONF_TX_0DBM 0X0 If set to 1 enables the PA, otherwise only the PPA is
used (-20dBm)
www.onsemi.com
(1:0) PA_CONF_CTRL_PA (1:0) PA_CONF_CTRL_PA 0X0 N.U.
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0x400100B4 RF_REG2D (31) (31) 0X0 Enable the subband correction
SUBBAND_CORR_SUBBAND_CORR_EN SUBBAND_CORR_SUBBAND_CORR_EN
(30:28) (30:28) 0X0 Subband correction in Rx
SUBBAND_CORR_SUBBAND_CORR_RX SUBBAND_CORR_SUBBAND_CORR_RX
(26:24) (26:24) 0X0 Subband correction in Tx
SUBBAND_CORR_SUBBAND_CORR_TX SUBBAND_CORR_SUBBAND_CORR_TX
(23) (23) 0X0
PLL_CONF_TX_NRX_INV_CLK_PLL_T PLL_CONF_TX_NRX_INV_CLK_PLL_T
X X
(22) (22) 0X0
PLL_CONF_TX_NRX_INV_CLK_DIG_T PLL_CONF_TX_NRX_INV_CLK_DIG_T
X X
(21:20) (21:20) 0X3 Xor value between Tx and Rx for the ck_sel field of
PLL_CONF_TX_NRX_CK_SEL_TX PLL_CONF_TX_NRX_CK_SEL_TX register DLL_CTRL
(18:17) (18:17) 0X0
PLL_CONF_TX_NRX_CHP_CURR_OFF_ PLL_CONF_TX_NRX_CHP_CURR_OFF_
TRIM_TX TRIM_TX
(16) (16) 0X0
PLL_CONF_TX_NRX_CHP_CURR_OFF_ PLL_CONF_TX_NRX_CHP_CURR_OFF_
EN_TX EN_TX
(15) PA_RAMPUP_FULL_PA_RAMPUP (15) PA_RAMPUP_FULL_PA_RAMPUP 0X0 If set to 1, the PA rampup uses the PA backoff enable
bit (from -40 dBm)
488
(14:12) PA_RAMPUP_DEL_PA_RAMPUP (14:12) PA_RAMPUP_DEL_PA_RAMPUP 0X0 time to wait to start the ramp-up after the PA enable
onsemi
is detected
(11:10) PA_RAMPUP_TAU_PA_RAMPUP (11:10) PA_RAMPUP_TAU_PA_RAMPUP 0X0 time constant of the Ramp-up/Ramp-down
www.onsemi.com
(9) PA_RAMPUP_EN_PA_RAMPDOWN (9) PA_RAMPUP_EN_PA_RAMPDOWN 0X0 if set to 1 enables the PA ramp-down. Only valid in
case of ramp-up
(8) PA_RAMPUP_EN_PA_RAMPUP (8) PA_RAMPUP_EN_PA_RAMPUP 0X0 if set to 1 enables the PA ramp-up
RSL10 Hardware Reference
489
(5:4) RSSI_DETECT_RSSI_DET_WAIT (5:4) RSSI_DETECT_RSSI_DET_WAIT 0X0 Symbols to wait after the RSSI detection: 00 -> 0, 01
onsemi
www.onsemi.com
RSSI_DETECT_RSSI_DET_DIFF_LL RSSI_DETECT_RSSI_DET_DIFF_LL subtracted one (0->1 sample,1->2 samples,etc)
(1) RSSI_DETECT_RSSI_DET_EN_ABS (1) RSSI_DETECT_RSSI_DET_EN_ABS 0X0 If set to 1 enables the absolute RSSI detection
RSL10 Hardware Reference
490
TXFIFO_STATUS_NEAR_OVERFLOW
onsemi
www.onsemi.com
- (17) TXFIFO_STATUS_FULL 0X0 Is set to 1 if the Tx FIFO is full
(16) TXFIFO_STATUS_FLUSH - N/A If set to 1 the Tx FIFO is flushed
RSL10 Hardware Reference
491
- (5) DESER_STATUS_WAIT_SYNC 0X0 Is set to 1 if the deserializer is waiting the sync word
onsemi
www.onsemi.com
- (3) DESER_STATUS_PKT_LEN_ERR 0X0 Is set to 1 in case of the packet length is longer than
the maximum acceptable packet length
- (2) DESER_STATUS_ADDRESS_ERR 0X0 Is set to 1 in case of an address error
RSL10 Hardware Reference
492
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.25 SYSTICK TIMER
493
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.26 SYSTEM CONTROL AND ID REGISTER NOT IN THE SCB
494
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.27 NESTED VECTOR INTERRUPT CONTROLLER
495
onsemi
www.onsemi.com
(13) DMA5 (13) DMA5 0X0 DMA5 interrupt set enable
(12) DMA4 (12) DMA4 0X0 DMA4 interrupt set enable
RSL10 Hardware Reference
496
(14) BLE_RX (14) BLE_RX 0X0 BLE_RX interrupt set enable
onsemi
www.onsemi.com
(11) DSS7 (11) DSS7 0X0 DSS7 interrupt set enable
(10) DSS6 (10) DSS6 0X0 DSS6 interrupt set enable
RSL10 Hardware Reference
497
onsemi
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0xE000E180 NVIC_ICER0 (31) DMIC_OUT_OD_IN (31) DMIC_OUT_OD_IN 0X0 DMIC_OUT_OD_IN interrupt clear enable
(30) UART_ERROR (30) UART_ERROR 0X0 UART_ERROR interrupt clear enable
(29) UART_TX (29) UART_TX 0X0 UART_TX interrupt clear enable
(28) UART_RX (28) UART_RX 0X0 UART_RX interrupt clear enable
(27) I2C (27) I2C 0X0 I2C interrupt clear enable
(26) SPI1_ERROR (26) SPI1_ERROR 0X0 SPI1_ERROR interrupt clear enable
(25) SPI1_TX (25) SPI1_TX 0X0 SPI1_TX interrupt clear enable
(24) SPI1_RX (24) SPI1_RX 0X0 SPI1_RX interrupt clear enable
(23) SPI0_ERROR (23) SPI0_ERROR 0X0 SPI0_ERROR interrupt clear enable
(22) SPI0_TX (22) SPI0_TX 0X0 SPI0_TX interrupt clear enable
(21) SPI0_RX (21) SPI0_RX 0X0 SPI0_RX interrupt clear enable
(20) WATCHDOG (20) WATCHDOG 0X0 WATCHDOG interrupt clear enable
(19) DIO3 (19) DIO3 0X0 DIO3 interrupt clear enable
(18) DIO2 (18) DIO2 0X0 DIO2 interrupt clear enable
(17) DIO1 (17) DIO1 0X0 DIO1 interrupt clear enable
(16) DIO0 (16) DIO0 0X0 DIO0 interrupt clear enable
(15) DMA7 (15) DMA7 0X0 DMA7 interrupt clear enable
498
(14) DMA6 (14) DMA6 0X0 DMA6 interrupt clear enable
onsemi
www.onsemi.com
(11) DMA3 (11) DMA3 0X0 DMA3 interrupt clear enable
(10) DMA2 (10) DMA2 0X0 DMA2 interrupt clear enable
RSL10 Hardware Reference
499
(14) BLE_RX (14) BLE_RX 0X0 BLE_RX interrupt clear enable
onsemi
www.onsemi.com
(11) DSS7 (11) DSS7 0X0 DSS7 interrupt clear enable
(10) DSS6 (10) DSS6 0X0 DSS6 interrupt clear enable
RSL10 Hardware Reference
500
onsemi
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0xE000E200 NVIC_ISPR0 (31) DMIC_OUT_OD_IN (31) DMIC_OUT_OD_IN 0X0 DMIC_OUT_OD_IN interrupt set pending
(30) UART_ERROR (30) UART_ERROR 0X0 UART_ERROR interrupt set pending
(29) UART_TX (29) UART_TX 0X0 UART_TX interrupt set pending
(28) UART_RX (28) UART_RX 0X0 UART_RX interrupt set pending
(27) I2C (27) I2C 0X0 I2C interrupt set pending
(26) SPI1_ERROR (26) SPI1_ERROR 0X0 SPI1_ERROR interrupt set pending
(25) SPI1_TX (25) SPI1_TX 0X0 SPI1_TX interrupt set pending
(24) SPI1_RX (24) SPI1_RX 0X0 SPI1_RX interrupt set pending
(23) SPI0_ERROR (23) SPI0_ERROR 0X0 SPI0_ERROR interrupt set pending
(22) SPI0_TX (22) SPI0_TX 0X0 SPI0_TX interrupt set pending
(21) SPI0_RX (21) SPI0_RX 0X0 SPI0_RX interrupt set pending
(20) WATCHDOG (20) WATCHDOG 0X0 WATCHDOG interrupt set pending
(19) DIO3 (19) DIO3 0X0 DIO3 interrupt set pending
(18) DIO2 (18) DIO2 0X0 DIO2 interrupt set pending
(17) DIO1 (17) DIO1 0X0 DIO1 interrupt set pending
(16) DIO0 (16) DIO0 0X0 DIO0 interrupt set pending
(15) DMA7 (15) DMA7 0X0 DMA7 interrupt set pending
501
(14) DMA6 (14) DMA6 0X0 DMA6 interrupt set pending
onsemi
www.onsemi.com
(11) DMA3 (11) DMA3 0X0 DMA3 interrupt set pending
(10) DMA2 (10) DMA2 0X0 DMA2 interrupt set pending
RSL10 Hardware Reference
502
(14) BLE_RX (14) BLE_RX 0X0 BLE_RX interrupt set pending
onsemi
www.onsemi.com
(11) DSS7 (11) DSS7 0X0 DSS7 interrupt set pending
(10) DSS6 (10) DSS6 0X0 DSS6 interrupt set pending
RSL10 Hardware Reference
503
onsemi
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0xE000E280 NVIC_ICPR0 (31) DMIC_OUT_OD_IN (31) DMIC_OUT_OD_IN 0X0 DMIC_OUT_OD_IN interrupt clear pending
(30) UART_ERROR (30) UART_ERROR 0X0 UART_ERROR interrupt clear pending
(29) UART_TX (29) UART_TX 0X0 UART_TX interrupt clear pending
(28) UART_RX (28) UART_RX 0X0 UART_RX interrupt clear pending
(27) I2C (27) I2C 0X0 I2C interrupt clear pending
(26) SPI1_ERROR (26) SPI1_ERROR 0X0 SPI1_ERROR interrupt clear pending
(25) SPI1_TX (25) SPI1_TX 0X0 SPI1_TX interrupt clear pending
(24) SPI1_RX (24) SPI1_RX 0X0 SPI1_RX interrupt clear pending
(23) SPI0_ERROR (23) SPI0_ERROR 0X0 SPI0_ERROR interrupt clear pending
(22) SPI0_TX (22) SPI0_TX 0X0 SPI0_TX interrupt clear pending
(21) SPI0_RX (21) SPI0_RX 0X0 SPI0_RX interrupt clear pending
(20) WATCHDOG (20) WATCHDOG 0X0 WATCHDOG interrupt clear pending
(19) DIO3 (19) DIO3 0X0 DIO3 interrupt clear pending
(18) DIO2 (18) DIO2 0X0 DIO2 interrupt clear pending
(17) DIO1 (17) DIO1 0X0 DIO1 interrupt clear pending
(16) DIO0 (16) DIO0 0X0 DIO0 interrupt clear pending
(15) DMA7 (15) DMA7 0X0 DMA7 interrupt clear pending
504
(14) DMA6 (14) DMA6 0X0 DMA6 interrupt clear pending
onsemi
www.onsemi.com
(11) DMA3 (11) DMA3 0X0 DMA3 interrupt clear pending
(10) DMA2 (10) DMA2 0X0 DMA2 interrupt clear pending
RSL10 Hardware Reference
505
(14) BLE_RX (14) BLE_RX 0X0 BLE_RX interrupt clear pending
onsemi
www.onsemi.com
(11) DSS7 (11) DSS7 0X0 DSS7 interrupt clear pending
(10) DSS6 (10) DSS6 0X0 DSS6 interrupt clear pending
RSL10 Hardware Reference
506
onsemi
www.onsemi.com
RSL10 Hardware Reference
Address Register Name Register Write Register Read Default Description
0xE000E300 NVIC_IABR0 - (31) DMIC_OUT_OD_IN 0X0 Set the DMIC_OUT_OD_IN interrupt as active
- (30) UART_ERROR 0X0 Set the UART_ERROR interrupt as active
- (29) UART_TX 0X0 Set the UART_TX interrupt as active
- (28) UART_RX 0X0 Set the UART_RX interrupt as active
- (27) I2C 0X0 Set the I2C interrupt as active
- (26) SPI1_ERROR 0X0 Set the SPI1_ERROR interrupt as active
- (25) SPI1_TX 0X0 Set the SPI1_TX interrupt as active
- (24) SPI1_RX 0X0 Set the SPI1_RX interrupt as active
- (23) SPI0_ERROR 0X0 Set the SPI0_ERROR interrupt as active
- (22) SPI0_TX 0X0 Set the SPI0_TX interrupt as active
- (21) SPI0_RX 0X0 Set the SPI0_RX interrupt as active
- (20) WATCHDOG 0X0 Set the WATCHDOG interrupt as active
- (19) DIO3 0X0 Set the DIO3 interrupt as active
- (18) DIO2 0X0 Set the DIO2 interrupt as active
- (17) DIO1 0X0 Set the DIO1 interrupt as active
- (16) DIO0 0X0 Set the DIO0 interrupt as active
- (15) DMA7 0X0 Set the DMA7 interrupt as active
507
- (14) DMA6 0X0 Set the DMA6 interrupt as active
onsemi
www.onsemi.com
- (11) DMA3 0X0 Set the DMA3 interrupt as active
- (10) DMA2 0X0 Set the DMA2 interrupt as active
RSL10 Hardware Reference
508
onsemi
www.onsemi.com
- (12) BLE_CSCNT 0X0 Set the BLE_CSCNT interrupt as active
- (11) DSS7 0X0 Set the DSS7 interrupt as active
RSL10 Hardware Reference
509
0xE000E408 NVIC_IP2 (31:29) DMA3 (31:29) DMA3 0X0 Configure the DMA3 interrupt priority
onsemi
(23:21) DMA2 (23:21) DMA2 0X0 Configure the DMA2 interrupt priority
(15:13) DMA1 (15:13) DMA1 0X0 Configure the DMA1 interrupt priority
www.onsemi.com
(7:5) DMA0 (7:5) DMA0 0X0 Configure the DMA0 interrupt priority
0xE000E40C NVIC_IP3 (31:29) DMA7 (31:29) DMA7 0X0 Configure the DMA7 interrupt priority
RSL10 Hardware Reference
(23:21) DMA6 (23:21) DMA6 0X0 Configure the DMA6 interrupt priority
(15:13) DMA5 (15:13) DMA5 0X0 Configure the DMA5 interrupt priority
(7:5) DMA4 (7:5) DMA4 0X0 Configure the DMA4 interrupt priority
0xE000E410 NVIC_IP4 (31:29) DIO3 (31:29) DIO3 0X0 Configure the DIO3 interrupt priority
(23:21) DIO2 (23:21) DIO2 0X0 Configure the DIO2 interrupt priority
(15:13) DIO1 (15:13) DIO1 0X0 Configure the DIO1 interrupt priority
(7:5) DIO0 (7:5) DIO0 0X0 Configure the DIO0 interrupt priority
0xE000E414 NVIC_IP5 (31:29) SPI0_ERROR (31:29) SPI0_ERROR 0X0 Configure the SPI0_ERROR interrupt priority
(23:21) SPI0_TX (23:21) SPI0_TX 0X0 Configure the SPI0_TX interrupt priority
(15:13) SPI0_RX (15:13) SPI0_RX 0X0 Configure the SPI0_RX interrupt priority
(7:5) WATCHDOG (7:5) WATCHDOG 0X0 Configure the WATCHDOG interrupt priority
Address Register Name Register Write Register Read Default Description
0xE000E418 NVIC_IP6 (31:29) I2C (31:29) I2C 0X0 Configure the I2C interrupt priority
(23:21) SPI1_ERROR (23:21) SPI1_ERROR 0X0 Configure the SPI1_ERROR interrupt priority
(15:13) SPI1_TX (15:13) SPI1_TX 0X0 Configure the SPI1_TX interrupt priority
(7:5) SPI1_RX (7:5) SPI1_RX 0X0 Configure the SPI1_RX interrupt priority
0xE000E41C NVIC_IP7 (31:29) DMIC_OUT_OD_IN (31:29) DMIC_OUT_OD_IN 0X0 Configure the DMIC_OUT_OD_IN interrupt priority
(23:21) UART_ERROR (23:21) UART_ERROR 0X0 Configure the UART_ERROR interrupt priority
(15:13) UART_TX (15:13) UART_TX 0X0 Configure the UART_TX interrupt priority
(7:5) UART_RX (7:5) UART_RX 0X0 Configure the UART_RX interrupt priority
0xE000E420 NVIC_IP8 (31:29) PCM_ERROR (31:29) PCM_ERROR 0X0 Configure the PCM_ERROR interrupt priority
(23:21) PCM_TX (23:21) PCM_TX 0X0 Configure the PCM_TX interrupt priority
(15:13) PCM_RX (15:13) PCM_RX 0X0 Configure the PCM_RX interrupt priority
(7:5) DMIC_OD_ERROR (7:5) DMIC_OD_ERROR 0X0 Configure the DMIC_OD_ERROR interrupt priority
0xE000E424 NVIC_IP9 (31:29) DSS3 (31:29) DSS3 0X0 Configure the DSS3 interrupt priority
(23:21) DSS2 (23:21) DSS2 0X0 Configure the DSS2 interrupt priority
(15:13) DSS1 (15:13) DSS1 0X0 Configure the DSS1 interrupt priority
(7:5) DSS0 (7:5) DSS0 0X0 Configure the DSS0 interrupt priority
0xE000E428 NVIC_IP10 (31:29) DSS7 (31:29) DSS7 0X0 Configure the DSS7 interrupt priority
510
(23:21) DSS6 (23:21) DSS6 0X0 Configure the DSS6 interrupt priority
onsemi
(15:13) DSS5 (15:13) DSS5 0X0 Configure the DSS5 interrupt priority
(7:5) DSS4 (7:5) DSS4 0X0 Configure the DSS4 interrupt priority
www.onsemi.com
0xE000E42C NVIC_IP11 (31:29) BLE_EVENT (31:29) BLE_EVENT 0X0 Configure the BLE_EVENT interrupt priority
(23:21) BLE_RX (23:21) BLE_RX 0X0 Configure the BLE_RX interrupt priority
RSL10 Hardware Reference
(15:13) BLE_SLP (15:13) BLE_SLP 0X0 Configure the BLE_SLP interrupt priority
(7:5) BLE_CSCNT (7:5) BLE_CSCNT 0X0 Configure the BLE_CSCNT interrupt priority
0xE000E430 NVIC_IP12 (31:29) BLE_FINETGTIM (31:29) BLE_FINETGTIM 0X0 Configure the BLE_FINETGTIM interrupt priority
(23:21) BLE_GROSSTGTIM (23:21) BLE_GROSSTGTIM 0X0 Configure the BLE_GROSSTGTIM interrupt priority
(15:13) BLE_ERROR (15:13) BLE_ERROR 0X0 Configure the BLE_ERROR interrupt priority
(7:5) BLE_CRYPT (7:5) BLE_CRYPT 0X0 Configure the BLE_CRYPT interrupt priority
0xE000E434 NVIC_IP13 (31:29) RF_TX (31:29) RF_TX 0X0 Configure the RF_TX interrupt priority
(23:21) BLE_COEX_IN_PROCESS (23:21) BLE_COEX_IN_PROCESS 0X0 Configure the BLE_COEX_IN_PROCESS interrupt
priority
(15:13) BLE_COEX_RX_TX (15:13) BLE_COEX_RX_TX 0X0 Configure the BLE_COEX_RX_TX interrupt priority
(7:5) BLE_SW (7:5) BLE_SW 0X0 Configure the BLE_SW interrupt priority
Address Register Name Register Write Register Read Default Description
0xE000E438 NVIC_IP14 (31:29) RF_TXFIFO (31:29) RF_TXFIFO 0X0 Configure the RF_TXFIFO interrupt priority
(23:21) RF_SYNC (23:21) RF_SYNC 0X0 Configure the RF_SYNC interrupt priority
(15:13) RF_RECEIVED (15:13) RF_RECEIVED 0X0 Configure the RF_RECEIVED interrupt priority
(7:5) RF_RXSTOP (7:5) RF_RXSTOP 0X0 Configure the RF_RXSTOP interrupt priority
0xE000E43C NVIC_IP15 (31:29) ASRC_OUT (31:29) ASRC_OUT 0X0 Configure the ASRC_OUT interrupt priority
(23:21) ASRC_IN (23:21) ASRC_IN 0X0 Configure the ASRC_IN interrupt priority
(15:13) ASRC_ERROR (15:13) ASRC_ERROR 0X0 Configure the ASRC_ERROR interrupt priority
(7:5) RF_RXFIFO (7:5) RF_RXFIFO 0X0 Configure the RF_RXFIFO interrupt priority
0xE000E440 NVIC_IP16 (31:29) FLASH_COPY (31:29) FLASH_COPY 0X0 Configure the FLASH_COPY interrupt priority
(23:21) CLKDET (23:21) CLKDET 0X0 Configure the CLKDET interrupt priority
(15:13) AUDIO_SINK_PERIOD (15:13) AUDIO_SINK_PERIOD 0X0 Configure the AUDIO_SINK_PERIOD interrupt
priority
(7:5) AUDIO_SINK_DELAY (7:5) AUDIO_SINK_DELAY 0X0 Configure the AUDIO_SINK_DELAY interrupt priority
0xE000E444 NVIC_IP17 (31:29) BLE_AUDIO1 (31:29) BLE_AUDIO1 0X0 Configure the BLE_AUDIO1 interrupt priority
(23:21) BLE_AUDIO0 (23:21) BLE_AUDIO0 0X0 Configure the BLE_AUDIO0 interrupt priority
(15:13) MEM_ERROR (15:13) MEM_ERROR 0X0 Configure the MEM_ERROR interrupt priority
(7:5) FLASH_ECC (7:5) FLASH_ECC 0X0 Configure the FLASH_ECC interrupt priority
0xE000E448 NVIC_IP18 (7:5) BLE_AUDIO2 (7:5) BLE_AUDIO2 0X0 Configure the BLE_AUDIO2 interrupt priority
511
onsemi
www.onsemi.com
RSL10 Hardware Reference
A.28 SYSTEM CONTROL BLOCK
512
- (9:0) VECTACTIVE 0X0 Number of current running interrupt service routine
onsemi
0xE000ED08 SCB_VTOR (31:7) TBLOFF (31:7) TBLOFF 0X0 Table offset value in code or RAM region. Must be
multiple of 128.
www.onsemi.com
0xE000ED0C SCB_AIRCR (31:16) VECTKEY (31:16) VECTKEY 0XFA05 Access key for writing this register. Must be set to
0x05FA to write the other register fields.
RSL10 Hardware Reference
513
(16) MEMFAULTENA (16) MEMFAULTENA 0X0 Memory management fault handler enable
onsemi
(15) SVCALLPENDED (15) SVCALLPENDED 0X0 SVCall is pending or was started and replaced by a
higher priority exception
www.onsemi.com
(14) BUSFAULTPENDED (14) BUSFAULTPENDED 0X0 Bus fault is pending or was started and replaced by a
higher priority exception
(13) MEMFAULTPENDED (13) MEMFAULTPENDED 0X0 Memory management fault is pending or was started
RSL10 Hardware Reference
514
(0) IACCVIOL (0) IACCVIOL 0X0 Indicates instruction access violation
onsemi
0xE000ED2C SCB_HFSR (31) DEBUGEVT (31) DEBUGEVT 0X0 Indicates hard fault is triggered by debug event
www.onsemi.com
(30) FORCED (30) FORCED 0X0 Indicates hard fault is taken because of a lower
priority (e.g., bus, memory management or usage)
fault
(1) VECTBL (1) VECTBL 0X0 Indicates hard fault is taken due to failed vector fetch
RSL10 Hardware Reference
0xE000ED30 SCB_DFSR (4) EXTERNAL (4) EXTERNAL 0X0 Indicates external debug request signal asserted
(3) VCATCH (3) VCATCH 0X0 Indicates vector fetch occurred
(2) DWTTRAP (2) DWTTRAP 0X0 Indicates DWT match occurred
(1) BKPT (1) BKPT 0X0 Indicates BKPT instruction executed
(0) HALTED (0) HALTED 0X0 Indicates halt requested by NVIC
0xE000ED34 SCB_MMFAR - (31:0) NVIC_MMAR 0X0
0xE000ED38 SCB_BFAR - (31:0) NVIC_BFAR 0X0
A.29 DEBUG CONTROLLER
515
0xE000EDF8 DEBUG_DCRDR (31:0) DEBUG_REGDATA (31:0) DEBUG_REGDATA 0X0 Register read/write data for debugging
onsemi
0xE000EDFC DEBUG_DEMCR (24) TRCENA (24) TRCENA 0X0 Trace system enable
(19) MON_REQ (19) MON_REQ 0X0 Indicates that the debug monitor is caused by a
www.onsemi.com
manual pending request rather than a hardware
event
(18) MON_STEP (18) MON_STEP 0X0 Single step the processor
RSL10 Hardware Reference
(17) MON_PEND (17) MON_PEND 0X0 Pend the monitor exception request
(16) MON_EN (16) MON_EN 0X0 Enable the debug monitor exception
(10) VC_HARDERR (10) VC_HARDERR 0X0 Debug trap on hard faults
(9) VC_INTERR (9) VC_INTERR 0X0 Debug trap on interrupt service errors
(8) VC_BUSERR (8) VC_BUSERR 0X0 Debug trap on bus faults
(7) VC_STATERR (7) VC_STATERR 0X0 Debug trap on usage fault state errors
(6) VC_CHKERR (6) VC_CHKERR 0X0 Debug trap on fault-enabled checking errors (e.g.
unaligned access, divide by zero, etc.)
(5) VC_NOCPERR (5) VC_NOCPERR 0X0 Debug trap on usage fault no coprocessor errors
(4) VC_MMERR (4) VC_MMERR 0X0 Debug trap on memory management fault
(0) VC_CORERESET (0) VC_CORERESET 0X0 Debug trap on core reset
APPENDIX B
Glossary
B.
www.onsemi.com
516
onsemi
RSL10 Hardware Reference
POR power-on-reset
SWD serial wire debug, two-wire interface used for communication with Arm cores
VDDA supply voltage for the non-RF analog blocks and flash memory
VDDO input supply for the digital I/O pads, including the debug port (SWJ-DP)
VDDPA optional supply voltage for the power amplifier from the RF front-end
www.onsemi.com
517
onsemi
RSL10 Hardware Reference
Sections of this manual relating to the Arm Cortex-M3 processor have been republished from the Cortex-M3 Technical Reference (version r2p1) with permission.Sections of this
manual relating to the Arm Cortex-M3 processor have been republished from the Cortex-M3 Technical Reference (version r2p1) with permission.
Arm, the Arm logo and Cortex are trademarks or registered trademarks of Arm Ltd. Bluetooth is a registered trademark of Bluetooth SIG, Inc. All other brand names and product
names appearing in this document are trademarks of their respective holders.
Arm, the Arm logo and Cortex are trademarks or registered trademarks of Arm Ltd. Bluetooth is a registered trademark of Bluetooth SIG, Inc. All other brand names and product
names appearing in this document are trademarks of their respective holders.
onsemi and the onsemi logo are trademarks of Semiconductor Components Industries, LLC dba onsemi or its subsidiaries in the United States and/or other countries. onsemi
owns the rights to a number of patents, trademarks, copyrights, trade secrets, and other intellectual property. A listing of onsemi’s product/patent coverage may be accessed at
www.onsemi.com/site/pdf/Patent-Marking.pdf. onsemi reserves the right to make changes without further notice to any products herein. onsemi makes no warranty,
representation or guarantee regarding the suitability of its products for any particular purpose, nor does onsemi assume any liability arising out of the application or use of any
product or circuit, and specifically disclaims any and all liability, including without limitation special, consequential or incidental damages. Buyer is responsible for its products and
applications using onsemi products, including compliance with all laws, regulations and safety requirements or standards, regardless of any support or applications information
provided by onsemi. “Typical” parameters which may be provided in onsemi data sheets and/or specifications can and do vary in different applications and actual performance
may vary over time. All operating parameters, including “Typicals” must be validated for each customer application by customer’s technical experts. onsemi does not convey any
license under its patent rights nor the rights of others. onsemi products are not designed, intended, or authorized for use as a critical component in life support systems or any
FDA Class 3 medical devices or medical devices with a same or similar classification in a foreign jurisdiction or any devices intended for implantation in the human body. Should
Buyer purchase or use onsemi products for any such unintended or unauthorized application, Buyer shall indemnify and hold onsemi and its officers, employees, subsidiaries,
affiliates, and distributors harmless against all claims, costs, damages, and expenses, and reasonable attorney fees arising out of, directly or indirectly, any claim of personal
injury or death associated with such unintended or unauthorized use, even if such claim alleges that onsemi was negligent regarding the design or manufacture of the part.
onsemi is an Equal Opportunity/Affirmative Action Employer. This literature is subject to all applicable copyright laws and is not for resale in any manner.
M-20829-021