TTC SDK&透传常见问题及提供解决方法
物联网无线连接领域的从业人员对德州仪器(TI)并不陌生,其研发的SimpleLink超低功耗无线MCU具有业内领先的RF性能,相较于同类产品具备更宽泛的连接范围和更稳健的连通性等优势。值得一提的是,昇润科技自TI发布第一颗低功耗蓝牙MCU开始,就跟TI建立了长久稳固的合作关系,作为TI在中国区非常重要的第三方合作伙伴,昇润一直专注于TI蓝牙低功耗MCU的开发应用,从CC2541到CC2640,从CC2640到CC2640R2F,对TI的Bluetooth®低功耗无线MCU平台产品有着非常丰富的经验积累。为了方便开发人员使用TTC SDK,让用户拥有更好的体验,今天笔者收集了关于TTC SDK&透传的一些常见问题,同时提供解决方法。
一,TTC SDK&透传的基本知识
1.SDK&透传共同常见问题
以 CC2541 从机透传为例,说明功耗、蓝牙参数、时序之间的关系。其他版本的 SDK 以及透传,只是功耗有所差异,概念和测试方法与 CC2541 一致。
2.蓝牙参数/配置
(1)蓝牙角色:主机(Master)、从机(Slave)
初始化后,从机开始广播;可以进行扫描并发起连接请求的是蓝牙主机。
(2)广播间隔(Adv Interval)
蓝牙初级初始化,按照广播间隔,从机会定时发起一次蓝牙广播,广播结束后模组自动睡眠,实现超低功耗。
备注:蓝牙广播间隔,会自动加入 10ms 以内的随机延迟,以避免 BLE 设备之间可能存在的持续干扰。所以,广播实际间隔与设置的广播间隔,出现偏差是正常现象。另外,SDK 中主机+广播的组合角色,广播为不可连接广播。
由此可见,减小广播间隔,会增加模组功耗,主机可以更快的扫描到从机。反之,加大广播间隔,会减小模组功耗,主机扫描到从机的时间也相应增加。用户可根据实际应用调节此参数。
(3)连接间隔(Connection Interval)
当主机与从机建立连接后,按照连接间隔,每隔一段时间会自动产生一个连接事件,模组会自动唤醒一段时间,无需用户控制。
备注:蓝牙主从机如何同步唤醒无需关注,唤醒状态的时间长短由需传输数据的长度决定。
由此可见,减小连接间隔,会增加模组功耗,加快数据传输速度。反之,加大连接间隔,会减小模组功耗,数据传输变慢。用户可根据实际应用调节此参数。
(4)连接超时(Supervision Time-out)
超时时间为两个有效连接事件之间的时间差,超时则会断开连接。此参数设置需遵循一些规则: Interval Max * ( Slave Latency + 1) * 3 < ConnSupervisionTimeout
(5)蓝牙参数更新
主机与从机建立连接之后,默认先使用主机指定的蓝牙连接参数。SDK 以及透传蓝牙从机均可发起蓝牙参数更新请求,但是发起更新请求的时间点并不一样。一般是在与主机建立连接后,延迟一段时间发起参数更新请求,如透传的“参数更新延迟寄存器”参数可设置。
3.接口时序
用户主控 MCU 与 BLE 模组通信,可以使用 UART/SPI/IIC;均有一个引脚 WAKEUP/CSN,用于唤醒
BLE 模组:模组处于唤醒状态时,才能使用 UART/SPI/IIC 进行通信。
如前文提到,蓝牙广播以及蓝牙连接事件,会按照预设的参数自动完成,即 BLE 模组会自动唤醒完成蓝牙广播和连接事件。也就是说,WAKEUP/CSN 引脚的控制,只与 UART/SPI/IIC 通信有关,与蓝牙广播和蓝牙连接无关。
二,TTC SDK常见相关问题
1.SDK 开发环境安装相关问题
(问题1)安装 TTC_BLE_CC2640_SDK 时,提示无法更新环境变量。
【解决方法】在系统变量中添加 Python27,具体的操作流程如下:右键电脑→属性→高级系统设置→高级 →环境变量→Path→编辑,在这行语句的最后添加 C:\Python27,注意与前面语句之前用分号隔开。
然后在下面一行添加新的环境变量,步骤如下图所示,在语句最后添加:.PYM;.PY 这两个变量,注意前面语句用分号隔开,字母前面有一个小点。
(问题2)开发环境卸载问题
【解决方法】卸载开发环境会删除安装目录下的所有文件,所以卸载前务必备份程序至其他路径,以防资料丢失。注:若在“控制面板”中卸载开发环境失败,可尝试使用管理员权限卸载。具体操作如下,在windows开始菜单找到TTC_BLE_CC2640_SDK,右键“卸载”,点击更多,以管理员身份运行。如下图
2.SDK 程序备份问题
【解决方法】找到文件目录地址,拷贝整个文件夹即可。
3.IAR编译问题
(问题1)IAR未注册成功(会导致什么结果?)
【答】IAR功能受限。应用程序CC2640App工程、协议栈CC2640Stack工程编译时分别报错如下:
(问题2)路径问题(stack 编译通过,APP 编译提示错误如下:Error while )
【解决方法】卸载IAR,然后重装。注意:安装时需修改IAR安装路径!
(问题3)IAR配置丢失(编译APP时报错,提示:Variable expansion failed for Pre-Build command line.)
【原因】使用了较低版本打开了 IAR 工程,导致工程配置丢失,这个工程无法正常编译。
【解决方法】需先备份好自己写的代码;再重新解压程序,或者重装 SDK,用对应版本的 IAR 开启工程。
4.使用 IAR 仿真下载程序时,提示“Fatal error: Nodebug probe found connected to the USB port Session aborted!”错误
【原因】(1)IAR配置不正确 ;(2)模组可能已经烧录了我司的透传程序,并且调试接口已经被锁住。
【解决方法】(1)修改配置:选择正确的下载器,如图 :
(2)使用Flash Programmer2,若提示“The debug interface is locked!”,需强制擦除默认程序,解锁调试接口。
5.SDK配置视频教程代码使用报错问题(编译提示报错:Error while Running“C:\TTC_BLE_CC2640_R2_SDK\3.1.0\ti\xdctools_3_50_00_10_core/xs”-xdcpath=“C:\TTC_BLE_CC2640_R2_SDK\3.1.0\TTC_CC2640_R2_SDK\examples\rtos\CC2640R2_LAUNCHXL\blestack\SDK\TIRTOS\IAR\APP...”)
【解决方法】(1)检查 C 盘是否有对应路径,如果没有该路径,则说明 sdk 版本与视频教程中 sdk 版本不一致(视频教程中使用的 SDK 版本为 V3.1.0,而实际安装 SDK 可能是 V3.1.0 以后的新版本)。
(2)tools?Configure Custom Argument Variables…
显示为 SDK 3.1.0 的版本:
需修改为实际所安装的SDK的版本,如3.2.0,再重新编译即可。
6.TTC Programmer 提示“未发现 oad_image_tool,请手动选择所在目录”错误
【解决方法】手动添加oad_image_tool的路径,如下图
添加成功后,则提示“生成成功”,如下图:
当前物联网发展迅猛,物联网中的连接通常利用无线通信。在多个设备进行对话的无线通信应用中,BLE作为一种近场无线通讯技术,毫无疑问是最理想的选择。随着越来越多的新型物联网设备涌入市场,BLE的低功耗、传输快的优势使得现有的消费类电子设备普遍都采用蓝牙技术。昇润科技作为专业的蓝牙模块和方案的供应商,其产品可应用在各场景中。当然,开发的过程中,难免也会碰到一些异常问题,这里,我们将介绍一些TTC SDK&透传常见问题与解决方法。
一,TTC SDK&透传的基本知识
1.蓝牙参数/配置
(1)蓝牙角色:主机(Master)、从机(Slave)
初始化后,从机开始广播;可以进行扫描并发起连接请求的是蓝牙主机。
(2)广播间隔(Adv Interval)
蓝牙初级初始化,按照广播间隔,从机会定时发起一次蓝牙广播,广播结束后模组自动睡眠,实现超低功耗。
备注:蓝牙广播间隔,会自动加入 10ms 以内的随机延迟,以避免 BLE 设备之间可能存在的持续干扰。所以,广播实际间隔与设置的广播间隔,出现偏差是正常现象。另外,SDK 中主机+广播的组合角色,广播为不可连接广播。
由此可见,减小广播间隔,会增加模组功耗,主机可以更快的扫描到从机。反之,加大广播间隔,会减小模组功耗,主机扫描到从机的时间也相应增加。用户可根据实际应用调节此参数。
(3)连接间隔(Connection Interval)
当主机与从机建立连接后,按照连接间隔,每隔一段时间会自动产生一个连接事件,模组会自动唤醒一段时间,无需用户控制。
备注:蓝牙主从机如何同步唤醒无需关注,唤醒状态的时间长短由需传输数据的长度决定。
由此可见,减小连接间隔,会增加模组功耗,加快数据传输速度。反之,加大连接间隔,会减小模组功耗,数据传输变慢。用户可根据实际应用调节此参数。
(4)连接超时(Supervision Time-out)
超时时间为两个有效连接事件之间的时间差,超时则会断开连接。此参数设置需遵循一些规则: Interval Max * ( Slave Latency + 1) * 3 < ConnSupervisionTimeout
(5)蓝牙参数更新
主机与从机建立连接之后,默认先使用主机指定的蓝牙连接参数。SDK 以及透传蓝牙从机均可发起蓝牙参数更新请求,但是发起更新请求的时间点并不一样。一般是在与主机建立连接后,延迟一段时间发起参数更新请求,如透传的“参数更新延迟寄存器”参数可设置。
2.接口时序
用户主控 MCU 与 BLE 模组通信,可以使用 UART/SPI/IIC;均有一个引脚 WAKEUP/CSN,用于唤醒
BLE 模组:模组处于唤醒状态时,才能使用 UART/SPI/IIC 进行通信。
如前文提到,蓝牙广播以及蓝牙连接事件,会按照预设的参数自动完成,即 BLE 模组会自动唤醒完成蓝牙广播和连接事件。也就是说,WAKEUP/CSN 引脚的控制,只与 UART/SPI/IIC 通信有关,与蓝牙广播和蓝牙连接无关。
二,TTC SDK常见相关问题(CC2640为例)
1、使用 IAR 仿真下载程序时,提示“Fatal error: Nodebug probe found connected to the USB port Session aborted!”错误
【原因】(1)IAR配置不正确 ;(2)模组可能已经烧录了我司的透传程序,并且调试接口已经被锁住。
【解决方法】(1)修改配置:选择正确的下载器,如图 :
(2)使用Flash Programmer2,若提示“The debug interface is locked!”,需强制擦除默认程序,解锁调试接口。
2、SDK配置视频教程代码使用报错问题(编译提示报错:Error while Running “C:\TTC_BLE_CC2640_R2_SDK\3.1.0\ti\xdctools_3_50_00_10_core/xs”-xdcpath=“C:\TTC_BLE_CC2640_R2_SDK\3.1.0\TTC_CC2640_R2_SDK\examples\rtos\CC2640R2_LAUNCHXL\blestack\SDK\TIRTOS\IAR\APP...”)
【解决方法】(1)检查 C 盘是否有对应路径,如果没有该路径,则说明 sdk 版本与视频教程中 sdk 版本不一致(视频教程中使用的 SDK 版本为 V3.1.0,而实际安装 SDK 可能是 V3.1.0 以后的新版本)。
(2)tools?Configure Custom Argument Variables…
显示为 SDK 3.1.0 的版本:
需修改为实际所安装的SDK的版本,如3.2.0,再重新编译即可。
3、TTC Programmer 提示“未发现 oad_image_tool,请手动选择所在目录”错误
【解决方法】手动添加oad_image_tool的路径,如下图
添加成功后,则提示“生成成功”,如下图:
关于更多TTC SDK&透传问题请关注昇润科技微信公众号:Tunercom168