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.

[参考译文] PGA460-Q1:无法读取 OUTA 引脚上的突发

Guru**** 2616395 points

Other Parts Discussed in Thread: PGA460-Q1, PGA460

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/669441/pga460-q1-unable-to-read-bursts-at-outa-pin

器件型号:PGA460-Q1
Thread 中讨论的其他器件: PGA460

大家好、

我正在为我的论文做一个项目、涉及距离测距。 所需的测量范围为6米、我选择了采用 Arduino Uno 的 PGA460-Q1作为微控制器。 Uno 和 PGA460-Q1通过 UART 连接。 单静态类型的 PROWAVE 空气耦合超声波传感器400EP14D 与 PROWAVE 变压器 K4000002 (3370)搭配使用

上述电路由 PGA460-Q1 数据表的图136和表101进行了处理和引用。

  • C (INN)和 C (INP)值根据表101中的公式计算得出、适用于40KHz 频率。 由于不可用、添加了接近计算值的电容器值。
  • 根据 PGA460软件开发指南第4页的指示、引脚12 (SCLK)被拉高至5V 、以配置5V UART 逻辑电平。
  • 引脚9 (测试引脚)通过150kE 电阻器上拉至5V 或3.3V、以根据 PGA460-Q1数据表的测试引脚功能部分(7.3.12)中的说明选择5V UART 逻辑电平。

变压器-换能器组合是从 SRM400应用电路获得的。 该电路处于工作状态、可检测长达1.5米的物体。

我尝试使用以下 Arduino sketch 在 PIN5 (OUTA)读取突发。 DEV_STAT0寄存器值被读取(128个值)、THR_CRC_ERR 参数为0 (即无错误)、VPWR_OV_TH 参数设置为00b (即12.3V)、VIN 设置为8.5V。 REGMAP 寄存器的读写 UART 命令工作正常、但两个预设(CMD 0和1)的突发和监听命令不会在 OUTA 提供突发。

请帮我提供一些宝贵的建议。 Arduino sketch 中的一些重要注释以粗体显示。

谢谢你。

Arduino 草图:

字节校验和输入[44];
字节 regAddr;
字节 regData;
int c;
int m;
字节数量对象= 0x02;

字节 P1_THR_0 = 0x88;
字节 P1_THR_1 = 0x88;
字节 P1_THR_2 = 0x88;
字节 P1_THR_3 = 0x88;
字节 P1_THR_4 = 0x88;
字节 P1_THR_5 = 0x88;
字节 P1_THR_6 = 0x42;
字节 P1_THR_7 = 0x10;
字节 P1_THR_8 = 0x84;
字节 P1_THR_9 = 0x21;
字节 P1_THR_10 = 0x08;
字节 P1_THR_11 = 0x40;
字节 P1_THR_12 = 0x40;
字节 P1_THR_13 = 0x40;
字节 P1_THR_14 = 0x40;
字节 P1_THR_15 = 0x00;
字节 P2_THR_0 = 0x88;
字节 P2_THR_1 = 0x88;
字节 P2_THR_2 = 0x88;
字节 P2_THR_3 = 0x88;
字节 P2_THR_4 = 0x88;
字节 P2_THR_5 = 0x88;
字节 P2_THR_6 = 0x42;
字节 P2_THR_7 = 0x10;
字节 P2_THR_8 = 0x84;
字节 P2_THR_9 = 0x21;
字节 P2_THR_10 = 0x08;
字节 P2_THR_11 = 0x40;
字节 P2_THR_12 = 0x40;
字节 P2_THR_13 = 0x40;
字节 P2_THR_14 = 0x40;
字节 P2_THR_15 = 0x00;

void setup()

     Serial.begin(19200、serial_8N2);
     延迟(10);
     C = 1;
     M = 1;


/*校验和函数*/


