这篇文章介绍如何通过烧录工具给TB系列蓝牙模块烧录固件及天猫精灵三元组,以及如何通过烧录工具的固件市场下载最新的固件及固件操作说明文档。
安信可团队针对TB系列蓝牙模块专门开发了烧录软件上位机工具,工具主要用python写成,可同时支持Windows,Linux,macOS平台,目前只提供Windows平台打包好的可执行文件,其他平台用户可下载源码自行打包。
1.5.0版本烧录工具下载地址:https://ai-thinker.oss-cn-shenzhen.aliyuncs.com/TB_Tool/Ai-Thinker_TB_Tools_V1.5.0.exe
烧录工具源码地址:https://github.com/Ai-Thinker-Open/TBXX_Flash_Tool
TB-02 Kit开发板已经包含了自动下载电路,如果你使用的是开发板,直接通过USB线将模块连接电脑安装CH340串口驱动即可实现烧录。如果你是用的是单个模块,可按照下面的方法接线实现自动烧录(USB转串口要有DTR和RTS引脚):
USB To TTL | TB-01模块 |
---|---|
Vcc | |
Gnd | Gnd |
Tx | Rx |
Rx | Tx |
RTS | VCC |
DTR | SWS(背后圆点) |
USB To TTL | TB-01模块 |
---|---|
Vcc | Vcc |
Gnd | Gnd |
Tx | Rx |
Rx | Tx |
RTS | RST |
DTR | SWS |
如果你是用的是单模块,手上的串口模块又没有DTR或RTS流控引脚,那就不能实现自动下载,需通过如下方式手动进入下载模式:
首先按照如下方式接线:
USB To TTL | TB模块 |
---|---|
Vcc | Vcc |
Gnd | Gnd |
Tx | Rx |
Rx | Tx |
Gnd | SWS |
Gnd | RST |
然后再将模块的RST
引脚连接的Vcc,模块即可进入烧录模式,具体原理可参考文末的串口烧录原理介绍。
将模块或者开发板按照上诉当时正确连接的计算机,就可以烧录固件了。
双击打开烧录工具,如上图所示,首先选择模块或者开发板对应的串口,然后选择固件,最后点击烧录固件
按钮,如果一切正常就会开始烧录固件,下方的进度条将会显示烧录进度,烧录完成后整个窗体边绿色。如果烧录失败可参考文末的串口烧录原理介绍。
备注:烧录完成后模块不会自动重启,需手动按下开发板上的复位按键
或者按钮烧录页面上的复位芯片
按钮复位芯片。
模块想要连接天猫精灵音箱,必须烧录天猫精灵三元组,从天猫精灵开发者平台申请到的三元组如下图所示:
将Excel表格中三元组的每一个元素一次复制到烧录工具对应的输入框中,点击烧录三元组
按钮,即可执行三元组烧录,烧录成功窗体变绿色。
为了方便大家调试,烧录工具内置了串口调试的功能,如下图所示,点击页面上方的串口调试
按钮即可进入串口调试页面:
该页面除了有通用的串口调试功能外,还内置了很多常用的AT指令,调试时可直接使用。
目前该功能还有些Bug,使用时需注意。同时也希望熟悉Python的同学帮我们贡献点儿代码,修复下Bug,不胜感激。
模仿手机的固件市场,烧录工具中加入了固件市场的功能,用户可从固件市场中下载最新版的固件,然后烧录到模块中。
如下图所示,点击烧录工具上方的固件市场
按钮,即可进入固件市场页面:
如上图,每一行都代表一个固件,点击后面的下载
按钮,即可将该行对应的固件下载到本地计算机中,再通过烧录工具可将固件烧录到模块中。点击后面的文档
按钮,将会打开一个介绍该固件的窗口,如下图所示:
固件名称的结构为 功能@硬件设备 的方式,比如:
AT_BLE@TB-01
表示适用于TB-01模块的普通AT蓝牙固件AT_Mesh@TB-02+
表示适用于TB02/03/04的AT mesh组网固件Ali_Mesh_AT@TB-02_Kit
表示适用于TB-02 Kit开发板的对接天猫精灵的AT固件Ali_Mesh_CW@TB-02++
表示适用于TB-02/03/04及开发板的对接天猫精灵的冷暖灯固件为了方便大家查找开发资料,烧录工具又不务正业的做起了资料下载的工作,点击烧录工具上方的开发资料
按钮即可进入开发资料页面,如下图所示:
点击下载按钮,即可下载相关资料,目前还有些Bug,如果你有更好的方案,欢迎在GitHub上贡献代码!
泰凌微推出的这款低功耗蓝牙芯片TLSR8258本身是不支持串口烧录的,更新固件需要使用芯片原厂提供的烧录器,原厂烧录器120元一个,让每一个开发者都买一个这么贵的烧录器显然是不现实的。安信可作为物联网领域的推动者,为这款芯片开发了软件boot,使其支持串口烧录,可以说是将这盘死棋给下活了。
软件boot源码GitHub地址如下:https://github.com/Ai-Thinker-Open/Telink_825X_SDK/tree/master/example/bootloader
有兴趣的同学可以自行研究,下面简单介绍下运行原理:
编译好的bootloader存放在Flash的前16KBytes。芯片上电后,CPU自动将Flash的前16K数据(即BootLoader)复制到内存中,然后从0地址处开始运行。BootLoader根据SWS引脚的高低判断该进入那种模式。
SWS引脚电平 | Boot模式 |
---|---|
高电平 | 正常运行模式 |
低电平 | 烧录模式 |
如果进入烧录模式,将会继续运行bootloader代码,等待用户烧录固件。
如果进入运行模式,将会把应用层代码的Ram code 从Flash的 0x2C000 地址复制到内存0x0中,然后从内存0x0地址启动应用层代码。
地址 | 0x0-0x4000 | 0x4000 - 0x30000 |
---|---|---|
大小 | 16KBytes | 最大176KBytes |
内容 | Ram Code | 非 Ram Code |
地址 | 0x0-0x4000 | 0x4000 - 0x2C000 | 0x2C000 - 0x30000 |
---|---|---|---|
大小 | 16KBytes | 最大160KBytes | 16KBytes |
内容 | BootLoader | 非 Ram Code | Ram Code |
由上表可知,用户编译的固件在Flash中被拆分成了两部分,即将其前16KBytes的内容(Ram Code)放到了0x2C000的位置,非 Ram Code 存放地址不变。
由上文的烧录原理介绍可知,模块在上电时会检测SWS
引脚的电平,如果是高电平,将会运行应用层代码。如果SWS
是低电平,将会进入烧录模式,同时通过串口115200波特率输出boot loader ready
,因此我们可以通过串口工具查看模块是否输出这句话,来判断模块是否进入了烧录模式。
对于TB-02Kit开发版可执行如下操作,判断开发板的boot是否正常:
对于单模块,可连接好串口的Tx,Rx引脚,将模块的SWS
连接到GND
,打开串口,然后将模块的RST
引脚先连接到Gnd
再连接到VCC
(即复位模块),观察串口输出信息是否与上图一致。
对于TB-01模块没有引出RST
引脚,可用模块的VCC
代替RST
引脚。
使用过程中如遇到问题,欢迎加入交流群一起讨论: