BLE-BK3633

更新时间:2024-07-30 03:10:31下载pdf

本文仅介绍 TuyaOS 开发过程中芯片平台相关的基本信息。有关 TuyaOS 的更多信息,参考 TuyaOS 开发者论坛

硬件环境

芯片手册

  • 获取方式一:接入蓝牙子设备开发框架后,在 hardware\BK3633\chip_manual\BK3633_Datasheet_V1.5.pdf 路径下,获取芯片手册。

  • 获取方式二:访问 Beken 官方网站,文档中心获取 最新资料

开发板

  • 原厂开发板

    BLE-BK3633

硬件外设

BK3633 芯片特点以及产品参数,可访问 Beken 官网 产品中心 > 蓝牙低功耗 SoC > BK3633

  • GPIO

    有三种可选规格,32 引脚、40 引脚和 48 引脚。具有多达 32 个 GPIO 引脚,可以配置为输入或输出。GPIO 引脚可配置用于第二功能。引脚定义详见 hardware\BK3633\chip_manual\BK3633_Datasheet_Rev.2.3.pdf2 Pin Information 以及 3.2 GPIO 章节。TuyaOS SDK 中默认定义引脚序号与 BK3633 引脚对应关系如下表所示:

    TUYA_GPIO_NUM 定义 引脚
    TUYA_GPIO_NUM_0 ~ TUYA_GPIO_NUM_07 P00 ~ P07
    TUYA_GPIO_NUM_10 ~ TUYA_GPIO_NUM_17 P10 ~ P17
    TUYA_GPIO_NUM_20 ~ TUYA_GPIO_NUM_27 P20 ~ P27
    TUYA_GPIO_NUM_30 ~ TUYA_GPIO_NUM_37 P30 ~ P37
  • UART

    BK3633 支持两路串口 UART0 与 UART2,默认串口引脚定义如下表(引脚固定,不支持自由配置)。

    UART 功能 引脚 描述
    UART0 TX P00 作为烧录、授权、上位机测试串口
    默认波特率 9600
    UART0 RX P01 -
    UART2 TX P16 作为 Log 日志口
    默认波特率 115200
    UART2 RX P17 -
  • SPI

    BK3633 仅支持一路 SPI 接口,支持 SPI Master/Slave 角色,最高速率可达 32 MHz,支持设置的 频率范围为 126 KHz ~ 32 MHz

    TuyaOS 中 SPI 初始化默认使用 SPI Master,将 MISO 与 MOSI 通过引线连接(P06 与 P05 短接)即可测试验证。默认引脚定义如下表所示:

    SPI 功能 引脚
    SPI0 CS P07
    SPI0 CLK P04
    SPI0 MOSI P05
    SPI0 MISO P06
  • I2C

    BK3633 仅支持一路 I2C 接口,支持 100 kHz 和 400 kHz 通讯速率可调。SDK 内配置 仅支持 I2C Master 与 7bit 地址。由于 OLED 屏幕为了显示 SDK 信息(TuyaOS Demo)需预先初始化,TuyaOS 中 I2C 初始化默认使用 I2C0,引脚定义如下表所示:

    I2C 功能 引脚
    I2C0 SCL P02
    I2C0 SDA P03
  • PWM

    BK3633 支持 6 路 PWM 输出,即 channel 0~5。SDK 内默认采用 16M 主晶振作为时钟,支持设置频率范围:1Hz ~ 8MHz。通道与默认引脚定义如下表所示:

    通道 引脚
    0 P10
    1 P11
    2 P12
    3 P13
    4 P14
    5 P15
  • ADC

    10 位 ADC,多达 8 个通道,包括 5 个外部测试通道和 3 个内部单通道,支持单次和连续模式。其中外部通道支持电压范围 0~1.05V,精度 ±50 mV。通道与引脚定义如下表所示:

    通道 ADC Source
    0 Temperature Sensor(不推荐使用)
    1 P31
    2 P32
    3 P33
    4 P34
    5 P35
    6 VBAT1V-pin
    7 VCCBAT-pin

    提高 ADC 测量精度的方法

    • 为了确保转换值的稳定性,ADC 口需要加个 10nF 到地电容

    • 对待测硬件做线性度校准,具体方法如下:

      • 测量 VBAT 基准值。往 VCCBAT 接入稳定标准的 3V 电压,测量通道 7 的 ADC 值并记录,以下简称 Ymax,也就是 0.75V 点(VBAT/4)的 ADC 值。建议同批次的硬件多抽样几块板子测量,最终求稳定值。

      • 测量 0 点值。将通道 1-引脚 P31 接到板子的 GND,测量通道 1 的 ADC 值并记录,以下简称 Ymin,也就是 0V 点的 ADC 值。多样本测试方法同上。

      • 实际测量。实际测量通道 x 的 ADC 值,以下简称 Ysample。通过公式换算测量电压值,单位 mV。

        V = 750*(Ysample-Ymin) / (Ymax-Ymin)

      BLE-BK3633
    • 上述测试基准点的值,需同步填入软件中,位于 tkl_adc.c 文件下,具体如下所示:

      // The macro definition is located within the tkl_adc.c file.
      // Replace it with the actual measured values from the hardware.
      
      #define ADC_CALIC_VAL_0V    ( 16 ) //!< ADC measurement value when connected to GND
      #define ADC_CALIC_VAL_0_75V ( 179 ) //!< Connect a standard 3V voltage to VCCBAT, and measure the ADC value.
      
      
  • Flash

    操作 耗时(ms)
    Erase 4K 8 ms
    Write 4K (已擦除) 35.8 ms
    Read 4K 6.89 ms
    BLE-BK3633
  • 按键

    P32(引脚简称:P32)

    • 短按唤醒设备。
    • 长按 3s,本地恢复出厂设置。
  • 启动时间检测引脚

    P31(引脚简称:P31)

    进入 main 函数后置为高电平。

