Skip to main content

Bluetooth low energy

SmartBond™: power, size and system cost without compromise

Bluetooth® low energy is the de facto low power standard for connecting devices to each other and to the cloud. Highly integrated, the SmartBond™ SoC family features the smallest, most power efficient Bluetooth low energy solutions available and enables the lowest system costs. An extensive suite of support tooling ensures ease of use and a fast route to market.

Latest News Success Stories

Bluetooth Low Energy
SmartBond™ Product Portfolio Download PDF
Part Number DA14699/7/5/1 DA14683 DA14682 DA14586 DA14585 DA14531/0 DA14531MOD
  Product Description The world’s most advanced wireless microcontroller product family Single-chip high-security Bluetooth 5 solution with expandable memory Small size, low power and most integrated Bluetooth 5 SoC The world’s smallest and lowest power Bluetooth 5.1 System-on-Chip which enables the next 1billion IoT devices The DA14531 SmartBond TINY™ Module, based on the world’s smallest and lowest power Bluetooth 5.1 system-on-Chip
TYPE
SoC      
SiP          
Module            
TECHNOLOGY
Bluetooth® LE 5.2 5.0 5.0 5.0 5.0 5.1 5.1
2.4 GHz proprietary            
CORE SYSTEM
CPU 96MHz Arm
Cortex-M33
Floating Point DSP Extension
96MHz Arm
Cortex-M0
96MHz Arm
Cortex-M0
16MHz Arm
Cortex-M0
16MHz Arm
Cortex-M0
16MHz Arm
Cortex-M0+
16MHz Arm
Cortex-M0+
RAM 512kB
384kB (691)
128kB 128kB 96kB 96kB 48kB 48kB
ROM
OTP
128kB
4kB
128kB
64kB
128kB
64kB
128kB
64kB
128kB
64kB
144kB
32kB
144kB
32kB
Flash QSPI Flash QSPI Flash 1024kB 256kB SPI Flash SPI Flash 128kB
Crystals 32MHz+32kHz 32/16MHz+32kHz 32/16MHz+32kHz 16MHz+32kHz 16MHz+32kHz 32MHz 32MHz
POWER
Internal DCDC Buck Buck Buck Buck&Boost Buck&Boost Buck&Boost Buck
External System Power Rails 2x1.8V, 1x3.3V 2x1.8V, 1x3.3V 2x1.8V, 1x3.3V        
Charger ● ● ● ○        
SECURITY
AES/SHA 256/512 256/512 256/512 128 128 128 128
ECC/TRNG ● ● ● ● ● ●     ○ ● ○ ●
Secure Key Handling        
RADIO
Frequency 2.4GHz 2.4GHz 2.4GHz 2.4GHz 2.4GHz 2.4GHz 2.4GHz
Tx Power 6dBm 0dBm 0dBm 0dBm 0dBm 2.5dBm 2.2dBm
Rx Sensitivity -97dBm -94dBm -94dBm -93dBm -93dBm -94dBm -94dBm
PERIPHERALS
UART/SPI/I2C 3/2/2 2/2/2 2/2/2 2/1/1 2/1/1 2/1/1 2/1/1
QSPI XiP
On-the-fly decryption
2/2/2/1
1
1
       
USB FS/HS 1 1 1        
Timers/PWM/RTC 4/4/1 3/3 3/3 4/2 4/2 3/2/1 3/2/1
I2S,PCM/PDM 8CH/2CH 8CH/2CH 8CH/2CH 8CH/2CH 8CH/2CH    
LCD ● ● ● ○            
Keyboard/QDEC/IR   ● ● ● ● ● ● ● ● ○ ● ● ○ ● ● ○ ● ● ○
ADC 8CH 10b
8CH 14b
8CH 10b 8CH 10b 4CH 10b 4CH 10b 4CH 10b 4CH 10b
LED driver 2 2 ○ ○ 3 3        
Temperature sensor    
Other Haptics / Motor Controller            
APPLICATIONS
Appliances
Asset Tracking    
Beacons      
Consumer Electronics
Direction finding            
Gaming and AR/VR        
Industrial Automation      
Medical and Healthcare
MESH networks        
PC Peripherals
Smart Home and Building
Wearables  
Wireless Ranging (WiRa)            
Smart door-locks        
IoT sensors
PACKAGES
Type#Pins (#GPIO)
Dimensions
VFBGA100 (55)
5x5 mm
(699/697)
WLCSP53 (21)
3.41x3.01 mm

AQFN60 (37)
AQFN60 (31)
6x6 mm
QFN40 (24)
5x5 mm
WLCSP34 (14)
2.40x2.66 mm

