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.

[参考译文] CC2564C:用于添加 LE 支持的 FBL 构建脚本

Guru**** 2391415 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1127265/cc2564c-fbl-build-scripts-for-adding-le-support

器件型号:CC2564C

在使用 BT v5.1的项目上启用 BLE 时遇到问题。 我可以看到堆栈已经初始化好了。 调用 BSC_Initialize 后、我立即调用 BSC_EnableFeature (BluetoothStackId、BSC_Feature_Bluetooth_LOW_ENERGY)、并收到控制 器不支持 LE、BTPS_ERROR_LOCAL_CONTROLLER_Does_Not _support_LE 的错误。 我已验证 是否为项目定义了__support_low_energy__。 我认为缺失的部分是使用灵活的构建库使用 LE 选项重新编译库。 问题是、在哪里可以找到 FBL 构建脚本? 我在下载的源文件夹中的任何位置都看不到它们、以获取 Bluetopia v5.1栈。

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

    尊敬的 Jessica:

    您使用的是什么主机 MCU?

    最棒的
    Jacob

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

    它是 STM32F479 MCU。

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

    您好 Jessica、

    您的 CC256XC.h 是否具有类似这样的 LowEnergyPatch 定义?

    #ifdef __SUPPORT_LOW_ENERGY__
       /* The following is the binary representation of the Low Energy Patch*/
       /* Data.                                                             */
    static BTPSCONST unsigned char LowEnergyPatch[] =
    {
    	0x01, 0x5b, 0xfd, 0x02, 0x01, 0x01, 0x01, 0xdd, 0xfd, 0x01, 0x01
    };
    
    static BTPSCONST unsigned int LowEnergyPatchLength = sizeof(LowEnergyPatch);
    #endif //__SUPPORT_LOW_ENERGY__

    您不需要 FBL。 您还可以参考最新 STM32 Bluetopia 栈中的 SPPLEDemo 、以查看如何调用 HCI_VS_EnableFeature 的示例。

    最棒的
    Jacob

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

    是的、我已验证我在 CC256XC.h 中是否具有相同的 LowEnergyPatch 定义 我还确保我的项目 已定义_support_CC256XC_PATCH__、因此  CC256XC.h 将包含在 BTPSVEND.C 中

    我看了您提到的 SPPLEDemo。 它调用 BTPS_Init、后跟 BSC_Initialize、然后 是 BSC_EnableFeature、我将遵循该函数。 是否还有任何其他可能缺少的定义?

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

    尊敬的 Jessica:

    是否可以尝试 在 BTPSVEND.c 中的 HCI_VS_InitializeAfterHCIReset 中将 RET_val 初始化为 false?

       /* The following function prototype represents the vendor specific   */
       /* function which is used to implement any needed Bluetooth device   */
       /* vendor specific functionality after the HCI layer has issued any  */
       /* HCI Reset as part of the initialization.  This function is called */
       /* after all HCI functionality is established, just after the initial*/
       /* HCI Reset is sent to the stack.  The function should return a     */
       /* BOOLEAN TRUE to indicate successful completion or should return   */
       /* FALSE to indicate unsuccessful completion.  If an error is        */
       /* returned the stack will fail the initialization process.          */
       /* * NOTE * At the time this function is called HCI Driver and HCI   */
       /*          layer functions can be called, however no other stack    */
       /*          layer functions are able to be called at this time (hence*/
       /*          the HCI Driver ID and the Bluetooth Stack ID passed to   */
       /*          this function).                                          */
    Boolean_t BTPSAPI HCI_VS_InitializeAfterHCIReset(unsigned int HCIDriverID, unsigned int BluetoothStackID)
    {
       Boolean_t ret_val = FALSE;
    
       /* Verify that the parameters that were passed in appear valid.      */
       if((!VendorCommandsIssued) && (HCIDriverID) && (BluetoothStackID))
       {
          DBG_MSG(DBG_ZONE_VENDOR, ("HCI_VS_InitializeAfterHCIReset\r\n"));
    
          if(SpecifiedBaudRate != VENDOR_DEFAULT_BAUDRATE)
          {
             /* First, change the baseband's baudrate to what was specified */
             /* in the initialization structure.                            */
             if(!VS_Update_UART_Baud_Rate(BluetoothStackID, SpecifiedBaudRate))
                ret_val = TRUE;
             else
                ret_val = FALSE;
    
             BTPS_Delay(100);
          }
          else
             ret_val = TRUE;
    
         if(ret_val)
          {
             /* Next download the patch.                                    */
             ret_val = DownloadPatch(BluetoothStackID, sizeof(BasePatch), BasePatch);
    
             if((ret_val) && ((SpecifiedProtocol == cpHCILL) || (SpecifiedProtocol == cpHCILL_RTS_CTS)))
             {
                /* Now configure and enable HCILL                           */
                /*    Inactivity Timeout                       = 100ms      */
                /*    WakeUp indication retransmission timeout = 500ms      */
                /*    RTS pulse width                          = 150us      */
                if(!VS_Update_HCILL_Parameters(BluetoothStackID, 80, 400, 150))
                {
                   if(VS_Enable_Sleep_Mode(BluetoothStackID, TRUE))
                      ret_val = FALSE;
                }
                else
                   ret_val = FALSE;
             }
          }
    
          VendorCommandsIssued = ret_val;
       }
       else
          ret_val = FALSE;
    
       /* Print Success/Failure status.                                     */
       DBG_MSG(DBG_ZONE_VENDOR, ("HCI_VS_InitializeAfterHCIReset %s\r\n", (ret_val) ? "Success" : "Failure"));
    
       return(ret_val);
    }

    谢谢、
    Jacob

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

    我添加了 RET_val 初始化、但我仍然看到 LE 特性启用失败、并显示相同的错误代码(BTPS_ERROR_LOCAL_CONTROLLER_Does_Not _support_LE)。

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

    您好 Jessica、

    您能否确认堆栈中的 SPPLEDemo 在默认情况下适用于您? 否则、您可以 在此错误期间获取固件和 HCI 日志吗?

    谢谢、
    Jacob

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

    我将在错误发生时获取日志。 我没有可用于测试 SPPLEDemo 示例的评估板。

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

    您好、Jacob、

    我终于能够设置好一些东西来检索日志。

    编辑:已上传新日志(v2)。 之前的日志可能是在缺少预处理器标志的情况下生成的。

    e2e.ti.com/.../BTLE_5F00_enable_5F00_error_5F00_logs_5F00_v2.zip

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

    添加这些日志。 删除了一些 BT 经典初始化后、可能会更干净一些。

    e2e.ti.com/.../BTLE_5F00_enable_5F00_error_5F00_logs_5F00_BTInit.zip

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

    不再需要查看日志。 我已经能够解决 LE 功能使能呼叫失败的问题。 拔出 #ifdef _support_low_energy__语句并重新编译后、我能够启用 LE 功能。 在我的末尾、我需要解决的是如何包含/编译这些内容的问题。

    感谢 Jacob 的所有支持!