软件环境

软件环境涉及 Keil 和 BK3633 烧录环境安装。

Keil

  1. 前往 Arm Keil 官方网站 自行安装 Keil 软件,所有安装步骤使用默认配置,推荐使用 mdk528a.exe 版本。

  2. 安装期间若弹出安装驱动,选择 安装

  3. 打开 Keil 时,若弹出器件包安装,请手动关闭。

  4. 安装 Keil 后,将 UV4.exe 文件所在目录的路径,添加到 环境变量 中。例如:TUYAOS_COMPILE_TOOL: C:\Keil_v5\UV4,结果如下图所示:

    BLE-BK3633
  5. 安装 Legacy pack for Arm7, Arm9 & Cortex-R devices

烧录工具

支持串口烧录,烧录工具安装包位于 .\vendor\bk3633_ble\sdk\BK3633_DesignKit_V06_2411\Tools\ 下,有 2 款工具,分别为:

  • bk_writer_V2.00_20231218.exe
  • BKFIL,推荐使用

开发软件

计算 Flash 和 RAM 占用

  1. 关闭测试功能。

    #define TUYA_SDK_TEST 0
    
  2. 关闭涂鸦 Log。

    #define ENABLE_LOG 0
    #define BOARD_ENABLE_LOG 0
    
  3. 重新进行全量编译后,打开 .map 文件可知,占用的 RAM 和 Flash 空间如下:

    BLE-BK3633

烧录固件

连线说明

使用 USB 串口工具连接板子电源、地以及 UART0(TX:P00 引脚,RX:P01 引脚)。将 RST 复位信号与芯片复位脚 接在一起,对应步骤脚本/上位机都会自动控制 RST 引脚,使设备复位。硬件连接及工具如下图所示:

BLE-BK3633

固件说明