QFN40 (25)
WLCSP17 (6)
1.7x2.05 mm
(531 only)
MOD16 (9)
12.5x14.5 mm
Operating Temperature -40 to 85°C -40 to 85°C -40 to 85°C -40 to 85°C -40 to 85/105°C -40 to 85°C -40 to 85°C
Supply Voltage Range 2.4 to 4.75V 1.7 to 4.75V 1.7 to 4.75V 0.9 to 3.3V 0.9 to 3.3V 1.1 to 3.3V 1.8 to 3.3V
DEVELOPMENT KITS DA14695 PRO
DA14695 USB
DA14683 PRO
DA14683 USB
DA14683 PRO
DA14683 USB
DA14585 PRO
DA14585 BASIC
DA14585 PRO
DA14585 BASIC
DA14531/0 PRO DA14531 USB DA14531MOD PRO
Partner Modules
Part Number DA14531 BDE-BLEM301 DA14531 Hongjia
HJ-531IMF
DA14531 Honjia
HJ-131IMH
DA14585 / AzureWave AW-CU362 DA14585 / Inventek
ISM14585-L35
DA14585 / Panasonic / PAN1740A
Product Description BDE-BLEM301 is a highly integrated Bluetooth® 5.1 Low Energy Module based on Dialog ultra-low power DA14531 SoC Ultra-small, ultra-low power Bluetooth 5.1 SIP module with the SmartBond DA14531 TINY. 5 x 4.75 x 1.3mm in a LGA25 package Ultra-small, ultra-low power Bluetooth 5.1 SIP module with the SmartBond DA14531 TINY. 4 x 4 x 1.3mm in a LGA17 package DA14585 BLE5.0 SoC, 1Mbit SPI Flash, embedded antenna DA14585 BLE5.0 SoC, up to 8Mbit SPI Flash on board, optional SkyWorks PA on board for increased TX power 9.0 x 9.5 x 1.8mm, integrated antenna and Pre-Certified, ARM® Cortex®-M0, 96kB SRAM, 64kB OTP
Applications Beacons | Remote Controls | Proximity tags | Low Power Sensors | Commissioning/Provisioning | Toys | Serial port transmission | Smart home | Smart meters | Smart medical devices Tiny medical applications | Beacons | Smart toys | Smart locks | Remote Controls | Industrial smart devices Tiny medical applications | Beacons | Smart toys | Smart locks | Remote Controls | Industrial smart devices IoT Applications | Connected Sensors | Connected Medical | Environmental Monitoring | Beacons | Home Automation | Industrial Connectivity over BLE | Point of Sale Applications | Building Infrastructure | Temperature & Environmental Monitoring | Connected Toys IoT Applications | Voice-controlled remote controls | Keyboard & Mouse | Connected Sensors | Beacons and Tags | Home Automation | Connected Toys | Consumer Appliances Industrial IoT | Connected Sensors | Human Interface Devices | Smart Home/Building | Smart Lighting Systems | Metering | Smart Home Nodes | Beacons | Proximity Tags | Tracker | Remote Controls
Product Security Vulnerabilities
Read more
Legacy Products
DA14680/1 Not Recommended for New Designs; For Improved Performance – See DA14682/3
DA14580/1/2/3 Not Recommended for New Designs; For Improved Performance – See DA14585/6 and DA14530/1

 

web_bluetooth_blog

Motion Aware Thin Bluetooth® Low Energy Beacon Solution for Smart Labels

A beacon is a tiny Bluetooth radio battery-powered transmitter. Beacons provide an inexpensive broadcasting solution capable of autonomous operation over very long periods of time. In this paper, we will show how beacons can support extended functionality by employing a range of peripherals to allow them to process and display data while maintaining autonomous operation.

Success Stories banner

Smart devices that don’t need charging?

Smartcube Co. produces modular chips that convert everyday objects like sport shoes and ID badges into smart, connected IoT devices. Remarkably, they aim to produce chips that are so energy-efficient, the resulting devices never need charging! Dialog’s SmartBond Bluetooth low energy range is helping them achieve their power consumption goals at low cost while delivering excellent reliability.

IoT Podcast Blog

IoT Podcast, Connected Health and Wearables

We plunge into this universe to examine the technology and applications sculpting the Medical and Healthcare industries!

Every quarter, we bundle up the best technical info on our products, software development topics, trainings, events and deliver it to your inbox.

Sign me up
Check out previous editions

Stay connected

Get in touch with us directly through our worldwide sales offices, or contact one of our global distributors and representatives.

Inquiries Distributors and Representatives Register for newsletters
Product ID Application Standard Memory size FLASH (Mb) Memory size ROM (kB) Memory size OTP (kB) Memory size RAM (kB) GPIOs (max) Power supply min (V) Power supply max (V) Tx current (mA) Rx current (mA) Output power (dBm) Sensitivity (dBm) Microcontroller Recommended for new Designs Package Max system clock (MHz) Flexible system clock Execute from FLASH HW crypto engine QSPI SPI UART I2C USB PDM Documents
                                                       
