BLE-FR801x

更新时间:2024-04-17 06:15:32下载pdf

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

硬件环境

芯片手册

hardware\FR8018HA\chip_manual\ 路径下,获取芯片手册。

开发板

涂鸦 IoT 开发平台,获取开发板,开发板对应的 物料编码2.05.03.00198

BLE-FR801x

硬件外设

PMU

FR801xH 系列芯片共有 4 组 IO,每组有 8 路,不同型号的芯片引出的 IO 数量有所不同。每个 IO 可配置为上拉模式,上拉电阻约为 50K 欧姆。IO 的工作状态和模式可选择由大数字或者 PMU 控制。

  • PMU:全称 Power Management Unit,进入低功耗模式后继续工作。
  • 大数字:进入低功耗后断电。

PMU大数字 部分的最重要区别是,由大数字控制的外设从睡眠中醒来,需要重新初始化。

IO 的控制逻辑和功能配置如下图所示:

BLE-FR801x

GPIO

FR8018H 共有 32 个 GPIO,但开发板上并未引出所有 IO,PC4 完全不可用。

测试 GPIO 输入输出时,上位机 Logic 发送的引脚号为 0~31,开发板对应的引脚如下:

FR8018H Logic FR8018H Logic FR8018H Logic FR8018H Logic
PA0 0 PB0 8 PC0 16 PD0 24
PA1 1 PB1 9 PC1 17 PD1 25
PA2 2 PB2 10 PC2 18 PD2 26
PA3 3 PB3 11 PC3 19 PD3 27
PA4 4 PB4 12 PC4 20 PD4 28
PA5 5 PB5 13 PC5 21 PD5 29
PA6 6 PB6 14 PC6 22 PD6 30
PA7 7 PB7 15 PC7 23 PD7 31

UART

该平台有串口 UART0、UART1,任意一个 IO 均可映射,但上位机的测试串口功能用于测试指定的两组 IO

UART 功能 引脚 描述
UART0 TX PA1 Log
UART0 RX PA0
UART1 TX PA3 烧录、授权、测试
UART1 RX PA2

SPI (SSP)

FR8018 数据手册以及 c 文件中均将 SPI 描述为 SSP,FR8018H 只有一个 SSP 外设,即 SSP0,SSPDIN 和 SSPDOUT 连接即可测试。

SSP 引脚 引脚
SSP0 CS PA5
SSP0 SSPCLK PA4
SSP0 SSPDIN PA7
SSP0 SSPDOUT PA6

速率:

  • 125000
  • 250000
  • 500000
  • 1000000
  • 2000000

IIC

FR8018H 总共有两个 IIC,任意 IO 均可映射为一组 I2C 接口(PC4 除外),由于 OLED 屏幕为了显示 SDK 信息(TuyaOS Demo)需要预先初始化,所以测试仅支持 1 个 IIC

功能 引脚
I2C0_SCL PD0
I2C0_SDA PD1

PWM

通道 引脚
0 PC0
1 PC1
2 PC2
3 PC3
4 PB4
5 PB5

ADC

仅支持 10 位分辨率

通道 引脚
0 PD4
1 PD5
2 PD6
3 PD7

按键

PB6 (14)
短按唤醒设备
长按 3s,本地恢复出厂设置

上电启动检测引脚

PC5 (21)
进入 main 函数后置为高电平

软件环境

Keil

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

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

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

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

BLE-FR801x

开发软件

计算 Flash 和 RAM 占用

  1. 关闭测试功能。

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

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

    BLE-FR801x

OTA

进行固件 OTA 升级之前,您需要更改 proj_main.cfirmware_version 的版本号。BootLoader 会检查这个版本号,每一次新的版本号都需要大于旧的版本号。

BLE-FR801x

os_timer

os_timer 不能在中断里使用。因为 os_timer 中有一个函数 ke_timer_set,对链表会有操作。蓝牙协议栈底层会用到 ke_timer_set 这个函数。底层在调用这个函数的时候,中断触发调用 os_timer,会在中断里操作到同样的链表,导致链表紊乱,从而出现问题。

烧录固件

连线说明

开发板使用串口烧录,所以连线方式如下:

USB 转串口工具 设备
VCC VCC
GND GND
TX RX(PA2)
RX TX(PA3)

固件说明

生产固件和 OTA 固件为同一个,如下图所示:

BLE-FR801x

烧录方式

  1. pc\tools\FR8018HA\tools\FR8010H_Download_Tool.exe 路径中,打开烧录上位机软件。

  2. 通过串口连接设备。

  3. 选择固件并且擦除烧录,等待烧录成功即可。

    BLE-FR801x BLE-FR801x

平台特性

启动时间

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

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

    BLE-FR801x

Flash 分区

Flash 分区和相关容量如下图所示:

BLE-FR801x
  • 在原工程中,修改以下宏,即可调整默认的 Flash 分区

    // Flash
    #ifndef BOARD_FLASH_BULK_DATA_START_ADDR
    #define BOARD_FLASH_BULK_DATA_START_ADDR        (0x74000)
    #endif
    
    #ifndef BOARD_FLASH_TUYA_INFO_START_ADDR
    #define BOARD_FLASH_TUYA_INFO_START_ADDR        (0x78000)
    #endif
    
    #ifndef BOARD_FLASH_OTA_INFO_ADDR
    #define BOARD_FLASH_OTA_INFO_ADDR               (0x7C000)
    #endif
    
    #ifndef BOARD_FLASH_OTA_START_ADDR
    #define BOARD_FLASH_OTA_START_ADDR              (0x32000)
    #endif
    
    #ifndef BOARD_FLASH_OTA_END_ADDR
    #define BOARD_FLASH_OTA_END_ADDR                (0x64000)
    #endif
    
    #ifndef BOARD_FLASH_OTA_SIZE
    #define BOARD_FLASH_OTA_SIZE                    (BOARD_FLASH_OTA_END_ADDR - BOARD_FLASH_OTA_START_ADDR)
    #endif
    
  • 如果想要调整 OTA 区域的位置,除了调整以上宏以外,还需要修改 proj_main.c 里面的下列位置为 OTA 起始地址

    BLE-FR801x

功耗

此处测试的功耗为典型的 1s 广播时的平均功耗(超过 100s)。

BLE-FR801x

本地时钟挂测

本地时钟在 12 小时内的误差小于 1 秒。

BLE-FR801x