我现在用的CC2541是BLE-Stack Version 1.5.0。由于我一个数据有50个字节,但是cc2541发一个包数据又不能超过20个字节。所有我想使用HCI接口,来发送大数据包。
Viki Shi:
推荐参考文档TI_BLE_Vendor_Specific_HCI_Guide,路径:C:\Texas Instruments\BLE-CC254x-1.5.0.16\Documents
user6125211:
回复 Viki Shi:
这个文档可以解决我说的问题?
user6125211:
回复 Viki Shi:
你好!你们TI有用这个文档的接口实现过我说有问题?
Alvin Chen:
回复 user6125211:
cc2541是ble4.1最多只能20个字节,不是API能解决的。可以选择CC2640R2F这类蓝牙5芯片。
user6125211:
回复 Alvin Chen:
我们现在的硬件已经批量。不能换芯片,也不能改APP那边,所以才在蓝牙API上找解决办法。要是能换芯片我早换了。
Alvin Chen:
回复 user6125211:
你可以尝试分多个包发送,至于为什么ble4.1只能发20字节。这个是Sig的Bluetooth的蓝牙标准规定的,其他家的芯片也是一样的。
Alvin Chen:
回复 Alvin Chen:
协议规定,payload 最大 27。在协议第六章中的 2.4,刨去 L2CAP 的头,4 个字节,剩下的就 23 个字节 MTU。就是你看到的。ATT 层会用掉上 1 个字节的 op code, 2 个字节的 attribute handle,就剩下 20了。这剩下的 20 字节就是我们常说的发送的 20 字节的数据。
你可以尝试分包发送在APP端进行拼接包的方法。
user6125211:
回复 Alvin Chen:
谢谢!Alvin chen. 我在网上有看到通过串口发送HCI格式的命令或数据给蓝牙,但是我不知道,蓝牙收到串口数据之后如何处理这些命令。
例如:COMMAND 02(表示异步数据包/事件包/命令包/同步数据包) 01 20(handle) 09 00(两字节长度) 05 00(l2cap长度)00 00(l2cap) 31 32 33 34 35(数据) 。蓝牙串口回调函数收到这条命令令之后。蓝牙如何处理才能发送给手机APP。应该不是用simpleProfile_ReadAttrCB或者是simpleProfile_WriteAttrCB这两个API吧
Alvin Chen:
回复 user6125211:
这部分程序为stack 层不开源。如果你想使用HCI层发送数据可以用btool配合host app这个程序,里面打印出log会显示交互的数据流。
如果你想用CC2541做应用用HCI命令不是一个明智的选择,建议还是用ble-stack 利用notify 传输数据。
user6125211:
回复 Alvin Chen:
谢谢!Alvin chen.
我也有试过notyify这个方法,因为APP不支持notify功能,我还在等待客户修改APP。APP是别人现在成的,别人要是不改,我也没有办法,而且notify行不行得通也等待验证。所以我还想到HCI这个方法。这个方法也许不是一个明智的选择,但是没有办法,有一点可能性我就想试试。