DA14580-01UNA Beacon & Proximity Health & Fitness Human Interface Devices Smart Home BLE 4.2 Core specification 0 84 32 50 14 0.9 3.6 4.8 5.1 0 -93 M0 No WL-CSP34,2.5*2.5*0.5mm 16 No No Yes 0 1 2 1 0 0 Documentation
DA14580-01AT2 Beacon & Proximity Health & Fitness Human Interface Devices Smart Home BLE 4.2 Core specification 0 84 32 50 24 0.9 3.6 4.8 5.1 0 -93 M0 No QFN40,5*5*0.9mm 16 No No Yes 0 1 2 1 0 0 Documentation
DA14580-01A32 Beacon & Proximity Health & Fitness Human Interface Devices Smart Home BLE 4.2 Core specification 0 84 32 50 32 0.9 3.6 4.8 5.1 0 -93 M0 No QFN48,6*6*0.9mm 16 No No Yes 0 1 2 1 0 0 Documentation
DA14581-00UNA Wireless Charging Host Controller Interface BLE 4.2 Core specification 0 84 32 50 14 0.9 3.6 4.8 5.1 0 -93 M0 No WL-CSP34,2.5*2.5*0.5mm 16 No No Yes 0 1 2 1 0 0 Documentation
DA14581-00000VRA Wireless Charging Host Controller Interface BLE 4.2 Core specification 0 84 32 50 14 0.9 3.6 4.8 5.1 0 -93 M0 No WL-CSP34,2.5*2.5*0.3mm 16 No No Yes 0 1 2 1 0 0 Documentation
DA14581-00AT2 Wireless Charging Host Controller Interface BLE 4.2 Core specification 0 84 32 50 24 0.9 3.6 4.8 5.1 0 -93 M0 No QFN40,5*5*0.9mm 16 No No Yes 0 1 2 1 0 0 Documentation
DA14583-01F01AT2 Beacon & Proximity Health & Fitness Human Interface Devices Smart Home BLE 4.2 Core specification 1 84 32 50 24 2.35 3.6 4.8 5.1 0 -93 M0 No QFN40,5*5*0.9mm 16 No No Yes 0 1 2 1 0 0 Documentation
DA14585-00000VV2* Beacon & Proximity Health & Fitness Human Interface Devices Smart Home Remote Controls with voice commands over BLE BLE 5.0 Core specification + supplemental features 0 128 64 96 14 0.9 3.6 4.8 5.1 0 -93 M0 Yes WL-CSP34,2.4*2.66*0.5mm 16 No No Yes 0 1 2 1 0 1 Documentation
DA14585-00000AT2* Beacon & Proximity Health & Fitness Human Interface Devices Smart Home Remote Controls with voice commands over BLE BLE 5.0 Core specification + supplemental features 0 128 64 96 25 0.9 3.6 4.9 5.3 0 -93 M0 Yes QFN40,5*5*0.9mm 16 No No Yes 0 1 2 1 0 1 Documentation
DA14586-00F02AT2* Beacon & Proximity Health & Fitness Human Interface Devices Smart Home Remote Controls with voice commands over BLE BLE 5.0 Core specification + supplemental features 2 128 64 96 24 1.8 3.6 4.9 5.3 0 -93 M0 Yes QFN40,5*5*0.9mm 16 No No Yes 0 1 2 1 0 1 Documentation
DA14680-01F08A92 Wearables Smart Home Apple HomeKit Human Interface Devices Other rechargeable device BLE 4.2 Core specification + optional features 8 128 64 128 31 1.7 4.75 5.2 6 0 -94 M0 No AQFN60,6*6*0.8mm 96 Yes Yes Yes 0 2 2 2 1 1 Documentation
DA14681-01000U2 Wearables Smart Home Apple HomeKit Human Interface Devices Other rechargeable device BLE 4.2 Core specification + optional features 0 128 64 128 21 1.7 4.75 5.2 6 0 -94 M0 No WL-CSP53,3.4*3.0*0.5mm 96 Yes Yes Yes 1 2 2 2 1 1 Documentation
DA14681-01000A92 Wearables Smart Home Apple HomeKit Human Interface Devices Other rechargeable device BLE 4.2 Core specification + optional features 0 128 64 128 37 1.7 4.75 5.2 6 0 -94 M0 No AQFN60,6*6*0.8mm 96 Yes Yes Yes 1 2 2 2 1 1 Documentation
DA14682* Wearables Smart Home Apple HomeKit Bluetooth mesh Cloud connected applications BLE 5 8 128 64 128 31 1.7 4.75 5.2 6 0 -94 M0 Yes AQFN60,6*6*0.8mm 96 Yes Yes Yes 0 2 2 2 1 1 Documentation
DA14683* Industrial Human Interface Devices Virtual reality remotes Banking BLE 5 0 128 64 128 37 1.7 4.75 5.2 6 0 -94 M0 Yes AQFN60,6*6*0.8mm 96 Yes Yes Yes 1 2 2 2 1 1 Documentation
DA14691-00000HQ2* Wearables Smart Home Apple HomeKit Bluetooth mesh Cloud connected applications BLE 5.0 Core specification + optional features Optional external 128 4 384 44 2.4 4.75 3.5 2.2 6 -97 M33 Yes VFBGA86, 6 x 6 x 0.55 mm 96 Yes Yes Yes 1 2 3 2 1 1 Documentation
DA14695-00000HQ2* Wearables Smart Home Apple HomeKit Bluetooth mesh Cloud connected applications BLE 5.0 Core specification + optional features Optional external 128 4 512 44 2.4 4.75 3.5 2.2 6 -97 M33 Yes VFBGA86, 6 x 6 x 0.55 mm 96 Yes Yes Yes 1 2 3 2 1 1 Documentation
DA14697-00000HR2* Wearables Smart Home Apple HomeKit Bluetooth mesh Cloud connected applications BLE 5.0 Core specification + optional features Optional external 128 4 512 55 2.4 4.75 3.5 2.2 6 -97 M33 Yes VFBGA100, 5 x 5 x 0.475 mm 96 Yes Yes Yes 2 2 3 2 1 1 Documentation
DA14699-00000HR2* Wearables Smart Home Apple HomeKit Bluetooth mesh Cloud connected applications BLE 5.0 Core specification + optional features Optional external 128 4 512 55 2.4 4.75 3.5 2.2 6 -97 M33 Yes VFBGA100, 5 x 5 x 0.475 mm 96 Yes Yes Yes 2 2 3 2 1 1 Documentation
DA14531 Disposables Beacons Asset tracking Connected health RCU BLE 5.1 Core specification + supplemental features 0 144 32 48 12 0.9 3.6 3.5 2.2 0 -94 M0 + Yes QFN24*2.2*3.04mm 16 Yes Yes Yes 0 1 2 1 0 0 Documentation