字节 calcChecksum (字节 cmd)

           int checksumLoops = 0;
           CMD = CMD 和0x001F;

           if (cmd == 16)
                         {
                           ChecksumInput[0]= cmd;
                           ChecksumInput [1]= P1_THR_0;
                           ChecksumInput [2]= P1_THR_1;
                           ChecksumInput [3]= P1_THR_2;
                           ChecksumInput [4]= P1_THR_3;
                           ChecksumInput [5]= P1_THR_4;
                           ChecksumInput [6]= P1_THR_5;
                           ChecksumInput [7]= P1_THR_6;
                           ChecksumInput [8]= P1_THR_7;
                           ChecksumInput [9]= P1_THR_8;
                           ChecksumInput [10]= P1_THR_9;
                           ChecksumInput [11]= P1_THR_10;
                           ChecksumInput [12]= P1_THR_11;
                           ChecksumInput [13]= P1_THR_12;
                           ChecksumInput [14]= P1_THR_13;
                           ChecksumInput [15]= P1_THR_14;
                           ChecksumInput [16]= P1_THR_15;
                           ChecksumInput [17]= P2_THR_0;
                           ChecksumInput [18]= P2_THR_1;
                           ChecksumInput [19]= P2_THR_2;
                           ChecksumInput [20]= P2_THR_3;
                           ChecksumInput [21]= P2_THR_4;
                           ChecksumInput [22]= P2_THR_5;
                           ChecksumInput [23]= P2_THR_6;
                           ChecksumInput [24]= P2_THR_7;
                           ChecksumInput [25]= P2_THR_8;
                           ChecksumInput [26]= P2_THR_9;
                           ChecksumInput [27]= P2_THR_10;
                           ChecksumInput [28]= P2_THR_11;
                           ChecksumInput [29]= P2_THR_12;
                           ChecksumInput[30]= P2_THR_13;
                           ChecksumInput [31]= P2_THR_14;
                           ChecksumInput[32]= P2_THR_15;
                           ChecksumLoops = 33;
                         }

           if (cmd =0)//突发和监听(Preset1)命令
                         {
                           ChecksumInput[0]= cmd;
                           ChecksumInput[1]=数字对象;
                           校验和循环= 2;
                         }
                     
           if (cmd =9)//寄存器读取
                         {
                           ChecksumInput[0]= cmd;
                           ChecksumInput [1]= regAddr;
                           校验和循环= 2;
                         }
           if (cmd == 10) //寄存器写入
                         {
                           ChecksumInput[0]= cmd;
                           ChecksumInput [1]= regAddr;
                           ChecksumInput[2]= regData;
                           校验和循环= 3;
                         }

           uint16_t 进位= 0;

           对于(int i = 0;i < checksumLoops;i++)
                         {
                                 如果((ChecksumInput[i]+进位)<进位)
                                 {
                                 进位=进位+ ChecksumInput[i]+ 1;
                                 }
                                 其他
                                 {
                                   进位=进位+ ChecksumInput[i];
                                 }
                                 如果(进位> 0xFF)
                                 {
                                   进位=进位- 255;
                                 }
                         }
           进位=(~进位& 0x00FF);
           回车;


/*主循环*/

void loop()

       serial.flush();
       如果(c)
               {
                     字节 buf16[35]={0x55、0x10、P1_THR_0、P1_THR_1、P1_THR_2、 P1_THR_3、P1_THR_4、P1_THR_5、P1_THR_6、P1_THR_7、P1_THR_8、P1_THR_9、 P1_THR_10、P1_THR_11、P1_THR_12、P1_THR_13、P1_THR_14、P1_THR_15、P2_THR_0、 P2_THR_1、P2_THR_2、P2_THR_3、P2_THR_4、P2_THR_5、 P2_THR_6、P2_THR_7、P2_THR_8、P2_THR_9、P2_THR_10、P2_THR_11、 P2_THR_12、P2_THR_13、P2_THR_14、P2_THR_15、calcChecksum (0x10)};
                     serial.println ("\n 写入阈值电阻器\n");
                     serial.write (buf16、sizeof (buf16));//无响应操作(阈值批量写入)


                     regAddr = 0x1c;//频率寄存器
                     regData = 0x32;//50
                     字节 buf[5]={0x55、0x0a、0x1c、0x32、calcChecksum (0x0a)};//85、10 (cmd-)、28、50
                     serial.println ("\n 写入频率电阻器\n");
                     serial.write (buf、sizeof (buf));//无响应操作(寄存器写入)
                     延迟(10);
                       {
                         regAddr = 0x1E;//PULSE_P1寄存器
                         regData = 0x30;//0011 0000
                         字节 buf1[5]={0x55、0x0a、regAddr、regData、calcChecksum (0x0a)};
                         serial.write (buf1、sizeof (buf1));//无响应操作(寄存器写入)
                       }
                       {
                         regAddr = 0x23;//FREQ_DIAG 寄存器
                         regData = 0x33;//0011 0011
                         字节 buf1[5]={0x55、0x0a、regAddr、regData、calcChecksum (0x0a)};
                         serial.write (buf1、sizeof (buf1));//无响应操作(寄存器写入)
                       }
                       {
                         regAddr = 0x25;//FVOLT_DEC 寄存器
                         regData = 0x1c;//0001 1100
                         字节 buf1[5]={0x55、0x0a、regAddr、regData、calcChecksum (0x0a)};
                         serial.write (buf1、sizeof (buf1));//无响应操作(寄存器写入)
                       }    
                       {
                         regAddr = 0x1f;//PULSE_P2寄存器
                         regData = 0x10;//0001 0000
                         字节 buf1[5]={0x55、0x0a、regAddr、regData、calcChecksum (0x0a)};
                         serial.write (buf1、sizeof (buf1));//无响应操作(寄存器写入)
                       }                   
                     C = 0;
               }

