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.

[参考译文] LMH0395:寄存器值始终为0

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1118856/lmh0395-register-value-always-0

器件型号:LMH0395
大家好、
我们需要您的帮助来检查我们的客户的问题、如下所述。  
LMH0395测量一个寄存器输入的电缆长度、但我的读数始终为0、其他功能和寄存器正常。 为什么?
我使用 Arduino 并以这种方式读取变量
uint8_t lmh0395_get_cable_length (uint8_t 速率)
 uint8_t 长度;
 uint8_t CLI;
  bool err;
 //err = SPI_SDI_Read (LMH0395_CABLE LENGTH_INDIATOR&CLI);
 ERR = SPI_SDI_READ4 (LMH0395_CABLE LENGTH_INDIATOR&CLI);
 /*电缆长度指示器(CLI)提供了的指示
  *连接到输入端的电缆长度。 CLI 可通过 BITS 访问
  SPI 寄存器06h 的*[7:0]。
  * 8位设置的十进制值范围为0到247
  *("000000000000"至"11110111"二进制文件)、对应于0至400m 的
  * Belden 1694A 电缆。
  *对于3G 和 HD 输入、CLI 为每步1.25m。
  *对于 SD 输入、CLI 为每步1.25m、小于20m、从0到191十进制
  *和3.5m /步从192到247十进制。
  *
 长度= Rx_SDI[1]*5/4;
 如果(速率= 0){
  IF (Rx_SDI[1]<= 191)
   长度-= 20;
  其他
   长度=((191*5/4)-20)+((RX_SDI[1]-191)*7/2);
 }
 CHAR S[70];
 sprintf (s,"长度估计 IN4 (Belden 1694A 电缆):%dm \n", length);
 serial.println;
 //----------------------------
 长度= Rx_SDI[3]*5/4;
 如果(速率= 0){
  IF (Rx_SDI[3]<= 191)
   长度-= 20;
  其他
   长度=((191*5/4)-20)+((RX_SDI[3]-191)*7/2);
 }
  sprintf (s,"估计长度 in3 (Belden 1694A 电缆):%dm \n", length);
 serial.println;
//--------------------------------
 长度= Rx_SDI[5]* 5/4;
 如果(速率= 0){
  IF (Rx_SDI[5]<= 191)
   长度-= 20;
  其他
   长度=((191*5/4)-20)+((RX_SDI[5]-191)*7/2);
 }
 sprintf (s,"长度估计 IN2 (Belden 1694A 电缆):%dm \n", length);
 serial.println;
//--------------------------------
 长度= Rx_SDI[7]*5/4;
 如果(速率= 0){
  IF (Rx_SDI[7]<= 191)
   长度-= 20;
  其他
   长度=((191*5/4)-20)+((RX_SDI[7]-191)*7/2);
 }
 sprintf (s,"长度估计 IN1 (Belden 1694A 电缆):%dm \n", length);
 serial.println;
 返回0;
变量始终为0。
如果我通过该例程读取该速率:
静态 int lmh0395_get_rate (void)
 bool err;
 uint8_t ctrl;
 ERR = SPI_SDI_READ4 (LMH0395_RATE 指示器、&ctrl);
  
 字符 s[25];
 sprintf (s,“速率 IN4:%s \n”,(Rx_SDI[1]和0x20)? “3G/HD”:“SD”);
 serial.println;
 sprintf (s,“速率 in3:%s \n”,(Rx_SDI[3]和0x20)? “3G/HD”:“SD”);
 serial.println;
 sprintf (s,“速率 in2:%s \n”,(Rx_SDI[5]和0x20)? “3G/HD”:“SD”);
 serial.println;
 sprintf (s,“速率 IN1:%s \n”,(Rx_SDI[7]和0x20)? “3G/HD”:“SD”);
 serial.println;
  
 返回0;
我读取所有正确的值。
我认为这是均衡输入、所以我全部关闭、但返回的值始终为0。
您是否有软件可以解释您如何执行此例程?
此致、
Jonathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jonathan、

    1)。 电缆长度指示寄存器位于 LMH0395寄存器的地址0x06。 我检查了上述代码片段、看不出 Rx_SDI 是否初始化为0x06。

    2)。 只要存在载波检测并且器件通过 SDI 信号、那么该寄存器中就应该有一些值。

    3)。 请注意 LMH0395数据表第7.5.1.11节、其中我们指定了读取该寄存器的步骤。 这是唯一可用的文档/过程。

    此致、Nasser