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.
尊敬的专家:
我们当前正在开发适用于 TMS320F280039的应用、发现其中一个 ADC 测量值略高于预期值(AIO229)、并且引脚看起来为内部上拉。 我们将测量线性调频脉冲。
正在比较两个引脚( AIO229和 AIO248)以进行调试、检查后发现它们显然具有相同的配置( 无上拉、无反转、SYNC )、但 AIO229 显示了该"偏移"。
此外、使用测试仪 AIO229进行测量时、该值高于预期、 从电路断开 AIO229后、测量值返回到"预期"电压。
您知道这两个引脚之间是否有任何可能引发此问题的硬件差异吗? 或者、您可以预见任何可能导致此行为的特定配置吗?
此致、
马克·费雷尔
Marc、您好!
请提供更多信息以便澄清:
- 描述连接至 AIO 引脚的电路(如果可能,请提供示意图);
-与基准相比,您看到的偏移量是多少?
谢谢。
伊袋
你好,Ibukun,
我是这个同一个项目中的硬件用户。
原理图如下所示:
基准电压(VREFHI)为3V、模拟电压(VDDA)为3.3V。
以下测量显示了 TP1927 (AOU248)的误差(电压增加)、以及200V 时 VOLT_DCL_POS_1的 ADC 误差。
特高压/V | TP1924 / V | TP1927/ V | 参考值 | 容差 | AD -原始 电压_DCL _POS_1 |
AD -原始 电压_DCL _POS_2 |
0 | 0.001 | 0.000 | 0 | 0 - 6 | 19 | 0 |
100 | 0.298 | 0.301 | 405 | 395 - 414 | 404 | 408 |
200 | 0.594 | 0.632 | 810 | 797 - 822 | 823 | 870 |
300 | 0.89 | 0.935 | 1215 | 1199 - 1230 | 1225 | 1280 |
400 | 1.188 | 1.235 | 1620 | 1601 - 1638 | 1627 | 1685 |
500 | 1.484 | 1.533 | 2025 | 2003-2046 | 2028 | 2089 |
600 | 1.781 | 1.830 | 2430 | 2406 - 2454 | 2431 | 2492 |
700 | 2.075 | 2.125 | 2835 | 2808 - 2862 | 2831 | 2892 |
800 | 2.376 | 2.424 | 3240 | 3210 - 3270 | 3233 | 3294 |
900 | 2.676 | 2.726 | 3645 | 3612 - 3678 | 3637 | 3697 |
1000 | 2.970 | 3.018 | 4050 | 4014 - 4086 | 4037 | 4095 |
您可以看到、当电压分频时、TP1927上的电压较高。
然后、我还在微控制器处于复位状态(引脚 nXRS 连接至 GND)的情况下重复进行高达300V 的测量、AOI229上的电压上升较小。
特高压/V | TP1924 / V | TP1927/ V | 以 V 为单位的参考值 |
0 | 0 | -0.001 | 0.000 |
100 | 0.298 | 0.3 | 0.297 |
200 | 0.593 | 0.614 | 0.593 |
300 | 0.89 | 0.915 | 0.890 |
然后、我从 AOI229引脚(引脚18)上断开信号"VOLT_DCL_POS_2"、并再次重复测量、直至达到300V。 (引脚 nXRS 仍连接到 GND) TP1927上的错误现已消失。
特高压/V | TP1924 / V | TP1927/ V | 以 V 为单位的参考值 |
0 | 0 | 0 | 0.000 |
100 | 0.297 | 0.297 | 0.297 |
200 | 0.594 | 0.594 | 0.593 |
300 | 0.89 | 0.89 | 0.890 |
同时、我们向以下3个电路施加相同的电压 UHV。 且运行方式符合预期:
所选的 ADC 通道如下(如果我错、请帮我 Marc)
电压_DCL_POS_1 | AIO248 | C1 |
电压_DCL_POS_2 | AIO229 | A3 |
伏相位 U | AIO253 | C11 |
电压_相位_V | AIO 230 | B1 |
电压_相位_W | AIO227 | A9 |
Cedric 和 Marc、您好!
这可能是很长的时间、但是您是否尝试过明确禁用 AIO 引脚上的所有上拉电阻? 基本上、将0xFFFFFFFF 写入 GPHPUD 寄存器。 它听起来好像内部上拉正在影响它、尽管它确实应该在默认情况下被禁用。
偏移看起来也相当恒定-在50-60 LSB 左右的范围内。 此处的一种缓解选项可能是使用 ADC PPB 失调电压校准功能、该功能可以自动向 ADC 转换结果中添加-512至511的失调电压值。
伊袋
你好,Ibukun,
我在 代码上找不到 GPHPUD 寄存器。 我在 C2000ware 上搜索未成功。 另外、 技术参考手册仅在2023年6月最后一次修订的文档中提到 GPHPUD、所以我之前使用的版本也没有映射此寄存器。 您是否认为不匹配可能与该问题有关?
此外、我们还通过将 0xFFFFFFFF 写入 GPHPUD 寄存器应有的寄存器地址来进行测试、但结果是相同的。
提前感谢、
马克
我们做了更多的测试、我认为我们找到了问题的根本原因。
在一个通道上、AIO226我们测量范围为0-75的 DCL 电压、以便具有更高的精度。 由于 DCL 电压可以高达1000V、我们添加了钳位二极管、但似乎、钳位并不强。
当 TP1935上的电压超过3V 基准电压时、我们开始看到会对某些 ADC 通道产生影响、但并不是对所有通道都产生影响。
与0V 相比在 UHV = 100V 时的影响 | 3.72V @ TP1936 | |
引脚 | 是/否 | AIO-# |
14 | 否 | AIO 228 |
15 | 是 | AIO226 |
16 | 是 | AIO 242 |
17 | 是 | AIO 224 |
18 | 是 | AIO229 |
19 | 否 | AIO239 |
20 | 否 | AIO237 |
21 | 是 | AIO244 |
22 | 否 | AIO232 |
23 | 否 | AIO231 |
24 | 否 | VREFHI |
25 | 否 | VREFHI |
26 | 否 | VREFLO |
27 | 否 | VREFLO |
28 | 是 | AIO238 |
29 | 否 | AIO248 |
30 | 是 | AIO251 |
31 | 是 | AIO245 |
32 | 是 | AIO252 |
33 | 否 | VSSA |
34 | 是 | VDDA |
35 | 是 | AIO249 |
36 | 是 | AIO225 |
37 | 是 | AIO240 |
38 | 是 | AIO227 |
39 | 是 | AIO236 |
40 | 否 | AIO 230 |
41 | 否 | AIO253 |
42 | 是 | AIO247 |
您能简要介绍一下内部钳位吗?
Cedric,
听说您能够对此进行跟踪、这是一个好消息。 上图中的钳位机制实际上与器件中输入引脚单元处使用的机制相同。 这些二极管主要用于 ESD 保护、但只要输入电压超过工作范围、就会产生灌电流或拉电流的影响。 但是、并未指定二极管的确切正向偏置电压。
在我的测试中、我发现钳位二极管在开启时会灌入大约几 mA 的电流。
此致、
伊袋
需要说明的一点是:顶部二极管连接到 VDDA 电源轨、电压轨的标称值为3.3V (这与 VREF 不同、在您的情况下它是3.0V)。
此致、
伊袋
是的、我们希望钳位机制在每个模拟引脚上都是连接到 VDDA 的二极管。
我们知道、TP1935上的电压将超过3V 并可能高达40V、因此我们添加了外部跳线二极管和10k 串联电阻器将进入引脚的电流限制在大约30uA。
如果(正如预期的那样)每个 ADC 引脚都有一个朝向 VDDA 的单独钳位二极管、我们应该有效地保护 ADC 引脚 VOLT_DCL_POS_3/AIO226/引脚15。
我现在不明白的是、我们看到该电流对其他 ADC 引脚产生了影响。
在 VOLT_DCL_POS_3 / AIO226/引脚15上、我们在 UHV = 100V 时测量到3.72V。 这低于最大值。 输入电压为4.6V 并且如上文所述、电流也限制在大约30uA。
除了每个引脚上的钳位二极管、ADC 引脚是否也以某种方式进行分组? 它们需要以某种方式存在、以便查看电压上升对其他(但不是所有) ADC 引脚的影响。
好的、我离解决方案更近了一步:
我调节了 VOLT_DCL_POS_3/AIO242的钳位和测量电路、以将电压限制在3.3V 以下
Ra = 300e、Rb = 1k、R1957 = 121k
不过、我看到预期 ADC 的微小偏差会导致较低的电压。
特高压/V | TP1924 / V | TP1927/ V | 以 V 为单位的参考值 | 参考值 | 容差设计 | AD -原始 | AD -原始 |
电压_DCL _POS_1 | 电压_DCL _POS_2 | ||||||
0 | 0.000 | 0.000 | 0.000 | 0 | 0 - 6 | 17 | 0 |
70 | 0.209 | 0.209 | 0.208 | 284 | 275 - 291 | 300 | 296 |
100 | 0.298 | 0.298 | 0.297 | 405 | 395 - 414 | 421 | 417 |
200 | 0.596 | 0.595 | 0.593 | 810 | 797 - 822 | 823 | 818 |
300 | 0.892 | 0.893 | 0.890 | 1215 | 1199 - 1230 | 1225 | 1221 |
400 | 1.190 | 1.189 | 1.187 | 1620 | 1601 - 1638 | 1626 | 1623 |
500 | 1.490 | 1.489 | 1.484 | 2025 | 2003-2046 | 2028 | 2024年 |
600 | 1.783 | 1.783 | 1.780 | 2430 | 2406 - 2454 | 2431 | 2426 |
700 | 2.079 | 2.078 | 2.077 | 2835 | 2808 - 2862 | 2832 | 2828 |
800 | 2.381 | 2.381 | 2.374 | 3240 | 3210 - 3270 | 3233 | 3229 |
900 | 2.672 | 2.673 | 2.671 | 3645 | 3612 - 3678 | 3636 | 3632 |
1000 | 2.974 | 2.973 | 2.967 | 4050 | 4014 - 4086 | 4039 | 4035 |
我可以肯定地说、所有 ADC 引脚上的所有电压低于 VDDA。
但我们使用多个 AIO 作为数字输入、它们通常始终处于高电平且不会切换、除非发生市长故障。 (这就是我将这些数字输入信号放置在备用 AOI 引脚上的原因。)
是否有可能是全部持续3.3V 的 nFLT 和 RDY 信号在某种程度上影响 VOLT_DCL_POS_1和 VOLT_DCL_POS_2的高阻抗测量?
如果是、可以采取什么措施?
我猜是因为、VOLT_DCL_POS_1 (引脚29)和 VOLT_DCL_POS_2 (引脚18)的 nFLT 和 RDY 信号都在附近。 从根本上来说、相同电路的 VOLT_PHASE_U/V/W 高阻抗测量结果未显示任何不准确之处、且附近没有 nFLT 和 RDY 信号。
好的、我现在尝试测试 AOI 引脚上的数字信号是否受 ADC 值的影响、而不是受到影响。
我将 RDY 和 nFLT 信号上的电压降低到3V。 -> AD RAW 值无变化。
我还对 特高压应用了70V 电 压、然后在其他 AOI 输入端单独更改为0V。 这也不会更改 测量的 AD RAW 值。
您能帮助我们了解我们在通道 VOLT_DCL_POS_1 / AIO248和 VOLT_DCL_POS_2 / AIO229上看到的 ADC 误差吗?
此致、
塞德里克·加瑟
Cedric 您好!
我觉得夹紧问题已经解决了。 我现在在您的数据中看到的是一个基本的增益误差问题、这将主要是您的电压基准的一个特征。 增益误差约为0.72%。 在下图中、蓝色是测试点电压、橙色是 ADC 转换、它是线性的、但斜率(增益)略有不同。
您能否介绍一下您的电压基准电路? 您正在使用哪些组件?
我们可能还需要确认您是否正确使用了 ADC_setVref ()函数来启用外部基准并正确加载修整。 如果未使用 ADC_setVref ()、则在 ADC 工作期间可能会错误地修整器件。
此致、
伊袋
你好,Ibukun,
我也认为夹紧问题已经解决。 (至少我希望这样:-))
在以下电路中、我们使用元件"REF3430-Q1"作为基准电压:
至于我们如何使用 UC 中的参考函数、我必须参考 Marc。
此致、
塞德里克
你好,Ibukun,
我可以确认我们在三个 ADC 模块的初始化期间使用了 ADC_setVref (作为 ADC_reference_external 和 ADC_reference_3_3V)。在这之前、我们还调用 SysCtl_deviceCal。
此致、
马克·费雷尔
Cedric 您好!
Vref 引脚上的200nF 电容太大。 REF3430的额定输出电容仅为10uF、而该12位 ADC 对于 VREFHI 电容器的容值应为2.2-4.7uF。
伊袋
你好,Ibukun,
很抱歉、我不确定我是否理解您的建议
目前 VREFHI 上的唯一电容是2x 100nF。 一个电容器靠近基准、一个电容器靠近微控制器。 如果我理解正确的话,这是不值得的。 (不能太多)
我假设我应该用2.2-4.7uF 的电容器代替靠近微控制器的100nF 电容器?
此致、Cedric
Cedric 您好!
我的意思是 REF3430不能支持100nF。 2x100nF 甚至更糟
根据 REF3430数据表、总负载电容不能超过10uF。
此致、
伊袋
但100nF 或200nF 是远低于10uF 的
100纳法< 10微法
道歉! 我的大脑今天早上有点杂乱。
是的、100nF 值太小。 最小值应为2.2uF。 您可以在基准附近放置一个2.2uF 的电容、在引脚附近放置另一个2.2uF 的电容、这样就可以正常工作。
你好,Ibukun,
遗憾的是、纠正后的2x 2.2uF 电容未解决我们的问题:
从0到300V 的测量值看起来仍然相同。
特高压/V | TP1924 / V | TP1927/ V | 以 V 为单位的参考值 | 参考值 | 容差设计 | AD -原始 | AD -原始 |
电压_DCL _POS_1 | 电压_DCL _POS_2 | ||||||
0 | 0.001 | 0.000 | 0.000 | 0 | 0 - 6 | 18 | 0 |
70 | 0.209 | 0.209 | 0.208 | 284 | 275 - 291 | 300 | 296 |
100 | 0.298 | 0.298 | 0.297 | 405 | 395 - 414 | 421 | 417 |
200 | 0.594 | 0.594 | 0.593 | 810 | 797 - 822 | 823 | 819 |
300 | 0.891 | 0.891 | 0.890 | 1215 | 1199 - 1230 | 1224 | 1220 |
还有其他建议吗?
现在我能想到的唯一相关的东西是 ACQPS 设置。 我相信您的团队以前已经完成了这项工作、但可能应该重新审视一下。 在这种情况下、采集时间不足可能会表现为增益误差问题(您可以看到、随着输入电压的增加/所需的 S+H 电容充电时间增加、转换到预期的差值会减小)。
这连同一个 VOLT_DCL_POS_1上的偏移误差(在0V 时显示为18 LSB)可以解释我之前布置的特性图。 如果无法 在电路板上消除偏移、ADC 具有使用 PPB 偏移校准(PPBxOFFCAL 寄存器)自动校正系统偏移误差的功能。
伊袋
你好,Ibukun,
我们尝试显著增加采集时间、结果是相同的。
我们进行了第二项测试、将 SOC2信号与 SOC3信号交换(从 SOC3转换了 VOLT_DCL_POS_1和 VOLT_DCL_POS_2)。 执行交换之后、我们可以看到结果有如下差异:
原始代码:
特高压 /V | TP1924 / V | TP1927/ V | 以 V 为单位的参考值 | AD -原始 | AD -原始 |
电压_DCL _POS_1 | 电压_DCL _POS_2 | ||||
0 | 0.001 | 0 | 0 | 18 | 0 |
70 | 0.209 | 0.209 | 0.208 | 300 | 296 |
将 SOC2信号与 SOC3信号交换:
特高压 /V | TP1924 / V | TP1927/ V | 以 V 为单位的参考值 | AD -原始 | AD -原始 |
电压_DCL _POS_1 | 电压_DCL _POS_2 | ||||
0 | 0.001 | 0 | 0 | 11 | 0 |
70 | 0.209 | 0.209 | 0.208 | 294 | 281 |
您是否认为这可能表明存储器串扰问题? 否则、您还有其他建议吗?
提前感谢、
马克
Marc、您好!
我将在星期一尝试跟进这一主题。 存在串扰。
伊袋
你好,Ibukun,
为了提供更多信息、在假设我们可能遇到存储器串扰的情况下、我们还通过将 SOC0 信号与 SOC3信号交换来进行了测试。 (VOLT_DCL_POS_1和 VOLT_DCL_POS_2)。
我们看到、在将 VOLT_DCL_POS_1和 VOLT_DCL_POS_2 移至 SOC0后、其值会更低(我们认为此结果与存储器串扰兼容)。 我们还可以看到在 SOC3上采样的信号的值更高(之前在 SOC0上采样)、但偏移没有其他信号高、因此我们想知道是否有其他变量需要考虑。
希望这可能有助于获得更好的概览。
提前感谢、
马克·费雷尔
Marc、
存储器串扰的最直接解决方案是在转换之间对 VREFLO 进行采样、这显然是以可能降低总体吞吐量为代价的、具体取决于您的控制环路频率/预算。
除此之外、我们还有一份应用手册、其中深入探讨了这一特定主题: 缓解 ADC 存储器串扰的方法
最终、这是高阻抗信号源的固有问题;它成为成本与性能之间的一种折衷。
但是、如果您知道系统偏移是相对静态/不可变的、则始终可以通过使用 ADC PPB (失调电压校准)来自动补偿系统偏移。 动态偏移要难得多。
此致、
伊袋
尊敬的 Ibukun:
我们已经对" 缓解 ADC 存储器串扰的方法"(采样 vreflow)建议的策略进行了测试。 我们看到的偏移随着测量的信号电压的增加而线性增加(假设这与存储器串扰问题一致)、因此我的理解是、在这种情况下我们不能使用 ADC PPB、对吗?
是否有任何其他可以减轻这种影响的 ADC 配置、例如调整 Acq 窗口?
另外、是否有任何方法可以再次检查我们实际上遇到的问题、即内存串扰?
提前感谢、
马克·费雷尔
Marc、
这就是我之前所指出的-整个输入电压范围内线性增加的误差就是增益误差。 通常、该误差应与电压基准精度直接相关(可在转换阶段仔细检查 VREFHI 以查看剩余电压和负载调节行为、以确认其正确性、它在转换期间是否会略有下降?)。
根据您之前提供的数据、我计算出的增益误差为0.72%、这远大于 REF3430的规格精度(0.05%)。 也许还有其他(动态?) 关键因素。 SAR ADC 上电压基准的理想配置是将串联基准器件(REF3430、REF5030)与 OPA320等高带宽运算放大器缓冲器相结合。ADC 本身的固有增益误差小于0.002% FSR、 因此、任何观察到的增益误差都归因于器件外部的因素。
PPB 只对基准偏移误差有所帮助、而不对增益误差有所帮助(请注意、您可以同时使用这两者)。 增益误差的任何调整都必须在软件中完成。
关于串扰问题、简单的测试是禁用所有其他 SOC/通道触发器、只需对被重复测试的信号进行采样。 您应该具有一个稳定、可重复的转换值。 如果第一个一两个转换较低而其余的转换较高、则表明 ACQPS 不够长(假设您从零采样电容状态开始)。 现在、如果启用其他 SOC/通道并进行转换时信号的精度发生变化、则可确认存储器串扰。
此致、
伊袋