编译输出产物路径位于 .\log\output\app下,BK3633 固件主要由三部分组成:boot + stack + app,其中:

  • tuyaos_demo_ble_peripheral_merge_crc.bin = boot + stack + app,支持 UART 烧录,也就是日常说的 生产固件
  • tuyaos_demo_ble_peripheral_oad.bin = app,支持 UART 烧录,也就是日常说的 OTA 升级固件
  • tuyaos_demo_ble_peripheral_stack_oad.bin = stack + app,支持 UART 烧录。除非有升级 stack 的需求,一般用不到。
BLE-BK3633

烧录方式一:原厂工具烧录

BKFIL 使用说明

BLE-BK3633 BLE-BK3633

操作说明-配置与主页面

1:选择烧录文件路径。选择后,主界面的 Bin 文件路径会同步。
2全部擦除。如有需要时,勾选该选项,将整个片子擦除一遍。后续如仅更新代码,无需勾选。
3选择串口。选择对应烧录串口,波特率可用 1M 或 2M。
4选择烧录文件。在该界面也可重新选择 Bin 文件路径。
5常用操作。按需选择烧录、擦除 Flash(不同于全片擦除,仅擦除代码区)、读取 Flash 操作。

烧录方式二:涂鸦产测工具

BK3633 平台目前仅 芯片烧录 上位机工具支持,也就是日常说的 小黄鸭工具,烧录完固件后进行产测授权。

BLE-BK3633

平台特性

启动时间

  • 测试方法:使用逻辑分析仪,测量 VCC 引脚启动时间检测引脚 的电平变化时间差。

  • 检测引脚:外设 > 启动时间检测引脚

  • 启动时间说明:从上电运行至 main 函数,需要 500 毫秒左右 的时间。

    BLE-BK3633

Flash 分区

BK3633 的 SiP Flash 支持 2 种规则,分别为 512KB or 1MB。您需按实际使用芯片规格定义,建议在 app_config.h 下增加宏定义配置,具体如下所示。

// app_config.h
#define BOARD_CHIP_TYPE 0  //!< 512KB Flash
#define BOARD_CHIP_TYPE 1  //!< 1MB Flash

// Flash
//<0=> 512K flash
//<1=> 1M flash
#ifndef BOARD_CHIP_TYPE
#define BOARD_CHIP_TYPE                         ( 0 )
#endif

512KB Flash 分区

BLE-BK3633

1MB Flash 分区

BLE-BK3633

分区调整方法

在原工程中修改 board.h 配置文件下的一些宏定义,即可调整默认的 Flash 分区,会涉及改动的几种可能情况,以下 512K 版本为例 说明。

  • application 代码大小超过了默认分区的 136K,如何扩容?压缩 unused 区域。

  • unused 区域用于存储业务数据,但空间不够,如何扩容?压缩 application 与 OTA 区域。

  • unused 区域 SDK 默认用于存储一些测试数据,可按需自行分配规划。

  • 其他的分区,原则上没必要也不建议改动

    Flash 分区调整后,需对应调整 boot 下的一些参数配置,boot 工程路径位于:.\vendor\bk3633_ble\sdk\BK3633_DesignKit_V06_2411\SDK\projects\boot 下,具体调整方式参考 Boot 调整复制 编译后生成的 boot 产物 bk3633_boot.bin,并用来 替换 位于 .\.log\output\boot 下的文件。

OTA 存储数据起始地址与大小

// board.h

#if (BOARD_CHIP_TYPE == 0)
// 512K Flash
#ifndef BOARD_FLASH_TUYA_INFO_START_ADDR
#define BOARD_FLASH_TUYA_INFO_START_ADDR        (0x79000)
#endif

#ifndef BOARD_FLASH_SDK_TEST_START_ADDR
#define BOARD_FLASH_SDK_TEST_START_ADDR         (0x75000)
#endif

#ifndef BOARD_FLASH_OTA_START_ADDR
#define BOARD_FLASH_OTA_START_ADDR              (0x4A000)
#endif

#ifndef BOARD_FLASH_OTA_END_ADDR
#define BOARD_FLASH_OTA_END_ADDR                (0x6C000)
#endif

