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.
你(们)好。
我需要 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 引用;否则、它将抛出您显示的许多错误消息。