全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗
号称全球最低功耗蓝牙单芯片DA14580在可穿戴市场、健康医疗、ibeacon定位等市场得到广泛的应用,但是因为其较为封闭的技术/资料支持导致开发人员有较高的技术门槛,网络上也极少看到有关DA14580的开发技术分享,因此一般企业和一般技术团队都不敢贸然采用该平台,但一旦精通该芯片平台的开发,即可在蓝牙方案应用开发中获得较大的技术优势。
作者在集成电路领域有较为深厚的积累,在DA14580平台也有丰富的开发经验,接下来将以一个系列文章对DA14580的硬件架构和软件体系进行分析。如需技术咨询,请发邮件yqwucheng@163.com联系。
本文分析DA14580的硬件架构和睡眠、唤醒技术。睡眠和唤醒即是低功耗的核心技术。这里从硬件的角度去分析睡眠和唤醒的原理。而睡眠和唤醒的软件框架和实践后续再展开。
一、DA14580硬件架构
DA14580硬件体系架构如下图:
可见,DA14580包括三个部分:
1)使用ARM公司的cortex M0作为CPUprocessor处理器。
2)使用RivieraWaves公司的IP核作为BLEcore和基带、射频部分。
3)集成时钟管理CMU、电源管理PMU、memory控制存储和其他外围模块控制器,如GPIO、UART、I2C、SPI和timer等等。
一般地,DA14580用于蓝牙BLE应用时,会使用两个外部晶振,其中16M晶振用于CPU执行相关的模块(如M0和memory),也会分频给部分peripheral。而32K晶振则用于BLE精确基准时钟和睡眠时的低功耗部分电路。
二、DA14580低功耗(睡眠和唤醒)
蓝牙单芯片的低功耗主要指的是整个硬件系统的睡眠和唤醒。而低功耗主要针对电源和时钟管理。这是由集成电路的特性所决定的。
1. 睡眠
对于睡眠,从以上架构来看,其包括以下部分:
1) CPU睡眠,即cortex M0。根据cortex M0的体系结构,其包括两种睡眠模式:normal sleep和deep sleep,其会映射到M0的寄存器和不同的硬件电路。需要注意的是,CPU在两种模式下并没有多大区别,但是各个SOC厂商在集成cortex M0时会对这两种模式对peripheral部分进行不同的控制。如DA14580会在M0的deepsleep上再细分两种模式,即extended sleep和deepsleep。前者RAM数据是可以保持的,而后者则不保持。
2)BLE core 协议栈、基带和RF射频部分睡眠。对于M0的低功耗来说,有很多的指导文档,但是RivieraWaves的BLE部分的资料极少,方案商都可能没有,只有研发DA14580的dialog公司才有,开发人员只有从DA14580的SDK中理解源码,并通过不断的调试验证来获取低功耗控制的经验。这也是很多公司选择TI而不选择DA作为蓝牙应用的原因。但是DA14580的功耗确实是业界最强,如果能掌握将在物联网产业极具技术优势。
3)peripheral部分睡眠,此部分包括其他集成模块,如memory和UART、GPIO、TIMER、SPI、中断控制等等。DIALOG公司在DA14580的SPEC规格书上也没有公开系统设计的框架图,只有部分寄存器的描述,所以要想精通DA14580的peripheral低功耗控制的方法和调试,也是要花费很多的时间。而且,睡眠和唤醒的调试是相对困难的,需要掌握方法。
4)对于以上的各个部分,我们都是要考虑时钟CLOCK和电源,对于高级CPU可能有动态调频调压,但对于蓝牙单芯片,基本是disable电源和clock。
对于cortex M0来说,WFI指令对应的电路使用一种称为State Retention Power Gating的技术来控制电源,而且结合cotext M0的wakeup interrupt controller模块可以唤醒CPU。对于时钟,则是disable 16M高频晶振。
对于BLE,需要主动disable其时钟[16M或者8M]和电源。BLE的时钟源是32KHz,这里关闭是指BLE的时钟部分,而不是完全disable 32K外部晶振。因为其还需要给唤醒部分提供时钟。
对于peripheral部分,则是关闭电源和时钟,由于其主要使用16M晶振的分频,所以当16M晶振停止工作时,其自然也没有时钟了。
2. 唤醒
对于DA14580的唤醒,其主要有两个唤醒源。一个是同步唤醒源,来源于BLE的内部定时器(默认10秒)和BLE事件;另一个是异步唤醒源,即唤醒中断,可以配置为任意引脚唤醒,其即使用cortex M0指定的WIC技术。
WIC(wakeup interruptcontroller)是独立于CPU和中断控制工作的,但WIC检测到电平变化(也可以计数到指定数值时)即会提醒PMU给CPU供电,并启动内部RC震荡电路提供时钟,并维持中断信号给CPU中断部分,这样CPU可以从睡眠中唤醒。
那么,对于DA14580的唤醒,需要注意什么呢?
1)BLE的唤醒定时器设置
2)DA14580的外部唤醒设置
DA14580支持wakuptimer来唤醒,其能够监测任意引脚的电平变化计数,可以是上升沿也可以是下降沿。其通过WIC接入CPU。
三、低功耗代码框架
以上知识只是说明如何做好睡眠和唤醒的设置工作,当CPU执行WFI指令时,即进入睡眠状态。那么,睡眠和唤醒的设置应该在什么时候执行?唤醒之后对唤醒中断产生的消息/事件、BLE timer事件如何处理?还有CPU唤醒中断后返回用户态时要先做什么事情?这些都应该是低功耗代码框架要考虑的因素。
DA14580软件体系决定的消息/事件是基于BLE TIMER基准时钟的,例如内核的定时器ke-timer是BLE-CORE的组成部分,并不是peripheral中的定时器。而schedule函数将处理所有pending的消息事件。这里,假定CPU是由BLE TIMER唤醒的,这时唤醒之后BLE CORE是正常工作的,因此schedule是可以正常执行的。以上为同步唤醒过程。
异步唤醒即是由wakeup timer中断唤醒,唤醒后BLE timer可能还是disable状态。
我们暂且不去区分DA14580的SDK对于异步唤醒中断产生的事件和BLE timer同步唤醒产生的事件。并基于同步唤醒给出低功耗睡眠代码框架:
Voidmain_loop(void)
{
While(1)
{
Schedule();//处理完所有的消息事件会返回
Disable BLE;//关闭BLECORE
Disable Radio;//关闭射频
Disable peripheral power domain;//关闭外围控制部分
Set CPU DEEP SLEEP.//CPU 睡眠设置
WFI(); //等待中断
Set CPU active.//唤醒之后CPU设置active状态;在BLE TIMER唤醒中断服务中应该要enable BLE CORE, RADIO, peripheral等部分。
}
}
如果要同时支持异步中断及其产生的异步消息/事件,同时处理extended sleep和deep那sleep两种模式的影响,那么低功耗代码框架会变得复杂。作者日后再从软件实践的角度详细分析DA14580如何支持低功耗特性。
嵌入式企鹅圈原创团队由阿里、魅族、nvidia、龙芯、炬力、拓尔思等资深工程师组成。百分百原创,每周两篇,分享嵌入式、Linux、物联网、GPU、Android、自动驾驶等技术。欢迎扫码关注微信公众号:嵌入式企鹅圈,实时推送原创文章!
全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗的更多相关文章
- 全球最低功耗蓝牙单芯片DA14580的软件体系 -层次架构和BLE消息事件处理过程
在作者之前发表的<全球最低功耗蓝牙单芯片DA14580的系统架构和应用开发框架分析>.<全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗>.<全球最低功耗蓝牙单芯片 ...
- 全球最低功耗蓝牙单芯片DA14580的软件体系 -RW内核和消息处理机制
上一篇文章<蓝牙单芯片DA14580的硬件架构和低功耗>阐述了DA14580的硬件架构和低功耗的工作原理.本文文章阐述该平台的软件体系,并着重分析消息事件的处理机制. 一.DA14580S ...
- 全球最低功耗蓝牙单芯片(DA14580)系统架构和应用开发框架分析
DA14580是Dialog公司研制的蓝牙单芯片,号称全球功耗最低,是TI CC2541的四分之一,是运动手环等穿戴类电子产品的常用芯片.但是DA14580的开发门槛不低,适合有蓝牙开发经验的团队来开 ...
- 全球主流8位MCU芯片详细解剖No.2:英飞凌 XC866 - 全文
[导读] XC866是新型8位微控制器系列(XC800)的第一代系列产品,集成高性能8051核.片内FLASH及功能强大的外设集.此外,XC800系列产品内部集成的片 内振荡器和支持3.3V或5.0V ...
- 13.56mhz自动寻卡功能业界最低功耗:SI522
随着智能门锁的不断火爆,很多智能门锁产商为了让产品的功耗下降下来,都在不断寻找能自动寻卡的13.56mhz.今天我就为大家推荐一款13.56mhz芯片自动寻卡业界最低功耗,不仅是业界最低另外还完全PI ...
- NXP低功耗蓝牙集成芯片QN9080C的时钟配置
/*************************************************************************************************** ...
- 单芯片DP108USB声卡/音频解决方案完全替代CM108/CM108AH
简介 DP108是一种高度集成的单芯片USB音频解决方案.所有重要的模拟模块嵌入DP108,包括双DAC和耳机放大器,ADC和麦克风助力器,锁相环,调节器,和USB收发器.许多功能与跳线或外部EEPR ...
- BL8810|USB 2.0单芯片解决方案闪存读卡器|BL8810替代GL823K
创惟GL823K是一款USB 2.0单LUN读卡器控制器,可支持SD/MMC/MSPRO闪存卡.它支持USB 2.0高速传输,将Digital TM(SD).SDHC.SDXC.Mini DTM.Mi ...
- 单芯片CS5265替代VL102+PS176|设计USB TYPEC转HDMI方案|替代VL102+PS176
一.PS176概述PS176是一个显示端口 (DP)至HDMI 2.0视频接口转换器适用于需要视频协议转换的电缆适配器.电视接收器.监视器和其他应用.它将接受任何显示端口输入格式,包括DP 1.1a. ...
随机推荐
- MyEclipse8.5集成Tomcat7时的启动错误:Exception in thread “main” java.lang.NoClassDefFoundError org/apache/commons/logging/LogFactory
今天,安装Tomcat7.0.21后,单独用D:\apache-tomcat-7.0.21\bin\startup.bat启动web服务正常.但在MyEclipse8.5中集成配置Tomcat7后,在 ...
- php日期处理 -- 获取本周和上周的开始日期和结束日期(备忘)
Learn From: http://www.phpernote.com/php-function/1019.html 直接贴代码: <?php header('Content-type: te ...
- js-异常处理语句
程序运行过程中难免会出错,出错后的运行结果往往是不正确的,因此运行时出错的程序通常被强制中止.运行时的错误统称为异常,为了能在错误发生时得到一个处理的机会,JavaScript提供了异常处理语句.包含 ...
- .net core 1.0 Web MVC 自定义认证过程
通过官方的介绍可知,若要本地开始部署搭建一个基于.net core 1.0的Web应用,需要下载dotnet SDK,或在Visual Studio IDE之上安装相关插件以布置开发环境.为了使开发环 ...
- [JS] javascript基础语法
W3CSchool全套Web开发手册:点击下载 1.javascript是什么 js是具有面向对象能力的,解释性的程序设计语言. 2.js的类型 [基本类型]:string number boolea ...
- idea上实现github代码同步
1.先将github远程仓库clone到本地 2.将本地仓库中的项目导入到idea中 3.如果你的项目代码不是放在仓库的根目录下,idea会识别到你的项目是在git仓库目录下,必须点击add root ...
- Array,List,Struct可能被大家忽略的问题
Q1: 首先定义一个结构 public struct MyStruct { public int T; } 定义一个泛型List来存放结构体,然后访问第一个元素去修改T,输出T: List<My ...
- STL or Force --- CSU 1553: Good subsequence
Good subsequence Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1553 Mean: 给你一个长 ...
- Python入门笔记(14):Python的字符编码
一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnblogs.com/kingstarspe/p/ASCII.html 再推荐一篇相关博文:http:// ...
- 关于迭代器中IEnumerable与IEnumerator的区别
首先是IEnumerable与IEnumerator的定义: 1.IEnumerable接口允许使用foreach循环,包含GetEnumerator()方法,可以迭代集合中的项. 2.IEnumer ...