3.SDK架构

Dialog Semiconductoryabo国际娱乐为DA14531、DA14585和DA14586提供的SDK包含以下内容:

  • 片上外设的驱动程序。

  • 蓝牙LE配置文件实现。

  • 演示如何使用片上外设和蓝牙LE栈api的示例项目。

  • 详细描述可用api的文档。

  • 用于创建二进制文件的各种实用程序和工具。

请注意

蓝牙LE栈(主机和控制器)包含在DA145xx设备的ROM中。

以下部分描述SDK6的结构和体系结构。

3.1.目录结构

SDK根目录包含以下目录:

_images / root_tree.png

图7SDK根目录结构

  • 二进制文件包含存储在host_apps目录中的PC应用程序的可执行二进制文件,以及用于生产测试工亚博国际官网平台网址具固件的二进制文件。

  • 配置包含smartsnippet工具的DA14585/586/531配置文件。

  • 医生包含详细说明可用api和SDK许可文件的文档。

  • 项目包含示例项目。

  • sdk包含SDK的核心文件。

  • third_party包含SDK中使用的第三方源文件。

  • 公用事业公司包含补充SDK的实用程序和工具。

3.2.体系结构

DA14585/586/531软件平台利用了一个小而高效的实时内核。蓝牙LE栈利用了实时内核提供的服务。内核提供了任务、消息、事件和动态内存分配功能。当一个任务试图向另一个任务发送消息时,任务与推送到队列中的消息进行通信。计时器和其他硬件事件也将事件推入队列。从主循环调用内核调度器,根据消息和事件的优先级从队列中弹出消息和事件,并调用相关的处理程序,触发不同任务的执行。执行一直持续到队列为空,此时内核将把设备置于低功耗休眠模式。

许多这样的事件和消息被显示给用户应用程序回调函数。这些功能允许用户实现他们的应用程序,而不必创建复杂的任务、消息事件等。

请注意

大多数情况下,在开发应用程序时不需要创建任务。绝大多数应用程序都可以通过向SDK应用程序亚博国际官网平台网址回调函数中添加代码来实现。它是强烈推荐您可以在开发应用程序时遵循此技术。

3.2.1.应用回调

SDK提供了两种类型的应用程序回调:

  • 系统回调用于将系统事件(如从睡眠中唤醒、即将进入睡眠等)传递给用户应用程序。

  • 蓝牙勒回调用于向用户应用程序传递堆栈事件(如连接、断开连接等)。

中定义的数据结构中包含所有可用的回调函数(包括堆栈和系统)user_callback_config.h

3.2.1.1.系统回调

SDK提供了以下回调,以指示用户应用程序发生了某些系统事件:

表1 系统回调

函数

描述

时间限制

app_on_init

在设备初始化过程中重置后调用。

没有一个

app_on_ble_powered

当BLE核心处于活动状态时,由主循环周期性调用。

媒介

app_on_system_powered

当BLE核心可以处于休眠模式时,由主循环周期性调用。

媒介

app_before_sleep

在主循环开始检查设备是否可以进入睡眠模式之前调用。

媒介

app_validate_sleep

在主循环将设备置于睡眠模式(无线电关闭但外围设备仍然打开)之前调用。

app_going_to_sleep

在主循环将设备置于睡眠模式(无线电和外设关闭)之前调用。

app_resume_from_sleep

在设备退出睡眠模式后调用。

请注意

这两个app_on_ble_powered而且app_on_system_powered定期调用,直到主循环确定设备可以进入睡眠模式。这两个函数都允许用户通过返回适当的值来阻止设备进入睡眠模式。这允许应用程序保持设备处于清醒状态,直到它完成任何正在进行的操作(读取传感器数据等)。

除了上述的回调函数之外,还有一个需要作为用户应用程序的一部分实现的回调函数——periph_init函数。这个函数在SDK提供的所有示例中都有,请参阅user_periph_setup.c文件。当设备在重置后启动或从睡眠模式中唤醒时,将调用此函数,并应用于初始化应用程序将使用的任何外设。

下面的图表说明了在各种条件下将发生的系统回调的顺序。

_images / sys_cb_reset_flowchart.png

图8系统回调顺序(重置)

_images / sys_cb_wake_flowchart.png

图9系统回调序列(唤醒)

3.2.1.2.蓝牙LE栈回调

的“应用程序软件”一节中可以找到可用堆栈回调的详细信息软件平台参考手册