1. Introduction

1.1. Abstract

This document should be used as a reference guide to gain a deeper understanding of the SmartSnippets™ Software Development Kit (SDK). As such it covers a broad range of topics including a brief introduction to Bluetooth Low Energy (BLE), Operating System (OS) related material and a number of sections containing a more detailed technical analysis of hardware elements, for instance clock and power management

1.2. Figures

Figure 1 SmartSnippets™ Bluetooth low energy development platform overview

Figure 3 System sleep entry and exit

Figure 2 SmartSnippets™ DA1469x SDK Doxygen Documentation main page

Figure 5 Going to sleep and waking up steps

Figure 6 Power and clock manager initialization

Figure 7 Watchdog overview

Figure 8 Charger’s layers

Figure 9 Entity associations of the charger’s LLD

Figure 10 Flowchart of the charger’s LLD

Figure 11 Charger’s HW FSM

Figure 12 Middleware high level flowchart

Figure 13 System charger operation

Figure 14 USB charging port detection

Figure 16 Audio Framework Architecture

Figure 17 Audio Manager’s data paths

Figure 18 Adapter overview

Figure 19 Adapter resource management

Figure 20 NVMS Overview

Figure 21 Virtual/Physical Addressing with and without VES

Figure 22 NVMS Adapter NVMS over QSPI and Virtual EEPROM emulation in Cached mode

Figure 23 Suspend/Resume ERASE Operation

Figure 24 BLE Framework architecture

Figure 25 Structure of a service handle

Figure 26 Structure of supported services

Figure 27 Central Pairing Just Works

Figure 28 Central Bonding Just Works

Figure 29 Central Bonding Passkey Entry (Central Display)

Figure 30 Central Bonding Passkey Entry (Peripheral Display)

Figure 31 Central Bonding Numeric Comparison (Secure Connections Only)

Figure 32 Peripheral Pairing Just Works

Figure 33 Peripheral Bonding Just Works

Figure 34 Peripheral Bonding Passkey Entry (Peripheral Display)

Figure 35 Peripheral Bonding Passkey Entry (Central Display)

Figure 36 Peripheral Bonding Numeric Comparison (Secure Connections Only)

Figure 37 L2CAP PDU format in Basic L2CAP mode on COC

Figure 38 Flash layout after initial programming during production

Figure 39 Flash image layout after SUOTA image written in the destination partition

Figure 40 Flash image layout after reboot and activation of the new image

Figure 41 Device selection

Figure 42 Update device

Figure 43 Image file

Figure 44 Parameter settings for SPI

Figure 45 Parameter settings for I2C

Figure 46 Uploading the image file

Figure 47 Reboot device

Figure 48 When file upload is finished, press “Close”

Figure 49 Selecting target device

Figure 50 Selecting the target device

Figure 51 Configuring the serial port

Figure 52 Connecting to the serial port

Figure 53 Scanning for available devices

Figure 54 Connecting to loader device

Figure 55 Updating with new image the loader device

Figure 56 Transfer complete

Figure 57 Verifying that loader is running PX Reporter

Figure 58 BootROM flow

Figure 59 FLASH layout

Figure 61 System Memory

Figure 62 Sensor Node Controller Programming Model overview

Figure 63 Using SNC Adapter to register and communicate with an SNC uCode

Figure 64 Structure of the multi-level priority-list of the registered PDC events and uCodes to the SNC Adapter

Figure 65 Structure of an SNC queue

Figure 66 SNC queues configuration attributes

Figure 67 Notifications exchange between OS task and SNC uCode

Figure 68 uCode CM33-to-SNC queue data representation when pushing data in CM33 context

Figure 69 Data representation in a destination buffer when popping data from a uCode SNC-to-CM33 queue in CM33 context

Figure 70 SNC breakpoint implementation for pausing SNC execution with CM33 breakpoints

Figure 71 Using SNC Emulator breakpoints and step-by-step debugging in Smart Snippets Studio

Figure 72 Using SNC assertion in Smart Snippets Studio

Figure 77 Haptic Driver output voltage signal and configurable drive parameters

Figure 78 Haptic SDK Support overview

