4. 软件设计类
本节介绍了与软件有关的常见问题。
4.1. 我可以将SWD引脚重新分配到到其他GPIO吗?
是的,可以将SWD重新映射到不同的GPIO。 SWD信号映射是由 SYS_CTRL_REG[DEBUGGER_ENABLE] 位域定义。将此位域设置为:
0x0:禁用调制器。
0x1:将SW_CLK和SW_DIO分别配置到P0_2和P0_5上(WLCSP17封装的默认选项)。
0x2:将SW_CLK和SW_DIO分别配置到P0_2和P0_1上。
0x3:将SW_CLK和SW_DIO分别配置到P0_2和P0_10上(FCGQFN24封装的默认选项)。该配置对WLCSP17封装不可用。
举例:
要将SW_CLK和SW_DIO配置为P0_2和P0_1,应将SYS_CTRL_REG[DEBUGGER_ENABLE]位字段编程为0x2,如下所示:
SetBits16(SYS_CTRL_REG, DEBUGGER_ENABLE, 2);
Note
用户固件运行后,即可立即应用当前设置。如果设备重置或重新引导,则引导程序会将SWD引脚恢复为默认设置。 DA14531 datasheet 中的 Note 1 也描述了该过程。
4.2. 我可以使用旧版本Pro-DK(DA14580DEVKT-P)通过单线UART对DA14531子板进行编程吗?
是的,您可以使用旧版本Pro-DK通过单线UART下载固件,进行编程。当DA14531子板连接到旧版本的Pro-DK时候,P0_5 将暴漏在 J7.Pin6(P2_5) 的Header上。 此时需要从J5到J7通过布线连接一个100 Ohm的电阻,如 Figure 1 所示。
举例
如何使用旧的Pro-DK通过单线UART使用生产测试固件对DA14531进行编程。
步骤
使用Keil IDE从SDK6.0.14打开并编译Production Test项目。Keil项目位于 projects \ target_apps \ prod_test \ prod_test \ Keil_5 SDK路径下。也可以使用已经存在的用于Production Test文件下的二进制文件, 该文件位于 6.0.14.1020 \ binaries \ da14531 \ prod_test 下。
编译完成后,固件
prod_test_531.hex
将会在 Keil_5\out_DA14531\Objects 文件中被创建。打开 SmartSnippets Toolbox V5.0.16, 更多信息请参考 user manual。
在 Board Setup 中,选择 single wire UART communication。请参考 Figure 2。
打开 RF Master。
下载
prod_test_531.hex
固件。重置 DA1458x Pro DK,然后就可以使用 RF Master了。
4.3. 如何启用调试UART机制以及如何在DA145xx Pro开发套件中对其进行测试?
此演示中使用了SDK6.0.14的ble_app_barebone工程。该工程位于 projects \ target_apps \ ble_examples SDK路径下。您应按照以下步骤启用调试UART机制。此外,还需要 DA145xx Pro 开发套件。
步骤
在
da1458x_config_basic.h
中定义 CFG_PRINTF 宏 ,参见 Figure 3。
user_periph_setup.h
中定义了有关UART2的设置,也可以根据应用要求进行修改。P0_6用于启用 UART2 Tx功能 (参见 Figure 4 )。
在
user_barebone.c
中引用arch_console.h
头文件,参见 Figure 5。
在
user_app_adv_start()
中添加以下代码:
char ch = 0xFF;
arch_printf("Device starts advertising") ;
arch_printf("\n\r") ;
arch_printf("Print 1 byte") ;
arch_puts(&ch);
arch_printf("\n\r");
如图 Figure 6 所示,从 J2.27 到 J1.17 连接一个跳线。
TeraTerm的配置:确保选择了正确的COM端口,您设置中的COM端口可能有所不同。选择两个选项中最低编号的COM端口。
运行示例,结果将显示在串行监视器中。请参阅 Figure 7。
4.4. DA14531有多少种休眠模式可用,以及如何配置?
DA14531 SoC支持 3 种休眠模式,即:
Extended sleep mode (with or without OTP copy) - 扩展睡眠模式(带有或不带有 OTP 副本)。
Deep sleep mode (also known as shipping clocked mode) - 深度睡眠模式(也称为出厂时钟模式)。
Hibernation mode (also known as shipping clock-less mode) - 进阶休眠模式(也称为出厂无时钟模式)。
有关如何将DA14531 SoC配置为三种睡眠模式中的任意一种睡眠模式的概述,请参见 Sleep Mode Tutorial。
除了本教程之外,请参考 DA14531 Bluetooth® Low Energy Eddystone beacon with Hibernation Or Deep Sleep Mode 和 DA14531 Configuring Hibernation and State-aware hibernation mode 软件例程。
4.5. 如何制作带有广播扫描指示(ADV_SCAN_IND)数据包的 DA14531 广播?
在非连接模式下运行时候,外设使用 ADV_SCAN_IND PDU 发送扫描响应。此时设备应配置为不可连接的广播模式,并且还应定义扫描响应数据。有关更多信息,请参见 Simple Beacon Example 和 Bluetooth® Low Energy Advertising Tutorial 。
4.6. 我可以在睡眠模式下使用DA14531中任意一种定时器吗?
是的,Timer1可以在睡眠模式下保持Active状态。因为其时钟源可以在 System Clock (sys_clk) 和 Low Power Clock (lp_clk) 之间进行选择。 有关更多信息,请参见 DA14531 Timer1 软件例程。
Note
无论将DA14531配置成哪一种睡眠模式,系统时钟将会被禁用。取而代之的是 Low Power Clock (lp_clk) 将被当作时钟源以供设备运行。
4.7. 将我的固件从DA14585迁移到DA14531时,我应该遵循什么?
我们最新的SDK6.0.14对DA14531和DA14585/586通用。如果现有应用程序是基于DA14585/586和SDK6.0.10,该应用程序可以轻松移植到 DA14531和SDK6.0.14中。大多数功能将自动更改。在完成迁移之前,仅需检查一些配置。 文档 SDK Porting Guide 描述了需要将基于DA14585/DA14586 SDK 6.0.10版本开发的应用程序移植到最新的DA14585/586/531 SDK 6.0.14版本中的更改和步骤。
4.8. 无时钟唤醒和时钟唤醒之间有什么区别?
不同之处在于,仅在系统处于hibernation mode(进阶休眠模式)时, Clockless wake-up controller (无时钟唤醒控制器)将会被启用, 而系统在处于extended 或 deep sleep mode(拓展或深度休眠模式)下, Clocked wake-up controller (时钟唤醒控制器)将会被启用。
在hibernation mode(进阶休眠模式)下,所有时钟都将停止。但在extended 或 deep sleep mode(拓展或深度休眠模式)下,唤醒控制器将驻留在 PD_SLP
电源域中,并在 LP_CLK 上运行。
请在 DA14531 datasheet 中的 Sections 17 and 18 参见更多有关时钟唤醒/无时钟唤醒的信息。
Sleep Mode tutorial 中展示了无时钟唤醒。Bluetooth® Low Energy Notify Button Wakeup 软件例程展示了时钟唤醒。
4.9. HW RESET(硬件复位)功能可以重新分配到任意GPIO上吗?
不可以。硬件复位专用于 P0_0 并且只能禁用。
如果要将其禁用,应将 WR_CTRL_REG[DISABLE_HWR]
字段设置为1。
此外,SDK的驱动程序提供了禁用P0_0上的硬件复位功能的功能接口: GPIO_Disable_HW_Reset()
。
驱动程序位于SDK路径 6.0.14.1114 \ sdk \ platform \ driver \ gpio 中。
然而,Power-On-Reset (POR) (上电复位)可以重新分配到任意可用的GPIO上。
其中极性通过 POR_PIN_REG[POR_PIN_POLARITY]
来设置 。 GPIO可以通过 POR_PIN_REG[POR_PIN_SELECT]
来设置。
其中复位时间可以通过 POR_PIN_REG[POR_TIMER_REG]
来设置。
其中 POR_TIME: Time = POR_TIME x 4096 x RC32K clock period 。
用户必须在POR_TIME的持续时间内将复位引脚保持为高电平或者低电平(基于你所设置的极性)。
4.10. 如何使系统进入Hibernation(clockless or shipping)进阶睡眠模式
在 Configuring to Hibernation Mode 示例中展示了实现该模式的整个过程。
在 Sleep Mode tutorial 中也展示了如何将DA14531配置为进阶睡眠模式。
4.11. DA14531的QDID是什么?
请使用以下连接来查看DA14531 Controller, Host和 Profile Subsystems的 QDID。
4.12. 如何修改广播数据
根据Bluetooth Low Energy规范,广播数据(和扫描响应数据)应遵循特定格式。请参考 Bluetooth® Low Energy Advertising Tutorial 中的 3.1. Changing the Advertising Data 章节,以了解更改广播数据的正确步骤。
4.13. DSPS和AT Codeless是否也可用于DA14531 TINY Module上?
是的,DSPS和AT Codeless例程可用于DA14531 TINY Module上。
Dialog Serial Port Service (DSPS)
DSPS例程仿真了串行通信。提供了RS-232连接的简单替代方案,包括通过低功耗蓝牙实现的软件流控制逻辑。 SPS例程包括了应用程序和配置文件源代码,并支持GAP中央/外围设备角色。
请点击 DSPS support page 来获取更多有关DSPS例程的信息。
CodeLess™ AT Commands
CodeLess例程使您可以通过一组AT命令快速入门无线物联网应用程序。 CodeLess AT命令平台允许通过Bluetooth®Low Energy控制本地UART连接的设备以及远程设备。 您可以创建简单的演示/应用程序/概念验证而 无需任何代码开发,也可以在顶层构建自己的应用程序!
请点击 CodeLess support page 来获取更多有关Codeless例程的信息。