*Recommended for new designs

Stay connected

Get in touch with us directly through our worldwide sales offices, or contact one of our global distributors and representatives.

Inquiries Distributors and Representatives Register for newsletters

Wearables

Wearable electronics is entering every facet of our daily life, giving us new ways to improve our lives: from productivity to health and lifestyle. Revealing previously unattainable information about ourselves and our surroundings, they help advise us.

SmartBond Solutions: DA14682/3, DA14585/6, DA1469x

Proximity & Asset Tracking

Proximity applications are based on knowing and alerting you of the distance between two devices, such as keys or wallets, if the label goes out of range. Proximity information can also be used in asset tagging for inventory and automated access control or monitoring in cold chain tracking.

SmartBond Solutions: DA1469x, DA14531

Connected Medical

Connected medical offers solutions in allowing patients to take care of their own health condition in monitoring, sending alerts and making drug delivery easy. Bluetooth low energy is the technology to connect health products to the cloud. Examples of connected medical products are blood pressure meters, heart rate monitors, glucose meters and patches, body temperature meters, virus testers and drug delivery with injectables or via patches through the skin.

SmartBond Solutions: DA14531, DA1469x

Smart Home & Buildings

Long dreamt of, the Smart Home is now becoming a reality. We can monitor and control our home security, lighting, appliances and heating, ventilation and air-conditioning (HVAC) from our smartphones and tablets – even remotely via the cloud.

SmartBond Solutions: DA14682/3, DA14585/6, DA14531

Computing & Gaming

Bluetooth has played a key role in connecting computing and gaming peripherals since its introduction. It provides a simple and proven connectivity option for a host of new and emerging peripherals, while securing access to the most personal data.

As electronic equipment becomes smarter and more mobile, the way we interact with it is changing. We want more control, more convenience and less clutter, which is driving huge growth in the wireless HID market. Bluetooth low energy is per default supported in recent versions of windows, which truly enables the wireless desktop.

SmartBond Solutions: DA14585/6, DA1469x

Stay connected

Get in touch with us directly through our worldwide sales offices, or contact one of our global distributors and representatives.

Inquiries Distributors and Representatives Register for newsletters
SmartBond™ SDK Overview Product Supported
SDK6 DA14585/6 + DA14531/0
SDK10 DA1469x
SDK1 DA14682/3

Also available for DA14680/1 but not recommended for new designs

SDK5 DA14580/1/3

Not recommended for new designs

 

SmartBond™ Development tools overview Product Supported
Dialog Smartbond Flash Programmer DA14531/0, DA1458x and DA1469x
SmartSnippets Toolbox All
SmartSnippets Studio All
Production Line Tool  

 

Stay connected

Get in touch with us directly through our worldwide sales offices, or contact one of our global distributors and representatives.

Inquiries Distributors and Representatives Register for newsletters

Social distancing

Embedded Software Applications for Social Distancing Applications

Read More

Bluetooth Low Energy Range Extender

The SmartBond™ BLE Range Extender reference design enables you to take full advantage of the output power of the Bluetooth low energy standard to extend the range of your applications.

Read more

Smart USB Dongle

The Smart USB Dongle device is a fully integrated USB to Bluetooth® LE solution, based on SmartBond™ DA14683 high-security Bluetooth LE SoC.

Read more

emWin

The emWin embedded graphics library developed by SEGGER Microcontroller is now offered by Dialog Semiconductor in library form for free commercial use with the SmartBond® DA1469x wireless microcontrollers.

Read more

Stay connected

Get in touch with us directly through our worldwide sales offices, or contact one of our global distributors and representatives.

Inquiries Distributors and Representatives Register for newsletters

Our SmartBond products are supported by development kits and a profiling to help you create applications that exploit the unique benefits of the SmartBond family to the fullest. These tools help you minimize your time to market.

Hardware Development Kits

DA14531 DA14531 - USB, DA14531 - Pro
DA14585 DA14585 - BasicDA14585 - Pro
DA14683 DA14683 - USBDA14683 - Pro
DA14695 DA14695 – USB, DA14695- Pro
All Bluetooth LE Products Production Line Tool

 

Application Focused Development Kits

 

Discontinued Kits

DA14583 DA14583 IoT Sensor Development Kit
The DA14585 IoT is an upgraded sensor development kit with more supported sensors and cloud connectivity
DA14681 DA14681 HomeKit Development Kit
DA14681 DA14681 Wearable Development Kit

 

Stay connected

Get in touch with us directly through our worldwide sales offices, or contact one of our global distributors and representatives.

Inquiries Distributors and Representatives Register for newsletters

Japan-based company mainly engaged in the manufacture and sale of electronic components and audio equipment. 

See More

Bithium - your partner in the design of innovative wireless embedded systems (firmware, hardware, software). Bithium keeps a clear focus on achieving project targets and customer satisfaction. 

See More

Cambridge Consultants is a premium multidisciplinary supplier of innovative product development engineering and technology consulting. We help clients deliver groundbreaking products to market fast, with cutting-edge technology that often results in new IP generation for our clients. 

See More

Cloud2GND is a global engineering services firm specializing in standards-based wireless connectivity solutions. Our clients range from innovative start-ups to large semiconductor companies and standards organizations. We offer deep domain knowledge in embedded systems, especially around Bluetooth technology, where we provide consulting, design, development, test, deployment and maintenance services for our clients and their customers. Our engineering services division offers a flexible engagement model acting as a specialized team of standards experts or a complete engineering team able to manage your project needs to completion.

