Other Parts Discussed in Thread: PGA460, ENERGIA, TIDA-01597, SN65HVDA100-Q1
我使用OWU通信方式控制PGA460,我想将数据通过串口的方式传输到PC端,但是串口一直显示ERROR - Did not receive measurement results!。
而且这个程序以前是可以用的。请问是怎么回事?
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.
我使用OWU通信方式控制PGA460,我想将数据通过串口的方式传输到PC端,但是串口一直显示ERROR - Did not receive measurement results!。
而且这个程序以前是可以用的。请问是怎么回事?
您好,以前这个程序是不是UART串口通信的,现在要改成OWU通信?
如果是的话建议参考这篇E2E上的帖子,详细给出了如何从UART转为OWU通信,并给出了测试结果和测试code,希望对您有所帮助:
您好,您的这个问题我帮您再确认一下。
之前的程序UART可以使用,但是用在OWU上,串口一直显示ERROR - Did not receive measurement results!对吧?
另外我想和您确认下,您使用的是PGA460 GUI吗?如果是的话,在 OWU 模式下, GUI 不完全支持处理返回数据.
您参考下PAG60的troubleshooting guide 5.12的介绍:https://www.ti.com/lit/an/slaa733/slaa733.pdf

您好,您的这个问题我已经帮您提交到英文E2E上了,有什么问题您可以直接在上面跟进。
抱歉,我没办法在英文论坛回复,所以麻烦你回复一下。我的设计是参照TIDA-01597中的OWI方式设计的,程序使用的是energia中的getdisance
下面是我的寄存器配置
USER_DATA1 = 0x00;
USER_DATA2 = 0x00;
USER_DATA3 = 0x00;
USER_DATA4 = 0x00;
USER_DATA5 = 0x00;
USER_DATA6 = 0x00;
USER_DATA7 = 0x00;
USER_DATA8 = 0x00;
USER_DATA9 = 0x00;
USER_DATA10 = 0x00;
USER_DATA11 = 0x00;
USER_DATA12 = 0x00;
USER_DATA13 = 0x00;
USER_DATA14 = 0x00;
USER_DATA15 = 0x00;
USER_DATA16 = 0x00;
USER_DATA17 = 0x00;
USER_DATA18 = 0x00;
USER_DATA19 = 0x00;
USER_DATA20 = 0x00;
TVGAIN0 = 0xAA;
TVGAIN1 = 0xAA;
TVGAIN2 = 0xAA;
TVGAIN3 = 0x82;
TVGAIN4 = 0x08;
TVGAIN5 = 0x20;
TVGAIN6 = 0x80;
INIT_GAIN = 0x60;
FREQUENCY = 0x8F;
DEADTIME = 0x09;
if (comm == 2)
{
PULSE_P1 = 0xA0 | 0x04;
}
/*else
{
PULSE_P1 = 0x04;
}*/
PULSE_P2 = 0x10;
CURR_LIM_P1 = 0x55;
CURR_LIM_P2 = 0x55;
REC_LENGTH = 0x19;
FREQ_DIAG = 0x33;
SAT_FDIAG_TH = 0xFE;
FVOLT_DEC = 0x7C;
DECPL_TEMP = 0x4F;
DSP_SCALE = 0x00;
TEMP_TRIM = 0x00;
P1_GAIN_CTRL = 0x09;
P2_GAIN_CTRL = 0x09;
好的,E2E那边我可以帮您跟进。 您是使用的自己的板子还是EVM板子?
我这边将您的寄存器配置先回复给美国工程师。
嗯美国工程师已经给您回复了,您参考下:
如果有什么问题,再跟进。
我尝试将PULSE_P1设置为
if (comm == 2)
{
PULSE_P1 = 0x80 | 0x04;
}
但是结果还是不行
好的,我已经将您的问题反馈给美国工程师了。
另外,如果您需要在英文论坛上跟进,您这边需要注意的是使用公司邮箱,个人邮箱是没法跟进的。
不好意思,刚才回复的是另一款sensor的问题。
关于PGA460 OWU通信的问题,我这边再帮您push以下,您可以及时查看美国工程师的回复,如果您不能在英文论坛上跟进,我这边帮您翻译是可以的。
使用的是自己的板子出现的此类问题是吗?美国工程师希望您能尽可能多提供下信息,以便分析。
您好,美国工程师有回复,和您确认下是否再主控和PGA460之间使用SN65HVDA100这类收发器,从而判断是否通过OWU能收和能发?
Has the customer been able to probe the communication line to verify the device is sending and receiving data over OWU?
Additionally, is the customer using a transceiver like the SN65HVDA100-Q1 between the microcontroller and the PGA460?
好的,我这边会再去反馈。可能由于圣诞节的原因美国工程师的回复稍微慢一些, 给您带来不便非常抱歉。
我的TXD和RXD和MSP430连在一起的,没错,二极管我放反了抱歉。
谢谢您的回复
二极管纠正过来还是没能解决问题是吗? 现在确定是程序的问题?
为了能够尽快解决您的问题,建议提供较详细的信息,比如您的程序您发现哪里的问题,程序以前不是可以用的吗?
没有,我以前用的板子是BOOTXL-PGA460,但是换了板子 程序没改,请问我该怎么改呢
你上面说自己的板子和EVM板子都是这个问题。那之前使用BOOTXL-PGA460 是没有问题的对吧?
先把问题弄清楚,使用自己的板子,按照TIDA-01597中的OWI方式设计的,程序使用的是energia中的getdisance, 然后使用OWU通信方式,有问题对吧?
程序energia中的getdisance和BusDemo都用过。谢谢你的回复!
已将将您的问题提交到英文E2E上并跟进了,您这边可以随时查看美国工程师的回复:
(+) PGA460: OWU communication mode - Sensors forum - Sensors - TI E2E support forums
您好
很抱歉回复这么晚,请问我该怎样验证是否正常工作呢?而且我的电路基本和TIDA-01597中的OWI差不多的。
期待您的回复
您的第一个问题不是说串口一直显示ERROR - Did not receive measurement results!? 是用的自己的板子按照TIDA-01597 设计的。
您现在用自己的板子,OWU通信是有问题的,出现报错:ERROR - Did not receive measurement results! 我是这么理解您的问题的。
您现在问怎样验证是否正常工作,指的是自己的板子吗?
您好!感谢您的帮助
我现在使用寄存器读写的代码
byte pga460::registerRead(byte addr)
{
byte data = 0x00;
byte temp = 0;
if (comm == 2)
{
owuShift = 1; // OWU receive buffer offset to ignore transmitted data
}
else
{
owuShift = 0;
}
pga460SerialFlush();
regAddr = addr;
byte buf9[4] = {syncByte, SRR, regAddr, calcChecksum(SRR)};
if (comm == 0 || comm == 2) // UART or OWU mode
{
Serial1.write(buf9, sizeof(buf9));
}
if (comm == 3) // SPI mode
{
spiTransfer(buf9, sizeof(buf9));
}
delay(10);
if (comm == 0 || comm == 2) // UART or OWU mode
{
for(int n=0; n<3; n++)
{
if(n==1-owuShift)
{
Serial1.write(buf9, sizeof(buf9));
//data = Serial1.read(); // store read data
}
/* else
{
temp = Serial1.read();
}*/
}
}
if (comm == 3) // SPI mode
{
spiMosiIdle(3);
data = misoBuf[1];
}
return data;
}
在energia代码:
Serial.begin(19200);
ussc.initBoostXLPGA460(2,19200,0);
}
void loop() {
// put your main code here, to run repeatedly:
ussc.registerWrite(0x14, 0xAF);
ussc.registerWrite(0x15, 0xFF);
ussc.registerWrite(0x16, 0xFF);
ussc.registerWrite(0x17, 0x2D);
ussc.registerWrite(0x18, 0x68);
ussc.registerWrite(0x19, 0x36);
ussc.registerWrite(0x1A, 0xFC);
ussc.registerWrite(0x1B, 0xC0);
ussc.registerWrite(0x1C, 0x8C);
ussc.registerWrite(0x1D, 0x00);
ussc.registerWrite(0x1F, 0x12);
ussc.registerWrite(0x1E, 0x01);
ussc.registerWrite(0x14, 0xAF);
ussc.registerWrite(0x15, 0xFF);
ussc.registerWrite(0x16, 0xFF);
ussc.registerWrite(0x17, 0x2D);
ussc.registerWrite(0x18, 0x68);
ussc.registerWrite(0x19, 0x36);
ussc.registerWrite(0x1A, 0xFC);
ussc.registerWrite(0x1B, 0xC0);
ussc.registerWrite(0x1C, 0x8C);
ussc.registerWrite(0x1D, 0x00);
ussc.registerWrite(0x1F, 0x12);
ussc.registerWrite(0x1E, 0x01);
Serial.print("TVGAINO:");
Serial.print(ussc.registerRead(0x14),HEX);
但是返回的值一直是0