//      如果(m)
//      {
//      for (int l=0;l<6;l++)
//              {
                     

                     serial.flush();
                     延迟(10);
                     
                     {
                        字节 buf2[4]={0x55、0x00、Numobjects、calcChecksum (0x00)};
                        serial.println ("\n 为预设1\n"\n 停止突发和监听命令);
                        serial.write (buf2、sizeof (buf2));//无响应操作(突发和监听(Preset1))
                     }
                     
                     延迟(10);
                     serial.flush();
                     
                     如果(m)
                     {
                           字节 sensorValue;
                           字节 buf4[2]={0x55、0x08};//、calcChecksum (0x08)};
                           serial.write (buf4、sizeof (buf4));//响应操作(除寄存器读取之外的所有操作)
                           //延迟(1);
                           for (int n=0;n<4;n++)
                                   {
                                     延迟(10);
                                     如果(n = 1)
                                       sensorValue = Serial.read();
                                     其他
                                       serial.read();
                                   }
                           
                           serial.println ("\n 为系统诊断命令读取响应帧的第二个字节\n");
                           serial.println (sensorValue);
                           M=0;
                     }

                    
                     字节 sensorValue;
                     regAddr = 0x40;//输入 REGMAP 寄存器的任何地址以读取其值
                     字节 buf[4]={0x55、0x09、regAddr、calcChecksum (0x09)};
                     serial.write (buf、sizeof (buf));//响应操作(寄存器读取)
                     
                     for (int n=0;n<3;n++)
                             {
                               延迟(10);
                               如果(n = 1)
                                 sensorValue = Serial.read();
                               其他
                                 serial.read();
                             }
                     
                     serial.println ("\n 为寄存器读取命令读取响应帧的第二个字节\n");
                     serial.println (sensorValue);
                    