See more

Lauterbach is the leading manufacturer of complete, modular and upgradeable microprocessor development tools worldwide with experience in the field of embedded designs since 1979. The engineering team develops and produces highly proficient and specialized Development Tools, which are utilized all over the world under the brand TRACE32®.

LitePoint is the leading provider of test solutions for the world's leading manufacturers of wireless

See more

Murata is a global leader in the design, manufacture and supply of advanced electronic materials, leading edge electronic components, and multi-functional, high-density modules.

See more

Panasonic Industrial Devices Sales Company of America. Many products sold by Fortune 500 companies are in fact Powered by Panasonic technology, and we are proud to provide manufacturers with the performance, quality, and reliability that are synonymous with the Panasonic brand. The Power of Panasonic Industrial Devices brings strategic innovations to our customers’ product development process.

See more

TDK is one of the largest electronic components manufacturers in the world.

See more

Tieto is the leading product development services company enabling semiconductor, connected device and communication infrastructure manufacturers, build next generation connected devices & things, cars and networks.

See more

Wireless technology experts. Xtel's core competency is technology development, which makes up a substantial part of its business. It utilizes state-of-the-art technologies to create the next product or technical platform for its partners. Among its clients, it counts some of the world’s leading tech innovators. It is typically tasked with the development of wireless technology, protocols, and ultralow power designs and products. Xtel has in-depth knowledge of the product development and maturation of wireless technologies. It typically uses proven and tested standard components or platforms, helping its partners to reduce time to market. Where a technology boost is needed, it develops complete products or assist a development team in the company. Its technological solutions and innovative skills are recognized by its partners.

See more

Quuppa is a leading technology provider for real-time locating systems (RTLS) and indoor positioning systems (IPS). The company was established in 2012 by a team of experienced engineers and scientists as a spin-off from Nokia Research Center and has since successfully commercialised its offering, creating a complete product platform: the Quuppa Intelligent Locating System™, a one-size-fits-all technology platform for location-based services and applications. Our platform offers companies a complete software suite of tools for planning, simulating and commissioning projects, that can be used as a solid and scalable foundation for building various location-based solutions. The open API makes it fast and easy to take the platform into use. To date, the Quuppa Ecosystem has more than 200 partners around the world who use Quuppa’s open, versatile and reliable positioning platform to deliver accurate, real-time and cost-effective location solutions to companies in a range of industries, including manufacturing and logistics, retail, healthcare, sports, law enforcement and security, government, asset tracking.

See more

 

Stay connected

Get in touch with us directly through our worldwide sales offices, or contact one of our global distributors and representatives.

Inquiries Distributors and Representatives Register for newsletters
Back to results

DA14585

1 month ago

wakeup after deep sleep on DA14585

Posted by Michihiro Kakegawa 70 points 8 replies
0 upvotes

Hello,

I am using DA14585 and my application is for broadcasting advertisement and also uses deep sleep to save battery consumption.

I have programmed the firmware into OTP memory to see if it goes into deep sleep and wakeup and start advertising again.

Unfortunately, it didn't. 

 

I am looking for some clues on why it has not started advertising again.

 

I am using Android's BLE Scanner app to receive the advertisements.

And it does receive an advertisement when my custom board is running and it does not receive after triggering the wake up interrupt on my custom board.

 

I have called the function to go to deep sleep from the advertising complete function (user_app_adv_nonconn_complete() function).
And I have defined EXCLUDE_DLG_MSG (0) (for the wakeup callback to happen)
 

Do I need further procedure to start advertising from wake up after deep sleep?

I will put my code below.

 

There is no XTAL32kHz on my custom board so I have defined CFG_LP_CLK to LP_CLK_RCX20 and undefined CFG_XTAL16M_ADAPTIVE_SETTLING

1 month ago

Michihiro Kakegawa 70 points

When I Start Debug Session with arch_set_deep_sleep() function commented out, it doesn't go to deep sleep, but it will restart advertising after the wakeup interrupt ( in my case wakeup from GPIO ).

 

src/user_app/user_deep_sleep.c

void put_system_into_deep_sleep(void)
{
    // Configure button for wake-up interrupt
    app_button_enable();

    // Set deep sleep - external interrupt wake up
    // arch_set_deep_sleep(true);                // <--- comment out for debug
}

 

The below is my code snippets of the firmware that was programmed to the OTP. (The SDK version is 6.0.14.114)

src/user_app/user_deep_sleep.h

/****************************************************************************************
* Selects the sleep mode that the device will enter after advertising completion        *
*  - CFG_APP_GOTO_DEEP_SLEEP        Deep Sleep mode                                     *
*  - CFG_APP_GOTO_HIBERNATION       Hibernation mode (DA14531 only)                     *
*  - CFG_APP_GOTO_STATEFUL_HIBERNATION   Stateful Hibernation mode (DA14531 only)       *
* Note: If none is defined, then system will enter the selected Extended sleep mode     *
*                                                                                       *
* IMPORTANT: If CFG_APP_GOTO_STATEFUL_HIBERNATION is defined, CFG_STATEFUL_HIBERNATION  *
* shall be defined as well (in Options for Target 'DA14531' --> Asm -->                 *
* Conditional Assembly Control Symbols --> Define:)                                     *
****************************************************************************************/
#define CFG_APP_GOTO_DEEP_SLEEP

