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 9 Entity associations of the charger’s LLD
Figure 10 Flowchart of the charger’s LLD
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 19 Adapter resource management
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 44 Parameter settings for SPI
Figure 45 Parameter settings for I2C
Figure 46 Uploading the image file
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 57 Verifying that loader is running PX Reporter
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
1.3. Tables
Table 3 Non-master power domains
Table 6 Configuration functions for sys_watchdog
Table 7 Overview of input and output interfaces used in data paths
Table 10 Overview of adapter related header files
Table 12 Description of the Partition entry
Table 15 API Functions of the common BLE device software component
Table 16 GAP and L2CAP API functions
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 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 37 BLE service API header files
Table 38 Dialog BLE API header files
Table 39 SUOTA service characteristics
Table 43 Macros for the configuration of the Flash subsystem
Table 44 The qspi_flash_config_t structure
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 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 18 Example of a UART synchronous access
Code 19 Enabling NVMS and Flash Adapters
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 29 Example of event handle
Code 30 Structure definition for XXX service
Code 31 Initialization function for XXX service
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
- Ref_02
- Ref_03
- 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