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:CC2564C 上的 BER 测试和其他生产线测试。

Guru**** 2771175 points

Other Parts Discussed in Thread: CC2564C

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1213594/cc2564c-ber-test-and-other-production-line-tests-on-cc2564c

器件型号:CC2564C

您好、TI!

我们正在开发一款使用 CC2564C 双模特性(BT+BLE)的产品。

我们要设置一套生产线测试系统、确保射频器件按预期工作。

从 FCC 测试指南中、我们能够将器件置于 BR、EDR 和 LE 的连续 TX 模式下。 该部件正常工作。

现在、为了确保 RX 路径也按预期工作、我们将执行 RX 模式测试。

我们关注的是文档: CC256x-Testing-Guide-_2D00_-Texas-Instruments-Wiki.pdf

由于我们没有任何测试仪设置、因此我们使用 CC2564C 本身作为 TX 部件(而不是 PLL 测试仪)  

它使用以下功能进入 TX 模式(已使用 RSSI 查看器进行验证。 我们观察到选定通道上的活动):

HCI_VS_Write_BD_ADDR 0xFC06、"123456781234"

HCI_VS_DRPb_Tester_Packet_TX_RX 0xFD85、3、0、0xFF、0x1、 0x5、0、27、9、1、 0x01FF

我们在 Bluetopia 栈中重写以下这些函数

void Start_Continuous_TX_RX(unsigned int RF_BTStackID){
    int ret_val;
    Byte_t Length;
    Byte_t Status;
    Byte_t OGF;
    Word_t OCF;
    Byte_t CommandBuffer[30];
    Byte_t ReturnBuffer[12];
    BD_ADDR_t BD_ADDR;
    
    ASSIGN_BD_ADDR(BD_ADDR, 0x12, 0x34, 0x56, 0x78, 0x12, 0x34);
    
    VS_Set_Bluetooth_Address(RF_BTStackID,BD_ADDR);
    
    /* Before continuing, make sure the input parameters appears to be */
    /* semi-valid. */
    if((RF_BTStackID)){
        
        /* Format the HCI VS DRPB Tester Con Tx Command. */
        BTPS_MemInitialize(CommandBuffer, 0, 30);
        
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[0], 0x03);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[1], 0x00);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[2], 0xFF);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[3], 0x01);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[4], 0x03);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[5], 0x00);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[6], 0x1B);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[7], 0x00);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[8], 0x0F);
        ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[9], 0x01);
        ASSIGN_HOST_WORD_TO_LITTLE_ENDIAN_UNALIGNED_WORD(&CommandBuffer[10], 0x01FF);
        
        Length = sizeof(ReturnBuffer);
        OGF = COMMAND_OGF(0xFD85); //#define HCI_VS_DRPb_Tester_Packet_TX_RX
        OCF = COMMAND_OCF(0xFD85); //#define HCI_VS_DRPb_Tester_Packet_TX_RX
        ret_val = HCI_Send_Raw_Command(RF_BTStackID, OGF, OCF, 12, (Byte_t *)CommandBuffer, &Status, &Length, ReturnBuffer, TRUE);
        
    }
}

 

对于 RX 部分、我们使用该函数  

HCI_VS_DRPb_BER_Meter_Start 0xFD8B、0、0、0x123456781234、1、 0x1、27、1000、0x1FF、0x1

我们在 Bluetopia 栈中重写了此函数、如下所示

void Start_Continuous_RX(unsigned int RF_BTStackID,Byte_t Test_Pattern, Byte_t Frequency_Channel){
	   int    ret_val;
	   Byte_t Length;
	   Byte_t Status;
	   Byte_t OGF;
	   Word_t OCF;
	   Byte_t CommandBuffer[30];
	   Byte_t ReturnBuffer[12];

	   /* Before continuing, make sure the input parameters appears to be   */
	   /* semi-valid.                                                       */
	   //MAX_BLE_Channel = 39
	   if((RF_BTStackID)){

	      /* Format the HCI VS DRPB Tester Con Tx Command.                  */
	      BTPS_MemInitialize(CommandBuffer, 0, 30);

	      ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[0], 0x00);
	      ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[1], 0x00);
	      ASSIGN_HOST_WORD_TO_LITTLE_ENDIAN_UNALIGNED_WORD(&CommandBuffer[2], 0x1234);
	      ASSIGN_HOST_DWORD_TO_LITTLE_ENDIAN_UNALIGNED_DWORD(&CommandBuffer[4], 0x12345678);
	      ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[8], 0x01);
	      ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[9], 0x01);
	      ASSIGN_HOST_WORD_TO_LITTLE_ENDIAN_UNALIGNED_WORD(&CommandBuffer[10], 27);
	      ASSIGN_HOST_WORD_TO_LITTLE_ENDIAN_UNALIGNED_WORD(&CommandBuffer[12], 10);
	      ASSIGN_HOST_WORD_TO_LITTLE_ENDIAN_UNALIGNED_WORD(&CommandBuffer[14], 0x1FF);
	      ASSIGN_HOST_BYTE_TO_LITTLE_ENDIAN_UNALIGNED_BYTE(&CommandBuffer[16], 0x1);

	      Length  = sizeof(ReturnBuffer);
	      OGF     = COMMAND_OGF(0xFD8B); //#define HCI_VS_DRPb_BER_Meter_Start                     ((Word_t)(0xFD8B))
	      OCF     = COMMAND_OCF(0xFD8B); //#define HCI_VS_DRPb_BER_Meter_Start                     ((Word_t)(0xFD8B))
	      ret_val = HCI_Send_Raw_Command(RF_BTStackID, OGF, OCF, 17, (Byte_t *)CommandBuffer, &Status, &Length, ReturnBuffer, TRUE);
	   }


}