#if defined (CFG_APP_GOTO_DEEP_SLEEP)
/****************************************************************************************
* Deep Sleep mode and Wake-up from Deep Sleep Configuration                             *
* Selects the trigger mechanism to wake up from deep sleep.                             *
*                                                                                       *
* - CFG_DEEP_SLEEP_WAKEUP_POR       - Wake up from POR pin                              *
*                                                                                       *
* - CFG_DEEP_SLEEP_WAKEUP_GPIO      - Wake up from WakeUp Controller                    *
*                                                                                       *
* - CFG_DEEP_SLEEP_WAKEUP_RTC       - Wake up from RTC Timer (only in DA14531)          *
*                                                                                       *
* - CFG_DEEP_SLEEP_WAKEUP_TIMER1    - Wake up from Timer1 (only in DA14531)             *
*                                                                                       *
* NOTE:                                                                                 *
* A hardware reset or power cycle will always wake up the system from deep sleep.       *
****************************************************************************************/
#undef CFG_DEEP_SLEEP_WAKEUP_POR
#define CFG_DEEP_SLEEP_WAKEUP_GPIO

/****************************************************************************************
 * Deep sleep mode configuration                                                        *
 ****************************************************************************************/
#define CFG_DEEP_SLEEP_RAM1            PD_SYS_DOWN_RAM_OFF
#define CFG_DEEP_SLEEP_RAM2            PD_SYS_DOWN_RAM_OFF
#define CFG_DEEP_SLEEP_RAM3            PD_SYS_DOWN_RAM_OFF
#define CFG_DEEP_SLEEP_PAD_LATCH_EN    false

 

src/user_app/user_deep_sleep.c

/**
 ****************************************************************************************
 * @brief Handles APP_WAKEUP_MSG sent when device exits deep sleep. Triggered by button press.
 ****************************************************************************************
*/
static void app_wakeup_cb(void)
{
    // If state is not idle, ignore the message
    if (ke_state_get(TASK_APP) == APP_CONNECTABLE)
    {
        user_app_adv_start();
    }
}

/**
 ****************************************************************************************
 * @brief Routine to resume system from sleep state.
 ****************************************************************************************
 */
static void app_resume_system_from_sleep(void)
{
    if (GetBits16(SYS_STAT_REG, PER_IS_DOWN))
    {
        periph_init();
    }

    if (arch_ble_ext_wakeup_get())
    {
        arch_set_sleep_mode(app_default_sleep_mode);
        arch_ble_force_wakeup();
        arch_ble_ext_wakeup_off();
        app_easy_wakeup();
    }
}

/**
 ****************************************************************************************
 * @brief Button press callback function. Registered in WKUPCT driver.
 ****************************************************************************************
 */
static void app_button_press_cb(void)
{
    app_resume_system_from_sleep();
}

void app_button_enable(void)
{
    app_easy_wakeup_set(app_wakeup_cb);
    wkupct_register_callback(app_button_press_cb);
    wkupct_enable_irq(WKUPCT_PIN_SELECT(GPIO_INPUT_PORT, GPIO_INPUT_PIN), // select pin
                      WKUPCT_PIN_POLARITY(GPIO_INPUT_PORT, GPIO_INPUT_PIN, WKUPCT_PIN_POLARITY_LOW), // polarity low
                      1, // 1 event
                      0x3F); // debouncing time = 63ms
}

#if defined (CFG_APP_GOTO_DEEP_SLEEP)

/**
 ****************************************************************************************
 * @brief Put the system into deep sleep mode. It demonstrates the deep sleep mode usage
 *        and how the system can wake up from it. Once the system enters deep sleep state
 *        it retains NO RAM blocks. The exit from the deep sleep state causes a system
 *        reboot.
 * @note  The system can wake up from deep sleep by:
 *          - external wake up interrupt, caused e.g. by button press (properly configured GPIO pin)
 *          - power on reset, caused e.g. by button press (properly configured GPIO pin)
 *          - H/W reset button press or power cycle (at any time)
 *        When the system exits deep sleep state, the boot process is triggered.
 *        The application code has to be programmed in an external memory resource or
 *        in the OTP memory, in order for the system to reboot properly.
 ****************************************************************************************
*/
void put_system_into_deep_sleep(void)
{
    // Configure button for wake-up interrupt
    app_button_enable();

    // Set deep sleep - external interrupt wake up
    arch_set_deep_sleep(true);
}

#endif //(CFG_APP_GOTO_DEEP_SLEEP)

 

src/user_platform/user_periph_setup.h

/****************************************************************************************/
/* GPIO configuration                                                                    */
/****************************************************************************************/
#define GPIO_INPUT_PORT             GPIO_PORT_1
#define GPIO_INPUT_PIN              GPIO_PIN_2

 

src/user_platform/user_periph_setup.c

void set_pad_functions(void)
{
    // Configure GPIO pin functionality
    GPIO_ConfigurePin(GPIO_INPUT_PORT, GPIO_INPUT_PIN, INPUT_PULLUP, PID_GPIO, false);
}

 

src/user_app/user_name_of_my_project.c