Figure 79 Open and closed-loop haptic processing mechanism.

Figure 80 Haptic Adapter - Function usage flow diagram

1.3. Tables

Table 2 Master power domains

Table 3 Non-master power domains

Table 1 LLD overview

Table 5 Supported power modes

Table 6 Configuration functions for sys_watchdog

Table 7 Overview of input and output interfaces used in data paths

Table 8 PDM pin configuration

Table 9 PCM pin configuration

Table 4 System Clocks

Table 10 Overview of adapter related header files

Table 12 Description of the Partition entry

Table 13 Battery types

Table 14 Power Definitions

Table 15 API Functions of the common BLE device software component

Table 16 GAP and L2CAP API functions

Table 17 GATT server API

Table 18 GATT client API

Table 19 Header files for the BLE services

Table 20 BLE projects included in the SmartSnippets™ DA1469x SDK

Table 21 BLE Security API functions

Table 22 BLE Security API events

Table 23 BLE Security API macros

Table 28 Example of L2CAP COC

Table 29 L2CAP COC API- ble_l2cap.h

Table 30 L2CAP COC Events – received through ble_get_event() - ble_l2cap.h

Table 31 LE Data Length Functions – ble_gap.h

Table 32 LE Data Length Definitions

Table 33 LE Data Length Events – fetched using ble_get_event() - ble_gap.h

Table 36 NVPARAM fields

Table 37 BLE service API header files

Table 38 Dialog BLE API header files

Table 39 SUOTA service characteristics

Table 40 OTP Layout

Table 41 Build Configurations

Table 42 Memory Layout

Table 43 Macros for the configuration of the Flash subsystem

Table 44 The qspi_flash_config_t structure

Table 45 Sensor Node Instruction Set (SeNIS) Overview

Table 48 Revision history

1.4. Codes

Code 2 Setup wake up controller for debounced input

Code 4 Setup PDC entry to wake up M33 from debounced input

Code 5 Notify sys_watchdog of the task

Code 6 Using sys_watchdog while suspending task for an event

Code 8 Enabling UART Adapter

Code 9 The UART controller configuration

Code 10 The UART controller parameter configuration

Code 11 Example of a UART controller configuration

Code 12 Open the UART controller

Code 13 Write function (Blocking)

Code 14 Read function (Blocking)

Code 15 Write function (Non-blocking)

Code 16 Read function (Non-blocking)

Code 17 Close UART controller

Code 18 Example of a UART synchronous access

Code 19 Enabling NVMS and Flash Adapters

Code 20 Usage of NVMS

Code 21 NVMS Partition IDs

Code 22 Partition entry

Code 23 Initialization code for Immediate Alert Service

Code 24 Handle BLE events using BLE service framework

Code 25 Example of code for the Write Request

Code 26 Example of code that handle the Write Request and match it with the appropriate instance

Code 27 Enable BLE persistent storage

Code 28 Set BLE device

Code 29 Example of event handle

Code 30 Structure definition for XXX service

Code 31 Initialization function for XXX service

Code 32 NVMS mapping

Code 33 NVMS mapping (SUOTA)

Code 34 Example flash guard macros

Code 35 Passing custom FLASH configuration file to program_qspi_config.py

Code 36 Example code registering SNC uCodes

Code 37 Example code registering and unregistering an SNC uCode

Code 38 Example code pushing data to uCode CM33-to-SNC queues in CM33 context

Code 39 Example code popping data from uCode SNC-to-CM33 queues in CM33 context

Code 40 SNC uCode-Block definition

Code 41 SNC uCode-Block declaration and context reference

Code 42 Example SNC uCode using SeNIS-based language constructs

Code 43 C language equivalent implementation of the example SNC uCode shown in SNC_SeNIS_constructs_Code_snippet

Code 44 Example SNC uCode using SNC_ASSERT() macro for defining an SNC assertion

1.5. Terms and definitions

ADC Analog-to-Digital Converter

AES Advanced Encryption Standard

AHB AMBA High speed Bus

AMBA Advanced Microcontroller Bus Architecture

API Application Programming Interface

APU Audio Processing Unit

