Thread 中讨论的其他器件:PGA460、 ENERGIA
您好,
我们一直在尝试将 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 Whitehead 先生在此 链接中提供的 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。 您能指导我们建立沟通吗? Akeem Whitehead1.