void user_app_adv_nonconn_complete(uint8_t status)
{
    // If advertising was canceled then change the interval for advertising and start advertising again
    if (status == GAP_ERR_CANCELED)
    {
        struct gapm_start_advertise_cmd *cmd = app_easy_gap_non_connectable_advertise_get_active();

        switch(curr_state)
        {
            case ST_ADV2:
                // Changing the interval for advertising
                cmd->intv_min = MS_TO_BLESLOTS(ADV_INTV_1000MS);   // 1s
                cmd->intv_max = MS_TO_BLESLOTS(ADV_INTV_1000MS);   // 1s
            break;
            case ST_ADV1:
                // Changing the interval for advertising
                cmd->intv_min = MS_TO_BLESLOTS(ADV_INTV_100MS);   // 0.1s
                cmd->intv_max = MS_TO_BLESLOTS(ADV_INTV_100MS);   // 0.1s
            break;
            case ST_STOP:
                arch_ble_ext_wakeup_on();

                // Put system into deep sleep
                put_system_into_deep_sleep();
                return;
            default:
            break;
        }
        app_easy_gap_non_connectable_advertise_start();
    }
}

src/user_config/user_modules_config.h

/***************************************************************************************/
/* Exclude or not a module in user's application code.                                 */
/*                                                                                     */
/* (0) - The module is included. The module's messages are handled by the SDK.         */
/*                                                                                     */
/* (1) - The module is excluded. The user must handle the module's messages.           */
/*                                                                                     */
/* Note:                                                                               */
/*      This setting has no effect if the respective module is a BLE Profile           */
/*      that is not used included in the user's application.                           */
/***************************************************************************************/
#define EXCLUDE_DLG_GAP             (0)
#define EXCLUDE_DLG_TIMER           (0)
#define EXCLUDE_DLG_MSG             (0)
#define EXCLUDE_DLG_SEC             (0)
#define EXCLUDE_DLG_DISS            (0)
#define EXCLUDE_DLG_PROXR           (0)
#define EXCLUDE_DLG_BASS            (0)
#define EXCLUDE_DLG_FINDL           (0)
#define EXCLUDE_DLG_FINDT           (0)
#define EXCLUDE_DLG_SUOTAR          (0)
#define EXCLUDE_DLG_CUSTS1          (0)
#define EXCLUDE_DLG_CUSTS2          (0)

 

src/user_config/da1458x_config_advanced.h

/****************************************************************************************/
/* Low Power clock selection.                                                           */
/*      -LP_CLK_XTAL32      External XTAL32K oscillator                                 */
/*      -LP_CLK_RCX20       Internal RCX clock                                          */
/*      -LP_CLK_FROM_OTP    Use the selection in the corresponding field of OTP Header  */
/*                                                                                      */
/* NOTE: Disable CFG_XTAL16M_ADAPTIVE_SETTLING flag when RCX is chosen as the LP clock  */
/*       either from the OTP header or from the SDK.                                    */
/****************************************************************************************/
#define CFG_LP_CLK              LP_CLK_RCX20

/****************************************************************************************/
/* Output the Hardfault arguments to serial/UART interface.                             */
/****************************************************************************************/
#define CFG_PRODUCTION_DEBUG_OUTPUT

/****************************************************************************************/
/* Code location selection.                                                             */
/*     - CFG_CODE_LOCATION_EXT: Code is loaded from SPI flash / I2C EEPROM / UART       */
/*     - CFG_CODE_LOCATION_OTP: Code is burned in the OTP                               */
/* The above options are mutually exclusive and exactly one of them must be enabled.    */
/****************************************************************************************/
#undef CFG_CODE_LOCATION_EXT
#define CFG_CODE_LOCATION_OTP

/*****************************************************************************************/
/* Enable power optimizations using the XTAL16M adaptive settling algorithm.             */
/* NOTE: The XTAL16M adaptive settling algorithm works only with XTAL32K and not         */
/*       with RCX, as the LP clock.                                                      */
/*****************************************************************************************/
#undef CFG_XTAL16M_ADAPTIVE_SETTLING

 

src/user_config/da1458x_config_basic.h

/****************************************************************************************************************/
/* Enables development/debug mode. For production mode builds it must be disabled.                              */
/* When enabled the following debugging features are enabled                                                    */
/*      -   Allows the emulation of the OTP mirroring to System RAM. No actual writing to RAM is done, but the  */
/*          exact same amount of time is spend as if the mirroring would take place. This is to mimic the       */
/*          behavior as if the System Code is already in OTP, and the mirroring takes place after waking up,    */
/*          but the (development) code still resides in an external source.                                     */
/*      -   Validation of GPIO reservations.                                                                    */
/*      -   Enables Debug module and sets code execution in breakpoint in Hardfault and NMI (Watchdog) handlers.*/
/*          It allows developer to hot attach debugger and get debug information                                */
/****************************************************************************************************************/
#undef CFG_DEVELOPMENT_DEBUG

/****************************************************************************************************************/
/* UART Console Print. If CFG_PRINTF is defined, serial interface logging mechanism will be enabled.            */
/* If CFG_PRINTF_UART2 is defined, then serial interface logging mechanism is implented using UART2, else UART1 */
/* will be used.                                                                                                */
/****************************************************************************************************************/
#undef CFG_PRINTF

 

1 month ago

PM_Dialog

Hi Michihiro Kakegawa,

Thanks for your question online and for sharing the code snippets.

You mentioned that the device is booting from OTP. I saw that CFG_DEVELOPMENT_DEBUG is undefined, so how did you try to debug? Do you have an SPI flash on your design? You can program the SPI flash and check f the DA14585 wakes up. I’ll test it on my side as well and let you know.

Thanks, PM_Dialog

4 weeks ago

Michihiro Kakegawa 70 points

Hello

Thank you for the reply.

Yes, after programming the firmware to OTP, it is booting from the OTP.