ATT Attribute Protocol

BR Basic Rate

BD Bluetooth Device

BIN Binary

BLE Bluetooth Low Energy

BOD Brown-Out Detection

CBC Cipher Block Chaining

CC Constant Current

CCC Client Characteristic Configuration

CDP Charging Downstream Port

COC Connection Oriented Channels

CPU Central Processing Unit

CPM Clock Power Manager

CRC Cyclic Redundancy Check

CTR Counter

CV Constant Voltage

DCDC Direct Current – to – Direct Current

DCD Data Contact Detection

DCP Dedicated Charging Port

DMA Direct Memory Access

DMIPS Dhrystone MIPS (Million Instructions Per Second)

ECB Electronic Codebook

ECC Elliptic Curve Cryptography

ELF Extensible Linking Format

EEPROM Electrically Erasable Programmable Read-Only Memory

EDR Enhanced Data Rate

ERM Eccentric Rotating Mass

FreeRTOS Free Real-Time Operating System

FW Firmware

GAP Generic Access Profile

GATT Generic Attribute Profile

GCC GNU Compiler Collection

GDB GNU Debugger

GFSK Gaussian Frequency-Shift Keying

GPADC General Purpose Analog-to-Digital Converter

GPIO General-purpose input/output

HMAC Hash-based Message Authentication Code

HID Human Interface Device

HCI Host Controller Interface

HTML HyperText Markup Language

HW Hardware

I2C Inter-Integrated Circuit

I2S Inter-IC Sound

IAS Immediate Alert Service

IC Integrated Circuit

IDE Integrated Development Environment

IEEE Institute of Electrical and Electronics Engineers

I/O Input/Output

IVT Interrupt Vector Table

LE Low Energy

LL Link Layer

L2CAP Logical Link Control and Adaptation Protocol

LLD Low-Level Drivers

LRA Linear Resonant Actuator

MAC Media Access Control

MCIF Monitor and Control Interface

MITM Man In The Middle

MPS Maximum Payload Size

MTU Maximum Transmission Unit

NVM Non-volatile memory

OS Operating System

OSAL OS Abstraction Layer

OTP One-Time Programmable

PCB Printed Circuit Board

PCM Pulse Code Modulation

PD Portable Device

PDM Pulse Density Modulation

PHY Physical Layer

PLL Phase-Locked Loop

PSM Protocol Service Multiplexer

QSPI Queued Serial Peripheral Interface

RAM Random-Access memory

RC16 16 MHz Oscillate

RCX 10.5 kHz Oscillator

RF Radio Frequency

RMS Root mean square

ROM Read-Only Memory

RTS/CTS Request to Send / Clear to Send

SDIO Secure Digital Input Output

SDK Software Development Kit

SDP Standard Downstream Port

SDU Service Data Unit

SeNIS Sensor Node Instruction Set

SIG Special Interest Group

SIP Serial Peripheral Interface

SM Security Manager

SMP Security Manger Protocol

SNC Source Node Controller

SoC System on Chip

SRC Sample Rate Converter

SUOTA Software Upgrade Over The Air

SW Software

TCS Trim and Calibration Section

TRNG True Random Number Generator

UART Universal Asynchronous Receiver/Transmitter

USB Universal Serial Bus

VBAT Battery supply voltage

VBUS External supply voltage (from USB)

VES Virtual EEPROM

XiP Executing in Place

XTAL16 16 MHz Crystal oscillator

1.6. References

Ref_01

DA1469x_Datasheet, Datasheet, Dialog Semiconductor

Ref_02

BLUETOOTH SPECIFICATION Version 5.0

Ref_03

USB Charging Specification

Ref_04

SmartSnippets™ DA1469x SDK Documentation*

* (accessed from within SmartSnippets™ Studio (API documentation section of the Welcome page) or externally, by opening “<sdk_root_directory>/doc/html/index.html” file)

1.7. Prerequisites

  • SmartSnippets™ Studio v2.0 package

  • Dialog’s Semiconductor SmartSnippets™ DA1469x SDK

  • Operating System (Windows or Linux)

  • ProDK DA1469x and accessories