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.

[参考译文] CCS/MSP432P401R:SAP/SNP -修改广播间隔

Guru**** 2952510 points

Other Parts Discussed in Thread: CC2640R2F, ENERGYTRACE

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/954269/ccs-msp432p401r-sap-snp---modifying-advertising-interval

器件型号:MSP432P401R
主题中讨论的其他器件: CC2640R2F、 ENERGYTRACE

工具/软件:Code Composer Studio

大家好、

我在一个简单应用处理器/简单网络处理器对中使用 MSP432P401R 和 CC2640R2F Launchpad。

我的问题是、我无法将 SAP 端的广播间隔更改为1秒(1600=1000ms)我采取的步骤:

将 application_processor.h 中的 DEFAULT_advertising_interval 更改为1600。 这在独立的 cc2640r2f 应用程序中不起作用、因为 SAP 应用程序中从未使用 DEFAULT_advertising_interval。

我还尝试使用 SAP_setParam 更新广播间隔。 但是,这也不起作用。  

uint16_t advInt = DEFAULT_advertising_interval;
SAP_setParam (SAP_PARAM_ADV、SAP_GEN_DISC_ADV_INT_MIN、sizeof (advInt)、(uint8_t *) advInt);
SAP_setParam (SAP_PARAM_ADV、SAP_GEN_DISC_ADV_INT_MAX、sizeof (advInt)、(uint8_t *) advInt); 


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

    您好、Casey、

    您能否尝试在 simple_np 示例中更改 simple_np_gap.c 中的 default_advertising_interval?


    此致、
    阿尔茨

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

    感谢您的回答、Alec。  

    我修改了 simple_np 工程并更改了默认通告间隔、但看起来仍然没有更改。

    这是 Energytrace 得出的功率图。 每100ms 是一个脉冲。 我希望这是每秒一次。

    Casey

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

    您好、Casey、

    作为快速调试练习、您能否尝试完全在 simple_np 项目中禁用广播并检查这些脉冲是否消失? 最简单的方法是修改执行以下操作的行、并确保 advertEnabled 为 false。

    GAPRole_SetParameter (GAPROLE_adverted_enabled、sizeof (uint8_t)、advertEnabled);

    让我知道您在测试后看到了什么结果、我们可以在那里工作。

    此致、
    阿尔茨

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

    您好、Alec、

    感谢您的回答。 我按照您的说明操作并禁用广播。 下面是 Energytrace 现在显示的内容。

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

    为了澄清这一点、我在 MSP432上的应用处理器固件中修改了这一点、而不是在 cc2640R2F 中修改了这一点。

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

    Casey、

    很棒,很值得一看 此外、您在哪里放置 了您之前提到的 SAP_setParam 调用? 由于 WFH 的情况、我目前没有硬件来设置 SAP+SNP、因此很遗憾、这可能会在我们之间来回传输一些时间。

    此致、

    阿尔茨

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

    Alec、

    这是在 simple_application_processor 工程中的 AP_RESET 情况下进行的。 我刚刚检查了 SAP_setParam 函数的响应、并注意到它返回0x83、指示错误... 下面是 AP_RESET 情况:

    AP_RESET 情况:
    /*确保 CC26xx 不在 BSL 中*/
    GPIO_WRITE (Board_RESET、Board_LED_OFF);
    GPIO_WRITE (Board_MRDY、Board_LED_ON);
    
    usleep(10000);
    
    GPIO_WRITE (Board_RESET、Board_LED_ON);
    
    /*初始化 SAP 参数内的 UART 端口参数*/
    SAP_initParams (SAP_PORT_REMOT_UART、&sapParams);
    
    sapparams.port.remote.mrdyPinID = Board_MRDY;
    sapparams.port.remote.srdystyPinID = Board_SRDY;
    sapparams.port.remote.boardID = Board_UART1;
    
    /*设置 NP 模块*/
    SAP_OPEN (&sapParams);
    
    /*设置广播间隔。 *
    uint8_t stat;
    STAT = SAP_setParam (SAP_PARAM_ADV、SAP_GEN_DISC_ADV_INT_MIN、sizeof (advInt)、(uint8_t *)&advInt);
    STAT = SAP_setParam (SAP_PARAM_ADV、SAP_GEN_DISC_ADV_INT_MAX、sizeof (advInt)、(uint8_t *)&advInt);
    
    /*注册要接收的应用程序线程的回调
    来自 NP 的异步请求。 *
    SAP_setAppb (AP_asyncCB);
    
    /*重置 NP 并等待上电指示。
    清除在此之前接收到的任何待定电源指示
    重置调用*/
    Clock_gettime (clock_realtime、&ts);
    ts.tV_sec += 1;
    
    mq_timedreceive (apQueueRec、(void*)&curEvent、sizeof (uint32_t)、
    以前、&ts);
    
    SAP_RESET();
    
    操作
    {
    curEvent = 0;
    mq_receive (apQueueRec、(void*)&curEvent、sizeof (uint32_t)、&prio);
    
    if (curEvent!= AP_EVT_PUI)
    {
    //Display_printf (displayOut、0、0、
    // "[bleThread]警告! 意外事件%Lu"、
    // curEvent);
    }
    }
    while (curEvent!= AP_EVT_PUI);
    
    IF (curEvent =AP_EVT_PUI)
    {
    /*读取 BD ADDR */
    SAP_setParam (SAP_PARAM_HCI、SNP_HCI_OCODE_READ_BDaddr、0、
    null);
    
    /*设置服务-服务创建被阻止
    *无需挂起*/
    AP_initServices();
    
    状态= AP_IDLE;
    }
    中断;
    
    案例 AP_START_ADV: 

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

    Casey、

    好的、该错误表示 SNP 由于某种原因拒绝了命令。  在启用广播之前、您能否尝试将这些线路移动到 AP_START_ADV 部分? 在您发送广播命令时、SNP 可能还没有准备好执行广播命令。  

    此致、
    阿尔茨

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

    Alec、

    在启用广播之前移动此项后、我仍接收到0x83错误... 命令的格式是否正确?

    我使用以下命令对其建模: SAP_setParam (SAP_PARAM_CONN、SAP_CONN_State、sizeof (connHandle)、(uint8_t *)&connHandle);

    Casey

     

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

    Casey、

    我深入探讨了这一点、SAP_setParam 为 SAP_ADV_Params 定义了4种行为、其中没有一种行为对您特别有用。 我查看了 SAP_setParam (SAP_PARAM_ADV、SAP_ADV_STATE、1、enableAdv)内部的情况;它们的间隔硬编码为160。 因此、如果您进入 SAP.c 并查找行 lReq.interval = 160;如果您更改此值、然后验证您正在构建 SAP.c 的本地副本、这应该可以解决您的问题。

    此致、
    阿尔茨

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

    Alec、

    感谢您提供信息。 这个值看起来是硬编码的问题。 我将其从160更改为1600、但正如您所说的、我认为我需要包含 SAP.c 的本地副本、以便这些更改产生影响。 如何确保正在生成.c 文件的本地副本?

    谢谢、

    Casey

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

    Casey、

    确定本地版本是否为正在编译的版本的最简单方法之一是注释掉变量并查看它是否引发编译错误。 如果它不使用该本地副本、您将需要使用包含选项、使其包含您的本地版本而不是原始版本。 如果无法正常工作、最后一种方法是在应用程序源文件中重新创建该函数、以便对其进行精细控制。

    请告诉我它是怎么发生的。

    此致、
    阿尔茨

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

    Alec、

    正如您提到的、更改 sap.c 源文件对程序没有影响。 我对几个变量进行了注释、程序仍在构建过程中没有出现任何问题。

    此 sap.c 文件位于 msp432 ble SDK 中。 是否有办法在本地包含整个 SDK? 或者、我是否需要将其拖动到项目浏览器中?

    谢谢、

    Casey

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

    您好、Casey、

    在我的版本中、我看到 SAP.c 包含在本地项目目录中的 ti/SAP 文件夹中、因此您可能需要在此处进行更改。 请告诉我您的版本是否不同。

    此致、
    阿尔茨

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

    Alec、

    我的位于同一目录中。 如果我导航到 Includes 文件夹、我可以看到 ble SDK。 然后、SAP.c 文件位于 ti/SAP 中。 我认为这也是您看到的内容。 但是、更改间隔对广播间隔没有影响。

    谢谢、

    Casey Gross

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

    Casey、

    好的、我相信我已经全部解决了。 我无法100%确定、因为我目前无法访问 MSP432P4、但在我的 CCS 环境中、它似乎可以正常工作。 下面是我执行的步骤。

    1.在 CCS 中的本地项目中创建"ti"文件夹

    2.在该 ti 文件夹中创建"SAP"文件夹

    3.将所有.c 和.h 文件从{ble_plugin_location}/source/ti/sap 复制到 CCS 中的新文件夹

    4.转至项目属性->生成-> ARM 编译器->包含选项并将 ${PROJECT_ROOT}上调至顶部
    5.根据需要修改 SAP.c

    尝试一下、让我知道您找到的内容。

    此致、
    阿尔茨