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.

[参考译文] CC2650MODA:主/从双模式

Guru**** 2563530 points
Other Parts Discussed in Thread: CC2650, CC2650MODA, CC2540

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/579874/cc2650moda-master-slave-dual-mode

部件号:CC2650MODA
主题中讨论的其他部件:CC2650CC2540

大家好,

我需要使BLE无屏幕设备作为主设备,用于连接作为从属设备连接的其他子设备。 但此设备必须具有连接到移动电话的选项。

如果我需要将此设备作为从属设备连接到移动电话,CC2650是否可以在双模式下工作:作为移动电话的从属设备和其他子设备的主设备?

如果不支持双模式,我能否将手机作为从机连接到CC2650?

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

    是的,CC2650可以同时是BLE从设备和主设备。

    我们有一个示例项目,它显示了此功能,它称为multi_role,可在GitHub ( github.com/.../ble_examples )上找到。

    此示例项目是为CC2650Launchpad设计的。 要在CC2650MODA上运行它,必须转到项目编译器预定义,并将CC2650_LAUNCHXL定义替换为BOOSTXL_CC2650MA。

    此外,您还必须弄清楚项目是为具有两个按钮的启动板编写的这一事实。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Marie H,
    感谢您的回答。
    我还有CC2650 Launchpad,这样我就可以在第一次不做任何修改的情况下检查示例。
    我检查了示例,发现它需要配对键。
    它还必须做什么?
    本示例的手册在哪里?

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

    此示例实现了对等,但您不需要提供密钥。 该文档位于: github.com/.../multi_role.md
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Marie H

    我已经锁上了文件,并检查了您提供的示例。
    但我无法理解它与哪些设备兼容。
    在开始时,我试图把零项目作为从属设备。 关闭时,我将"#define default_dev_ddisc_By_svc_UUUID"从"true"更改为"false",以启用从设备的识别(无法识别Zero项目其他服务)。
    但是当我尝试从“Multi_Role_CC2650”项目连接到从属设备“零项目”时,它会连接,半秒后断开连接。

    我尝试用“simple外围设备_2650”作为零项目。 它可以连接半分钟,但这个项目示例有另一个问题:如果我编译它并开始调试,它的工作非常完美,在我退出调试后它也会继续工作。 但是,当我重置或断开并重新连接电源时,它无法开始工作。

    因此,我的问题是:
    1.“multi_role_2650”是哪一个从机工作的?它是否也与“零项目”一起工作?
    2.如何使“simple外围设备”在进入调试模式时正常工作。因为我只有一个编程器。

    感谢您的关注。
    此致
    鲍里斯·弗里德曼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    发布脚本
    当我尝试从"multi_role_2650"项目连接到"zero_project"时,终端显示如下:

    连接->
    ->选择
    <-浏览设备
    设备1
    0xA0E6F8C4.2106万
    正在连接
    0xA0E6F8C4.2106万
    连接->
    <-下一选项
    Cxn 0配对已开始
    已连接!
    已连接至1

    0xA0E6F8C4.2106万
    已连接到0
    已断开连接!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Boris,

    1.默认情况下,multi_role与simone_peripheral一起工作,但通过设置#define default_dev_ddisc by_svc_UUID false,它可以与任何BLE从属设备一起工作。 既然您已经这样做了,它也应该与零项目一起使用。
    2.请确保正确终止调试会话(通过按CCS中的红色“停止”按钮)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    但是,可能会有什么风险导致模块立即断开连接?

    您是否有这些项目中使用的所有蓝牙命令的手册?

    此致

    鲍里斯·弗里德曼

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

    而调试需要做的是,我完全按照其他项目中的方式,通过停止按钮退出调试。 但在其他项目中,问题并不是偶然的,而是在周围的小村庄里。

    另外,当我尝试测试连接时,它会显示错误-230。

    当我退出调试并且项目工作时,测试连接将会产生:

    [开始:Texas Instruments XDS110 USB调试探头_0]

    执行以下命令:

    %CCS_base/common/uscif/dbgjtag -f %boarddataFilet%-RV -o -S完整性

    [结果]


    ——— [打印主板配置路径名]------------------

    C:\Users\MeirR\AppData\Local\TEXASI~1\CCS\
    TI\2\0\BrdDat testBoard.dat

    ——— [打印reset-command软件日志文件]------------------

    该实用程序选择了100或510类产品。
    该实用程序将加载适配器'jioxds110.dll'。
    库的构建日期为2017年2月22日。
    库的构建时间是'17:13:34'。
    库软件包版本为6.0 .579.0。
    库组件版本为35.35 .0.0。
    控制器不使用可编程FPGA。
    控制器的版本号为'5'(0x0.0005万)。
    控制器的插入长度为'0'(0x0万000000)。0万。
    此实用程序将尝试重置控制器。
    此实用程序已成功重置控制器。

    ——— [打印reset-command hardware log-file (重置命令硬件日志文件)]------------------

    扫描路径将通过切换JTAG TRST信号重置。
    控制器是带USB接口的XDS110。
    从控制器到目标的链路是直接链路(不带电缆)。
    该软件配置了XDS110功能。
    控制器无法监控EMU[0]引脚上的值。
    控制器无法监控EMU[1]针脚上的值。
    控制器无法控制输出引脚上的正时。
    控制器无法控制输入引脚上的正时。
    扫描路径链路延迟已完全设置为'0'(0x0000)。

    ——— [对JTAG IR执行完整性扫描测试]---------------

    此测试将使用64个32位字的块。
    此测试将仅应用一次。

    使用0xFFFFFFFF执行测试。
    扫描测试:1,跳过:0,失败:0
    使用0x0万执行测试。
    扫描测试:2,跳过:0,失败:0
    使用0xFE03E0E2执行测试。
    扫描测试:3,跳过:0,失败:0
    使用0x01FC1F1D执行测试。
    扫描测试:4,跳过:0,失败:0
    使用0x5533CCAA执行测试。
    扫描测试:5,跳过:0,失败:0
    使用0xAACC3355执行测试。
    扫描测试:6,跳过:0,失败:0
    已正确扫描所有值。

    JTAG IR完整性扫描测试已成功。

    ——— [在JTAG DR上执行完整性扫描测试]------------------

    此测试将使用64个32位字的块。
    此测试将仅应用一次。

    使用0xFFFFFFFF执行测试。
    扫描测试:1,跳过:0,失败:0
    使用0x0万执行测试。
    扫描测试:2,跳过:0,失败:0
    使用0xFE03E0E2执行测试。
    扫描测试:3,跳过:0,失败:0
    使用0x01FC1F1D执行测试。
    扫描测试:4,跳过:0,失败:0
    使用0x5533CCAA执行测试。
    扫描测试:5,跳过:0,失败:0
    使用0xAACC3355执行测试。
    扫描测试:6,跳过:0,失败:0
    已正确扫描所有值。

    JTAG DR完整性扫描测试已成功。

    [结束:Texas Instruments XDS110 USB调试探头_0]

    按下重置按钮后测试连接结果,项目无法启动:


    [开始:Texas Instruments XDS110 USB调试探头_0]

    执行以下命令:

    %CCS_base/common/uscif/dbgjtag -f %boarddataFilet%-RV -o -S完整性

    [结果]


    ——— [打印主板配置路径名]------------------

    C:\Users\MeirR\AppData\Local\TEXASI~1\CCS\
    TI\2\0\BrdDat testBoard.dat

    ——— [打印reset-command软件日志文件]------------------

    该实用程序选择了100或510类产品。
    该实用程序将加载适配器'jioxds110.dll'。
    库的构建日期为2017年2月22日。
    库的构建时间是'17:13:34'。
    库软件包版本为6.0 .579.0。
    库组件版本为35.35 .0.0。
    控制器不使用可编程FPGA。
    控制器的版本号为'5'(0x0.0005万)。
    控制器的插入长度为'0'(0x0万000000)。0万。
    此实用程序将尝试重置控制器。
    此实用程序已成功重置控制器。

    ——— [打印reset-command hardware log-file (重置命令硬件日志文件)]------------------

    扫描路径将通过切换JTAG TRST信号重置。
    控制器是带USB接口的XDS110。
    从控制器到目标的链路是直接链路(不带电缆)。
    该软件配置了XDS110功能。
    控制器无法监控EMU[0]引脚上的值。
    控制器无法监控EMU[1]针脚上的值。
    控制器无法控制输出引脚上的正时。
    控制器无法控制输入引脚上的正时。
    扫描路径链路延迟已完全设置为'0'(0x0000)。

    ——— [出现错误,此实用程序已中止]---------------

    此错误由TI的USCIF驱动程序或实用程序生成。

    值为'-230'(0xffffff1a)。
    标题为'C_ERR_PATH_MEAS'。

    解释如下:
    JTAG IR和DR扫描路径的测量长度无效。
    这表示链路延迟或扫描路径中存在错误。

    [结束:Texas Instruments XDS110 USB调试探头_0]

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

    当多角色看起来立即连接和断开时,可能根本没有连接,并且连接请求超时。

    您是否对项目进行了任何更改(DEFAULT_DEP_DISC_BY_SVC_UUID除外)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,我做了这些更改。否则根本找不到设备。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Boris,

    您是否对multi_role进行了任何其他更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Marie

    其他修改没有进行。 我完全按实际情况编制了这个项目。 仅修改了选项 "default_dev_disc_by_svc_UUUID" 。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Boris,
    您是否通过多角色示例解决了问题? 因为我和你的问题一样!

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

    不幸的是没有

    但最有趣的是,Zero Project可以完美地与其他制造的移动电话设备配合使用,而不是以他们的示例配合使用。

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

    您好,Boris,

    我无法再现您的问题。

    1)加载项目为零的设备(检查它是否先进,是否可与电话连接)

    2)从下载BLE附加示例

    3)导入多角色项目

    4)变更;

    // true以过滤所需服务UUID上的查找结果
    #define default_dev_disc_by_svc_UUID 错误//正确 

    5)构建多角色堆栈项目并将其闪存至CC2650LaunchPad

    6)构建多角色应用程序项目并将其闪存至CC2650 LP

    7)运行项目;发现设备(发现PZ),连接到PZ (成功,配对和绑定成功)。

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

    我尝试了所有这些步骤。
    首先,我必须“说”或者更确切地说,我只有一个LaunchPad CC2650,我已经将它编程为多角色设备。 与其它LaunchPad CC2650不同,我将CC2650MODA模块焊接在电子电路上。 我已将它们编程为零项目的设备。 我已经检查了其中的一个,并看到了接下来的有趣问题:

    1.其中一些Zero Project模块可以完美地与多角色板配合使用,但也有一些限制,而其他模块则完全不想与多角色配合使用,而只能与电话完美配合使用。

    2. ZP模块(零项目模块),与MR-Device (多角色设备)配合使用,直到我尝试用同一个零项目对它们进行重新编程。 但是没有修改,只是重新编译,MR-Device拒绝了,手机接受了。 要使ZP-Devieces再次与MR-Device配合使用,可以清除MR-Device内存并对其进行重新编程。


    我们尝试使用MAC地址0xA0E6F8C41B02连接ZP设备的MR-Device的输出。
    -----------------------
    首次连接-(MR-Dev.是首次编程的)
    -----------------------
    扫描->
    <-下一选项
    已连接到0
    0x24.7189万082685</s>8.2685万
    已初始化
    广告
    正在发现...

    找到的设备3.
    <-下一选项



    连接->
    ->选择
    <-浏览设备
    设备1
    0xA0E6F8C41B02
    正在连接
    0xA0E6F8C41B02
    连接->
    <-下一选项
    Cxn 0配对已开始
    已连接!
    已连接至1

    0xA0E6F8C41B02
    Cxn 0配对成功
    Cxn 0 bond save success



    ----------------
    第二个连接-(ZP-Dev先前已连接,现在正在重新连接)
    ----------------
    扫描->
    正在发现...

    找到的设备1.
    <-下一选项



    连接->
    ->选择
    <-浏览设备
    设备1
    0xA0E6F8C41B02
    正在连接
    0xA0E6F8C41B02
    连接->
    <-下一选项
    已连接!
    已连接至1

    0xA0E6F8C41B02
    Cxn 0绑定成功


    ----------------
    重新编程重新编译的零项目后的连接(在重新编程后尝试连接ZP-Dev)
    ----------------
    正在发现...

    找到的设备1.
    <-下一选项



    连接->
    ->选择
    <-浏览设备
    设备1
    0xA0E6F8C41B02
    正在连接
    0xA0E6F8C41B02
    连接->
    <-下一选项
    已连接!
    已连接至1

    0xA0E6F8C41B02
    已连接到0
    已断开连接!
    ->选择
    <-浏览设备
    取消

    设备1
    0xA0E6F8C41B02
    正在连接
    0xA0E6F8C41B02
    连接->
    <-下一选项
    已连接!
    已连接至1

    0xA0E6F8C41B02
    已连接到0
    已断开连接!
    ->选择
    <-浏览设备
    取消

    设备1
    0xA0E6F8C41B02
    正在连接
    0xA0E6F8C41B02
    连接->
    <-下一选项
    已连接!
    已连接至1

    0xA0E6F8C41B02
    已连接到0
    已断开连接!


    ----------------
    清除MR-Dev并重新编程后的连接。 -(已清除MR-dev的内存并重新编程)
    ----------------
    扫描->
    <-下一选项
    已连接到0
    0x24.7189万082685</s>8.2685万
    已初始化
    广告
    正在发现...

    找到的设备2.
    <-下一选项



    连接->
    ->选择
    <-浏览设备
    设备1
    0x74D2FE5B834A
    设备2.
    0xA0E6F8C41B02
    正在连接
    0xA0E6F8C41B02
    连接->
    <-下一选项
    Cxn 0配对已开始
    已连接!
    已连接至1

    0xA0E6F8C41B02
    Cxn 0配对成功
    Cxn 0 bond save success


    ----------------
    由于这些原因,我必须提出以下问题:
    1.当我使用相同的算法对类似的模块进行编程时,在配对过程中发送的之间有何区别? 其中一个是MAC地址。 但还有哪些呢?
    2.检查这些参数的位置-在堆栈部分或应用程序部分以及哪些文件和功能中?
    3.多项目是否在闪存中存储这些参数,如果是,在哪里?
    4.有些ZP模块(零项目模块)根本不想与多角色配合使用,而PT电话则运行良好。 原因可能是什么?
    5.编译的代码是否有任何信息,取决于BT通信中使用的编译时间?

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

    您能否提供失败案例的嗅探日志?

    零项目使用无定向广告,这意味着所有连接都应被接受。 (这适用于您的所有Project Zero设备。) 这意味着PZ应用程序或堆栈中没有检查参数。

    我不知道为什么与电话的连接比与multi_role的连接更好。 同样,嗅探器日志会告诉我们有关发生的情况的更多信息。

    代码编译不使用时间戳来生成蓝牙变量或类似的任何内容。 (MAC地址是根据序列号计算的,除非您提供了特定的MAC地址。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Marie,

    这是从设备上的ZeroProject获取的日志的嗅探器,该日志不希望与Multi_Role Project配对/绑定。

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    #0.0001万 [ 0.009 ] INFO:(Project0er.c:371)初始化用户任务,硬件,BLE堆栈和服务。
    #0.0002万 [ 0.009 ]信息:(ProjectZere.c:447) advertData数组中的名称:零
    #0.0003万 [ 0.014 ]信息:(LED_Service.c:218)注册服务,5个属性
    #0.0004万 [ 0.015 ]信息:(Button_Service.c:257)已注册服务,7个属性
    #0.0005万 [ 0.015 ]信息:(DATA_Service.c:238)已注册服务,6个属性
    #0.0006万 [ 0.015 ] INFO:(LED_Service.c:233)已注册的应用程序回调。 结构@2.0001万ed8.
    #0.0007万 [ 0.015 ] INFO:(Button_Service.c:274)已注册回调到应用程序。 结构@2.0001万ee0
    #0.0008万 [ 0.015 ] INFO:(DATA_Service.c:255)已注册对应用程序的回调。 结构@2.0001万ee8.
    #0.0009万 [ 0.015 ]信息:(LED_Service.c:268)设置参数:LED0 len:1.
    #0.001万 [ 0.015 ] INFO:(LED_Service.c:276) SetParameter:LED1 len:1.
    #0.0011万 [ 0.015 ] INFO:(Button_Service.c:315) SetParameter:BUTTON0 len: 1.
    #0.0012万 [ 0.015 ] INFO:(Button_Service.c:346) trying to send Noti/ind: connHandle FFFFFFFFFFFFF, Noti/ind disabled
    #0.0013万 [ 0.015 ] INFO:(Button_Service.c:326) SetParameter:Button1 len:1.
    #0.0014万 [ 0.015 ] INFO:(Button_Service.c:346) trying to send Noti/ind: connHandle FFFFFFFFFFFFF, Noti/ind disabled
    #0.0015万 [ 0.015 ] INFO:(DATA_Service.c:293) SetParameter:字符串长度:40
    #0.0016万 [ 0.015 ] INFO:(DATA_Service.c:304) SetParameter:流长度:20
    #0.0017万 [ 0.015 ] info:(data_Service.c:324) trying to send Noti/ind: connHandle FFFFFFFFFFFFF, Noti/ind disabled
    #0.0018万 [ 0.017 ]信息:(ProjectZero.c:1229)(CB)缝隙状态更改:1,正在发送消息到应用程序。
    #0.0019万 [ 0.019 ]信息:(ProjectZero.c:1229)(CB)缝隙状态更改:2,发送消息到应用程序。
    #0.002万 [ 0.019 ] INFO:(ProjectZere.c:738)间隔已开始。 我们的地址:0xA0E6F8C4.2386万
    #0.0021万 [ 0.019 ]信息:(Project0ere.c:743)广告
    #0.0022万 [ 49.498 ]信息:(ProjectZero.c:1229)(CB)缝隙状态更改:6,发送消息到应用程序。
    #0.0023万 [ 49.498 ]信息:(Project0er.c:753)已连接。 对等地址:0x24.7189万082685</s>8.2685万
    #0.0024万 [ 50.910 ]信息:(ProjectZero.c:1229)(CB)缝隙状态变化:4,正在发送消息到应用程序。
    #0.0025万 [ 50.911 ]信息:(ProjectZero.c:1229)(CB)缝隙状态更改:2,发送消息到应用程序。
    #0.0026万 [ 50.911 ]信息:(ProjectZere.c:762) Disconnected / Idle
    #0.0027万 [ 50.911 ]信息:(Project0ere.c:743)广告

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    标有黑色的线条会随着连接和断开连接的时间而改变。

    零项目接受连接,但会立即断开连接,可能配对或绑定失败。

    关于时间戳。  

    如果我在配对过程中理解正确,则设备会生成用于将来绑定的长时密钥。

    但是,生成长时密钥时要考虑哪些参数?

    不考虑时间戳,但程序员在刻录闪存中的程序时是否将当前日期和时间写入闪存? 如果是,BLE程序是否读取此刻录日期和时间以生成长时密钥?

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

    即使配对/绑定失败,连接也不应断开。

    是否可以提供数据包嗅探器日志(如 processors.wiki.ti.com/.../BLE_sniffer_guide )?

    长期密钥是根据真正的随机数生成器而不是时间戳生成的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Marie,

    不幸的是,我不能让嗅探器工作。 根据它的手册,嗅探器支持CC2540,而我有2650。  

    我尝试下载嗅探器并使用所需的十六进制文件(“sniffer_fw_cc2540_usb.hex”)对模块进行编程,但嗅探器程序根本无法识别连接的模块。 底部窗口为空。

    我是否做了任何错误的事? 嗅探器是否支持CC2650模块,或者是否需要购买CC2540?

    如果它支持CC2650模块,我必须如何配置它?

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

    对于TI数据包嗅探器软件,您需要CC2540 USB加密狗。 或者,您可以从其他供应商购买BLE嗅探器。 我认为这是一项很好的投资。 它简化了BLE调试,因为它将告诉您实际通过无线方式发送的数据包。