基于Dialog DA14580主要芯片的智能手环/智能鞋子解决方案

电子说

1.3w人已加入

描述

本文是一位工程师朋友撰写的基于Dialog DA14580主要芯片的智能手环/智能鞋子解决方案,详细地分享了使用Dialog SmartBond DA14580进行设计的心得和建议,也许可以对您的设计提供一些启发和帮助。

应用领域:智能穿戴方案类型:模块板卡

主要芯片:Dialog DA14580

方案概述1. 产品功能描述

用户可通过蓝牙连接手机,在APP或者微信小程序中查看当日的走路步数、跑步距离、骑行距离、爬楼梯步数、检测体温或者心率。可USB充电、无线充电。 根据实际用途待机时长可在1个星期甚至更长。

2. 产品应用范围

老人防跌、儿童防丢、运动等场景

3. 产品特点优势总结功耗业内最低:如下所示:状态:电流睡眠: 0.07mA待机: 0.8mA

传输数据: 4.8mA

4. 产品实物图片

【DA14580】DA14580是Dialog公司研制的蓝牙单芯片。号称全球功耗最低,是TI CC2541的四分之一,是运动手环等穿戴类电子产品经常使用的芯片。

可是DA14580的开发门槛不低。适合有蓝牙开发经验的团队来开发,不适合学习爱好者。

笔者将对DA14580的系统架构和应用开发框架进行分析,之后再解说怎样进行应用开发。

对于蓝牙单芯片应用开发来说,我们要关注的问题是:蓝牙协议栈方面怎样新增一个GATT profile(服务和特征值定义及操作)、SoC内核方面怎样驱动外围设备、系统应用框架上怎样使用定时器和任务间消息通信等等。DA14580单芯片公布时并非一颗裸片,而是带有开发平台和SDK包,还有经常使用的应用例程(如防丢proximity)。我们要做的就是通过SDK和相关的文档去理解它整个系统架构和应用框架,在这个基础上才去完成以上三个方面的开发。

一、DA14580系统架构

DA14580是基于Cortex M0架构,内置ROM、OTP和RAM。

当中ROM固化了大部分协议栈和操作系统(单任务)的代码实现,而OTP一次性编程则是为了减少成本,实现用户的差异化应用需求。当用户通过SPI NORFLASH引导或者直接通过JLINK下载代码到RAM进行调试后,就能够通过SmartSnippets工具下载代码到OTP。量产产品即从OTP开始引导运行。

DA14580集成的是第三方公司RW的蓝牙协议栈IP,范围包含GAT和GAP层及下面。因此我们能够在代码框架文件夹上看到RW开头命名的文件夹和头文件,官方文档涉及到蓝牙协议栈方面大部分都是RW公司出品。

芯片

二、DA14580 开发例程文件夹和SDK文件夹结构

DA14580的SDK开发平台使用keil,我们先来看看开发例程的文件夹结构,再来看SDK文件夹结构。前者简单一些。后者由于涉及到第三方IP、ROM等原因,文件夹实在是太多太细了,初接手真的会歇菜。

防丢(proximity,英文是接近的意思)的开发文件夹结构例如以下:

芯片

这里须要注意的是,ROM里面的固话代码。包含协议栈和单任务操作系统的相关管理代码也是整个project应用的一部分,仅仅只是没有列到开发文件夹里面。

SDK文件夹架构例如以下:

芯片

三、蓝牙profile和应用的角色和分工

从project的代码文件夹结构来看,每一个profile都有一个以profile(如proxr)命名的.c文件,也有一个以profile_task(如proxr_task)命名的.c文件;对应地,每一个应用子任务也有一个app_profile(如app_proxr)的.C文件,和app_profile_task(如app_proxr_task)的.c文件。

一般地:

在操作系统ke内核看来,Profile和profile_task共同完毕一个task任务,当中app_proxr_task的task ID标识是TASK_PROXR。但app_profile和app_profile_task并非一个详细的task任务,在代码文件夹的app文件夹。全部的task,包含app_proxr_task和app_batt_task(电池)、app_sec_task(安全)共同组成一个task。在app.c中完毕任务创建。task的ID标识是TASK_APP。

各个app_profile_task仅仅只是完毕应用的一个子场景功能,如防丢、电池告警等。

