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.

[参考译文] CC2541:CC2541中央外设数据通信时间优化

Guru**** 2552210 points
Other Parts Discussed in Thread: CC2541, CC2540

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/575886/cc2541-cc2541-central-peripheral-data-communication-time-optimization

器件型号:CC2541
主题中讨论的其他器件: CC2540

大家好、

我们使用的是 CC2541、我们的应用具有2个 BLE 器件、所有器件均可单独与 Android 手机通信。 在2个器件中、一个器件处于中央角色、另一个处于外设角色。 要将数据发送到 Android 手机中央角色、将切换到外设。 角色切换将从外部事件触发。 每个 BLE 器件都通过 UART 连接到外部 MCU。

在中央器件中、UART 的数据将使用 WriteReq 方法发送到外设。 数据长度为16字节。 外设以指示方法将数据发送到中央。  

我们能够在不丢失数据的情况下实现双向通信。 但是、连接后的数据通信时间大约为190到200ms。 BLE1到 BLE2花费80到90ms、反之亦然。 BLE1是中央器件、BLE2是外设。 时序详细信息附在此处。

连接参数如下

中央侧

/扫描响应的最大数量
#define DEFAULT_MAX_SCAN_RES 8.

//扫描持续时间(以 ms 为单位)
#define DEFAULT_SCAN_DURATION 4000

//调查模式(有限、通用、全部)
#define DEFAULT_DISCOVERY_MODE DEVDISC_MODE_ALL

// true 使用活动扫描
#define DEFAULT_DISCOVERY ACTIVE_SCAN TRUE

// true 在发现过程中使用白色列表
#define DEFAULT_DISCOVERY_WHICE_LIST FALSE

// true 在创建链接时使用高扫描占空比
#define default_link_high_Duty_cycle false

// true 在创建链接时使用白色列表
#define DEFAULT_LINK_WHICE_LIST FALSE

//默认 RSSI 轮询周期,以 ms 为单位
#define DEFAULT_RSSI_PERIOD 1000

//在建立连接时是否启用自动参数更新请求
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE

//如果启用了自动参数更新请求,则最小连接间隔(单位为1.25ms)
#define DEFAULT_UPDATE_MIN_CONN_INTERVAL 8.

//如果启用了自动参数更新请求,则最大连接间隔(单位为1.25ms)
#define DEFAULT_UPDATE_MAX_CONN_INTERVAL 8.

//启用自动参数更新请求时要使用的从器件延迟
#define DEFAULT_UPDATE_SLAVE_DELATCY 0

//如果启用了自动参数更新请求,则监控超时值(10ms 的单位)
#define DEFAULT_UPDATE_CONN_TIMEOUT 600

外设侧


//可发现器件时的广播间隔是多少(单位625us、160=100ms)
#define DEFAULT_advertising_interval 160

//如果启用了自动参数更新请求,则最小连接间隔(单位为1.25ms,80=100ms)
#define DEFAULT_MIVEed_MIN_CONN_INTERVAL 8.

//如果启用了自动参数更新请求,则最大连接间隔(单位为1.25ms,800=1000ms)
#define DEFAULT_RETOVE_MAX_CONN_INTERVAL 8.

//启用自动参数更新请求时要使用的从器件延迟
#define DEFAULT_REGLED_SLAVE_LON延 时0

//如果启用了自动参数更新请求,则监控超时值(10ms、1000=10s 的单位)
#define DEFAULT_MODED_CONN_TIMEOUT 1000

//在建立连接时是否启用自动参数更新请求
#define DEFAULT_ENABLE_UPDATE_REQUEST FALSE

我已禁用睡眠模式以优化时间

xPOWER_SAVing、  HCI_EXT_HaltDuringRfCmd (HCI_EXT_HALT_During_RF_DISABLE);

连接 BLE 后、外设将更新连接参数

 GAPRole_SendUpdateParam (6、6、0、1000、GAPROLE_RESDED_PARAM_UPDATE);

是否有任何方法来优化时间?

此致、

Kayathri

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

    您好!

    为了澄清您的陈述:"连接 BLE 后、外设将更新连接参数"、您实际上正在请求更新连接参数。 您应采用数据包(AIR)监听器跟踪来确认中央设备是否接受了连接参数。 否则、您将保持较慢的(默认为48.75ms Android)间隔。

    祝你一切顺利

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

    我们已使用数据包监听器在外设端进行了测试。

    我无法使用中央设备和外围设备之间的 CC2540 USB 软件狗进行捕获。 有没有任何建议。

    我们希望优化两个 CC2541 BLE 器件之间的时间。


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

    您好、JXS、
    除上述问题外
    我们已在外设端使用 TI 数据包监听器(CC2540 USB 软件狗)进行了测试。 我们在数据包监听器上只能看到 ADV 数据包。
    同时在2个 BLE 器件之间进行通信。 我们不知道 CC2541中央侧的参数是否在变化。 在中央侧、我们保持了7.5ms 的最小连接间隔。

    根据文档、连接间隔与2个 BLES 之间的数据传输成正比。

    为了测试该变化、我们将两侧的最小连接间隔从7.5ms 增加到800ms。 数据传输时间没有变化、即我在线程中发布的200ms。

    我们使用 BTool 通过 CC2540 USB 软件狗测试了外设。 我们在 BTool 中设置连接间隔、但数据传输时间没有变化。 我正在使用通知进行数据传输。 附加的快照以供参考。\n 从快照观察。 无论有何变化、通知消息接收时间均为16ms。

    在快照中、建立连接后、即使在我们禁用之后、GAP_LinkParaUpdate 也会以6 (7.5ms)的连接间隔更新。

    任何建议都将大有帮助。

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

    请参阅 BLE Wiki 上的 TI 数据包监听器用户指南。 它具有代码修改功能、您可以将 CC2541配置为仅在一个 ADV 通道上传输。 您可能缺少连接请求、这就是监听器未显示连接的原因。

    请注意、BTool 日志上的 RX 时间戳仅在 PC 收到数据时才出现。

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

    您好、JXS、

    使用数据包监听器、我们可以捕获连接参数。 但是、无论有何变化、连接间隔都保持不变、即6。
    正如我们之前观察到的、用于参考和数据传输时间的附加快照为99ms。
    我们是否缺少任何东西?