自从使用该芯片以来、我们一直遇到一个问题、那就是 TI 算法无法分析波形。 就像 TI 拒绝分析这些问题一样。 您可以复位模块、重新初始化所有内容并采取许多不同的纠正措施、但在执行复位之前、TI 算法永远不会再次工作。 有时 TI 算法会以该状态启动。 我们也不认为波形重要。 我们已尝试将波形存储在代码中、并反复使用相同的波形。 有时 TI 会处理这些错误、有时会在完全相同的波形上失败。 请在下面找到简短的调试控制台日志。 它已添加注释、以显示该问题。
Reset reason: PMMSWBOR software BOR <------- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
********************************
reconfigure_meter
Waiting for temperature
Waiting for temperature
# Debug code:
USS_absTOF_status_object status;
USS_message_code code = USS_getAbsTOFStatus(&gUssSWConfig, &status);
printf("%d UPS(%d %f %s %0.3f) DNS(%d %f %s %0.3f) %+0.2f %d %d\r\n", code,
status.UPS.indexMaxAmplitude, _IQ16toF(status.UPS.iq16Index), _stateText(status.UPS.state), data->algResults.totalTOF_UPS * 1e6,
status.DNS.indexMaxAmplitude, _IQ16toF(status.DNS.iq16Index), _stateText(status.DNS.state), data->algResults.totalTOF_DNS * 1e6,
data->algResults.deltaTOF * 1e12,
data->algResults.messageCode, // <-- from TI's USS_Algorithms_Results
signalAnalysis_getLastMessageCode()); // <-- USS_runAlgorithms() return value
# Annotated output:
# (MaxIndex 1stPeakIndex Mode AbsTOF) (MaxIndex 1stPeakIndex Mode AbsTOF) dTOF AlgResults.MessageCode USS_runAlgorithms()
0 UPS(0 0.000000 search 59.227) DNS(0 0.000000 search 59.227) -25.41 0 122
# ADC Delay adjusted for current temperature and body size:
# gUssSWConfig.measurementConfig->startADCsamplingCount = newValue;
# USS_updateSAPHConfiguration(&gUssSWConfig);
# USS_initAlgorithms(&gUssSWConfig);
ADC Delay SAPH Count: 345 (69.00 us) --> 348 (69.60 us, computed 69.65 us, error -51.7 ns)
0 UPS(0 0.000000 search 59.227) DNS(0 0.000000 search 59.227) -25.41 0 122
# Where we found the first peaks using our own algorithm
ADC First Peaks: 32 u 32 d
# TI always returns index 0 or 1 when in error.
# The AbsTOF numbers are very close to the ADC delay.
# TI always returns: USS_message_code_valid_results = 122
# even though the numbers are wrong.
ti failed to find a first peak
0 UPS(0 1.000000 search 59.228) DNS(0 1.000000 search 59.228) -22.68 0 122
ti failed to find a first peak
0 UPS(0 1.000000 search 59.228) DNS(0 1.000000 search 59.228) -22.68 0 122
ti failed to find a first peak
0 UPS(0 1.000000 search 59.228) DNS(0 1.000000 search 59.228) -22.68 0 122
ti failed to find a first peak
0 UPS(0 1.000000 search 59.228) DNS(0 1.000000 search 59.228) -22.68 0 122
# Meter detects the TI error and eventually resets.
# It can take only 1 reset or hours of resets before the TI algorithm works as seen below
Reset reason: RSTIFG RST/NMI
********************************
reconfigure_meter
Waiting for temperature
Waiting for temperature
0 UPS(0 0.000000 search 0.000) DNS(0 0.000000 search -0.000) +0.00 11240 122
ADC Delay SAPH Count: 345 (69.00 us) --> 348 (69.60 us, computed 69.65 us, error -49.7 ns)
0 UPS(0 0.000000 search 0.000) DNS(0 0.000000 search -0.000) +0.00 11240 122
ADC First Peaks: 32 u 32 d
# Annotated:
# Water Temp v-- where math says the avg(U+D) AbsTOF should be v-- where TI found it (our math isn't perfect)
76.370 F | Center (+-5%) 60.47 63.65 66.83 | dTOF_Center 63.10 | AbsTof_Center 63.10
0 UPS(0 31.952118 track 63.096) DNS(0 31.949249 track 63.096) +14.27 0 122
0 UPS(0 31.946564 track 63.096) DNS(0 31.952118 track 63.096) +39.85 0 122
0 UPS(0 31.953186 track 63.096) DNS(0 31.948669 track 63.096) +13.19 0 122
0 UPS(0 31.950378 track 63.096) DNS(0 31.952484 track 63.096) +17.85 0 122
由于 TI 算法是闭源代码、我们无法对其进行调试。 我们只能抛出代码、然后查看 TI 结果是否发生变化、而不知道原因。
谢谢。