#ifndef BOARD_FLASH_OTA_SETTING_ADDR
#define BOARD_FLASH_OTA_SETTING_ADDR            (0x7D000)
#endif

#ifndef BOARD_FLASH_OTA_SIZE
#define BOARD_FLASH_OTA_SIZE                    (BOARD_FLASH_OTA_END_ADDR - BOARD_FLASH_OTA_START_ADDR)
#endif

#else
// 1M Flash
#ifndef BOARD_FLASH_TUYA_INFO_START_ADDR
#define BOARD_FLASH_TUYA_INFO_START_ADDR        (0xF9000)
#endif

#ifndef BOARD_FLASH_SDK_TEST_START_ADDR
#define BOARD_FLASH_SDK_TEST_START_ADDR         (0xF5000)
#endif

#ifndef BOARD_FLASH_OTA_START_ADDR
#define BOARD_FLASH_OTA_START_ADDR              (0x75000)
#endif

#ifndef BOARD_FLASH_OTA_END_ADDR
#define BOARD_FLASH_OTA_END_ADDR                (0xC2000)
#endif

#ifndef BOARD_FLASH_OTA_SETTING_ADDR
#define BOARD_FLASH_OTA_SETTING_ADDR            (0xFD000)
#endif

#ifndef BOARD_FLASH_OTA_SIZE
#define BOARD_FLASH_OTA_SIZE                    (BOARD_FLASH_OTA_END_ADDR - BOARD_FLASH_OTA_START_ADDR)
#endif

#endif

Unused 区域

// board.h

// SDK 测试存储地址 16K
/**@brief   Define storage SDK test data addr, such as storage bulk data, and product test common data. */
// 512KB Flash
#ifndef BOARD_FLASH_SDK_TEST_START_ADDR
#define BOARD_FLASH_SDK_TEST_START_ADDR         (0x75000)
#endif

// 1MB Flash
#ifndef BOARD_FLASH_SDK_TEST_START_ADDR
#define BOARD_FLASH_SDK_TEST_START_ADDR         (0xF5000)
#endif

Boot 调整

BLE-BK3633

功耗

测试方法

  1. 将板子所有外接引线全部拆除,仅保留与上位机通信串口。可用 USB 转 TTL 工具接板子的串口,USB 串口的 TX 接 P01,USB 串口的 RX 接 P00

  2. 将带有供电能力的电流表接入,供电电压 3.3V。其中电源正极接 +3V 丝印位置,电源负极接板子 GND。

  3. 通过上位机 功耗管理,即可测试不同模式的功耗数据。

    BLE-BK3633

功耗数据

  • 此处测试的功耗为典型的 1s 广播 的平均功耗。

    BLE-BK3633
  • 此处测试的功耗为典型的 600ms 广播 的平均功耗。

    BLE-BK3633
  • 此处测试的功耗为典型的系统 Deep Sleep 模式 平均功耗。关闭所有外设,关闭广播,RTC 保持,支持 GPIO 唤醒,RAM 数据保持

    BLE-BK3633

本地时钟挂测

根据您的硬件,选择 32 KHz 时钟来源,在 board.h 下进行对应配置,具体如下所示。

// Select 32K clock, set to 1 to use internal RC32K, and set to 0 to use external 32.768K crystal.
//<0=> external 32.768K crystal
//<1=> internal RC32K
#ifndef BOARD_USED_INTER_RC32K
#define BOARD_USED_INTER_RC32K                  (1)
#endif
  • QFN32 支持外接 32 kHz 晶体,其他封装无对应引脚,默认使用内部 RC。如果对时钟精度有高要求,16M 主晶体需选择精度高的,或产品方案上有可做时间同步的设备(例如蓝牙网关),子设备可定期主动进行时间同步。

  • QFN48 即将推出支持外接 32 kHz 晶体版本,引脚为 P37

测试硬件:原厂开发板,16 MHz 晶体 20ppm 精度,外接 32.768K 晶体。本地时钟长运挂机 24 小时,误差在 2 秒左右。

BLE-BK3633