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.
https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/954964/pga305-pga305
器件型号:PGA305你(们)好
感谢您帮助解决此问题。
我在 PGA305中运行非线性和温度补偿时遇到问题。
在默认系数值下、实时输出是正确且一致的(PADC、TADC、诊断和补偿输出)。
写入所有系数并更新 CRC 后、PGA 立即运行。 从 EEPROM 读取 PADC 是可以的、但实时信息(PADC、TADC、诊断和补偿输出)似乎是随机的。 读取每个数据时、它们会更改为完全不同的值(甚至是诊断)。 此问题的根源是什么?
P.n:[为了计算系数、我进行了16次实验、然后我通过将捕获的 PADC 和 TADC 除以/2^22将其标准化。 然后、我使用线性解算器找到了系数。 它们都在[-1、1]中。 最后、我将系数 x (2^22)写回 PGA305。 对于负系数,我计算了2^24+(系数 x 2^22),将其转换为二进制补码。]
以下是 EEPROM 内容:
00 - 0F:80 24 08 45 2F FE 5B 8B 00 6B F1 FF A2 54 34 42
10 - 1F:A0 04 C6 C1 FF BB 09 00 BA D5 FF 25 38 00 6B EB
20 - 2F:FF 19 02 00 4C 3E 00 79 D9 FF 93 0D 00 E4 FE FF
30 - 3F:66 01 00 08 01 0B 02 43 00 01 00 00 00 00 FF 3F
40 - 4F:00 00 FF 3F 01 00 00 00 00 00 00 00 00 00 00 00 00 00
50 - 5F:00 00 00 00 00 00 00 07 73 FF 3F FF 3F 00 08
60 - 6F:00 00 00 00 00 00 00 01 00 FF FF FF FF FF FF FF FF FF
70 - 7F:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 04
此致
Ehsan AERABI
您好、Ehsan、
您是否有不正确输出的示例? 您是否仅通过 I2C 运行时命令读取此内容? 我有点不确定您从 EEPROM 读取的 PADC 是什么意思、因为 PADC 数据不会存储在 EEPROM 中、仅存储系数和器件配置。
此致、
您好、Scott
感谢您的更正。 EEPROM 中没有 PADC 值。 我是说可以通过控制状态寄存器按0x42-0x20到0x22的顺序访问 PADC。 该值很好、但并非所有实时值。 这里是十六进制和十进制输出的一些示例、包括增益(G)和 PADC (来自 Ctrl+stus reg)
G:248诊断:F9-4E PADC:16、00、F6 (1442038) COMP:00、00、72 (114) RT-PADC:16、00、16 (1441814) RT-TADC:16、00、1B (5632) B (13315)
G:248诊断:F9-19 PADC:16、19、38 (1448248) COMP:00、00、72 (114) RT-PADC:58、00、16 (5767190) RT-TADC:75 (29964)
G:248 DIAG:F8-CA PADC:14、3B、11 (1325841) COMP:00、00、00 (0) RT-PADC:00、00、00 (0) RT-TADC:45、00、1B (17664)
G:248 DIAG:31-38 PADC:14、2C、23 (1322019) COMP:6E、00、EC (7209196) RT-PADC:14、2A、27 (1321511) RT-TADC:27、2A、1B (10026)
G:248 DIAG:FB-9E PADC:14、33、36 (1323830) COMP:00、00、00 (0) RT-PADC:90、00、14 (9437204) RT-TADC:81、27、1B (33063)
G:248 DIAG:2F-63 PADC:14、42、3A (1327674) COMP:6E、00、6E (7209070) RT-PADC:14、2F、16 (1322774) RT-TADC:16、2F、16 (5679)
G:248 DIAG:00-1B PADC:14、3C、4B (1326155) COMP:6E、00、6E (7209070) RT-PADC:DF、00、14 (14614548) RT-TADC:7E、44、7E (323224)
G:248 DIAG:F9-BD PADC:14、41、3B (1327419) COMP:00、00、6E (110) RT-PADC:14、00、14 (1310740) RT-TADC:18、00、1B (6144)
G:248 DIAG:FA-21 PADC:14、35、0F (1324303) 公司:6E、229B (7217819) RT-PADC:9B、22、9B (10166939) RT-TADC:7C、38、7C (31800)
G:248 DIAG:FB-3D PADC:14、30、0A (1323018) COMP:6E、00、6E (7209070) RT-PADC:6E、00、14 (7208980) RT-TADC:14、29、AB (5161)
函数读取它们的序列:
PGA305_Read_runtime 诊断(diag_Buf);
PGA305_read_runtime 补偿值(COMP_Buf);
PGA305_Read_runtime_PADC (REALTIME _PADC_BUF);
PGA305_read_runtime_tasc (realtime_tasc_buf);
PGA305_Stop_Compensation_Engine ();
PGA305_Read__PADC_Data (PADC_buf);//通过0x42、0x20-0x22进行 ADC
PGA305_READ_EEPROM (GAIN_BUF、0x35、1);
PGA305_Start_Compensation_Engine ();
感谢你能抽出时间。
Ehsan
这可能有助于:
将空余转换为二进制文件
这些是系数。 可在 Excel 中对手动计算正常工作、并且消除了非线性:
[H0、H1、H2、H3、g0、G1、G2、G3、 N0、n1、n2、n3、M0、M1、m2、m3]=[0.12722776、-0.22691893、0.54435943、-0.45570149、0.81766557、0.57825062、 -0.24307868、0.30406261、-0.0025802、0.02741472、-0.08040054、 0.06555229、 0.00380225、-0.01881171、0.053302393、-0.0346434]
这些是 EEPROM 的第一部分、包括系数。 我不确定是否正确存储负数。
00 - 0F:80 24 08 29 7A F1 C9 D6 22 C9 D5 E2 54 34 0F
10 - 1F:02 25 66 71 F0 C3 75 13 BA D5 FF 2A C1 01 B8 DA
20 - 2F:FA 02 32 04 4C 3E 00 CA CB FE E 64 03 67 C8 FD
h0实验:
除 h0 =0.1之外、我将所有代码设置为0、我希望看到0.1、但我看到0.4。 I store h0 = 0x 06 66 66 = 0.1*2^22
以下是输出:
G:11 DIAG:00-00 PADC:00、6A、8A ( 27274) TADC:1C、21、B7 (1843639) COMP:19、99、98 (1677720) RT-PADC:00、6B、8D ( 27533) RT-TADC:1C、20、6F (1843311)
补偿值为1677720、如果我将其偏离2^22、我将得到0.4而不是0.1。
您好、Ehsan、
我将花一些时间来回顾这一点、明天我会回来。
此致、
您好、Ehsan、
我可以先帮助解决 h0差异。 PGA305数据表实际上需要更新、目前正在进行中。 h0系数实际上等于偏移除以4、或者为了使其反向、偏移= h0*4。 您可以在最近更新的 PGA300数据表中看到这一点。 内部算法非常相似、h0系数的处理方式也相同。 由于 PGA300只有16位分辨率、其他系数的存储方式不同。
此致、
谢谢 Scott
因此、我认为准备项目的唯一步骤是在 PGA305中正确写入系数。 您能否为我提供一个示例、说明如何使用此方案写入负数?
感谢你能抽出时间。
e
您好、Scott
我又向前迈进了一步。 负数是正确的。 我观察到以下情况:
-补偿输出始终为正。 即使您将 h0<0、补偿输出也将为零。 不小于零。 因此、我应该只求解正输出的方程。
-所有系数、无一例外、被乘以2^20 (而不是2^22)。
- P^3 (M0-m3)的系数不起作用并导致问题。 即使值很小、也能产生半随机输出。 我将所有这些(M0-m3)置零。
在任何情况下、我仍然能够补偿非线性、但如果您找到对 P^3进行编程的方法、如果您告诉我、我将不胜感激。
谢谢
Ehsan