本帖最后由 百_草_园 于 2022-10-10 19:02 编辑

本次试用的是Telink-泰凌微电子 B91物联网应用开发套件,套件包括如下部分:
B91 开发板和蓝牙天线
Telink BurningEVKSWS烧录器,可通过三根杜邦线连接开发板进行烧录
MiniUSB线和杜邦线
sshot-1.bmp
B91通用开发套件是Telink最新一代TLSR9系列芯片的通用开发平台。TLSR9系列芯片作为Telink最新一代低功耗高性能多协议无线连接SoC产品,支持多种先进的物联网连接技术规范,包括经典蓝牙,蓝牙低功耗,蓝牙MeshZigbeeApple HomeKitApple Find MyThreadMatter2.4GHz专有协议,及各类RTOS,并且能够实现部分多协议并行操作。该芯片内置了先进的32RISC-V MCU,集成了DSP和浮点运算扩展指令。
图片18.bmp
sshot-2.bmp
开发板板载SoCTLSR9518AETLSR9518AE支持双模蓝牙,MeshAoA/AoD,支持ThreadZigbee等多协议连接,功能强大且支持低功耗。内置有立体声audio codec 和多种丰富外设。支持多协议是个大的亮点。
sshot-3.bmp
芯片资料页面下有芯片规格书,各种SDKSDK的使用手册,以及配套的开发板资料
图片15.bmp
1.开发环境搭建和编译
按照官方的文档下载B91 开发板对应的IDE开发环境
安装后的程序名称为AndeSight_RDS
image.png
打开后提示无License 需要安装license后才能继续运行
sshot-4.bmp
sshot-5.bmp
下载到如下形式的License文件:
sshot-6.bmp
license安装对话框中,输入Serial(下载到的license文件名),选中License文件,点击OK成功安装License后即可正常使用IDE
sshot-7.bmp
导入下载的SDK工程,执行Build
图片7.bmp
编译生成的目标文件在telink_b91m_driver_sdk\project\tlsr_riscv\B91\UART_Demo\output目录下:
sshot-9.bmp
2.烧录和测试
SDK 开发过程中,通过使“Telink Burning and Debugging ToolBDT,可以通过 “BurningEVK”EVK)将固件直接下载到开发板。它主要的功能包括:擦除 flash 扇区,下载固件,通信失败时激活 MCU,访问包括 Flash/Core/Analog/OTP 在内的内存空间,读/写全局变量。
烧录器和烧录接口,烧录方法参考文档AN-18101201-C_Telink Burning and Debugging Tool_BDT_User Guide“AN_18010500_User Guide for Telink Burning EVK TLSR8266BR56”
图片5.bmp
使用杜邦线连接烧录器和开发板
sshot-11.bmp
烧录器的3.3V连接开发板上JTAG接口的BEVK_3V3引脚
sshot-12.bmp
点击Download,报错:Swire err
图片8.bmp
原因:烧录器EVK版本过低,需要更EVK固件,点击Help/Upgrade进入升级页面, EVK的固件文件在BDT目录下
图片3.bmp
更新后,Swire OK了,但烧录仍然失败:
图片9.bmp
原因:3.3V连接位置不对,需要连接到VBAT这个引脚上,连接正确后,烧写成功了
图片10.bmp
图片11.bmp
重启后,程序开始运行,LED开始闪烁了
sshot-16.bmp
3.B91M_SINGLE_BLE_SDK 蓝牙例程编译测试
导入B91M_SINGLE_BLE_SDK并编译,烧录运行后,在手机上可以扫描到一个名为feature的蓝牙设备
sshot-17.bmp
有多种GATT服务,可作为HID设备使用,当和手机连接后,板子上LED会亮;作为HID设备使用时,开发板上的K1K2按键按下,可调节手机音量,K3K4按下可向手机分别输入12
图片12.bmp 图片13.bmp
查看代码,在user_init_normal()中初始化了gapgatt服务,以及广播参数和数据配置,tbl_advDatatbl_scanRsp定义了广播和响应的数据
  1.         //////////// Host Initialization  Begin /////////////////////////
  2.         /* Host Initialization */
  3.         /* GAP initialization must be done before any other host feature initialization !!! */
  4.         blc_gap_peripheral_init();    //gap initialization
  5.         extern void my_att_init ();
  6.         my_att_init (); //gatt initialization
  7.         /* L2CAP Initialization */
  8.         blc_l2cap_register_handler (blc_l2cap_packet_receive);
  9.         /* SMP Initialization may involve flash write/erase(when one sector stores too much information,
  10.          *   is about to exceed the sector threshold, this sector must be erased, and all useful information
  11.          *   should re_stored) , so it must be done after battery check */
  12.         blc_smp_peripheral_init();
  13.         // Hid device on android7.0/7.1 or later version
  14.         // New paring: send security_request immediately after connection complete
  15.         // reConnect:  send security_request 1000mS after connection complete. If master start paring or encryption before 1000mS timeout, slave do not send security_request.
  16.         blc_smp_configSecurityRequestSending(SecReq_IMM_SEND, SecReq_PEND_SEND, 1000); //if not set, default is:  send "security request" immediately after link layer connection established(regardless of new connection or reconnection)
  17.         //////////// Host Initialization  End /////////////////////////
  18. //////////////////////////// BLE stack Initialization  End //////////////////////////////////
  19.         u8 status = bls_ll_setAdvParam(  ADV_INTERVAL_30MS, ADV_INTERVAL_35MS,
  20.                                                                          ADV_TYPE_CONNECTABLE_UNDIRECTED, OWN_ADDRESS_PUBLIC,
  21.                                                                          0,  NULL,
  22.                                                                          BLT_ENABLE_ADV_ALL,
  23.                                                                          ADV_FP_NONE);
  24.         if(status != BLE_SUCCESS) { while(1); }  //debug: adv setting err
  25.         bls_ll_setAdvData( (u8 *)tbl_advData, sizeof(tbl_advData) );
  26.         bls_ll_setScanRspData( (u8 *)tbl_scanRsp, sizeof(tbl_scanRsp));
  27.         bls_ll_setAdvEnable(BLC_ADV_ENABLE);  //adv enable
改个蓝牙名字试试:
sshot-19.bmp
至此基本跑通,基础功能测试OK,后续再继续深入测试和学习其他能力
当前这一阶段的使用感受是:
1.芯片功能强大,支持音频接口,支持双模蓝牙,MeshThreadZigbee等多协议连接,不知道是否能在同一个SDK下同时支持多种协议,还是通过不同的SDK来支持不同的协议,后续再深入学习;
2.IDE比较易用,但烧写用的EVK工具连接说明和开发板的接线说明不清晰,开发板上供电和线路有些复杂,如果简化一下更好用;烧录方式目前只看到可通过烧写器进行;
3.软件SDK丰富,文档系统比较丰富,蓝牙协议栈接口庞大;支持蓝牙MeshMatter
4.芯片硬件相关资料较少,缺少芯片硬件设计参考和设计指导;