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.

[参考译文] PGA460PSM-EVM:将 PGA460PSM-EVM 与 Arduino Mega 相连

Guru**** 2539500 points
Other Parts Discussed in Thread: PGA460, PGA460PSM-EVM, ENERGIA

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/978151/pga460psm-evm-interfacing-pga460psm-evm-with-arduino-mega

器件型号:PGA460PSM-EVM
Thread 中讨论的其他器件:PGA460ENERGIA

您好,

我们一直在尝试将 PGA460PSM-EVM 与 Arduino MEGA 连接。 我们计划使用6个 PGA460s 并收到全部6个 PGA460s。  我们尝试了以下过程、但无法与 pga460模块通信。

我们的连接方式如下  

Arduino MEGA <=>PGA460PSM-EVM

TX1<==>RX (一种将5V 逻辑转换为3.3V 逻辑的分压器  

RX1 <==>TX (直接连接)

PWR <=>12V 1A 电源

GND PGA460 <=>GND MEGA <==>电源 GND (通用接地)

SCK 引脚使用10k 电阻器接地

假设 PGA460在3.3V 逻辑状态下工作,TEST 引脚将悬空。  

开始时  

我们尝试使用由 Akeem   链接中提供的 Arduino Mega 移植的 Energia 库  、但很遗憾我们得到了这一链接  

错误-未收到测量结果...  

2.然后我们尝试了以下代码  

//注:用于向 PGA460发送突发/侦听命令的最低要求示例


// cmd 0 - P1突发监听
字节 buf0[4]={0x55、0x00、0x01、0xFE};
// cmd 1 - P2突发监听
字节 buf1[4]={0x55、0x01、0x01、0xFD};
/cmd 5 -超声波测量(假设 UART_ADDR=0)
字节 buf5[4]={0x55、0x05、0xFA};//change
//cmd 10 -对4.096ms
字节 buf10[5]={0x55、0x0A、0x26、0x00、0xCF}的时间的寄存器写入十倍;
/cmd 17 -广播 P1突发监听
字节 buf17[4]={0x55、0x11、0x01、0xED};
/cmd 19 -广播 P1只监听
字节 buf19[4]={0x55、0x13、0x01、0xEB};
/cmd 25 -广播批量阈值写入
字节 buf25[35]={0x55、0x88、0x88、0x88、0x88、0x88 0x88、0x88、0x88、0x84、0x21、 0x08、0x42、0x10、0x80、0x80、 0x80、0x80、0x00、0x88、0x88、 0x88、0x88、0x88、0x88、0x84、 0x21、0x08、0x42、0x10、0x80、 0x80、0x80、0x80、0x00、0x7C};


unsigned char 数据;
const int buttonPin = 2; //按钮引脚
const int ledPin 的数量= 13; // LED 引脚
的编号 int buttonState = 0; //用于读取按钮状态

void setup()的变量{pinMode

(ledPin,输出);
pinMode (buttonPin,input_pullup);
delay (1000);

//将设置代码放在此处,运行一次:
Serial.begin(19200);
Serial1.begin(19200,SERIAL_8N2);//初始化 PGA460 UART 串行通道 serial_8N2
delay (1000);

//假设 UART_ADDR=0
//批量阈值写入中间代码值以清除 THR_CRC_ERR
0.write (buf25、sizeof (buf25));
delay (100);

//将 BUF10=1 (buf10) s out




(void) out (buf10) uncoop (buf10)
//将主代码放在此处,重复运行:

//检查是否按下按钮。
while (digitalRead (buttonPin)== low){}

//广播 P1突发+监听(不依赖于 UART_ADDR)
SERIAL1.write (buf17、sizeof (buf17));

//延迟100ms
延迟(100);

//[TODO ]在终端上打印超声波测量结果
//从 UART_ADDR=0读回超声波测量结果
SERIAL1.write (buf5、sizeof (buf5));//Serial1
数据= Serial1.read();
serial.println (data);
//切换红色 LED
digitalWrite (ledPin、!(digitalRead (ledPin)));//打开 LED (高电平表示电压电平)

//每秒重复循环
延迟(1000);
}

但是,我们在串行监视器中有255个输出(即使电线被移除),我们认为这些是垃圾值。

3.我们只是想确认 PGA460和 Arduino 之间是否有通信,因此我们使用了以下示例代码。

unsigned char WriteByteArray[4]={0x55、0x09、0x1B、0xDB};

unsigned char ReadByte1;

unsigned char ReadByte2;

unsigned char ReadByte3;


void setup()

{

Serial.begin(115200);

Serial1.begin(115200,serial_8N2);

}

void loop()

{

Serial1.write(WriteByteArray, sizeof(WriteByteArray));

Serial1.flush();

ReadByte1= Read1.read();

ReadByte2=1.read( read)

;SerialByte(read)

serial.println ("ReadByte1 =");

serial.println (ReadByte1);

serial.println ("ReadByte2 =");

Serial.println (ReadByte2);

Serial.println ("ReadByte3 =");

serial.println (ReadByte3);

delay (1000);
} 

我们在 ReadBytes 1、2和3中得到了255。 您能指导我们建立沟通吗?

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

    您好!

    请参阅线程 3298613、 31927623360828

    如果仍有问题、请提供您的测试原理图以及任何其他详细信息或相关示波器图。  

    此致、

    Gabriel

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

    肯定会为您提供最新信息。

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

    现在让我尝试清除、

    我不希望在电压转换方面产生任何混淆。 因此、我将使用 Seeeduino xiao 微控制 器(具有3.3V 逻辑引脚 UART)。

    因此,我的连接如下所示,

    传感器 pga460========= > Seeeduino xiao UC

    TX<===>RX

    RX<===>TX

    SCLK<=>下拉10K 公共 GND

    XIAO GND<=> SEEDUINO GND <==> 12VDC GND (通用 GND)

    pga460<===的 PWR >12V 直流  

    需要注意的是、当使用 CRO 探测时、pga460模块的 TX 引脚不显示方波

    pga460的 RX 引脚接收图片中的以下信号   

    为什么我的 pga460的 TX 引脚始终处于低电平空闲?

    (如果您能告诉我 TI 的峰值响应时间、也会非常有帮助)

    您能告诉我出厂默认情况下、什么协议 pga460psm EVM 工作吗?  

     以下是我的代码  

    /*PGA460在使用此命令时应返回三个值:
    •如果主器件成功发送、则返回诊断字段(0x40)
    •寄存器地址值
    •PGA460生成的校验和*/
    
    
    无符号字符 WriteByteArray[4]={0x55、0x09、0x2B、0xDB};
    
    无符号字符 ReadByte1;
    
    unsigned char ReadByte2;
    
    unsigned char ReadByte3;
    
    
    void setup()
    
    {
    
    SerialUSB.begin(9600);
    
    Serial1.begin(9600,SERIAL_8N2);//SERIAL_8N2
    
    }
    
    void loop()
    
    {
    
    Serial1.write(WriteByteArray,sizeof(WriteByteArray));
    
    Serial1.flush();
    
    ReadByte1 = Serial1.read();
    
    ReadByte2 = Serial1.read();
    
    ReadByte3 = SerialRead.read)
    
    SerialUSB.println ("ReadByte1 =");
    
    SerialUSB.println (ReadByte1);
    
    SerialUSB.println ("ReadByte2 =");
    
    SerialUSB.println (ReadByte2);
    
    SerialUSB.println ("ReadByte3 =");
    
    SerialUSB.println (ReadByte3);
    
    
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,有更新吗? 我还想知道是否可以使用10K 电阻器将 SCLK 下拉至接地? 我还使用2停止位 UART、因为 pga460需要它! 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    SCLK 可以下拉、但这不是必需的。 传感论坛中发布的问题最有可能在 CST / MST 的上午8点至下午6点之间的一周内得到回复。  

    来自  之前提到的 Thread 3192762:

    您是否已验证同步帧是否正确发送? 如果存在此问题、PGA460将不会作出响应。  

    此致、

    Gabriel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Gabriel、 我所附的上述探针图片包含来自主微控制器的 TX 信号。 是这样吗? 是否具有正确的同步数据? 我将发送0x55作为同步字段。 以及如何验证设备是否正常工作? 比如数据针脚未损坏? 是否还需要确认器件默认在异步 UART 模式下工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我刚刚将电源(12V)和 GND 连接到我的传感器。 我在 RX 引脚中得到2.3V、但我不应该在 TX 引脚中获得该电压? 这是传感器的问题吗? 请注意、pga460未连接到任何微控制器、只提供电源并读取 RX 引脚上的电压! 要添加、我没有在 TX 引脚中获得任何默认电压! 如果是这种情况、是否有任何方法可以使用硬件复位 pga460?

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

    您好,Rx 引脚默认提供2.3V! Tx 不提供任何空闲电压是否正确?  请更新!

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

    您好!

    我正在与我的同事进行会议、我们 很快就会回来与您讨论这个问题。

    此致、

    Gabriel

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

    您好!

    我能够从串行数据读取中看到一些数据。 但是,它仅适用于命令寄存器0至8,当我转到寄存器读取时,我不确定如何计算校验和。  

    我们发送了值

    0x55 =>同步字段

    0x08 =>命令字段(诊断命令)

    然后我们收到了  

    0x40 =>诊断字段

    0x02 =>数据字段(我假设传感器频率)

    0x73 =>数据字段(我假设衰减周期时间)

    0xAE=>CHECKSUM

    但我们不确定如何解释该数据。 此外,我们还尝试重新计算校验和,但它不匹配,请帮助! 您还能说明如何计算校验和吗?

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

    没错。 断开连接时、RX 引脚上的2.3V 电压正常。 当被驱动时、它应该在 IOREG 附近。  

    下面是一个与您要发送的数据进行有效 UART 通信的示例:

    在 PGA460EVM GUI 09 2B CB 中、先手动发送0x55 SYNC 字段。 您是否尝试过1个停止位和2个停止位?

    您是否能够运行线程 https://e2e.ti.com/support/sensors/f/1023/p/840688/3192762?中的示例

    此致、

    Gabriel

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

    有关计算校验和的详细信息、请参阅 PGA460数据表的第32和33页。 同步字段不包含在 TX 校验和中、诊断字段包含在 RX 校验和中。  

    您可以使用 PGA460-Q1EVM GUI 检查计算结果。 导航至"Interface Mode"页面并检查 UART 设置、然后您可以键入地址和 数据、并计算校验和。 无需为此连接 EVM 本身。  

    示例:  

    此致、

    Gabriel

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

    此外、计算校验和的 Energia 代码可在 PGA460_USSC.CPP 的2200行附近找到。请参阅下面的红色部分:

    uint16_t 进位= 0;

     

                  对于(int i = 0;i < checksumLoops;i++)

                  {

                                 如果((ChecksumInput[i]+进位)<进位)

                                 {

                                                进位=进位+ ChecksumInput[i]+ 1;

                                 }

                                 其他

                                 {

                                                进位=进位+ ChecksumInput[i];

                                 }

     

                                 如果(进位> 0xFF)

                                 {

                                  进位=进位- 255;

                                 }

                  }

         

                  进位=(~进位& 0x00FF);

                  回车;

     

    进位是计算出的校验和。  

    ChecksumInput 是计算中使用的数据数组。  

    ChecksumLoops 是计算校验和的字节数。  

     

    -Gabriel

     

     

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

    非常感谢,校验和是问题所在。 我们使用 GUI 进行计算。 我们需要知道如何校准 UTR-1440K-TT-R ( 默认换能器)的 PGA460。 我尝试使用以下阈值(取自   )

    我能不能有任何链接来简要解释这里使用的所有参数! (pga460q1数据表中未简单说明任何参数)

    /* UTR-1440K-TT-R 传感器示例寄存
    器配置字节 USER_Data1 = 0x00
    字节 USER_DATA2 = 0x00
    字节 USER_DATA3=0x00
    字节 USER_DATA4=0x00
    字节 USER_DATA5=0x00字节 USER_DATA6=0x00
    字节 USER_DATA8=0x00字节 DATA14=0x00字节 USER_DATA19=0x00字节
    
    
    DATA19=0x00
    
    
    
    
    
    
    
    
    字节 USER_DATA14_DATA19=0x00字节 ENABLE_DATA19=0x00字节 ENABY=0x00字节
    0x00字节 USER_DATA19_DATA19_DATA19_ENABY=0x00字节0x00字节 ENABY=0x00字节 DATA_DATA_DATA_ENABY=0x00字节 ENABY=0x00字节0x00字节 USER_DATA_DATA19_DATA19_ENABY=0x00字节0x00字节 ENABY=0x00字节0x00字节 ENABY=0x00字节 USER_DATA_DATA
    
    字节 TVGAIN0=0x9D
    字节 TVGAIN1=0xEE
    字节 TVGAIN2=0xEF
    字节 TVGAIN3=0x2D
    字节 TVGAIN4=0xB9
    字节 TVGAIN5=0xEF
    字节 TVGAIN6=0xDC
    字节 INIT_GAIN=0x03
    
    
    
    
    
    字节 TVGAIN3=0x32字节
    
    
    
    DEC 时间=0x80字节 PULSE_P1=0x27_BYTE=0xCNTEP=0x29_BYTE=0xE_BYE=0x24
    
    
    
    
    
    字节 IN_REP=0xC=0x24字节 ENTRL_RET_BYTE=0x24字节
    
    字节 P1_THR_0=0x41
    字节 P1_THR_1=0x11
    字节 P1_THR_2=0x11
    字节 P1_THR_3=0x10
    字节 P1_THR_4=0xFF
    字节 P1_THR_5=0xFF
    字节 P1_THR_6=0x00
    字节 P1_THR_7=0xfTHR_THR_8=0x8_THR_P1_THR_0=0x8_THR_0_THR_0_THR_byte_P1_THR_0=0x38_THR_P1_THR_THR_P1_THR_0=0x8=0x8_THR_THR_THR_THR_0_THR_THR_0_THR_THR_P1_THR_THR_THR_THR_0=0x11
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    字节=0x41_THR_THR_THR_THR_THR_THR_THR_THR_THR_THR_THR_THR_THR_THR_THR_THR_THR_
    byte P2_THR_9=0x20
    byte P2_THR_10=0xC6
    byte P2_THR_11=0x30
    byte P2_THR_12=0x38
    byte P2_THR_13=0x50
    byte P2_THR_14=0x80
    byte P2_THR_15=0x00
    *
    
    未配置以下
    内容// BPF_BUFF_BEN_BY=0x80_BEN_BYBENB=0x7BENB=0x20_BF/BENBENBENB=0x7BF/BF/BPF_BYBENBENBENB=0xBENBENB=0x20_0=0x20BF/BF/BENBENBENB_BU_BU_BY=0xBENBENBENB=0x20B=0x20BEN_BY=0xBEN_BU_BY=0x000=0x20BEN_BY=0x100
    
    
    
    
    
    
    
    
    
    
    
    
    

    您能否告诉我们、为什么即使没有物体、传感器也会返回距离值?

    用户数据寄存器是否与传感器配置有关?

    未配置 BPF、LPF 和其他寄存器是否重要?

    谢谢你

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

    Deepak 您好!

    感谢您关注我们的产品。 关于您对寄存器设置的澄清问题、应将此问题作为新问题发布。 这可以帮助我们的社区解决类似问题、使其易于搜索。  

    我们期待您的发帖。

    谢谢、

    Arjun  

    应用经理。