登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情~
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
1
Star
0
Fork
0
Telink Semiconductor
/
tc_ble_sdk
代码
Issues
0
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
发行版
最新版
V4.0.2.3
f7ea320
2026-04-17 10:37
对比
Release V4.0.2.3
mwchen
# V4.0.2.3(PR) ### Version * SDK version: tc_ble_sdk_V4.0.2.3 * Chip Version - B85: TLSR825X - B87: TLSR827X - TC321X (A0/A1/B0) * Hardware Version - B85: C1T139A30_V1_2, C1T139A3_V2_0 - B87: C1T197A30_V1_1, C1T201A3_V1_0 - TC321X: C1T357A20_V1_1, C1T362A5_V1_0, C1T357A78_V1_0, C1T357A20_V2_1 * Platform Version - tc_platform_sdk V3.4.0 * Toolchain Version - TC32 ELF GCC4.3 ( IDE: [Telink IoT Studio](https://www.telink-semi.com/development-tools) ) ### Note - (TC321X): The function to retain the values of analog registers 0x3b and 0x3c after a software reboot has been restored. As a result, the low battery check logic is now aligned with the B85 and B87 platforms, using bit 0 of register 0x3b as the low battery check flag: the "LOW_BATT_FLG" is cleared when voltage is normal, and set when voltage is abnormal. On first power-up, the system can operate normally if the voltage is above 2.0 V; if it enters deep sleep mode due to voltage dropping below 2.0 V, the minimum voltage required to resume operation is increased to 2.2 V. Note that enabling this feature requires adding a "reboot_data" section. ### Features - **Chip** - (TC321X) Supported chip TC321X B0. - **Application** - (B85/B87/TC321X): Added new flash models and implement protection mechanisms for it. - (TC321X): Modified the low battery check logic to be consistent with the B85 and B87 platforms. - (TC321X): Added voltage calibration functionality for the TC321X B0. ### Bug Fixes - **PM** - For TC321X - Fixed an issue where failure to enter sleep mode due to the wake-up key being pressed could result in disconnection. - Detailed Description: In key-wakeup mode, if the system detects that the key is already pressed when attempting to enter sleep, sleep entry is correctly aborted. However, a flaw in the error handling logic previously caused the interrupt mask to be lost, leading to communication disconnection. - After Fix: The device now operates normally and no longer disconnects when sleep entry is prevented by a pressed key. - Update Recommendation: Recommended to update. - **Analog Register** - For TC321X - Fixed the issue where analog registers 0x3b (PM_ANA_REG_POWER_ON_CLR_BUF1) and 0x3c (PM_ANA_REG_POWER_ON_CLR_BUF2) were reset to their default values after software reboot. - Detailed Description: When the chip recovered from a reboot state, registers 0x3b and 0x3c were restored to their default values, resulting in loss of stored data. - After Fix: After the fix, when the chip recovers from a reboot state, registers 0x3b and 0x3c will retain their pre-reboot values. - Update Recommendation: Recommended to update. - **Scan** - For B85/TC321X - Fix the issue where the TIFS timing for sending scan request and connect indication is inaccurate when operating as a central device. - Detailed Description: When the system clock frequency is below 48 MHz and operating as a central device, the TIFS timing for the transmitted scan request and connect indication is inaccurate. - After Fix: The TIFS timing for the transmitted scan request and connect indication is accurate. - Update Recommendation: Evaluate if needed. - For B85/B87/TC321X - Fixed incorrect SCA value in the Connect Indication packet sent when acting as a central device. - Detailed Description: The SCA (Clock Accuracy) value in the Connect Indication packet was incorrect when the device acted as a central. - After Fix: The SCA value in the Connect Indication packet is now correct. - Update Recommendation: Evaluate if needed. ### Refactoring - **Application** - (TC321X): To make it more convenient for customers to configure the 32k watchdog, the handling of disabling the 32k watchdog is moved out of cpu_wakeup_init and placed after the execution of the cpu_wakeup_init function. - (TC321X): Clean up compiler errors when UI_LED_ENABLE is disabled while REMOTE_IR_ENABLE or REMOTE_IR_LEARN_ENABLE is enabled in ble_remote reference design. - (B85/B87/TC321X): Move the configuration of UART_PRINT_DEBUG_ENABLE from app_config.h to the individual configuration files of each board, and add a check for DEBUG_INFO_TX_PIN not being set in application/print/putchar.c. - (TC321X): Change the default board number selection for TC321X to BOARD_TC321X_EVK_C1T357A20_V2_1. - (B85/B87/TC321X): Remove the setting of blc_ll_setMaxAdvDelay_for_AdvEvent(MAX_DELAY_0MS)in acl_c1p1_demo and acl_peripheral_demo. * **HCI** - (B85/B87/TC321X): Clean up comments in hci.h, hci_cmd.h, and hci_const.h. - **link** - (TC321X): Add a new section "reboot_data". ### BREAKING CHANGES * N/A. ### CodeSize * **B85** | reference design | Firmware size (kBytes) | SRAM size (kBytes) | deepsleep retention SRAM size (kBytes) | | :------------- | :-----------------------: | :--------------------------: | :-----------------------------------: | | acl_peripheral_demo | 83.5 | 32.5 | 28.9 | | acl_central_demo | 74.1 | 37.3 | / | | acl_connection_demo | 89.2 | 43.6 | / | | acl_c1p1_demo | 95.4 | 34.3 | 30.3 | * **B87** | reference design | Firmware size (kBytes) | SRAM size (kBytes) | deepsleep retention SRAM size (kBytes) | | :------------- | :-----------------------: | :--------------------------: | :-----------------------------------: | | acl_peripheral_demo | 83.0 | 32.6 | 28.9 | | acl_central_demo | 74.8 | 37.5 | / | | acl_connection_demo | 90.3 | 43.8 | / | | acl_c1p1_demo | 95.0 | 34.6 | 30.4 | * **TC321X** | reference design | Firmware size (kBytes) | SRAM size (kBytes) | deepsleep retention SRAM size (kBytes) | | :------------- | :-----------------------: | :--------------------------: | :-----------------------------------: | | acl_peripheral_demo | 91.8 | 34.9 | 31.3 | | acl_central_demo | 82.9 | 39.8 | / | | acl_connection_demo | 98.7 | 46.3 | / | | acl_c1p1_demo | 103.5 | 36.7 | 32.7 | | ble_remote | 105.6 | 41.2 | 36.3 | | eslp_esl_demo | 163.0 | 49.1 | 45.3 | ### Version * SDK 版本: tc_ble_sdk_V4.0.2.3 * Chip 版本 - B85: TLSR825X - B87: TLSR827X - TC321X (A0/A1/B0) * Hardware 版本 - B85: C1T139A30_V1_2, C1T139A3_V2_0 - B87: C1T197A30_V1_1, C1T201A3_V1_0 - TC321X: C1T357A20_V1_1, C1T362A5_V1_0, C1T357A78_V1_0, C1T357A20_V2_1 * Platform 版本 - tc_platform_sdk V3.4.0 * Toolchain 版本 - TC32 ELF GCC4.3 ( IDE: [Telink IoT Studio](https://www.telink-semi.com/development-tools) ) ### Note - (TC321X):现已恢复TC321X模拟寄存器0x3b和0x3c在软件复位后的值保留功能,因此将其低压检测逻辑调整为与B85及B87平台保持一致,并以0x3b模拟寄存器的BIT(0)作为低压检测的标志位:电压正常时清除“LOW_BATT_FLG”标志位,异常时则置位该标志。系统首次上电时,电压高于2.0V即可正常运行;若因电压低于2.0V进入deep sleep状态,则再次恢复工作所需的电压阈值提升至2.2V。需要注意,支持此功能需要添加“reboot_data”段。 ### Features * **Chip** - (TC321X):支持 TC321X B0 芯片。 * **Application** - (B85/B87/TC321X):增加支持的Flash型号并为其添加保护处理。 - (TC321X):修改低压检测逻辑,与B85及B87平台保持一致。 - (TC321X):为TC321X B0芯片添加电压校准功能。 ### Bug Fixes - **PM** - For TC321X - 修复设置为按键唤醒时,若因按键在唤醒态导致没能进入睡眠,会导致断连。 - 详细描述:当设置为睡眠按键唤醒时,如果进入睡眠时按键恰好处于按下的状态,那么将禁止进入睡眠,但是由于错误的处理,导致中断mask丢失,造成断连。 - 修复效果:当由于按键按下未进入睡眠时,程序正常工作不再出现断连。 - 更新建议:建议更新。 - **Analog Register** - For TC321X - 修复芯片重启后,0x3b(PM_ANA_REG_POWER_ON_CLR_BUF1) 与 0x3c(PM_ANA_REG_POWER_ON_CLR_BUF2) 模拟寄存器被重置为默认值的问题。 - 详细描述:当芯片从软件 reboot 状态恢复时,0x3b 与 0x3c 模拟寄存器会被恢复为默认值,导致存储的值丢失。 - 修复效果:当芯片从软件 reboot 状态恢复时,0x3b 与 0x3c 模拟寄存器仍保留为软件 reboot 之前的值。 - 更新建议:建议更新。 - **Scan** - For B85/TC321X - 修复作为central端时,发送scan req和connect ind的TIFS不准的问题。 - 详细描述:当主频低于48M且作为central端时,发送的scan request和connect indication的TIFS不准。 - 修复效果:发送的scan request和connect indication的TIFS是准确的。 - 更新建议:自行评估。 - For B85/B87/TC321X - 修复作为central端时,发送的connect ind包中的SCA值错误的问题。 - 详细描述:当作为central端时,发送的connect indication包中的SCA(Clock Accuracy)值错误。 - 修复效果:发送的connect indication包中的SCA值正确。 - 更新建议:自行评估。 ### Refactoring * **Application** - (TC321X): 为了更方便客户对32k watchdog的配置,将关闭32k watchdog的处理从cpu_wakeup_init中移出,并放置在cpu_wakeup_init函数执行结束之后。 - (TC321X):清理在ble_remote参考设计中禁用 UI_LED_ENABLE 并启用 REMOTE_IR_ENABLE 和 REMOTE_IR_LEARN_ENABLE时的编译错误。 - (B85/B87/TC321X):将 UART_PRINT_DEBUG_ENABLE 的配置从 app_config.h 移至各 board 独立配置文件中,并在 application/print/putchar.c 中添加未设置 DEBUG_INFO_TX_PIN 的检查。 - (TC321X):将 TC321X 的默认板号选择修改为BOARD_TC321X_EVK_C1T357A20_V2_1。 - (B85/B87/TC321X):移除acl_c1p1_demo和acl_peripheral_demo中blc_ll_setMaxAdvDelay_for_AdvEvent(MAX_DELAY_0MS)的设置。 * **HCI** - (B85/B87/TC321X):清理 hci.h、hci_cmd.h 和 hci_const.h 中的注释。 - **link** - (TC321X): 添加"reboot_data" 段。 ### BREAKING CHANGES * N/A. ### CodeSize * **B85** | reference design | Firmware size (kBytes) | SRAM size (kBytes) | deepsleep retention SRAM size (kBytes) | | :------------- | :-----------------------: | :--------------------------: | :-----------------------------------: | | acl_peripheral_demo | 83.5 | 32.5 | 28.9 | | acl_central_demo | 74.1 | 37.3 | / | | acl_connection_demo | 89.2 | 43.6 | / | | acl_c1p1_demo | 95.4 | 34.3 | 30.3 | * **B87** | reference design | Firmware size (kBytes) | SRAM size (kBytes) | deepsleep retention SRAM size (kBytes) | | :------------- | :-----------------------: | :--------------------------: | :-----------------------------------: | | acl_peripheral_demo | 83.0 | 32.6 | 28.9 | | acl_central_demo | 74.8 | 37.5 | / | | acl_connection_demo | 90.3 | 43.8 | / | | acl_c1p1_demo | 95.0 | 34.6 | 30.4 | * **TC321X** | reference design | Firmware size (kBytes) | SRAM size (kBytes) | deepsleep retention SRAM size (kBytes) | | :------------- | :-----------------------: | :--------------------------: | :-----------------------------------: | | acl_peripheral_demo | 91.8 | 34.9 | 31.3 | | acl_central_demo | 82.9 | 39.8 | / | | acl_connection_demo | 98.7 | 46.3 | / | | acl_c1p1_demo | 103.5 | 36.7 | 32.7 | | ble_remote | 105.6 | 41.2 | 36.3 | | eslp_esl_demo | 163.0 | 49.1 | 45.3 |
最后提交信息为:
refactor(release note): update release note
V4.0.2.2
0e8252f
2026-03-19 20:28
对比
Release V4.0.2.2
mwchen
# V4.0.2.2(PR) ### Version * SDK version: tc_ble_sdk V4.0.2.2 * Chip Version - B85: TLSR825X - B87: TLSR827X - TC321X (A0/A1) * Hardware Version - B85: C1T139A30_V1_2, C1T139A3_V2_0 - B87: C1T197A30_V1_1, C1T201A3_V1_0 - TC321X: C1T357A20_V1_1, C1T362A5_V1_0, C1T357A78_V1_0 * Platform Version - tc_platform_sdk V3.3.1 * Toolchain Version - TC32 ELF GCC4.3 ( IDE: [Telink IoT Studio](https://www.telink-semi.com/development-tools) ) ### Note * (TC321X) Since the analog registers of TC321X are cleared after a software reboot, watchdog reboot or deep sleep, the judgment logic for low battery check has been modified. The flag bit `LOW_BATT_FLG` is set when the voltage is normal and cleared when it is abnormal. As a result, during the first power-up, the voltage must be above 2.2V(user configurable) for the program to run; otherwise, it will enter deep sleep mode. ### Known issue * For TC321X, in the ble_remote reference design, after switching the key mode to IR mode, if the chip enters deep sleep and then wakes up, the key mode state will be lost. It is necessary to reconfigure it to IR mode. ### Features * **Chip** - Support TC321X chip A1 version. * **Application** - Add ADC calibration in TC321X. - TC321X ble_remote reference design supports IR Learning. - For TC321X, add the eslp_esl_demo project, which supports the ESL(Electronic Shelf Label) Server function. - For TC321X, add the ESL image display board `C1T357A78.h` in the "vendor/common/boards" folder. * **Controller** - Add PAwR(Periodic Advertising with Responses): * Add `PAwR_sync.h` in the folder "stack/ble/controller/ll/prdadv". - Add PAST(Periodic Advertising Sync Transfer): * Add the new folder "stack/ble/controller/ll/past". * **Host** - Add an API `blc_smp_searchBondingCentralDevice_by_PeerMacAddress()` to obtain bonding information according to the central's address and address type. - Add an API `blc_smp_deleteBondingCentralInfo_by_PeerMacAddress()` to delete bonding central information according to the peer device address and device address type. - Add the API `blc_l2cap_pktHandler_V1()` for ESL to handle L2CAP data. - For TC321X, add `stack/ble/profile`,`stack/ble/host/att` and `stack/ble/host/gatt` folders to support the ESL Server function. ### Bug Fixes * **Application** - Fixed (TC321X): Enabling `APP_BATT_CHECK_ENABLE` leads to increased current consumption in deep sleep mode. * **Controller** - Fixed (B85/B87/TC321X): For the `TEST_BLE_PHY` reference design in feature_test, when switching from 1M PHY to 2M PHY, the 2M PHY can not work properly. - Fixed (B85/B87/TC321X): Frequent GPIO wake-up will cause the disconnection issue when `BLE_APP_PM_ENABLE` is enabled. * **CoC** - Fixed (B85/B87/TC321X): The parameter check is incorrect when establishing new CoC (Connection-oriented channels) channels. * **Driver** - Fixed (TC321X A0): MCU reboot failure after OTA when calling start_reboot. ### Refactoring * **Application** - (TC321X) Delete Audio DMIC setting. - (TC321X) Optimize the pop noise issue when audio is turned on, and disable the audio module after audio ends to reduce power consumption. - (B85/B87/TC321X) When the `flash_mid` acquisition fails or no matching MID value is found, set `blc_flashProt.init_err = 1` to indicate a flash protection initialization failure. - (B85/B87/TC321X) Place the variable `tick_adv_rpt` in the "retention_data" sector to prevent it from being reset after deep retention sleep. - (TC321X) Remove `wd_32k_stop()` in acl_c1p1_demo initialization, which has already been handled in the library. - (TC321X) Modify the default setting of DEBUG_GPIO in `C1T357A20.h`. - (TC321X) Modify the low battery check GPIO pin in both `C1T357A20.h` and `C1T362A5.h` to `GPIO_PB5`. * **Host** - (B85/B87/TC321X) Move the contents of the "stack/ble/host/attr" folder to "stack/ble/host/att/att_v0" folder. - (TC321X) Add ESL function related header file references in `ble_host.h`. * **Controller** - (B85/B87/TC321X) Optimize the SRAM size for c1p1. - (B85/B87/TC321X) Clean the master and slave name in the controller: - Rename API `blc_ll_getCurrentMasterRoleNumber()` to `blc_ll_getCurrentCentralRoleNumber()`. - Rename API `blc_ll_getCurrentSlaveRoleNumber()` to `blc_ll_getCurrentPeripheralRoleNumber()`. - Add macro definitions `blc_ll_getCurrentSlaveRoleNumber()` and `blc_ll_getCurrentMasterRoleNumber()` in `contr_comp.h` for compatibility. - Remove the duplicate definition of the API `blc_ll_initLegacyAdvertising_module()` in `leg_adv.h`. - (B85/B87/TC321X) Modify the definition of `PERD_ADV_PARAM_LENGTH` to 456. - (TC321X) Add PAwR and PAST header file references to `ble_controller.h`. * **HCI** - (TC321X) Add command and event definitions for the PAwR and PAST HCI interfaces to `hci_const.h`, `hci_cmd.h`, and `hci_event.h`. * **Link & Startup** - (TC321X) Add a new sector "platform_func" to store the platform data. - (B85/B87) Add a new sector "cstartup_ram_funcs". - (B85/B87/TC321X) Move the functions in `div_mod.S` from the "ram_code" sector to "cstartup_ram_funcs" sector. - (TC321X) Add RF software configuration invocation interface `rf_sw_config()` in the `cstartup_TC321X.S`. ### BREAKING CHANGES * N/A. ### CodeSize * **B85** * acl_peripheral_demo - Firmware size: 83.5 kBytes - SRAM size: 32.5 kBytes - deepsleep retention SRAM size: 28.9 kBytes * acl_central_demo - Firmware size: 73.9 kBytes - SRAM size: 37.1 kBytes * acl_connection_demo - Firmware size: 89.2 kBytes - SRAM size: 43.6 kBytes * acl_c1p1_demo - Firmware size: 95.4 kBytes - SRAM size: 34.3 kBytes - deepsleep retention SRAM size: 30.3 kBytes * **B87** * acl_peripheral_demo - Firmware size: 83.0 kBytes - SRAM size: 32.5 kBytes - deepsleep retention SRAM size: 29.0 kBytes * acl_central_demo - Firmware size: 74.7 kBytes - SRAM size: 37.5 kBytes * acl_connection_demo - Firmware size: 90.3 kBytes - SRAM size: 43.8 kBytes * acl_c1p1_demo - Firmware size: 95.1 kBytes - SRAM size: 34.6 kBytes - deepsleep retention SRAM size: 30.3 kBytes * **TC321X** * acl_peripheral_demo - Firmware size: 88.2 kBytes - SRAM size: 33.4 kBytes - deepsleep retention SRAM size: 30.0 kBytes * acl_central_demo - Firmware size: 79.6 kBytes - SRAM size: 38.5 kBytes * acl_connection_demo - Firmware size: 95.1 kBytes - SRAM size: 44.8 kBytes * acl_c1p1_demo - Firmware size: 100.0 kBytes - SRAM size: 35.2 kBytes - deepsleep retention SRAM size: 31.3 kBytes * ble_remote - Firmware size: 102.2 kBytes - SRAM size: 39.9 kBytes - deepsleep retention SRAM size: 34.9 kBytes * eslp_esl_demo - Firmware size: 158.2 kBytes - SRAM size: 47.4 kBytes - deepsleep retention SRAM size: 43.7 kBytes ### Version * SDK 版本: tc_ble_sdk V4.0.2.2 * Chip 版本 - B85: TLSR825X - B87: TLSR827X - TC321X (A0/A1) * Hardware 版本 - B85: C1T139A30_V1_2, C1T139A3_V2_0 - B87: C1T197A30_V1_1, C1T201A3_V1_0 - TC321X: C1T357A20_V1_1, C1T362A5_V1_0, C1T357A78_V1_0 * Platform 版本 - tc_platform_sdk V3.3.1 * Toolchain 版本 - TC32 ELF GCC4.3 ( IDE: [Telink IoT Studio](https://www.telink-semi.com/development-tools) ) ### Note * (TC321X) 由于TC321X的模拟寄存器在软件复位、看门狗复位或deep sleep后会清掉,因此修改了低压检测的判断逻辑,电压正常时写入标志位`LOW_BATT_FLG`,异常时清除该标志位。所造成的影响是,第一次上电电压需要高于2.2V(用户可配置)才能使程序运行,否则会直接进入deep sleep状态。 ### Known issue * 对于TC321X,在ble_remote中按键模式切换为IR模式后,如果芯片进入deep sleep,唤醒回来后会丢失按键模式状态,需要重新设置为IR模式。 ### Features * **Chip** - 支持 TC321X A1版本芯片。 * **Application** - 在 TC321X 中添加ADC校准。 - TC321X ble_remote 参考设计支持IR学习。 - 对于 TC321X,新增 eslp_esl_demo 工程,支持 ESL(Electronic Shelf Label) Server功能。 - 对于 TC321X,在文件夹 "vendor/common/boards" 中添加`C1T357A78.h` 文件,支持 ESL 的图片显示功能。 * **Controller** - 添加 PAwR(Periodic Advertising with Responses) 功能: - 在文件夹 "stack/ble/controller/ll/prdadv" 中添加了`PAwR_sync.h` 文件。 - 添加 PAST(Periodic Advertising Sync Transfer)功能: - 新增文件夹 "stack/ble/controller/ll/past"。 * **Host** - 添加 `blc_smp_searchBondingCentralDevice_by_PeerMacAddress()` 接口,用于根据主机端设备地址和地址类型获取绑定信息。 - 添加 `blc_smp_deleteBondingCentralInfo_by_PeerMacAddress()` 接口,用于根据对端设备地址和地址类型删除绑定的主机端信息。 - 添加 `blc_l2cap_pktHandler_V1()` 接口,用于处理ESL L2CAP层的数据。 - 对于TC321X,新增文件夹 "stack/ble/profile"、"stack/ble/host/att"和"stack/ble/host/gatt"文件夹,支持 ESL Server功能。 ### Bug Fixes * **Application** - 修复(TC321X):开启 `APP_BATT_CHECK_ENABLE`后,deep sleep模式下电流过大。 * **Controller** - 修复(B85/B87/TC321X):在feature_test的`TEST_BLE_PHY`参考设计中,从1M PHY切换到2M PHY时,2M PHY无法正常工作。 - 修复(B85/B87/TC321X):当使能`BLE_APP_PM_ENABLE`时,频繁GPIO唤醒将导致断连。 * **CoC** - 修复:建立新CoC通道时参数检查错误。 * **Driver** - 修复 (TC321X A0):OTA结束后调用`start_reboot()`函数无法正常重启MCU的问题。 ### Refactoring * **Application** - (TC321X) 删除 Audio DMIC 设置。 - (TC321X) 优化当开启语音时的POP噪声问题,并在语音结束后关闭语音模块以降低功耗。 - (B85/B87/TC321X) 当 `flash_mid` 获取失败或未找到匹配的 MID 值时,设置 `blc_flashProt.init_err = 1`, 表示 flash 保护初始化失败。 - (B85/B87/TC321X) 将变量`tick_adv_rpt`放到"retention_data"段,防止其在deep retention sleep后重置。 - (TC321X) 移除acl_c1p1_demo初始化中的`wd_32k_stop()`,该功能已在库中处理。 - (TC321X) 修改 `C1T357A20.h` 中默认设置的DEBUG_GPIO。 - (TC321X) 将`C1T357A20.h` 和 `C1T362A5.h` 中的低压检测的GPIO检测口修改为`GPIO_PB5`。 * **Host** - (B85/B87/TC321X) 将"stack/ble/host/attr"文件夹下的内容移动到"stack/ble/host/att/att_v0"文件夹。 - (TC321X) 在`ble_host.h`中增加ESL功能相关头文件引用。 * **Controller** - (B85/B87/TC321X) 优化 c1p1 的 SRAM 大小。 - (B85/B87/TC321X) 清理 controller 中的 master 和 slave 命名: - 将 `blc_ll_getCurrentMasterRoleNumber()` 重命名为 `blc_ll_getCurrentCentralRoleNumber()`。 - 将 `blc_ll_getCurrentSlaveRoleNumber()` 重命名为 `blc_ll_getCurrentPeripheralRoleNumber()`。 - 在`contr_comp.h`中添加宏定义`blc_ll_getCurrentSlaveRoleNumber()`和`blc_ll_getCurrentMasterRoleNumber()`进行兼容。 - (B85/B87/TC321X) 移除`leg_adv.h`中重复的API `blc_ll_initLegacyAdvertising_module()`的定义。 - (B85/B87/TC321X) 将`PERD_ADV_PARAM_LENGTH`的定义修改为456。 - (TC321X) 在`ble_controller.h`增加PAwR和PAST头文件引用。 * **HCI** - (TC321X) 在`hci_const.h`、`hci_cmd.h`和`hci_event.h`中增加PAwR和PAST HCI接口相关的Command和Event定义。 * **Link & Startup** - (TC321X) 添加"platform_func"段,用于存储平台数据。 - (B85/B87) 添加"cstartup_ram_funcs" 段。 - (B85/B87/TC321X) 将 `div_mod.S` 中的函数从 "ram_code" 段移动到 "cstartup_ram_funcs" 段。 - (TC321X) 在`cstartup_TC321X.S`中添加 RF 软件配置调用接口`rf_sw_config()`。 ### BREAKING CHANGES * N/A. ### CodeSize * **B85** * acl_peripheral_demo - Firmware size: 83.5 kBytes - SRAM size: 32.5 kBytes - deepsleep retention SRAM size: 28.9 kBytes * acl_central_demo - Firmware size: 73.9 kBytes - SRAM size: 37.1 kBytes * acl_connection_demo - Firmware size: 89.2 kBytes - SRAM size: 43.6 kBytes * acl_c1p1_demo - Firmware size: 95.4 kBytes - SRAM size: 34.3 kBytes - deepsleep retention SRAM size: 30.3 kBytes * **B87** * acl_peripheral_demo - Firmware size: 83.0 kBytes - SRAM size: 32.5 kBytes - deepsleep retention SRAM size: 29.0 kBytes * acl_central_demo - Firmware size: 74.7 kBytes - SRAM size: 37.5 kBytes * acl_connection_demo - Firmware size: 90.3 kBytes - SRAM size: 43.8 kBytes * acl_c1p1_demo - Firmware size: 95.1 kBytes - SRAM size: 34.6 kBytes - deepsleep retention SRAM size: 30.3 kBytes * **TC321X** * acl_peripheral_demo - Firmware size: 88.2 kBytes - SRAM size: 33.4 kBytes - deepsleep retention SRAM size: 30.0 kBytes * acl_central_demo - Firmware size: 79.6 kBytes - SRAM size: 38.5 kBytes * acl_connection_demo - Firmware size: 95.1 kBytes - SRAM size: 44.8 kBytes * acl_c1p1_demo - Firmware size: 100.0 kBytes - SRAM size: 35.2 kBytes - deepsleep retention SRAM size: 31.3 kBytes * ble_remote - Firmware size: 102.2 kBytes - SRAM size: 39.9 kBytes - deepsleep retention SRAM size: 34.9 kBytes * eslp_esl_demo - Firmware size: 158.2 kBytes - SRAM size: 47.4 kBytes - deepsleep retention SRAM size: 43.7 kBytes
最后提交信息为:
refactor(release note): update release note
V4.0.2.1
04d3a57
2026-03-19 20:27
对比
Release V4.0.2.1
mwchen
# V4.0.2.1(PR) ### Version * SDK version: tc_ble_sdk V4.0.2.1 * Chip Version - B85: TLSR825X - B87: TLSR827X - TC321X (A0) * Hardware Version - B85: C1T139A30_V1_2, C1T139A3_V2_0 - B87: C1T197A30_V1_1, C1T201A3_V1_0 - TC321X: C1T357A20_V1_1, C1T362A5_V1_0 * Platform Version - tc_platform_sdk V3.1.0 * Toolchain Version - TC32 ELF GCC4.3 ( IDE: [Telink IDE](https://wiki.telink-semi.cn/wiki/IDE-and-Tools/IDE-for-TLSR8-Chips/)/ [TelinkIoTStudio_V2025.2](https://doc.telink-semi.cn/tools/telink_iot_studio/TelinkIoTStudio_V2025.2.zip) ) ### Features * **Application** - Add demo "ble_remote" into TC321X, which supports "TL_AUDIO_RCU_ADPCM_GATT_TELINK" audio mode. - Add ble_controller demo. ### Bug Fixes * **Application** - Fix(TC321X): The flash information is not initialized normally when enabling macro "APP_FLASH_PROTECTION_ENABLE" and using Flash "P25Q80SU". - Fix: Fix compile error when enabling macro "APP_BATT_CHECK_ENABLE". * **PM** - Fix(TC321X): The MCU can not be waken up normally when using long suspend sleep mode. ### Refactoring * **Application** - Modify "USED_DEEP_ANA_REG" setting in "acl_c1p1_demo", "acl_peripheral_demo" and "acl_connection_demo". ### BREAKING CHANGES * N/A. ### Flash * **B85** - ZB25WD40B - ZB25WD80B - GD25LD40C/GD25LD40E - GD25LD80C/GD25LD80E * **B87** - GD25LD40C/GD25LD40E - GD25LD80C/GD25LD80E - ZB25WD40B - ZB25WD80B * **TC321X** - P25D40SU - GD25LD40EGEG (Not Test) - P25Q80SU - P25Q16SU ### CodeSize * **B85** * acl_peripheral_demo - Firmware size: 81.4 kBytes - SRAM size: 31.9 kBytes - deepsleep retention SRAM size: 28.3 kBytes * acl_central_demo - Firmware size: 72.8 kBytes - SRAM size: 37.0 kBytes * acl_connection_demo - Firmware size: 87.3 kBytes - SRAM size: 43.0 kBytes * acl_c1p1_demo - Firmware size: 93.4 kBytes - SRAM size: 36.0 kBytes - deepsleep retention SRAM size: 31.9 kBytes * **B87** * acl_peripheral_demo - Firmware size: 79.4 kBytes - SRAM size: 31.7 kBytes - deepsleep retention SRAM size: 28.1 kBytes * acl_central_demo - Firmware size: 71.8 kBytes - SRAM size: 37.0 kBytes * acl_connection_demo - Firmware size: 91.2 kBytes - SRAM size: 43.0 kBytes * acl_c1p1_demo - Firmware size: 91.3 kBytes - SRAM size: 35.8 kBytes - deepsleep retention SRAM size: 31.7 kBytes * **TC321X** * acl_peripheral_demo - Firmware size: 79.3 kBytes - SRAM size: 31.8 kBytes - deepsleep retention SRAM size: 28.3 kBytes * acl_central_demo - Firmware size: 71.6 kBytes - SRAM size: 37.3 kBytes * acl_connection_demo - Firmware size: 86.7 kBytes - SRAM size: 43.3 kBytes * acl_c1p1_demo - Firmware size: 91.5 kBytes - SRAM size: 35.9 kBytes - deepsleep retention SRAM size: 32.0 kBytes * ble_remote - Firmware size: 95.5 kBytes - SRAM size: 40.4 kBytes - deepsleep retention SRAM size: 35.5 kBytes
最后提交信息为:
feat(src): update to V4.0.2.1
V4.0.2.0
21ba977
2026-03-19 20:26
对比
Release V4.0.2.0
mwchen
# V4.0.2.0(PR) ### Version * SDK version: tc_ble_sdk V4.0.2.0 * Chip Version - B85: TLSR825X - B87: TLSR827X - TC321X (A0) * Hardware Version - B85: C1T139A30_V1_2, C1T139A3_V2_0 - B87: C1T197A30_V1_1, C1T201A3_V1_0 - TC321X: C1T357A20_V1_1 * Platform Version - tc_platform_sdk V3.1.0 * Toolchain Version - TC32 ELF GCC4.3 ( IDE: [Telink IDE](https://wiki.telink-semi.cn/wiki/IDE-and-Tools/IDE-for-TLSR8-Chips/)/ [TelinkIoTStudio_V2024.8](https://wiki.telink-semi.cn/tools_and_sdk/Tools/IoTStudio/TelinkIoTStudio_V2024.8.zip) ) ### Note * All changes up to telink_b85m_ble_sdk V4.0.1.3_Patch0003 are included. * TC321x has not been fully tested, subsequent iterations will be updated. * B85m_controller has been removed in this version, and will be added back in the next version. * Battery Voltage Check is a very important function for mass production. The user must check battery voltage to prevent abnormal writing or erasing Flash at a low voltage. * Flash protection is a critical function for mass production. - Flash protection is enabled by default in SDK. User must enable this function on their final mass-production application. - Users should use "Unlock" command in the Telink BDT tool for Flash access during the development and debugging phase. - Flash protection demonstration in SDK is a reference design based on sample code. Considering that the user's final application may be different from the sample code, for example, the user's final firmware size is bigger, or the user has a different OTA design, or the user needs to store more data in some other area of Flash, all these differences imply that Flash protection reference design in SDK can not be directly used on user's mass production application without any change. User should refer to sample code, understand the principles and methods, and then change and implement a more appropriate mechanism according to their application if needed. * Correct some spelling mistakes - For example, change OTA_DATA_UNCOMPLETE to OTA_DATA_INCOMPLETE. ### Features * **Chip** - Support TC321X A0 - Support 1M phy and 2M phy. - Support PM, including suspend mode, deepsleep retention mode and deepsleep mode. - Support Flash Protection. - Support Battery Voltage Check. - Support Demo: - acl_connection_demo - feature_test - acl_c1p1_demo - acl_peripheral_demo - acl_central_demo * **Application** - Add Flash Protection module and sample - Add flash_prot.h/flash_prot.c in vendor/common folder as a common module for all applications. - Add Flash protection sample code in project acl_connection_demo/acl_c1p1_demo/acl_central_demo/acl_peripheral_demo. User can refer to the sample code and make sure the Flash protection function must be enabled on their own application. - "app_flash_protection_operation" is a common entrance for all Flash operations (Flash write and erase), Flash locking and unlocking are processed in this function. - "blc_appRegisterStackFlashOperationCallback" and "flash_prot_op_cb" are used to process some stack internal Flash operation callback which may need Flash locking and unlocking. - The Telink OTA and SMP module already add callbacks related to blc_flashProt to inform the application layer that they need to write/erase Flash. Then, the application layer processes Flash lock and unlock. - If users do not use Telink OTAs, they need to refer to this design to add similar callback functions in their own OTA code for upper-layer use. - Now only firmware is protected in the sample code. System data and user data are not protected now. - IRQ disabling time too long in driver API "flash_write_status", BLE system interrupt is delayed, causing RX data error. - Driver API "flash_write_status" be replaced by "flash_write_status" in flash_prot.c to solve this issue by calling LinkLayer API "blc_ll_write_flash_status". - Add tlkapi_debug module to print logs - Add tlkapi_debug.h/tlkapi_debug.c in vendor/common folder as a common module for all applications. - Add debug.h in stack/ble/debug. Add APIs "blc_debug_enableStackLog", "blc_debug_addStackLog", "blc_debug_removeStackLog" to control the print stack log. - Use GPIO simulating UART TX sequence to output data information to PC UART tool, same function with "printf" function in old SDK. - API "tlkapi_printf" and "tlkapi_send_string_data" are recommended for usage, with some macro in app_config.h to control log enabling such as "APP_LOG_EN". - Only 1M baud rate can be used. When the system clock is 16M/24M, the assembly is used to control the UART TX timing. When the system clock is 32M/48M, the system_timer is used to control the UART TX timing. IRQ disabling and restoring are used in function "uart_putc" to guarantee UART TX byte data integrity is not broken by IRQ. - If the baud rate is too low, IRQ disabling time too long, BLE system interrupt and user interrupt will be affected which may lead to critical error. * **feature_test** - Add feature_privacy_peripheral: Sample code for testing peripheral RPA. This sample code to get peer Central(Master) IDA(identity address) if RPA(resolved private address) is used in packet "CONNECT_IND". - Add feature_privacy_central: Sample code for testing Central RPA. - Add feature_l2cap_coc: Sample code for testing peripheral L2CAP COC. - Add Sample code for SC OOB in feature_smp_security. - Add feature_phy_test: Sample code for testing PHY functions. - Remove feature_misc. * **Controller** - Add APIs: - "blc_ll_setAdvCustomizedChannel" is used to set some other channel to replace primary advertising chn37/38/39 in ADV state. - "blc_ll_configLegacyAdvEnableStrategy", which is used to configure leg_adv enabling by API only. - "blc_ll_setScanCustomizedChannel" is used to set some other channel to replace primary advertising chn37/38/39 in SCAN state. - "blc_ll_configScanEnableStrategy" is used to configure scan enable by API. - "blc_ll_isInitiationBusy" is used to check if initiation is busy. - "blc_ll_setCreateConnectionRetryNumber" is used to set create connection retry number. - "blc_ll_disableConnUpdHighAuthority" is used to disable connection update high authority for central. - "blc_ll_getAclLatestRSSI" is used to obtain the latest RSSI of ACL connections. - "blc_ll_getAclConnectionInterval" is used to read current ACL connection interval. - "blc_ll_getAclConnectionLatency" is used to read current ACL connection latency. - "blc_ll_getAclConnectionTimeout" is used to read current ACL connection supervision timeout. - "blc_ll_dataLenAutoExgDisable" is used to disable DLE exchange automatically. - "blc_ll_customizeConnectionEstablishEvent" is used to customize Connection Establish Event. - "blc_ll_removeDeviceFromResolvingList" is used to remove a device from resolving list. - "blc_ll_readResolvingListSize" is used to read resolving list size. - "blc_ll_setResolvablePrivateAddressTimeout" is used to set the length of time the controller uses a Resolvable Private Address before a new resolvable private address is generated and starts being used. - "blc_ll_setPrivacyMode" is used to allow the Host to specify the privacy mode to be used for a given entry on the resolving list. - "blc_contr_setBluetoothVersion" is used to set Bluetooth core specification version in controller. * **L2CAP** - Add Peripheral L2CAP COC feature. - Add stack/ble/host/signaling/folder, and add signaling.h in this folder. - Add some APIs for this feature. - blc_l2cap_registerCocModule is used to register the COC Module. - blc_l2cap_disconnectCocChannel is used to disconnect with the COC Channel. - blc_l2cap_createLeCreditBasedConnect is used to create LE Credit Based connection. - blc_l2cap_createCreditBasedConnect is used to create Credit Based connection. - blc_l2cap_sendCocData is used to send COC Data. - Add some host events in gap_event.h - GAP_EVT_L2CAP_COC_CONNECT is triggered by the COC connection. - GAP_EVT_L2CAP_COC_DISCONNECT is triggered by the COC disconnection. - GAP_EVT_L2CAP_COC_RECONFIGURE is triggered by the COC reconfigure. - GAP_EVT_L2CAP_COC_RECV_DATA is triggered when receiving COC Data. - GAP_EVT_L2CAP_COC_SEND_DATA_FINISH is triggered after COC Data is sent. - GAP_EVT_L2CAP_COC_CREATE_CONNECT_FINISH is triggered after the create COC channel command is sent. - Add API "blc_l2cap_reg_att_sig_handler", which is used to register the function to process L2CAP SIG CHANNEL packet. - Add API "blc_l2cap_SendCommandRejectResponse", which is used to send command reject response in central. * **SMP** - Add Peripheral SC OOB. - Add some APIs for this feature. - blc_smp_generateScOobData is used to generate SC OOB data. - blc_smp_setScOobData is used to set SC OOB data. - Add some host events in gap_event.h. - GAP_EVT_MASK_SMP_TK_SEND_SC_OOB_DATA is triggered when the peer requests SC OOB. - GAP_EVT_MASK_SMP_TK_REQUEST_SC_OOB is triggered when SMP requests SC OOB data. - Add some APIs: - "blc_smp_setLocalIrkGenerateStrategy" is used to set local IRK generating strategy. - "blc_smp_triggerMasterManualSmp" is used to trigger central sending Pairing Request. - "blc_smp_sendKeypressNotify" is used to send keypress notify during TK input phrase. - "blc_smp_cancel_auth" is used to cancel SMP process. - "blc_smp_setDevExceedMaxStrategy" is used to configure the bonding strategy. * **OTA** - Add some APIs: - "blc_ota_setOtaScheduleIndication_by_pduNum" is used to set resolution of OTA schedule indication by PDU number. - "blc_ota_setAttHandleOffset" is used to calculate OTA notify data ATT handle by OTA write data ATT handle. * **GATT** - Add some APIs: - "blc_gap_mtuAutoExgDisable" is used to disable MTU exchange automatically. - "blc_host_checkHostInitialization" is used to check if any host initialization incorrect. * **HCI** - Add API: - "blc_hci_register_user_handler" is used to register HCI user callback function. * **Others** - Add mcu_config.h, including features supported by the MCU. - Add ext_calibration.c and ext_calibration.h to support ADC calibration, including flash two-point GPIO calibration, flash single-point GPIO calibration, flash single-point VBAT calibration (supported only by B87) and efuse single-point calibration; supports flash voltage calibration. - Add version information function. - Add API "blc_get_sdk_version" to get the SDK version. - Add the SDK version at the end of the bin file. - Add SDK version at the post-build. ### Bug Fixes * N/A. ### Refactoring * **Application** - add app_common.h/app_common.c to process some common initialization or settings for all application projects. - Move SYS_CLK_TYPE/CLOCK_SYS_CLOCK_1S/CLOCK_SYS_CLOCK_1MS/CLOCK_SYS_CLOCK_1US definition from app_config.h to app_common.h. Users now only define CLOCK_SYS_CLOCK_HZ in app_config.h. - add API "blc_app_setDeepsleepRetentionSramSize" in app_common to automatically set deepsleep retention SRAM size for all application projects. - add API "blc_app_checkControllerHostInitialization" in app_common to check stack initialization error for the application project. - add API "blc_app_isIrkValid" in app_common to check if local or peer IRK is valid, which can be used in the whitelist and resolving list of relevant applications. - Battery Check is moved to common, and the application only handles the relevant UI parts. - Development board configuration - Delete redundant configuration information for LED and Keyboard in app_config.h of each project. Users can select the development board by BOARD_SELECT. - Add the folder vendor/common/boards and the following files that define each development board configuration: - boards_config.h, C1T139A3.h, C1T139A30.h, C1T197A30.h, C1T201A3.h, C1T357A20.h * **Controller** - Add stack/ble/ble_controller/controller.h. Put some controller-relevant enumeration and API declaration in this file. ### BREAKING CHANGES * **Boot & Link** - Optimize and simplify the implementation of cstartup.S and boot.link. - Add cstartup_825x.S. This file is enough for all B85 projects. The SRAM size is automatically set by judging MCU_STARTUP. Previous 825x cstartup files are deleted as below: - cstartup_8253.S/cstartup_8253_RET_32K.S/cstartup_8258.S/cstartup_8258_RET_32K.S - Add cstartup_827x.S. This file is enough for all B87 projects. The SRAM size is automatically set by judging MCU_STARTUP. Previous 827x cstartup files are deleted as below: - cstartup_8238K.S/cstartup_8238_RET_32K.S/cstartup_8278.S/cstartup_8278_RET_32K.S - Modify boot.link. This file is enough for all B85/B87 projects. Previous link files are deleted as below: - boot_32k_retn.link - Configure "SRAM_SIZE" for different ICs in the project setting. - B85 - Use new macro MCU_STARTUP_8253/MCU_STARTUP_8258 to configure IC, and MCU_STARTUP_8258 is used by default. - Old macro below is not used anymore: - MCU_STARTUP_8258_RET_32K, - MCU_STARTUP_8253_RET_32K, - B87 - Use new macro MCU_STARTUP_8238/MCU_STARTUP_8278 to configure IC, and MCU_STARTUP_8278 is used by default. - Old macro below is not used anymore: - MCU_STARTUP_8278_RET_32K, - MCU_STARTUP_8238_RET_32K, - Users do not need to be concerned about how to change configurations of different deepsleep retention SRAM size(16K or 32K). It's now processed automatically. - "blc_app_setDeepsleepRetentionSramSize" is used to configure deepsleep retention SRAM size automatically. - "\_retention_size_" is defined in cstarup.S file, and it is used to automatically calculate the total size of retention SRAM. - If "_retention_size" exceeds the maximum value(32K, TC321x support 64K bytes), the compiler will report the error "Error: Retention RAM size overflow." for users to notice this. - Add user_config.c in vendor/common, and add "__PM_DEEPSLEEP_RETENTION_ENABLE" in this file for retention SRAM size auto calculating and alarming in boot.link. - "__PM_DEEPSLEEP_RETENTION_ENABLE" equals to "PM_DEEPSLEEP_RETENTION_ENABLE" which is configurated by user in app_config.h. * **Application** - BLE Flash information and Calibration - Rename blt_common.h/blt_common.c to ble_flash.h/ble_flash.c. - Split function "blc_app_loadCustomizedParameters" into two functions "blc_app_loadCustomizedParameters_normal" and "blc_app_loadCustomizedParameters_deepRetn". - The first one is used when the MCU is powered on or wakes up from deepsleep mode. The second one is used when MCU wakes up from deepsleep retention mode. - Add API "blc_flash_read_mid_get_vendor_set_capacity" in "blc_readFlashSize_autoConfigCustomFlashSector" to get Flash mid, vendor and capacity information. * **Driver** - Rename drivers/8258 to drivers/B85. - Rename drivers/8278 to drivers/B87. * **BLE General** - Add stack/ble/host/host_comp.h, stack/ble/controller/contr_comp.h and stack/ble/ble_comp.h for some API/macro/data structure names in the old SDK compatible with the new SDK. - Remove l2cap_signal.h, and use signaling.h instead. * **Controller** - Rename some files. - Rename acl_master.h to acl_central.h. - Rename acl_slave.h to acl_peripheral.h. - Rename resolvlist.h to resolvelist.h. - Remove some APIs: - blc_ll_resolvListInit - ll_resolvingList_delete - ll_resolvingList_getSize - ll_resolvingList_getPeerResolvableAddr - ll_resolvingList_getLocalResolvableAddr - ll_resolvingList_setResolvablePrivateAddrTimer - ll_resolvingList_setPrivcyMode - Move stack/ble/debug.h into stack/ble/debug/debug.h. * **SMP** - Remove API "blc_smp_setBondingInfoIndexUpdateMethod". * **GATT** - Change API "blc_gatt_pushAttHdlValueCfm" to "blc_gatt_pushConfirm" * **Others** - Change the structure of the project. Split it into three independent projects. ### Flash * **B85** - ZB25WD40B - ZB25WD80B - GD25LD40C/GD25LD40E - GD25LD80C/GD25LD80E * **B87** - GD25LD40C/GD25LD40E - GD25LD80C/GD25LD80E - ZB25WD40B - ZB25WD80B ### CodeSize * **B85** * acl_peripheral_demo - Firmware size: 81.4 kBytes - SRAM size: 31.4 kBytes - deepsleep retention SRAM size: 28.3 kBytes * acl_central_demo - Firmware size: 72.8 kBytes - SRAM size: 37.0 kBytes * acl_connection_demo - Firmware size: 87.3 kBytes - SRAM size: 43.0 kBytes * acl_c1p1_demo - Firmware size: 93.4 kBytes - SRAM size: 35.0 kBytes - deepsleep retention SRAM size: 31.9 kBytes * **B87** * acl_peripheral_demo - Firmware size: 79.4 kBytes - SRAM size: 31.7 kBytes - deepsleep retention SRAM size: 28.1 kBytes * acl_central_demo - Firmware size: 71.5 kBytes - SRAM size: 37.2 kBytes * acl_connection_demo - Firmware size: 86.9 kBytes - SRAM size: 43.0 kBytes * acl_c1p1_demo - Firmware size: 91.3 kBytes - SRAM size: 35.8 kBytes - deepsleep retention SRAM size: 31.7 kBytes * **TC321X** * acl_peripheral_demo - Firmware size: 79.3 kBytes - SRAM size: 31.5 kBytes - deepsleep retention SRAM size: 28.2 kBytes * acl_central_demo - Firmware size: 71.5 kBytes - SRAM size: 37.2 kBytes * acl_connection_demo - Firmware size: 88.4 kBytes - SRAM size: 43.1 kBytes * acl_c1p1_demo - Firmware size: 93.6 kBytes - SRAM size: 35.9 kBytes - deepsleep retention SRAM size: 31.9 kBytes
最后提交信息为:
refactor(clean): update release note
V4.0.1.3_Patch_0003
ac4d07c
2026-03-19 20:24
对比
Release V4.0.1.3_Patch_0003
mwchen
## V4.0.1.3_Patch_0003 ### Bug Fixes * **drvier/adc** * (B87): Fix issue of large ADC error on some chips. ### BREAKING CHANGES * **drvier/adc** * (B85/B87):Update ADC driver to V2.0.0 and add two-point calibration. ### Bug Fixes * **drvier/adc** * (B87):修复部分芯片ADC误差偏大。 ### BREAKING CHANGES * **drvier/adc** * (B85/B87):更新 ADC 驱动至 V2.0.0 并添加两点校准功能。
最后提交信息为:
version:update 4.0.1.3 patch003
V4.0.1.3_Patch_0002
13e8405
2026-03-19 20:23
对比
Release V4.0.1.3_Patch_0002
mwchen
## V4.0.1.3_Patch_0002 ### Bug Fixes * **driver** * xtal * Solved the B85 problem that when the crystal oscillator is abnormal, the program crashes and the software cannot reset by itself. * uart * Fixed a bug that caused the uart_send_byte() interface to send bytes incorrectly if the DMA data was not sent to completion due to the function exiting and the array memory defined in the stack being freed. * uart_clear_parity_error(): Fixed the problem that when clearing uart clear rx status, other uart status bits may be operated by mistake. * irq * irq_clr_src2(): Fixed the problem that when clearing the specified IRQ source, other IRQ source bits may be operated by mistake. * USB * usb_handle_irq(): Fixed the problem that when clearing USB reset status, other status bits may be operated by mistake * gpio * Fixed an issue in the gpio_set_interrupt()/gpio_set_interrupt_risc0()/gpio_set_interrupt_risc1() interface that could mistakenly clear other interrupt status bits. * timer * timer0_set_mode/timer1_set_mode/timer2_set_mode/timer_start/timer_stop: in addition to the corresponding functions, the interrupt flags of time0/timer1/timer2 are also incorrectly cleared on the preceding interfaces. this problem occurs in the following application scenarios: when multiple timers work at the same time and the interrupt time is very close, the interrupt interface processes the timer that requests the interrupt first. if the above interface is called, the interrupt flag of other timers will be mistakenly cleared, resulting in no response to other timers' interruption. at present, it is modified to only set the corresponding function. * Modify the timer0_gpio_init and timer1_gpio_init functions to fix the problem that the gpio interrupt will be accidentally touched when the gpio trigger and gpio width modes are used. * watchdog * wd_set_interval_ms/wd_start/wd_stop: in addition to the corresponding functions, the interrupt flags of time0/timer1/timer2 are also mistakenly cleared on the above interfaces. At present, they are modified to set only corresponding functions. * pm * cpu_stall_wakeup_by_timer0/cpu_stall_wakeup_by_timer1/cpu_stall_wakeup_by_timer2:add setting timer0/timer1/timer2 mode0 to prevent these interfaces from working until timer0/timer1/timer2 is not mode0. * Solved the problem that the sleep time is incorrect due to a small probability that the total interruption time of the shutdown is not timely. * Eliminates the risk that STATUS_GPIO_ERR_NO_ENTER_PM may be set to 1 in the return value of cpu_sleep_wakeup. * Resolved the risk that cpu_sleep_wakeup_32k_rc()/cpu_sleep_wakeup_32k_xtal() could crash due to misreading the 32K tick. (The digital reading 32K tick inside these two functions has been replaced with reading using analog registers). * Solved the B85 problem of disconnection caused by the 32k calibration value not being updated in time in high and low-temperature environments. * clock * rc_24m_cal() is added to the clock_init() function to solve the B85 problem of possible probabilistic crash. * **Extended Scan** * Fixed the bug that creating connection could fail when using extended scan and times of creating connection have been exceeding 4. * **SMP** * Fixed the bug that blc_smp_loadBondingInfoByAddr may load fail when the peer address is RPA. ### BREAKING CHANGES * **pm** * Delete the cpu_get_32k_tick interface. If you want to read a 32K tick value, use pm_get_32k_tick(). ### Bug Fixes * **driver** * xtal * 解决了B85晶振异常时,程序死机,不能自行软件复位的问题。 * uart * 修复了由于 uart_send_byte() 函数退出后,DMA 还未将数据搬运完成前,函数内部定义的数据内存已经被释放,导致数据发送出错问题。 * uart_clear_parity_error(): 修复了清除uart clear rx状态时,可能误操作其他uart状态位的问题。 * irq * irq_clr_src2(): 修复了清除指定的中断源时,可能误操作其他中断源的状态位的问题。 * usb * usb_handle_irq(): 修复了清除usb reset状态位时,可能误操作其他状态位的问题。 * gpio * 修复了gpio_set_interrupt()/gpio_set_interrupt_risc0()/gpio_set_interrupt_risc1()接口中可能误清其他中断状态位的问题。 * timer * timer0_set_mode/timer1_set_mode/timer2_set_mode/timer_start/timer_stop::以上这些接口除了设置了对应的功能以外,还误清了timer0、timer1、timer2的中断标志位。在如下应用场景下会有问题:当使用多个timer同时工作,并且产生的中断时间很接近时,中断接口中先处理第一个请求中断的timer时,调用了以上接口的话,将其他timer的中断标志位误清,导致其他timer中断没有响应,目前将其进行修改为只设置对应功能。 * 修改timer0_gpio_init和timer1_gpio_init函数,修复了使用gpio trigger和gpio width模式会误触gpio中断的问题。 * watchdog * wd_set_interval_ms/wd_start/wd_stop:以上这些接口除了设置了对应的功能以外,还误清了timer0、timer1、timer2的中断标志位,目前将其进行修改为只设置对应功能。 * pm * cpu_stall_wakeup_by_timer0/cpu_stall_wakeup_by_timer1/cpu_stall_wakeup_by_timer2:添加设置timer0/timer1/timer2 mode0功能,避免在调用这些接口之前,timer0/timer1/timer2不是mode0,这些接口不能工作。 * 解决了因关总中断时间不及时,小概率地导致的睡眠时间不对的问题。 * 规避了cpu_sleep_wakeup的返回值中STATUS_GPIO_ERR_NO_ENTER_PM 可能会被异常置为1的风险。 * 解决了cpu_sleep_wakeup_32k_rc()/cpu_sleep_wakeup_32k_xtal()可能因为读错32K tick引发死机的风险(已将这两个函数内部,数字读32K tick的方式替换成模拟方式读32Ktick)。 * 解决了B85在高温和低温环境下,因32k校准值没有及时更新,导致的断联的问题。 * clock * 在B85 clock_init函数中加入rc_24m_cal()解决可能概率性死机的问题. * **Extended Scan** * 修复了当使用扩展扫描创建连接的次数超过4次时,创建连接会失败的问题。 * **SMP** * 修复了当对端地址为RPA时,blc_smp_loadBondingInfoByAddr可能会读取失败。 ### BREAKING CHANGES * **driver** * pm * 删除cpu_get_32k_tick接口,如果想要读32K的tick值,可以使用pm_get_32k_tick()。
最后提交信息为:
feat: update lib
V4.0.1.3_Patch_0001
83f7215
2026-03-19 20:21
对比
Release V4.0.1.3_Patch_0001
mwchen
## V4.0.1.3_Patch_0001 ### Bug Fixes * Fixed: A very small number of chips rarely experience insufficient oscillation of the 24M crystal after waking up from sleep, leading to MCU abnormality. * Fixed: Pairing failure occurs when using Secure Connection with low power deepsleep retention mode. * Fixed: The primary Channel advertising packet can not be received when using Coded PHY in Extended Scan. * Fixed: The RSSI value is incorrect in the Extended advertising report event. * Fixed: The AUX_CONNECT_RSP PDU can not be received when initiating a connection request under Extended Scan Coded PHY S8 mode, resulting in creating connection failure. ### BREAKING CHANGES * N/A ### Bug Fixes * 修复: 极少数芯片,低概率出现睡眠唤醒后24M晶体起振不充分,导致MCU异常 * 修复: Secure Connection,低功耗使用deepsleep retention mode,出现配对失败。 * 修复: Extended Scan,无法收到Primary Channel使用Coded PHY的广播包。 * 修复: Extended Scan,Extended ADV report event中RSSI值异常。 * 修复: Extended Scan,在Coded PHY S8模式发起连接,会出现无法接收AUX_CONNECT_RSP数据包,导致创建连接失败。 ### BREAKING CHANGES * N/A
最后提交信息为:
refactor:[lib] update liblt_*.a
V4.0.1.3
05e2905
2026-03-19 20:19
对比
Release V4.0.1.3
mwchen
## V4.0.1.3 ### Features * SDK version:telink_b85m_ble_sdk_V4.0.1.3 * Normalizes the naming of content related to private schemas. ### BREAKING CHANGES * N/A. ### Features * SDK 版本:telink_b85m_ble_sdk_V4.0.1.3 * 规范化与私有模式相关内容的命名 ### BREAKING CHANGES * N/A.
最后提交信息为:
style: change release note
V4.0.1.2
414b366
2026-03-19 20:10
对比
Release V4.0.1.2
mwchen
## V4.0.1.2 ### Notes * Customers must confirm flash size in app_config.h ### Features * SDK version:telink_b85m_ble_sdk_V4.0.1.2 * This version sdk support 8253/8258/8273/8278 chip. * Optimize the process of channel map/phy/connection parameter update. * Clean application code to make user feel better to use, such as using MACRO to calculate related buffer size automatically. * Add some APIs according to users' feedback. + Long sleep API. + RSSI get API. + OTA max timeout prolonged to 1000s from 250s. ### Bug Fixes + Connection parameter update abnormally under PM. + Inaccurate T_IFS in CONNECT_IND, SCAN_RSP, AUX_CONNECT_REQ. + Long run time of software timer callback affects timing logic. ### BREAKING CHANGES - N/A ### Notes * 用户必须要在app_config.h中确认flash size与当前所用芯片相符。 ### Features * SDK 版本:telink_b85m_ble_sdk_V4.0.1.2 * 支持8253/8258/8273/8278。 * 优化Channel map/PHY/Connection parameter更新流程。 * 清理优化应用层代码,提高用户友好性,比如用宏自动计算相关的buffer大小。 * 根据用户反馈,增加了如下API。 + 长休眠。 + 获取RSSI。 + OTA超时设置上限从250s调整到1000s。 ### Bug Fixes + 连接参数在PM下更新异常。 + CONNECT_IND, SCAN_RSP, AUX_CONNECT_REQ的T_IFS时间不准。 + 软件定时器回调运行太长影响时序逻辑错误。 ### BREAKING CHANGES - N/A
最后提交信息为:
update Release_Note
下载
请输入验证码,防止盗链导致资源被占用
取消
下载
1
https://gitee.com/telink-semi/tc_ble_sdk.git
git@gitee.com:telink-semi/tc_ble_sdk.git
telink-semi
tc_ble_sdk
tc_ble_sdk
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册