This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640:通过BLE与移动电话(iOS和Android)进行高吞吐量通信

Guru**** 2560090 points
Other Parts Discussed in Thread: CC2640

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/584472/cc2640-high-throughput-communication-over-ble-with-mobile-phone-ios-and-android

部件号:CC2640

您好,  

我们正在尝试在CC2640和可能支持语音数据传输(至少8KB/s实时语音数据)的移动设备之间建立BLE通信。 我们查看了此论坛和许多其他网站,并列出了我们迄今已完成或尝试的项目:

  • 到目前为止,我们尝试与Android平台建立通信,并尝试增强此部分。
    • 有人提到,使用"写入命令"而不是"写入请求"将数据从移动设备发送到CC2640将增加通信吞吐量。 因此,我们直接使用writeCharacteristic函数,而不是使用addRequestToQueue(req)将写入请求发送到队列以供稍后处理。 但是,这一点也没有帮助;因为 连续调用writeCharacteristic函数(两者之间没有任何延迟)失败,因此传输失败。 在它们之间添加100毫秒的延迟后,传输完成,但通信时间与以前的版本(通过请求发送数据)变得无关紧要。
    • 然后,我们尝试通过修改平台和移动软件进行通信,但结果没有显著变化(将GATT_PROP_WRITE _NO_RSP选项添加到平台端,并调用Android方法BluetoothGattCharacteristic::setWriteType with write_type_no_response参数)。
    • 我们在不同的移动电话(Nexus 5,General Mobile 5+,Vestel Venus V5570和V5070)上尝试了所有这些程序,但通信速度仍然不够,而且差别很大。
    •  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现我的帖子中有缺失的部分,因此我正在重写我的帖子。 对此造成的不便,我深表歉意。

    您好,

    我们正在尝试在CC2640和可能支持语音数据传输(至少8KB/s实时语音数据)的移动设备之间建立BLE通信。 我们查看了此论坛和许多其他网站,并列出了我们迄今已完成或尝试的项目:

    • 正如其他网站(punchthrough.com/.../maximizing-ble-throughput-on-ios-and-android )所述,对于Android设备,传输速率可能会提高到16KB/s,对于iPhone 6代,传输速率可能会提高到7111 KB/s,我们认为这是可以实现的。
    • 我们从simple外围项目开始作为源,并从(www.ti.com/.../swru393d.pdf )文档中获得灵感。
    • 根据文档,我们需要修改通信计时参数,例如通信间隔,从属延迟和连接超时。 我们将最小通信间隔设置为值8 (对应于10毫秒),从属延迟设置为0,连接超时设置为1000 (对应于10秒)。 我们使用GAPRole_SendUpdateParam函数来设置这些参数。
    • 我们使用20字节(用于数据大小)长BLE数据包进行通信。 当我们尝试增大数据包大小时,我们观察到了周期性的数据包丢失。 此外,只要我们增加数据包大小,数据包持续时间就会越来越长;虽然我们希望数据包能够在较短的时间内传输,但它可以在一个时间间隔内发送多个数据包。
    • 通过使用这些值和此函数,我们实现了最大450字节/秒的数据吞吐量

    到目前为止,我们尝试与Android平台建立通信,并尝试增强此部分。

    • 有人提到,  使用"写入命令"而不是"写入请求"将数据从移动设备发送到CC2640将增加通信吞吐量。 因此,我们直接使用writeCharacteristic函数,而不是使用addRequestToQueue(req)将写入请求发送到队列以供稍后处理。 但是,这一点也没有帮助;因为 连续调用writeCharacteristic函数(两者之间没有任何延迟)失败,因此传输失败。 在它们之间添加100毫秒的延迟后,传输完成,但通信时间与以前的版本(通过请求发送数据)变得无关紧要。
    • 然后,我们尝试通过修改平台和移动软件进行通信,但结果没有显著变化(将GATT_PROP_WRITE _NO_RSP选项添加到平台端,并调用Android方法BluetoothGattCharacteristic::setWriteType with write_type_no_response参数)。
    • 我们在不同的移动电话(Nexus 5,General Mobile 5+,Vestel Venus V5570和V5070)上尝试了所有这些程序,但通信速度仍然不够,而且差别很大。

    我们是否错过了提高吞吐量的任何内容?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Kivanc,

    也许您可以在此处查看音频发射器和接收器示例: github.com/.../cc2650lp

    谢谢,
    Fredrik
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Fredrik,

    首先,感谢您的快速回复。 我们已经检查了这些项目,并在这些项目的启发下实施了我们的项目。 但是,我们不能完全确定它是否可以与这些项目中的移动通信至CC2640通信一起使用,因为您提到的项目考虑了CC2640至CC2640 (或类似的芯片到芯片)通信之间的通信。

    我还读过不同的线程,即移动到CC2640的通信无法保证高吞吐量,因此不用于传输语音。 尽管如此,我们还是想测试通信吞吐量的限制,并测试我们可以在边界获得的结果。 即使这不会是一个非常可靠的沟通,我们也希望突破我们的限制。 您能引导我实现这一目标吗?

    您能否为我提供实现此目标所需检查的相关参数(适用于CC2640和Andorid App端)? 如果可能,您可以向我推荐一个Android应用程序示例,引导我配置我们的Android应用程序。

    感谢您的提前指导。

    此致,
    Kivanc