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.

[参考译文] CC2340R5-Q1:总线传输速度对连接监视器的影响

Guru**** 2589280 points
Other Parts Discussed in Thread: CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1370877/cc2340r5-q1-effect-of-bus-transfer-speed-on-connection-monitor

器件型号:CC2340R5-Q1
主题中讨论的其他器件:CC2340R5

工具与软件:

您好、TI

目前正在调试连接监控器。

我发现使用串行端口监控连接很简单、但使用 LIN 很难做到。

串行端口的波特率为460800、LIN 的波特率为19200。我们计算出 LIN 传输连接参数大约需要40ms。

这对连接监视器有何影响? 如何让 LIN 成功监控连接?

此致

普雷斯顿

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

    您好、TI

    我在连接监视器项目中看到了这段代码:(__LW_AT__sdk:simplelink_lowpower_f3_sdk_7_40_00_64:project、connection_monitor_LP_EM_CC2340R5_freertos_ticlang)

        // With a 100ms connection interval we will skip 3 channels into the future (in each connection event we can monitor 1 channel)
        // This is mainly done to ensure that even a very slow bus is able to send the connection information in time
        // In time: before the Central/Peripheral already go past the channel that we chose to listen on
        // If Central/Peripheral are already past this point, we will have to wait numChannels*connInterval until we catch the
        // connection once again
        chanSkip = (uint16_t)((BUS_LATENCY_IN_MS/connInterval) + 1);
    
        // Catch anchor point n+2 connection intervals in the future
        ubCMConnInfo.ArrayOfConnInfo[i].scanDuration = (uint16_t)(connInterval*(chanSkip + 1));
    
        // DeltaTime is the distance between the current time and time we received the data for the new connection.
        deltaTime = uble_timeDelta(currTime, reqTime);
    
        // Figure out how many connection events have passed since the last anchor point
        if (deltaTime > connInterval * BLE_TO_RAT)
        {
          chanSkip += (uint16_t) (deltaTime / (connInterval * BLE_TO_RAT) + 1);
        }
    
        ubCMConnInfo.ArrayOfConnInfo[i].currentChan = setNextDataChan(sessionId, chanSkip); //jump some [ms] channels into the future

    此处说明了两点。

    1.这主要是为了确保即使是非常慢的总线也能够及时发送连接信息。

    2.如果中心/外围设备已经超过此点、我们将必须等待 numChannels*connInterval、直到我们再次接通连接。

    我想、如果我通过 LIN 传输连接参数(至少40ms、拆分成多个数据包以10ms 的传输间隔)、很可能我已经错过了目标通道。  但等待时间超过 numChannels*connInterval 之后、我仍然没有 RSSI 事件。 我需要调整哪些参数?

    此致

    普雷斯顿

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

    Preston、

    在这种情况下需要考虑的关键点是连接间隔。 如果您的连接间隔非常快、但总线延迟较慢(例如 LIN)、这可能会给系统带来更大的压力。 例如、对于 Android 设备、在连接开始时通常使用7.5ms 的连接间隔、以实现 GATT 发现等 在此期间、手机还会更新通道地图、以此类推、因此设备需要对此做出快速反应。 也就是说、我们还有其他情况、利用 LIN 的连接监测器生产了类似的器件。 如果您将其设置为期望更大的总线延迟、那么系统是否运行良好? 您设置的大小如何?

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

    您好、Evan

    我不确定总线延迟是什么意思。 这是总线上主器件发送数据和从器件接收数据之间的时间差吗?

    此外、我想确认一点、在监视器首次成功进行监视后、监视器会单独找到受监视对象所在的通道吗?还是会根据 CSA1#的规则进行固定跳转? 如果第一个显示器出现故障、是否很难继续监护?

    请帮我解释这些问题、谢谢!

    此致

    普雷斯顿

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

    您好、Evan

    我找到了总线延迟的相关参数。 但是、您如何确定将此参数更改为多少? 我提高了它或者它不起作用。

    我现在的做法是,我第一次收到 LIN 数据包,我读取 reqTime ( ubCM_startNewSession (中的 reqTime )。 我们将 LIN 配置为一次仅发送8个字节的数据、但连接参数约为30个字节、需要将其拆分为多次传输。 我已将 LIN 传输时间包含在 ubCM_InitCmSession ()的 deltaTime 中  ,这使得目标易于监控。

    但是、我针对 simplelink_lowpower_f3_sdk_7_40_00_64执行该操作的方法是、将更新为 simplelink_lowpower_f3_sdk_8_10_00_55的方法再次不起作用。

    此致

    普雷斯顿