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:PGA460-Q1和 Arduino

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/910128/pga460-q1-pga460-q1-and-arduino

器件型号:PGA460-Q1
主题中讨论的其他器件:EnergiaPGA460PGA460PSM-EVMMSP-EXP430F5529LP

你(们)好。

我需要 Arduino 代码来试用 PGA460 超声波接近感应评估模块。 我迫切需要这一点。 如果有人有、请您与我分享一下吗?  我知道、Energia 有示例代码、并且非常长。  我必须为 Arduino IDE 编辑它、并使用 Arduino 板进行试用。  

请帮帮我。

谢谢

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

    您好、Lacin、

    如果您在将 PGA460 Energia 项目移植到 Arduino 时遇到问题,我建议您将申请发布到 Arduino 社区论坛,网址为( https://forum.arduino.cc/ )。 我相信社区成员可以帮助指导您将此项目移植到 Arduino IDE。

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

    Lacin、

    您还可以使用以下裸机最低要求的非库实现在 Energia 或 Arduino 上运行 PGA460。 此示例启动并将器件配置为循环执行突发和监听命令。 在此示例中、用于读回超声波测量结果的命令尚未最终确定(请参阅运行循环函数中的 TODO 行):

    //注:用于向 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};
    /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};
    
    const int buttonPin = PUSH2; //按钮引脚
    const int ledPin 的编号= RED_LED; // LED 引脚
    的编号 int buttonState = 0; //用于读取按钮状态
    
    void setup()的变量{pinMode
    
    (ledPin,输出);
    pinMode (buttonPin,input_pullup);
    delay (1000);
    
    //将设置代码放在此处,运行一次:
    Serial1.begin(19200);//初始化 PGA460 UART 串行通道
    延迟(1000);
    
    //假设 UART_ADDR=0
    //批量阈值写入中间代码值以清除 THR_CRC_ERR
    Serial1.write (buf25、sizeof (buf25));
    delay (100);
    
    //将 UART_ADDR=1 (
    
    
    
    
    void)写入10 (buf10);buf1 (void)
    //将主代码放在此处,重复运行:
    
    //检查是否按下按钮。
    while (digitalRead (buttonPin)== HIGH){}
    
    //广播 P1突发+监听(不依赖于 UART_ADDR)
    SERIAL1.write (buf17、sizeof (buf17));
    
    //延迟100ms
    延迟(100);
    
    //[TODO ]在终端上打印超声波测量结果
    //从 UART_ADDR=0读回超声波测量结果
    SERIAL1.write (buf5、sizeof (buf5));
    
    //切换红色 LED
    digitalWrite (ledPin、!(digitalRead (ledPin)));//打开 LED (高电平表示电压电平)
    
    //每秒重复循环
    延迟(1000);
    } 

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

    你(们)好。

    这是否足以基本使用带 Arduino 的 PGA460EVM 模块?  

    感谢您的回复。

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

    您好、Lacin、

    是的、此代码片段旨在用作利用 PGA460器件出厂默认设置的最低 Energia/Arduino 示例、该器件旨在与58kHz 传感器配合使用。 如代码中所述、由于尚未完成读回结果、因此目前只能发送发送命令。 为此、您需要实现 Serial.Read 函数。

    您可能不会使用58kHz 传感器。 由于您目前没有使用 GUI 的满量程 EVM 套件来更熟悉所有寄存器设置、 我建议您观看 使用 PGA460-Q1进行超声波感应 的视频培训系列、了解应如何配置关键驱动器和接收器寄存器。

    假设您仍在使用40kHz UTR-1440K-TT-R 传感器作为 PGA460PSM-EVM 的一部分,下面是 PGA460PSM-EVM 设计指南( https://www.ti.com/lit/pdf/tiduek5 )中用于收集 UTR-1440K-TT-R 数据的寄存器配置。 您将需要实施多个 CMD10 (单寄存器写入)命令或一个 CMD12/CMD23 (批量 EEPROM 写入)和一个 CMD16/CMD25 (批量阈值写入)命令、以便将这些设置上载到 sketch 中的器件。 有关所有 UART 命令的说明、请参阅数据表表表表3。

     PGA460的 UTR-1440K-TT-R 传感器示例寄存器配置:

    ;GRGE_USER_MEMSPACE
    00 (USER_DATA1)、41
    01 (USER_DATA2)、11
    02 (USER_DATA3)、11
    03 (USER_DATA4)、10
    04 (USER_Data5)、FF
    05 (USER_DATA6)、FF
    06 (USER_DATA7)、00
    07 (USER_DATA8)、00
    08 (USER_DATA9)、08
    09 (USER_DATA10)、20
    0A (USER_DATA11)、C6
    0b (USER_DATA12)、30
    0C (USER_DATA13)、38
    0D (USER_DATA14)、50
    0E (USER_DATA15)、80
    0f (USER_DATA16)、00
    10 (USER_DATA17)、00
    11 (USER_DATA18)、00
    12 (USER_DATA19)、00
    13 (USER_DATA20)、00
    14 (TVGAIN0)、9D
    15 (TVGAIN1)、EE
    16 (TVGAIN2)、EF
    17 (TVGAIN3)、2D
    18 (TVGAIN4)、B9.
    19 (TVGAIN5)、EF
    1A (TVGAIN6)、DC
    1b (INIT_GAIN)、03
    1C (频率)、32
    1D (死区时间)、80
    1E (PULSE_P1)、12
    1F (PULSE_P2)、12.
    20 (CURR_LIM_P1)、72
    21 (CURR_LIM_P2)、32
    22 (REC_LENGTH)、09
    23 (FREQ_DIAG)、00
    24 (SAT_FDIAG_TH)、EE
    25 (FVOLT_DEC)、7C
    26 (DECPL_TEMP)、8F
    27 (DSP_SCALE)、00
    28 (TEMP_TRIM)、00
    29 (P1_GAIN_CTRL)、29
    2A (P2_GAIN_CTRL)、29
    2B (EE_CRC)、76
    40 (EE_CNTRL)、04
    41 (BPF_A2_MSB)、89
    42 (BPF_A2_LSB)、52
    43 (BPF_A3_MSB)、FC
    44 (BPF_A3_LSB)、CE
    45 (BPF_B1_MSB)、01
    46 (BPF_B1_LSB)、99
    47 (LPF_A2_MSB)、7F
    48 (LPF_A2_LSB)、33
    49 (LPF_B1_MSB)、00
    4A (LPF_B1_LSB)、67
    4B (TEST_MUX)、00
    4C (DEV_STAT0)、80
    4D (DEV_STAT1)、00
    5F (P1_THR_0)、41
    60 (P1_THR_1)、11
    61 (P1_THR_2)、11
    62 (P1_THR_3)、10
    63 (P1_THR_4)、FF
    64 (P1_THR_5)、FF
    65 (P1_THR_6)、00
    66 (P1_THR_7)、01
    67 (P1_THR_8)、F8
    68 (P1_THR_9)、20
    69 (P1_THR_10)、C6
    6A (P1_THR_11)、30
    6B (P1_THR_12)、38
    6C (P1_THR_13)、50
    6D (P1_THR_14)、80
    6e (P1_THR_15)、00
    6F (P2_THR_0)、41
    70 (P2_THR_1)、11
    71 (P2_THR_2)、11
    72 (P2_THR_3)、10
    73 (P2_THR_4)、FF
    74 (P2_THR_5)、FF
    75 (P2_THR_6)、00
    76 (P2_THR_7)、01
    77 (P2_THR_8)、F8
    78 (P2_THR_9)、20
    79 (P2_THR_10)、C6
    7A (P2_THR_11)、30
    7B (P2_THR_12)、38
    7C (P2_THR_13)、50
    7D (P2_THR_14)、80
    7E (P2_THR_15)、00
    7F (THR_CRC)、F9
    EOF

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

    您好、再说一次、

    我解决了这些问题 。 我必须改变 库至 库。 我找到了 msp430.h 引脚库的地址。 (C:\Users\Laçin Tuncer\Downloads\Energia-1.8.10E23-windows\Energia-1.10.10E23\hardware\Energia\MSP430\variants\MSP-EXP430F5529LP\PINS_Energia.h)。 我以前没有为 Arduino 编写头文件。 我不知道如何写入。 这与 PIC 头文件类似吗?

    您能控制吗? 我打开了项目"GetDistance.ino" with Arduino IDE"。

    然后,我使用以下路径添加了库:sketch > Include Library> Add .ZIP Library> C:\Users\Laçin Tuncer\Desktop\slac741i - Kopya>LIBRARYKOPYA.zip
    当我编译时、它给出了有关 msp430.h 库的错误。 然后、我删除了该行 在该文件中:C:\Users\Laçin Tuncer\Desktop\slac741i - Kopya > LIBRARYKOPYA.zip > pga460_usci_spi_G2553.cpp

    当我再次编译时、这次它给出了不同的错误。 它不知道引脚的名称(PUSH2等) 然后、我识别了这些引脚。 但它反复出现错误。 您可以看到下面的错误。

    Arduino:1.8.12 (Windows 10)、板:"Arduino Uno"

    在包含在 C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.CPP:16:0中的文件中:

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static uint8_t SPIClass::::transfer (uint8_t)':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:49:12:错误:未在此范围内声明'SPI_SEND_pga460'

    返回 SPI_SEND_pga460 (_data);

    ^~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass:::Begin()':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:54:5:错误:未在此范围内声明'SPI_initialize_pga460'

    spi_initialize_pga460();

    ^~~~~~~~~~~~~~~~~~~~~μ A

    在包含在 C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_USSC.CPP:37:0中的文件中:

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static uint8_t SPIClass::::transfer (uint8_t)':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:49:12:错误:未在此范围内声明'SPI_SEND_pga460'

    返回 SPI_SEND_pga460 (_data);

    ^~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:54:5:注意:建议的替代方案:'__CPP_initiataler_lists'

    spi_initialize_pga460();

    ^~~~~~~~~~~~~~~~~~~~~μ A

    __CPP_initiizer_lists

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass:::end()':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:59:5:错误:未在此范围内声明'SPI_DISABLE_pga460'

    spi_disable_pga460 ();

    ^~~~~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass:::Begin()':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:54:5:错误:未在此范围内声明'SPI_initialize_pga460'

    spi_initialize_pga460();

    ^~~~~~~~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass::::setBitOrder (uint8_t)':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:64:5:错误:未在此范围内声明'SPI_SET_bitorder_pga460'

    SPI_SET_bitorder_pga460 (bitOrder);

    ^~~~~~~~~~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:54:5:注意:建议的替代方案:'__CPP_initiataler_lists'

    spi_initialize_pga460();

    ^~~~~~~~~~~~~~~~~~~~~μ A

    __CPP_initiizer_lists

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass:::end()':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:59:5:错误:未在此范围内声明'SPI_DISABLE_pga460'

    spi_disable_pga460 ();

    ^~~~~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass:::setDataMode (uint8_t)':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:69:5:错误:未在此范围内声明'SPI_SET_datamode_pga460'

    SPI_SET_datamode_pga460 (MODE);

    ^~~~~~~~~~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass::::setBitOrder (uint8_t)':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:64:5:错误:未在此范围内声明'SPI_SET_bitorder_pga460'

    SPI_SET_bitorder_pga460 (bitOrder);

    ^~~~~~~~~~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass::::setClockDivider (uint8_t)':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:74:5:错误:未在此范围内声明'SPI_SET_DIESS_pga460'

    SPI_SET_DIESS_pga460 (速率);

    ^~~~~~~~~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass:::setDataMode (uint8_t)':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:69:5:错误:未在此范围内声明'SPI_SET_datamode_pga460'

    SPI_SET_datamode_pga460 (MODE);

    ^~~~~~~~~~~~~~~~~~~~~~~μ A

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:在静态成员函数中、'static void SPIClass::::setClockDivider (uint8_t)':

    C:\Users\Lain Tuncer\Documents\Arduino \libraries\LIBRARYKOPYA\PGA460_SPI.h:74:5:错误:未在此范围内声明'SPI_SET_DIESS_pga460'

    SPI_SET_DIESS_pga460 (速率);

    ^~~~~~~~~~~~~~~~~~~~~~μ A

    退出状态1
    为板 Arduino Uno 编译时出错。

    本报告将提供更多信息
    "编译期间显示详细输出"
    在文件->首选项中启用选项。

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

    Lacin、

    您可能会遇到与您的另一篇文章 https://e2e.ti.com/support/sensors/f/1023/p/912363/3375615#3375615中讨论的类似的库导入问题

    但是、SPI 功能也会出现类似的问题。 在您分支机构的帖子中重复一些 Energia 至 Arduino 转换注释:

    1) 1)从 PGA460EnergiaLibrary_vx.x.x 库文件夹中删除以下内容:"PGA460_SPI.CPP"、"PGA460_SPI.h"、"utility"文件夹。  PGA460的 SPI 功能 专为  MSP430F5529 微控制器定制。 SPI 支持仅通过  Energia 启用、目前不支持 Arduino。

    2) 2)将 #include <Energia.h> 的所有实例替换为 #include 在库文件中(PGA460_USSC.h/.cpp)

    3) 3)在所有文件中、将对"PUSH2"、"GREEN _LED"、"RED_LED"的任何引用或注释掉为 Arduino 引脚编号。 这些指示符特定于 LaunchPad 的 Energia.h 文件。

    4) 4)从 PGA460_USSC.CPP 中的 initBoostXLPGA460函数中删除案例3。

    我已经应用了这些更改、并在附加的用于 Arduino ZIP 的 PGA460库(测试版/未测试版)中实现了没有物理 Arduino 硬件的功能:

    e2e.ti.com/.../PGA460EnergiaLibrary_5F00_v1.0.9_5F00_Arduino.zip

    我获得了附带的 GetDistance_Arduino.ino sketch、以便使用 ATmega2560板进行编译。 请注意、要启用 SPI、您需要自己编写 Arduino 代码、因为 PGA460库的 SPI 函数虽然 Energia 特定于 TI MSP430。 这就是为什么这些注释指示在移植到 Arduino 时从原始 PGA460库中删除所有 SPI 引用;否则、它将抛出您显示的许多错误消息。

x 出现错误。请重试或与管理员联系。