After that, I ran the debug with Keil uVision through J-Link with my project (with some changes made to the configuration flags).

I had set the OTP Header fields as below, and I hadn't changed the SWD enable flag field (the value is JTAG enable and is the same as default) which I think enables me to run debug.

Name Value
Application Flag 1 Yes
Application Flag 2 Yes
OTP DMA Length 166C

(The value of the OTP DMA Length field is set to the size of the application image divided by four (in hexadecimal format).)

 

I made a copy of the original project folder and named it [my_project_name]_for_test (so I can keep the original project ) and changed the configuration flags in the copied project as below to debug.

in src/user_config/da1458x_config_advanced.h

#define CFG_DEVELOPMENT_DEBUG

in src/user_config/da1458x_config_basic.h

#undef CFG_PRODUCTION_DEBUG_OUTPUT
#define CFG_CODE_LOCATION_EXT
#undef CFG_CODE_LOCATION_OTP

And I started the debug session.

 

I have J-Link connected to my custom board to debug using SWD interface.

 

 

Sorry, I don't have SPI flash on my design.

 

As I was looking at my program, I wonder if calling app_easy_gap_non_connectable_advertise_get_active() function just before putting the system into deep sleep mode causes some kind of a problem.

 

void user_app_adv_nonconn_complete(uint8_t status)
{
    if (status == GAP_ERR_CANCELED)
    {
        struct gapm_start_advertise_cmd *cmd = app_easy_gap_non_connectable_advertise_get_active();

 

4 weeks ago

Michihiro Kakegawa 70 points

Hello,

And the code snippets of my periph_init()

src/user_platform/user_periph_setup.c

void periph_init(void)
{
    ....

    // Set pad functionality
    set_pad_functions();

    // Initialize the I2C module
    i2c_init(&i2c_cfg);

    ....
}

 

Could adding the function call of void i2c_release(void) function before deep sleep make difference?

 

The debouncing time of wkupct_enable_irq() function is set to 0x3F (63ms).

And the LP_CLK_RCX20 is set for low power clock. 

Could these cause some problem in (or after) the periph_init()?

3 weeks ago

PM_Dialog

Hi Michihiro Kakegawa,

So, the actual problem is that the device cannot wake-up from deep sleep using the wake-up controller. Additionally, you are using P1_2 as a wake-up pin.

Since the OTP is programmed, I would recommend to program a clean board (with empty OTP) and run your code in debug mode via the Keil IDE. Are you able to replicate this behavior when the device boots from System-RAM?  For example, add a break point in the wake-up callback, Does the break point hit?

If the CFG_DEVELOPMENT_DEBUG macro is defined, then you can emulate the OTP mirroring to System RAM.

Perhaps the code gets stack into an assertion etc.

Additionally, when you are trying to wake up the device via the P1_2 does the DA14585 reset or does nothing? Can you please provide a power trace?

Thanks, PM_Dialog

3 weeks ago

Michihiro Kakegawa 70 points

Hello PM_Dialog

Thank you for the reply and recommendation on how to debug.

 

Yes, my problem is that the device cannot wake-up from deep sleep using the wake-up controller.

And yes, I am using P1_2 as a wake-up pin.

 

The base of my project file is empty_peripheral_template in projects/target_apps/template,

and for putting the system into deep sleepmode, I have referenced the procedure in ble_app_sleepmode and prox_reporter in projects/target_apps/ble_example.

 

I may have misunderstood what you commented above by "Since the OTP is programmed, I would recommend to program a clean board (with empty OTP)".

Did you mean to  program the firmware into the OTP which has "define CFG_DEVELOPMENT_DEBUG" defined (, and then run in debug mode via the Keil IDE) ?

 

I have two custom boards "at the moment", and these two have already been OTP programmed.

 

Other than these two custom boards, I have one clean board (with empty OTP) with DA14585 on, but this is not exactly the same as my custom board.

 

With this board (which has empty OTP), I have tried running the debug via the Keil IDE, with CFG_DEVELOPMENT_DEBUG defined.

When I tried to wake up the device via the P1_2, the app_easy_wakeup() function was called,

static void app_resume_system_from_sleep(void)
{
    if (GetBits16(SYS_STAT_REG, PER_IS_DOWN))
    {
        periph_init();
    }

    if (arch_ble_ext_wakeup_get())
    {
        arch_set_sleep_mode(app_default_sleep_mode);
        arch_ble_force_wakeup();
        arch_ble_ext_wakeup_off();
        app_easy_wakeup();
    }
}

But has not hit the break point in the wake-up callback. It is looping in the main() function without an assertion. (the code doesn't get stuck into an assertion.)

The configuration flags are as follows

#define CFG_DEVELOPMENT_DEBUG
#undef CFG_CODE_LOCATION_EXT
#define CFG_CODE_LOCATION_OTP

 

And by power trace, I understood as The Power measurement of The SmartSnippets Tools > Power Profiler , or by some kind of measurement tools to measure the current.

I'm afraid I cannot provide a power trace, as I have neither DKs nor a measurement tools for measuring low current.

2 weeks ago

Michihiro Kakegawa 70 points

Hello

 

What could be the possible reason for not starting advertising again on wake-up from deep sleep when the firmware is programmed into OTP?

Where can I look into?

 

2 weeks ago

PM_Dialog

Hi Michihiro Kakegawa,

My apologies for the delay. Perhaps the wake-up controller is not configured properly. 

I will reach out to you privately on this forum thread. 

Thanks, PM_Dialog