mirror of
https://github.com/Fishwaldo/bl_mcu_sdk.git
synced 2025-07-23 13:18:59 +00:00
[update] update doc&errata
This commit is contained in:
parent
ee8ed272aa
commit
322bbbe17e
230 changed files with 3248 additions and 24793 deletions
|
@ -1,7 +1,7 @@
|
|||
BLE 客户端和服务端互连
|
||||
=======================
|
||||
|
||||
本 demo 基于 **bl702** 演示 **ble server** 和 **ble client** 连接和数据收发。
|
||||
本 demo 基于 **bl702** 演示 **ble server** 和 **ble client** 连接和数据收发。
|
||||
|
||||
准备工具
|
||||
-----------------------
|
||||
|
@ -153,9 +153,9 @@ BLE server 软件实现
|
|||
$ make BOARD=bl706_iot APP=ble_central SUPPORT_FREERTOS=y SUPPORT_FLOAT=y SUPPORT_BLE=y
|
||||
|
||||
|
||||
- **烧录**
|
||||
- **烧录**
|
||||
|
||||
见 ``使用bouffalo_dev_cube烧录代码``
|
||||
详见 :ref:`bl_dev_cube`
|
||||
|
||||
实验现象
|
||||
-----------------------------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
BOOT2 IAP
|
||||
============================
|
||||
|
||||
IAP 是 In Application Programming 的首字母缩写,IAP 是用户自己的程序在运行过程中对 User Flash的部分区域进行烧写,
|
||||
IAP 是 In Application Programming 的首字母缩写,IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,
|
||||
目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
|
||||
|
||||
通常在用户需要实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,
|
||||
|
@ -25,4 +25,4 @@ bl_mcu_sdk 开源了 boot2_iap 的软件源码,用户可以到 examples/boot2_
|
|||
实验现象
|
||||
-----------------------------
|
||||
|
||||
使用 Dev Cube 完成 IAP 功能的具体步骤,请参阅 `DevCube用户手册 <https://dev.bouffalolab.com/media/upload/doc/DevCube%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cv1.2.pdf>`_ <IAP程序下载>章节。
|
||||
使用 Dev Cube 完成 IAP 功能的具体步骤,请参阅 `DevCube用户手册 <https://dev.bouffalolab.com/media/upload/doc/DevCube%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cv1.2.pdf>`_ <IAP 程序下载>章节。
|
Binary file not shown.
After Width: | Height: | Size: 47 KiB |
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
|
@ -6,33 +6,32 @@ LowPower 低功耗评估
|
|||
|
||||
博流系列芯片拥有丰富的低功耗特性,以适配不同的低功耗应用场合。为了方便用户快速的评测使用 bl 系列 MCU 低功耗性能 bl_mcu_sdk 提供了一套抽象的低功耗接口,将低功耗等级分为四个等级,分别为
|
||||
|
||||
1. Running : Running 为代码正常运行时的功耗,由客户应用代码决定功耗。
|
||||
1. Running : Running 为 CPU 正常运行时的功耗,由客户应用代码执行的功能决定功耗。
|
||||
|
||||
2. WFI :WFI 模式,只关闭了 CPU 以节省功耗,当用户退出 WFI 模式的时候程序将会继续运行。
|
||||
2. WFI :WFI 模式,CPU 的 clock 处于被 Gating 状态,CPU 停止运行,当用户退出WFI模式的时候程序将会继续运行。
|
||||
|
||||
3. PDS : PDS 模式,关闭了芯片上大多数电源域,同时关闭了 CPU ,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚唤醒。
|
||||
3. PDS : PDS 模式,关闭了芯片上大多数电源域,同时关闭了 CPU,和 CPU 处于同一个电源域的 ITCM,DTCM 等 RAM 不可使用,只有 64K 的 OCTAM 可以保存数据,可以通过内部 RTC 进行唤醒,或者使用 GPIO 引脚(在 GPIO 电源域没有关闭的情况下)唤醒。
|
||||
|
||||
4. HBN : HBN 模式,关闭了芯片上绝大多数电源域,关闭了 CPU ,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚唤醒。
|
||||
4. HBN : HBN 模式,关闭了芯片上绝大多数电源域,关闭了 CPU 以及 64K OCRAM,只有位于 AON 域的 4K RAM 可以保存数据,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚(位于 AON 域的引脚)唤醒。
|
||||
|
||||
|
||||
如下表所示
|
||||
bl_mcu_sdk 提供了一个简单的低功耗参考示例(bl_mcu_sdk examples/power/lowpower_test/),旨在帮助用户快速评估低功耗功能,如果需要进一步适配自身的低功耗场景,采取不同的低功耗策略,请查阅相关 datasheet 或者寻找 Boufflao Lab 的技术支持。
|
||||
在该示例中,外设及 CPU 的时钟选择均是晶振 32M。基于该示例的功耗测量结果如下表所示:
|
||||
|
||||
+------------+------------+------------+---------------------+
|
||||
|模式 |参考电流 |对应基础模式|唤醒源 |
|
||||
+============+============+============+=====================+
|
||||
|running |6.28 mA |run | |
|
||||
+------------+------------+------------+---------------------+
|
||||
|WFI |5.14 mA |WFI |任意中断 |
|
||||
+------------+------------+------------+---------------------+
|
||||
|PDS |10 uA |PDS 31 |内部RTC/引脚中断 |
|
||||
+------------+------------+------------+---------------------+
|
||||
|HBN |1 uA |HBN 1 |内部RTC/引脚中断 |
|
||||
+------------+------------+------------+---------------------+
|
||||
+------------+------------+------------+---------------------+---------------------------+
|
||||
|模式 |参考电流 |对应基础模式|唤醒源 |备注 |
|
||||
+============+============+============+=====================+===========================+
|
||||
|Running |5.68 mA |Run | |所有外设时钟都打开 |
|
||||
+------------+------------+------------+---------------------+---------------------------+
|
||||
|WFI |3.14 mA |WFI |任意中断 |除串口外,其它外设时钟关闭 |
|
||||
+------------+------------+------------+---------------------+---------------------------+
|
||||
|PDS |10 uA |PDS 31 |内部RTC/引脚中断 |64K OCRAM保存数据 |
|
||||
+------------+------------+------------+---------------------+---------------------------+
|
||||
|HBN |1 uA |HBN 1 |内部RTC/引脚中断 |4K AON RAM保存数据 |
|
||||
+------------+------------+------------+---------------------+---------------------------+
|
||||
|
||||
|
||||
bl_mcu_sdk 提供了一个简单的低功耗参考示例 (bl_mcu_sdk Examples/power/powerTest/) ,旨在帮助用户快速评估低功耗功能,如果需要进一步适配自身的低功耗场景,采取不同的低功耗策略,请查阅相关 datasheet 或者寻找 Boufflao Lab 的技术支持。
|
||||
|
||||
上表中的参考电流是通过示例固件测试得出的。符合 bl70x 系列 MCU 的 spec 的描述, run wfi pds hbn 四种等级的定义简化了原先的 hbn level以及 pds level的设定。
|
||||
上表中的参考电流是通过示例固件测试得出的。符合 bl70x 系列 MCU 的 spec 的描述,run wfi pds hbn 四种等级的定义简化了原先的 hbn level 以及 pds level 的设定。
|
||||
|
||||
见 bl702_bl704_bl706_DS_EN_Combo_1.9.pdf page 28
|
||||
|
||||
|
@ -45,12 +44,12 @@ bl_mcu_sdk 提供了一个简单的低功耗参考示例 (bl_mcu_sdk Examples/po
|
|||
**编译低功耗示例代码**
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
在工程目录下键入 ``make APP=lowpower_test SUPPORT_SHELL=y BOARD=bl706_lp`` 完成低功耗示例 bl706 的编译。或者直接使用CDK工程,完成编译下载
|
||||
在工程目录下键入 ``make APP=lowpower_test SUPPORT_SHELL=y BOARD=bl706_lp`` 完成低功耗示例 bl706 的编译。或者直接使用 CDK 工程,完成编译下载
|
||||
您可以参考本文档《快速开发指南》来获取更多编译烧写的信息。
|
||||
|
||||
当编译并烧写成功后,连接串口到电脑端,并复位芯片,Xshell 会出现如下图所示的页面。
|
||||
|
||||
.. figure:: img/xShell页面.png
|
||||
.. figure:: img/xShell_lowpower.png
|
||||
|
||||
|
||||
**准备低功耗测试所需的硬件环境**
|
||||
|
@ -59,37 +58,37 @@ bl_mcu_sdk 提供了一个简单的低功耗参考示例 (bl_mcu_sdk Examples/po
|
|||
- 可以串联电流表到电源端的电路板
|
||||
- 电流表
|
||||
- 一台 PC 主机(运行 Windows 或者 Linux 系统)
|
||||
- TTL转USB
|
||||
- TTL 转 USB
|
||||
|
||||
如下图所示,将电流表串联进入 bl706 模组的供电线路,通过PC端的串口调试助手软件,下发不同的低功耗指令,使得 bl706 进入对应的低功耗模式
|
||||
如下图所示,将电流表串联进入 bl706 模组的供电线路,通过 PC 端的串口调试助手软件,下发不同的低功耗指令,使得 bl706 进入对应的低功耗模式
|
||||
观察电流表示值,完成评估。
|
||||
|
||||
.. figure:: img/低功耗示意图.png
|
||||
.. figure:: img/lowpower_arch.png
|
||||
|
||||
**使用Xshell开始评估低功耗性能**
|
||||
**使用 Xshell 开始评估低功耗性能**
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
用户可以通过在 Xshell输入下述指令,进入对应的低功耗模式。
|
||||
用户可以通过在 Xshell 输入下述指令,进入对应的低功耗模式。
|
||||
|
||||
``run``
|
||||
|
||||
- 复位芯片之后,默认进入run模式,没有进入任何低功耗模式,芯片实际在运行 while(1); 语句。
|
||||
- 复位芯片之后,默认进入 run 模式,没有进入任何低功耗模式,芯片实际在运行 while(1); 语句。
|
||||
|
||||
``wfi``
|
||||
|
||||
|
||||
- 进入wfi模式,后面不加任何参数,进入之后,关闭CPU,降低功耗
|
||||
- 进入wfi模式后,任何中断会唤醒,例如uart中断。在Xshell中敲击回车会触发 bl706 UART RX中断,因此可以通过此方法唤醒wfi低功耗模式。
|
||||
- 进入 wfi 模式,后面不加任何参数,进入之后,CPU 处于 clock gating 状态,降低功耗
|
||||
- 进入 wfi 模式后,任何中断会唤醒,例如 uart 中断。在 Xshell 中敲击回车会触发 BL706 UART RX 中断,因此可以通过此方法唤醒 wfi 低功耗模式。
|
||||
|
||||
``pds sleepTim``
|
||||
``pds sleeptime``
|
||||
|
||||
|
||||
- pds 可以选择带一个 sleepTim 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
|
||||
- 如果指令包含 sleepTim 参数,pds 将会在sleepTim * clock_period 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
|
||||
- 进入低功耗模式后,RTC的时钟是32K ,因此 sleepTim 为32768时,表现为睡眠 1S 后唤醒。
|
||||
- pds 可以选择带一个 sleeptime 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
|
||||
- 如果指令包含 sleeptime 参数,pds 将会在``sleeptime * clock_period`` 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
|
||||
- 进入低功耗模式后,RTC 的时钟是 32K,因此 sleeptime 为 32768 时,表现为睡眠 1S 后唤醒。
|
||||
|
||||
``hbn sleepTim``
|
||||
``hbn sleeptime``
|
||||
|
||||
|
||||
- hbn 可以选择带一个 sleepTim 的参数,决定其内部RTC唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
|
||||
- 如果指令包含 sleepTim 参数,hbn 将会在 sleepTim * clock_period 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
|
||||
- 进入低功耗模式后,RTC的时钟是32K ,因此 sleepTim 为32768时,表现为睡眠1S 后唤醒。
|
||||
- hbn 可以选择带一个 sleeptime 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
|
||||
- 如果指令包含 sleeptime 参数,hbn 将会在``sleeptime * clock_period`` 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
|
||||
- 进入低功耗模式后,RTC 的时钟是 32K,因此 sleeptime 为 32768 时,表现为睡眠 1S 后唤醒。
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue