工具与软件:
大家好、团队成员:
我们的客户需要 DS125DF1610的10G 速度。 假设他选择2.5 GHz 的基准频率。 他如何向 DS125DF1610明确指明输出速度是10G 而不是5G?
他们 在此步骤中遇到了问题:他们的参考频率现在为2.5GHz、寄存器位0x2F [7:4]= 0x0A。 但输出频率为5G、而不是所需的10G。
此致、
Jejomar
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.
工具与软件:
大家好、团队成员:
我们的客户需要 DS125DF1610的10G 速度。 假设他选择2.5 GHz 的基准频率。 他如何向 DS125DF1610明确指明输出速度是10G 而不是5G?
他们 在此步骤中遇到了问题:他们的参考频率现在为2.5GHz、寄存器位0x2F [7:4]= 0x0A。 但输出频率为5G、而不是所需的10G。
此致、
Jejomar
您好、Lucas、
很遗憾、根据您的建议、客户无法达到10G 速度。
它们在 Anritsu MP2100B 示波器上检查速度。 从器件运行10G 速度(PRBS-31)、在示波器上设置类似的模式、然后观察到没有阳性结果。
另一方面、如果他们将示波器切换到5G 模式(PRBS-31)、结果为正。 也就是说、DS125DF1610会根据需要生成5G、而不是10G。
下面我将提供初始化代码、如果您能帮助我们查明错误的位置、我们将不胜感激。
void set_all_channel_10G( void ) { // ff ff 14 ff ff 02 ff ff 2f ff fc fd uint8_t data[12]={0x01,0x03,0x00,0x01,0x00,0x20,0x01,0x03,0xA6,0x01,0x00,0x01}; // Write to the channel regs HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data[0],1,10); HAL_Delay(100); // Write to the channel regs (broadcast) HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data[1],1,10); HAL_Delay(110); // ?? HAL_I2C_Mem_Write(&hi2c3,0x30,0x14,1,&data[2],1,10); HAL_Delay(250); // Turn off broadcast write HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data[3],1,10); HAL_Delay(100); // Write to the share regs HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data[4],1,10); HAL_Delay(100); // Freq 125 MHz HAL_I2C_Mem_Write(&hi2c3,0x30,0x02,1,&data[5],1,10); HAL_Delay(100); // Write to the channel regs HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data[6],1,100); HAL_Delay(100); // Write to the channel regs (broadcast) HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data[7],1,100); HAL_Delay(250); //CTLE - off, EN_FLD_C //CTLE - off, EN_FLD_CHECK = 1, EN_PPM_CHECK = 1, rate - 10 Gbps HAL_I2C_Mem_Write(&hi2c3,0x30,0x2F,1,&data[8],1,100); HAL_Delay(250); // Write to the channel regs( not broadcast) HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data[9],1,100); HAL_Delay(100); // Channels 0 - 7 switch off HAL_I2C_Mem_Write(&hi2c3,0x30,0xFC,1,&data[10],1,100); HAL_Delay(100); // Channel 8 - switch on HAL_I2C_Mem_Write(&hi2c3,0x30,0xFD,1,&data[11],1,100); HAL_Delay(500); uint8_t data3[3]={0x03,0x04,0x01}; // Write to the channel regs (broadcast) HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data3[0],1,10); HAL_Delay(100); // 0x09[2] = 1 enable bit to override divsel HAL_I2C_Mem_Write(&hi2c3,0x30,0x09,1,&data3[1],1,10); HAL_Delay(170); // Turn off broadcast write HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data3[2],1,10); HAL_Delay(500); uint8_t data4[3]={0x03,0x00,0x01}; // Write to the channel regs (broadcast) HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data4[0],1,10); HAL_Delay(70); // PDIQ // PDIQ_SEL_DIV, divide by 1 (bits 4-6 = 0b000) HAL_I2C_Mem_Write(&hi2c3,0x30,0x18,1,&data4[1],1,10); HAL_Delay(170); // Turn off broadcast write HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data4[2],1,10); HAL_Delay(100); uint8_t data5[3]={0x03,0x00,0x01}; // Write to the channel regs (broadcast) HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data5[0],1,10); HAL_Delay(100); // SINGLE_BIT_LIMIT_CHECK_ON - switch off HAL_I2C_Mem_Write(&hi2c3,0x30,0x0C,1,&data5[1],1,10); HAL_Delay(170); // Turn off broadcast write HAL_I2C_Mem_Write(&hi2c3,0x30,0xFF,1,&data5[2],1,10); HAL_Delay(500); }
此致、
Jejomar
尊敬的 Jejomar:
在我全面回顾此寄存器序列之前、您能说明每个参数吗? 我可以推断一些参数是什么、但您能分享其他参数表示什么吗? 是使用掩码还是将寄存器值完全写入每个寄存器地址?
HAL_I2C_I2C Mem_Write (I2C 总线、器件地址、寄存器地址、??、寄存器值、 ????)
初始化代码示例:HAL_I2C_DIC_ Mem_Write (&H 2c3、0x30、0xFF、1、&DATA[0]、1、10);
此致!
卢卡斯
您好、Lucas、
以下是 用于访问 DS125DF1610的函数参数
初始化代码示例:
HAL_I2C_DIC_ Mem_Write (&H 2c3、0x30、0xFF、1、&DATA[0]、1、10);
此处:
&hi2c3 - I2C 总线
0x30 - I2C 器件地址
0xFF–寄存器地址
1 -内部存储器地址的 memAddSize
&DATA[0]-寄存器值
1 -要发送的数据量的大小
10 -超时(以 ms 为单位)
为了以防万一、我还将从 HAL 库中给出该函数的标准定义。
/**
*@简要在分块模式下将大量数据写入特定的存储器地址
*@param hi2c 指针指向包含的 I2C_HandleTypeDef 结构
*指定 I2C 的配置信息。
*@param DevAddress 目标器件地址
*@param memAddress 内部存储器地址
*@param memAddSize 的内部存储器地址
*@param pData 指针到数据缓冲区
*@参数大小要发送的数据量
*@param 超时持续时间
*@retval HAL 状态
*/
HAL_StatusTypeDef HAL_I2C_MemSize Mem_Write (I2C_HandleTypeDef * hi2c、uint16_t DevAddress、uint16_t MemAddress、uint16_t MemAddSize、uint8_t * pData、 uint16_t 大小、uint32_t 超时)
{
}
此致、
Jejomar
尊敬的 Jejomar:
感谢您的澄清。 我查看了客户的寄存器写入序列、发现了一些问题:
客户能否改为使用以下寄存器写入序列?
客户是否可以访问 DS125DF1610编程指南? 本文档包含许多有用的寄存器写入序列、包括如何使用 PRBS 发生器。
此致!
卢卡斯