更新时间:2024-07-30 03:10:29下载pdf
本文仅介绍 TuyaOS 开发过程中芯片平台相关的基本信息,有关 TuyaOS 的更多信息请参考 TuyaOS开发者论坛。
在 hardware\FR8018HA\chip_manual\
路径下,获取芯片手册。
在 涂鸦开发者平台,获取开发板,开发板对应的 物料编码 为 2.05.03.00198。
PMU
FR801xH 系列芯片共有 4 组 IO,每组有 8 路,不同型号的芯片引出的 IO 数量有所不同。每个 IO 可配置为上拉模式,上拉电阻约为 50K 欧姆。IO 的工作状态和模式可选择由大数字或者 PMU 控制。
PMU 和 大数字 部分的最重要区别是,由大数字控制的外设从睡眠中醒来,需要重新初始化。
IO 的控制逻辑和功能配置如下图所示:
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 |
速率:
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 函数后置为高电平
请前往 Arm Keil 官方网站 自行安装 Keil 软件,所有安装步骤使用默认配置,推荐使用 mdk528a.exe 版本。
安装期间若弹出安装驱动,请选择 安装 。
打开 Keil 时,若弹出器件包安装,请手动关闭。
安装 Keil 后,将 UV4.exe
文件所在目录的路径,添加到 环境变量 中。例如:TUYAOS_COMPILE_TOOL
: C:\Keil_v5\UV4
,结果如下图所示:
关闭测试功能。
#define TUYA_SDK_TEST 0
关闭涂鸦 Log。
#define ENABLE_LOG 0
#define BOARD_ENABLE_LOG 0
重新进行全量编译后,打开 .map
文件。占用的 Flash 和 RAM 空间如下:
进行固件 OTA 升级之前,您需要更改 proj_main.c
中 firmware_version
的版本号。BootLoader 会检查这个版本号,每一次新的版本号都需要大于旧的版本号。
os_timer 不能在中断里使用。因为 os_timer 中有一个函数 ke_timer_set
,对链表会有操作。蓝牙协议栈底层会用到 ke_timer_set
这个函数。底层在调用这个函数的时候,中断触发调用 os_timer,会在中断里操作到同样的链表,导致链表紊乱,从而出现问题。
开发板使用串口烧录,所以连线方式如下:
USB 转串口工具 | 设备 |
---|---|
VCC | VCC |
GND | GND |
TX | RX(PA2) |
RX | TX(PA3) |
生产固件和 OTA 固件为同一个,如下图所示:
在 pc\tools\FR8018HA\tools\FR8010H_Download_Tool.exe
路径中,打开烧录上位机软件。
通过串口连接设备。
选择固件并且擦除烧录,等待烧录成功即可。
测试方法:使用逻辑分析仪测量 VCC 引脚
和 启动时间检测引脚 的电平变化时间差
检测引脚:外设 → 启动时间检测引脚
Flash 分区和相关容量如下图所示:
在原工程中,修改以下宏,即可调整默认的 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 起始地址
此处测试的功耗为典型的 1s 广播时的平均功耗(超过 100s)。
本地时钟在 12 小时内的误差小于 1 秒。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