app是主动发送消息给profile,以运行对应的蓝牙GATT服务和操作,并接受回调。即app是profile的上层。

Profile任务运行GATT服务/属性的详细创建create、开启服务enable和属性特征的读写等操作,其调用ATT和GAP等底层接口来实现详细功能。

Profile作为接口供给app层调用。app是通过消息通信来完毕接口调用的。

app_profile的代码一般包含主动调用的接口实现。而app_profile_task则是接受消息回调的接口实现。两者的分工是很清晰的。

四、应用开发框架

DA14580的应用开发框架的核心是基于状态机和消息回调。下面分析以防丢proxr为例。

1. 状态机每一个任务都必须明白自己的状态表。比如proxr的状态表是:

芯片

状态的初始化和转换是由用户主动切换的。

在某个确定的状态时,内核会在对应的状态响应接口集中遍历全部发给该任务的消息。每一个任务都会在初始化时被创建。比如proxr任务的创建是:

芯片

这时,如果有个其它的任务发一个消息给TASK_PROXR。则会在proxr_disabled中查找对应的消息回调接口,并运行回调。

2. 消息回调

接下来看看各个状态的响应接口集,比如PROXR_CONNECTED连接状态时的状态响应接口集例如以下。可见,其会对两个消息进行回调,一个是底层ATT收到对特征值的写操作时运行回调,还有一个应用层主动改写还有一个特征值。在笔者的防丢和计步应用中,前者是实现防丢告警功能。后者是上报计步数据。

芯片

3. 任务间通信

消息发出之后,系统即会运行proxr_jibu_update_req_handler回调。

另外。笔者会依据文章的阅读量考虑进一步对DA14580的SDK进行分析。如系统启动过程、服务建立过程以及上面说的。怎样进行应用开发,即蓝牙协议栈方面怎样新增一个GATT profile(服务和特征值定义及操作)、SoC内核方面怎样驱动外围设备、系统应用框架上怎样使用定时器和任务间消息通信等等。

芯片

采用Dialog蓝牙智能芯片,小米手环如虎添翼

凭借Dialog DA14580 SmartBond™低能耗SoC拥有的业界顶尖功耗技术,小米手环如虎添翼。

最新发布的小米手环中采用了Dialog 的蓝牙超低功耗SmartBond SoC(片上系统芯片)。

借助Dialog的DA14580,只需给小米手环充电一次,就可满足长达30天的续航时间,这比其最强竞争对手所供的电池能力高出两倍多,为当今的消费者提供了一款拥有最高能效的连接解决方案。

小米公司自2010年推出基于安卓(Android)的MIUI操作系统以来,所设计并开发出的创新型消费电子产品源源不断,其中包括智能手机、智能电视、机顶盒、平板电脑、路由器,还有最新出炉的可穿戴设备。小米手环由小米的下属公司华米科技研发制造。全球竞争对手的运动追踪手环价格较高、续航能力较弱、能效较低,如今最新推出的小米手环极具竞争力,成为替代其竞争对手的不二选择。

Dialog半导体有限公司连接性、汽车与工业事业部资深副总裁兼总经理Sean McGrath表示:“小米将DA14580 SmartBond解决方案融入小米手环的核心单元中,这是我们在中国市场业务的一项至关重要的突破。DA14580可为小米产品带来真正的竞争优势,因为选用Dialog蓝牙SoC的工程师再也无需因为电池容量问题在产品设计上做出妥协:他们能够打造出更加轻薄、更具吸引力的产品,这些产品不仅拥有业界领先的能效,而且仍然满足用户对于性能的期望。因此,消费者可以依靠小米手环来监测他们的运动情况、卡路里摄入量和睡眠模式,同时又避免了频繁充电的烦恼。”

Dialog的SmartBond是一个高度集成的SoC,其易用性和节省成本优势获得了业界认可。比起目前任何其它蓝牙智能解决方案,DA14580所需要的外部组件较少,无需使用微控制器也可实现全面托管型应用。借助通用软件开发包的各种支持,设计人员能够迅速开发出各类前卫应用,使其应用于人机交互设备(HID)、健康与健身可穿戴设备、医疗、近距感测和智能家庭等迅速扩展的市场。凭借世界一流的高能效技术,SmartBond可兼顾产品设计,是打造数十亿电池供电型物联网设备的绝好选择。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分