主题中讨论的其他器件:LAUNCHXL-CC26X2R1、 SysConfig
您好!
我正在从事一个需要同时操作 蓝牙外设和 Ti15.4协调器 。 为了学习和开始使用 DMM 进行开发、我决定使用一个名为"DMM 15.4收集器+ BLE 远程显示"的示例(CCS 中的 DMM_154collector_remote_display_app_2_4g_CC26X2R1_LAUNCHXL_tirtos7_ticlang)。
开始使用 TI LaunchXL-CC26X2R1 我已经在硬件上成功运行该示例。 在不对示例代码进行任何修改的情况下、我观察到的广播数据和蓝牙外设的间隔。 令我吃惊的是它 不是 符合我根据 SysConfig 设置的预期。
SysConfig 中定义的广播间隔: 100毫秒 (不对 SysConfig 设置进行修改)
观察到的广告间隔:(测量确认与三星 Galaxy A40和 iPhone 14都运行 NRF Connect 应用程序)
这是一个巨大的差异-广播间隔超过6倍。 我找不到有关此类差异的任何信息、因此我决定尝试使用示例代码。 我从分析 DMM 的初始化和配置过程开始。 由于是蓝牙外设受到了影响、我将注意力转向了 TI15.4堆栈、认为它对蓝牙运行有不良影响。 我觉得 MAC 线程在 DMM 中的注册方式有点可疑:
DMMSch_registerClient(&(((pthread_Obj *) pMacTaskHndl)->task), DMMPolicy_StackRole_154Collector);
我真的不明白所有这些来源、因此我决定深入研究该问题、并获取了早期版本的 Simple Link SDK。 由于我运行的是最新的7.40.0.77、因此我决定沿着历史记录的道路前进、以转到 Simple Link SDK 6.10.0.29.对于同一样本,在 DMM 计划程序中注册新客户的情况看起来完全不同,感觉很正常(因为它应该看起来像乞讨):
DMMSch_registerClient(pMacTaskHndl, DMMPolicy_StackRole_154Collector);
为了进行测试、我已决定将样片从 Simple Link SDK 7.40.0.77修改为 以相同的方式注册 MAC 任务、使其按预期工作 ! 蓝牙以正确的广播间隔进行广播、Ti15.4网络正常工作。
以下是修复 MAC 线程在 DMM 调度程序中注册的方式之后观察到的广播间隔(看起来是什么样的):
Question:
- 在 DMM 调度程序模块中注册堆栈线程的正确方法是什么?
- 为什么在示例项目中对其进行了更改?
- 为什么这一变化对蓝牙外设运行有如此大的影响?