//              }
//              m=0;
//       }


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

    通常、防止 PGA460突发的门控项目包括:阈值 CRC 错误标记、超过 VPWR 过压阈值或通信/校验和故障。
    但是、您似乎已确认这些项目均无故障。

    您能否说明它是否仅是不响应/切换的 OUTA (而 OUTB 切换)?

    确切地说、您能否为突发/监听命令提供原始十六进制传输序列以确保没有传输错误? 我假设您读取/写入数据的能力表明校验和功能正常工作。 尝试发送突发/监听命令后、后续读取命令的诊断字段值是多少? 0x40是否指示没有以前的命令错误?

    对硬件设置进行了一次校正:如果未使用 SCLK、则应通过10kOhm 电阻器下拉 SCLK 或保持悬空。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    链接:
    PROWAVE 超声波换能器400EP14D (www.prowave.com.tw/.../40ep14d.htm)
    用于400EP14D 的 PROWAVE 匹配变压器(www.prowave.com.tw/.../transf.htm)
    PROWAVE SRM400模块、其数据表包含工作1.5米的应用电路(www.prowave.com.tw/.../srm400.htm)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Akeem:

    感谢你的答复。

    测试条件:

    • VIN=8.5V。
    • PGA460-Q1的 TX-RX 连接到 Uno 的 RX-TX。
    • Uno 通过 USB 端口供电。
    • TEST 引脚连接至3.3V。  
    • SCLK 引脚悬空。

    1) 1)您能否说明它是否仅是不响应/切换的 OUTA (而 OUTB 切换)?

    (参考已操纵的电路图)

    当 IFT3370的引脚4连接到 OUTA (PGA460-Q1的引脚5)时、OUTA 引脚上存在8.1V 偏移、未观察到切换、而在 OUTB 上既未观察到偏移也未观察到切换。

    当 IFT3370的引脚4连接到 OUTB (PGA460-Q1的引脚7)时、OUTB 引脚上存在8.1V 偏移、未观察到切换、而在 OUTA 上既未观察到偏移也未观察到切换。

    2) 2)确切地说、您能否为突发/监听命令提供原始十六进制传输序列以确保没有传输错误?

    3) 3)尝试发送突发/侦听命令后、后续读取命令的诊断字段值是多少?

    下图是具有原始十六进制传输序列的 Arduino Sketch 的屏幕截图

    此外、从屏幕截图中可以看出、系统诊断命令的 UART 诊断数据字段(在屏幕截图中突出显示)为69 (即0x45或0100 0101b)。 每次上传草图时、该值都不一致。 我接收的另一个值为101 (即0x65或0110 0101b)

    另一方面、寄存器读取命令的 UART 诊断数据字段始终为69 (在屏幕截图中也很明显)。

    4) 4)是否为0x40、表示没有以前的命令错误?

    不、0x45 (即69或0100 0101b)是指示 PGA460-Q1数据表中表4的错误状态[0]和错误状态[2]的值。

    PULSE_P1寄存器(地址= 1Eh)的 UART_DIAG 参数为0b。

    除了 PGA460-Q1器件忙错误连续同步字段位宽不匹配错误(即分别为错误状态[0]和错误状态[2])之外 、系统诊断命令也会出现错误状态[5]。

    请进一步指导我解决这些问题。

    非常感谢 Akeem。

    此致、

    瓦伦

    e2e.ti.com/.../Arduino-Sketch.txt

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

    尊敬的 Varun:

    根据 Arduino sketch 文件、您的预设记录长度必须为4.096ms 或8.192ms、前提是您在发送突发/监听命令后仅等待10ms。 但是、由于突发/监听命令之后的读取命令指示器件繁忙、您可能会在突发/监听命令完成之前中断该命令。 您能否确认延迟时间等于或大于预设突发/监听命令的毫秒值? 您应该尝试使用 PGA450进行读取或写入、直到记录时间长度过期。

    但是、记录长度或中断记录时间不应影响驾驶员;您仍应在 OUTA 处看到一些活动。

    遗憾的是、您提供的任何电路图像链接都无法正常工作。 如果您能够与器件通信、但无法突发、我怀疑您的变压器连接有错误、或者您的变压器有缺陷。 您能否共享您电路的完整原理图(如果不公开、您可以通过私人消息向我发送)。 或者、您能否确认这是将单端变压器连接到 PGA460的方式:

    我已经在 PGA460-Q1 EVM 上测试了同一个单端变压器、因此我可以确认是否可以使其正常工作。

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

    Akeem、您好!

    我对参考链接和图像感到抱歉。 我 在第一篇帖子中更新了针对 SRM400应用电路(具有1.5米范围功能)、400EP14D 传感器和匹配变压器 K000002 (3370)的数据表的电路图和超链接。

    我能够在 OUTA 引脚以及 OUTB 何时引脚接收突发。 原因是示波器中的探头和探头衰减设置有故障。 正如您所说的、我观察到记录时间长度(在 REC_LENGTH 寄存器中设置)对驱动程序没有任何影响。

    删除 Arduino Sketch 中的所有'elay();'后、突发重复周期减少到75毫秒。

    PGA460-Q1 -变压器连接:

    电路图像的"变压器-传感器"部分来自 SRM400应用电路 (数据表第2页)。 VPWR 引脚和 OUTA 引脚连接到变压器的初级端、但只有接地(GND)连接不同于单端变压器电路图像中的建议、该建议不会影响驱动能力。

    PGA460-Q1中的电流限制特性:

    CURR_LIM_P1寄存 器和 CURR_LIM_P2寄存器的默认值为47h 和 FFH、对应于分别为 Preset1和 Preset2配置为99mA 和491mA 的驱动器电流限制。

    我无法从变压器数据表中确定驱动器部分的最大电流。 我可以配置什么电流限制来获得最大距离范围?

    能否禁用 DIS_CL 参数(CURR_LIM_P1寄存器)来驱动传感器?

    此致、

    瓦伦

     

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

    尊敬的 Varun:

    感谢您的调试、以确认 OUTA 正在切换。 要说明的是、您现在是否能够在传感器上看到正弦波形以成功生成超声波回波?

    如果变压器数据表未指定最大电流额定值、我建议您扫描驱动器电流限制、以最大功效优化声压级(SPL)输出。 这还将确保您不会通过变压器吸收过多电流、这可能会损坏变压器或以热量的形式消散(浪费的能源)。 我们试验过的大多数变压器的额定电流为~500mA、但为了进行优化、我仍然建议将预防措施作为最佳做法。

    要执行此驱动器电流限制参数扫描、应将电流限制初始化为50mA。 将对象设置为固定突发计数和距离(例如1m)。 要确定传感器何时产生了最大声压级、请使用回波数据转储监控1m 物体的峰值振幅。 大多数换能器将接近>=300mA 的饱和状态。 如果您的变压器确实如此、那么我建议将您的驱动电流限制保持在300~350mA 范围内。 我不建议为此用例禁用电流限制、因为在不进行外部电流限制的情况下、可能会损坏 PGA460-Q1 OUT/B 引脚。

    PGA460-Q1 EVM GUI 在测试页面上包含一个参数扫描功能、用于自动扫描这些值。 您可以使用后台导出器保存每个回波数据转储图,然后使用 GUI 的 File->DataPlotter 功能导入和重叠每个数据图以进行比较。 您可以看到一个示例、说明当峰值振幅值接近 PGA460超声波模块硬件和软件优化应用手册中的图9中的最大值时、峰值幅度值如何遵循对数曲线、如图 所示:www.ti.com/.../slaa732

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

    尊敬的 Akeem:

    1) 1)为了说明、您现在是否能够在传感器上看到正弦波形以成功生成超声波回波?


    是的、我们能够在发出突发和监听命令后看到正弦波形。

    2)关于  驱动器电流限制的参数扫描- 我们正在对此进行研究。 目前、我们使用的是默认电流限制、并且能够看到两个预设的回波。

    同时、我们在发出 P2BL 命令后从 PGA460获取了回波数据转储。 由于我们尚未正确初始化 TVG 和数字增益、我们看到 EDD 中的某段时间后突然跳至255。

    为预设2设置的记录时间为53ms  

    当物体放置在130cm 的距离时、便获得了上述图。 我能够在 EED 图中检测到它。  

    我们需要确定正确的 TVG 值、因此我们查看 了提及 TVG 自动计算的常见问题解答(5.3和5.4)、但我们无法理解 nolo 命令。 NOBAL 命令的情况类似。

    我们在 P2BL 和 P2LO UART 命令中将对象数量设置为零、并从诊断字段获取无效错误。 请告诉我们如何实施 nolo 和 NOBAL 配置文件。

    感谢您的深入见解。

    此致

    变压器 P

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

    尊敬的 Varun:

    回波数据转储在后半部分饱和的原因很可能是数字增益乘法器造成的。 短距离(SR)数字增益乘法器足够低、能够检测130cm 物体。 首先、要消除饱和回波数据转储、请将远距离(LR)数字增益乘法器设置为与 SR 相同的电平。 与时变增益电平的单步执行相比、数字增益乘法器的单步执行对回波数据转储的缩放影响更大。 通过将 SR 和 LR 数字增益乘法器设置为相同的值、此功能被有效禁用。 两个值均为 x1的数字增益乘法器将完全禁用此功能。

    禁用数字增益乘法器后、我建议您从固定的单值时变增益曲线开始。 当您开始将物体移到远离传感器的位置时、请检查回波数据转储级别。 如果电平开始显著下降(SNR < 3:1)、则开始斜升时变增益。

    nolo 是一个无对象仅监听命令配置文件。 这意味着传感器前面没有物体、也不会生成用于回波传输的突发。 尽管您已将脉冲计数设置为0、但数据监视器页面上已有一个命令(仅监听命令)、无论脉冲计数如何、该命令都会禁用驱动器块。 通过评估 nolo、您可以隔离模拟前端接收器块的性能。 如常见问题解答中所述、本底噪声应保持在小于或等于最大回波数据转储振幅(255)的三分之一的值。 如常见问题解答中所述、自动时变增益并非必需、但作为建议和示例提及、说明如何斜升时变曲线是必需的。

    NOBAL 是一种无对象突发和监听命令配置文件。 使用 nolo 型材优化时间变化后、您可以在没有物体的情况下引入突发能量、以确保本底噪声不会显著变化。 您可以将吸收声的材料(即海绵)放在传感器前面、以模拟 NOBAL 环境、以防没有足够的空地板空间来按预期运行 NOBAL。

    最终目标是尽可能降低本底噪声、同时尽可能降低增益、但同时还提供足够的增益、以使回波峰值比本底噪声大三倍。 您应该防止回波饱和、因为这只通过增加本底噪声来人为地降低 SNR。   PGA460超声波模块硬件和软件优化 应用手册的4.4时变增益和数字增益部分对此进行了说明。  

    数字增益乘法器将有助于缩放回波数据转储曲线、尤其是在远距离条件下、但如果回波 SNR 在一段时间内足够稳定以正确设置阈值映射、则不需要该增益乘法器。

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

    Akeem、您好!

    感谢您的回复。  

    数字增益乘法器:


    [引用 user="Akeem Whitehead"]首先,要消除饱和回波数据转储,请将远距离(LR)数字增益乘法器设置为与 SR 相同的级别。

    1. 我 使用以下值设置 P2_GAIN_CTRL 寄存器并绘制 EDD。 对于下表中显示的所有配置、我观察到要饱和的记录长度的后半部分。 我还将记录长度减小到53mS (Preset2的默认值)以下、并观察到设定记录长度的一半出现饱和。  
    2. 如您所述、我无法禁用数字增益乘法器并继续。
    3. 即使禁用 TVG (这意味着 EDD 饱和不是由于 AFE)、也会观察到饱和 EDD

    P2_GAIN_CTRL 寄存器参数设置
    P2_DIG_GAIN_LR_ST P2_DIG_GAIN_LR P2_DIG_GAIN_SR 含义 在 P2_GAIN_CTRL 寄存器上写入的相应 HEX 值(地址= 2Ah)
    TH9. 乘以1 乘以1 SR 和 LR 的等级相同 0x00
    TH9. 乘以2 乘以2 SR 和 LR 的等级相同 0x09
    TH12 乘以1 乘以1 SR 和 LR 的等级相同 0xC0
    TH9. 乘以2 乘以1 SR 和 LR 的不同级别 0x08
    TH12 乘以2 乘以1 SR 和 LR 的不同级别 0xC8

    您能不能就这个问题进一步指导我。

    谢谢、

    此致、

    变压器 P

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

    尊敬的 Varun:

    根据您的表、您了解 Px_GAIN_CTRL 寄存器是正确的。 如果您已确认 P1_GAIN_CTRL 和 P2_GAIN_CTRL 均为0x00、并且您已尝试过预设的1和2 BURST+Listen 命令、以下是我建议的后续步骤:

    1. 将所有时变增益以及预设1和2数字增益乘法器设置为索引0、以确保您能够看到稳定的非饱和回波数据转储。 这意味着设置寄存器 TVGAIN3、TVGGAIN4、TVGAIN5、TVGAIN6、INIT_GAIN、 P1_GAIN_CTRL 和 P2_GAIN_CTRL 的值为0x00。 这将确保 TVG 固定为所选 AFE_GAIN_RNG 的最小值。 针对32.5dB 的绝对最小 TVG 增益、将 AFE_GAIN_RNG 位的值设置为11b。 如果这可以解决您的问题、则可以开始增加 TVG 或 DGM、以便更好地扩展 SNR 以进行物体检测。
    2. 尝试运行仅监听命令。 回波数据转储是否仍然饱和?
    3. 饱和是否与远距离启动阈值(TH9-12)在同一时间标记发生?
    4. 在尝试读取回波数据转储之前、您是否等待足够长的时间以允许记录间隔完成? 对于绝对裕度、请等待100ms 以确保它不是等待/读取问题。
    5. 您能否读取各个回波数据转储寄存器以确认回波数据转储在下半部分实际上已饱和? 您可以执行地址范围为0x80至0xFF 的128个单独的寄存器读取命令、以读取整个回波数据转储、也可以执行单回波数据转储读取命令。 这只是为了进行调试。

    我仍然怀疑这是数字增益或时变增益问题。 请确保您使用的是与 Px_GAIN_CTRL 寄存器相关的正确预设1或2命令。