在调用该函数之前、堆栈初始化已完成。

来获得 我们使用的该 BER 测试的结果  

HCI_VS_DRP_READ_BER_METER_RESULT 0xFD13

 

void Get_BT_BER_Result(){
	int    ret_val;
	Byte_t Length;
	Byte_t Status;
	Byte_t OGF;
	Word_t OCF;
	Byte_t CommandBuffer[30];
	Byte_t ReturnBuffer[65];

	/* Before continuing, make sure the input parameters appears to be   */
	/* semi-valid.                                                       */
	//MAX_BLE_Channel = 39
	if((RF_BTStackID)){
	   Start_Continuous_RX(RF_BTStackID,0,0);

	   osDelay(10000);
	  /* Format the HCI VS DRPB Tester Con Tx Command.                  */
	  BTPS_MemInitialize(CommandBuffer, 0, 30);

	  ReturnBuffer[63] =55;
	  Length  = sizeof(ReturnBuffer);
	  OGF     = COMMAND_OGF(0xFD13); //#define HCI_VS_DRPb_BER_Meter_Start                     ((Word_t)(0xFD8B))
	  OCF     = COMMAND_OCF(0xFD13); //#define HCI_VS_DRPb_BER_Meter_Start                     ((Word_t)(0xFD8B))
	  ret_val = HCI_Send_Raw_Command(RF_BTStackID, OGF, OCF, 0, (Byte_t *)CommandBuffer, &Status, &Length, ReturnBuffer, TRUE);

	  if(ret_val == 0){
		  Display(("Get_BT_BER_Result\n"));
		  Display(("%d\n",ReturnBuffer[63]));
		  for(int i =0;i<Length;i++){
			  Display(("%d: %d\n",i,ReturnBuffer[i]));
		  }
	  }else{
		  Display(("Get_LE_BER_Result Failed\n"));
	  }
	}
}

但我得到的结果是全为零。

这是执行该 BER 测试的正确方法吗?

在测试之前、我们是否必须将 RX 与 TX 配对?

TI 是否有任何序列的命令来正确执行这些测试?

 

谢谢!

Vishnuprasad

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

    尊敬的 Vishnuprasad:

    请参阅本文档、参照 FCC 测试指南进行测试、其中具体说明了使用 CC256x 作为 TX 进行 RX 测试的情形: e2e.ti.com/.../CC256x-Production-Line-Testing-Guide.pdf

    一目了然、您正在使用的是正确的命令。 在测试之前不需要对 RX 和 TX 配对、因为这些射频 FCC 模式明确无连接。

    我要说的是、所有结果均为0这一事实意味着、如果结果有效、则 RX 侧未接收到任何数据包。 您可以 多次调用 HCI_VS_DRP_READ_BER_METER_RESULT 来检查接收到的数据包数量是否仍然为0? 另外、从开始接收器测试(HCI_VS_DRPb_BER_Meter_Start)到轮询结果之间的延迟是多长时间?

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

    Daniel、您好!

    我们在开始和结束之间使用10秒的延迟。

    谢谢!

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

    尊敬的 Vishnuprasad:

    您是否能够 多次调用 HCI_VS_DRP_READ_BER_METER_RESULT () 并查看数据包数量的变化?

    此外、如果我错了、请在  HCI_VS_DRPb_BER_Meter_Start 0xFD8B、0、0、0x123456781234、1、 0x1、27、1000、0x1FF、0x1命令代码:

    通过以下方式将要等待的数据包数量设置为10而不是1000: ASSIGN_HOST_WORD_TO_LITT_ENDIAN_UNaligned_WORD (&CommandBuffer[12]、10);

    如果结果没有变化、我们很可能需要获取两个器件的 HCI 日志以进一步调试该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    通过以下方式将要等待的数据包数量设置为10而不是1000: ASSIGN_HOST_WORD_TO_LITT_ENDIAN_UNaligned_WORD (&CommandBuffer[12]、10);

    是的、您是对的、我们特意这样做是为了在10秒内检查是否接收到至少10个数据包。 起初、它只是1000。

    与您所说的尝试调用类似、我们多次减少了数据包数量。

    谢谢!

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

    Daniel、您好!

    我将为接收器侧和发送器侧附加日志文件。

    您实际上可以查看从下到上的对数方法。 (您可以搜索最后的 HCI_Reset)。

    线路号:183在 ReceiverPart.lgr

    行号:183 in Transmitter_Part.lgr

    e2e.ti.com/.../4024.LOG_5F00_1.zip

    谢谢!

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

    您好,Vishnuprasad,请允许我一些时间来浏览这些日志。

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

    Daniel、您好!  

    感谢您的努力。

    如果此设置正在工作、您有任何 BT 记录器日志。  我还可以尝试比较它。

    谢谢!

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

    Daniel、您好!

    您是否有我可以参考的日志?

    您是否可以在开发套件设置中运行 RX 测试并运行测试以收集 HCI 日志?

    谢谢!

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

    您好、Vishnuprasad、目前我没有可以提供的任何日志、我需要修改演示代码并运行 RX 测试。