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.

[参考译文] TM4C1294KCPDT:ADC0 FIFO 时钟

Guru**** 1860360 points
Other Parts Discussed in Thread: EK-TM4C1294XL, INA240, INA282
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/724572/tm4c1294kcpdt-adc0-fifo-clocking

器件型号:TM4C1294KCPDT
主题中讨论的其他器件:EK-TM4C1294XLINA240INA282

似乎 可以将  AD 转换器 稳定采集同步实时分配到 串行 FIFO 中 FIFO 时钟必须以 数字 转换器2MSPS 速率的16倍或480MHz 运行。

ADC 模块主时钟树似乎表示模拟 分频时钟(32MHz)发生 在[%N]块之后、但480MHz VCO 也应 将其传递到 FIFO 串行器的蓝色框中。  

将 PLL (480/2)除以我们 的 VCO 运行240MHz 、 无法满足循环 FIFO 同步 <LSB 位到(比率指标) MSB 位 位置 的要求、因为  转换器中会进行实时稳定采集、即使是慢速周期信号也是如此。   实际上、ADC 时钟问题 表现为 实时信号采集  与尝试 处理可疑 FIFO 数据的应用不同步。  在 某些情况       下、根据模拟信号是周期性的或大部分是线性的、条件会以较大误差 INL > 3%甚至是大部分失真样本的形式进行采样。

    当 SysCtrlClockFreqSet() 当前预分频 PLL/VCO 240MHz 时,我们如何使 VCO 为 ADCCLK 生成480MHz 的频率(蓝色框)?   ADC 时钟似乎 是 最近发现的问题 、其触角超过了 ADC 时钟分频值。 数据表图表和文本  对于  ADC 时钟的确切分配方式都很模糊、并且因其与图15-2 单个块相关而进行了专门划分。  下面的图表似乎为  ADCCLK  可能需要480MHz 来满足 MSB 单元中的 FIFO << LSB 位的要求留下了不可避免     的可能性、因此 SAR 比率指标行为适用于所有被转换的信号、而不仅仅是较慢的稳态信号。   即使 是慢速周期信号、ADC0/1的运行方式也不正确。  它 仅将 周期性单端模拟通道样本压缩为  原始 周期性信号的缩放副本、这并不  是始终需要的行为。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    逐次逼近寄存器(SAR)模数转换器的移位寄存器(我不将其称为 FIFO)由 ADC 时钟计时、ADC 时钟的最大值为32MHz。 它可以从 PLL VCO 输出的分频中得到。 2MSPS x 16 = 32MHz (不确定为什么您认为 ADC 串行器必须直接从480MHz 计时)。

    话虽如此、TM4C129器件上有一个已知勘误表(SYSCTL#22)、即用于生成系统时钟的 PLL 的输出分频器可能无法正确加载、而是将其除以2。 即使函数 SysCtlClockFreqSet()中使用了 SYSCTL_CFG_VCO_480、最新版本的 TivaWare 中的权变措施也会针对120MHz 系统时钟使用 VCO = 240MHz。 使用函数 SysCtlVCOGE()来确定配置的实际 VCO 频率。 对于240MHz VCO、您可以使用的最大 ADC 时钟为30MHz (而不是32MHz)。

    采样率是否是您遇到的问题? 1)您没有回答我在之前的帖子中提出的问题、1)您使用的采样率是多少? 2) 2)您从 ADC 获得的值是多少? 3) 3)您期望的值是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    [引用 user="Bob Crosby">它可以通过 PLL VCO 输出的分频得到。 2MSPS x 16 = 32MHz (不确定为什么您认为 ADC 串行器必须直接从480MHz 计时)。
    [/报价]

    对于   异步通信中 UART FIFO 串行数据传输的典型应用而言、这是一个很好的选择。  已确定 VCO 速度被 后来版本的 Tivaware 分频一半、但我们仍在使用旧版本 SysCtlClkFreqSet()、该版本正确设置了 SYSCLK 分频值的 PSYSDIV N3+1。 我们已经设置了 ADCCLK 分频值 、认为不管 PSYSDIV 的值是什么、VCO 实际上默认为240MHz。  无论是 Tivaware 版本  、VCO 都不是240MHz、实际上 VCO=536MHz Launch Pad 测试。  我在另一天进行了测试以实现正刻度增益、ADC 时钟运行频率为60MHz、并且可能跳过 AQ 点。 请注意、SYSCLK 在旧版本中为120MHz 、而在具有最新 Tivaware 代码  的情况下为60MHz、似乎设置 PSYSDIV 错误。 现在、我们 将 ADCCLK/17 (31.7MHz)设定 为针对超频 VCO 进行修整。   这就是 SysCtlVCOGet() 实际读取 速度是否正确。 它 需要一个数组[0]来将回调内容捕获为整数值。

    [报价用户="Bob Crosby">您遇到的问题是采样率吗? 1)您没有回答我在之前的帖子中提出的问题、1)您使用的采样率是多少? 2) 2)您从 ADC 获得的值是多少? 和3)您期望的值是什么[/引号]

    实际上 回答了这两个问题、同样是2MSPS、硬件取平均值为2倍。  我们期望 微伏模拟采集 按  毫伏数字刻度(1000:1)比率的顺序进行扩展 、以生成接近  低通滤波后应达到的任何比率度量数字值。 正如 我说        过的、过去的采样在大多数情况下仅压缩信号、并不真正转换相对于1/2 LSB - 3V3 VREFP 的微伏稳定采集点。   信号的任一 VREFN/P 端都存在一些随机周期性饱和、但这不应 导致 转换器的竞争击穿。  从序列发生器 FIFO 读回的值 不是 模拟信号的比率度量表示。 当  将数据发送到 针对此类信号或数字读取设计的示波器小工具时、这种视图清晰可见、两者都永远不会到达接近逐次逼近的任何位置。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当 SYSCLK=60MHz Tivaware 2.1.4.178时、USB0不起作用、 配置 120MHz SYSCLK 被忽略。 想知道 SYSCLK 120MHz 数字是否仅适用于 ADC 寄存器。 尽管480MHz FIFO 串行器很容易与32MHz 转换器保持异步速度* 16个周期。 在480MHz VCO 频率下、每个 FIFO 串行位传输花费2.08ns*16 ADCCLK (3.125ns tocks @32MHz)总计33.33ns 将进入 LSB 的12位移位至 MSB 满量程(VREFP)。

    对于 ADCCLK (32MHz)、3.125ns/tick*16=500ns FIFO 传输、无需增加转换时间。 可能较慢的 FIFO 串行速率使我们能够在80us 周期内实现(Rs=200 Ω) 63ns 的 CADC 趋稳至1/2 LSB、但在1.5us 周期内不求平均值。 即使 FIFO 被串行化@120MHz 或8.33ns*16=133ns、在1us 转换后、CADC 稳定至1/2 LSB 也是如此。 该 TS 值不包括进出 FIFO 的数据传输。 采样采集稳定时间与将 A 转换为 D 以及通过串行传输将结果传输到 FIFO 中的时间不同。 很难想象 FIFO 传输仅花费500ns。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby"]连续逼近型寄存器(SAR)模数转换器的移位寄存器(我不会将其称为 FIFO)由指定为最大32MHz 的 ADC 时钟计时。

    然而、数据表将其命名为循环 FIFO、并且 在 所有时钟细节上都非常模糊、特别是   在实现 FIFO 时钟的目的或方式上。 不能假定 ADC 时钟可能满足上述 FIFO 时钟 的 编写方式、 它没有 明确说明任何此类时钟的情况。 相反、ADC 时钟叙述将 主体集中成一个模糊的(子句)、似乎不适合 ADC 电气规格有关 TS、CADC、FADC 和 FIFO 行为的详细信息。

    数据表 图图图15-2  的描述性模糊、缺少 确定 正确功能所需的信息。    在时钟信号 被排除后、有人如何认真对待它? 主时钟树(图5-5) 未正确解释 ADC 模块 FIFO 相对于 SYSCLK 的多样化时钟、这是对 SAR 采样采集稳定 时序进行故障排除所必需 的。应用也需要处理这种计时。   当 ADC 时钟相对于 处理 FIFO 采样结果的应用程序而言似乎完全错误时、这两个图产生的问题多于答案。

    Tivaware (2.1.4.178)似乎使  通过 VCO 分 频时钟的 ADC 时钟  更有问题。  也许 FIFO 时钟 的移动速度受限制小于< LSB 60MHz SYSCLK? 似乎 最近引入了一个新的错误、这会导致社区 对 ADC 时钟 PSYDIV 和实际 PLL、VCO 速度 远高于480MHz 感到困惑。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BP101、
    我认为您误解了 ADC 的工作原理、因此我在跟踪您的论点时遇到了困难。 让我首先解释一下模数转换器、硬件平均电路和 FIFO。

    逐次逼近型寄存器模数转换器由分频的 PLL VCO 计时。 该 ADC 时钟必须为32MHz 或更低、否则 ADC 转换器将不工作。 要进行一次转换、至少需要16个 ADC 时钟周期。 (32MHz/16个周期的每次转换= 2M 采样/秒)。 这些周期是4个采样周期。 在此期间、外部电压与内部采样电容器上的电压进行均衡。 在第4个周期后、采样开关关闭、转换开始。 通过比较采样电容器上的电压与基准电压来完成转换。 在第一个转换周期(周期5)内、它与基准值的1/2相比较。 如果采样电压大于基准的1/2、基准电压增加1/4、结果寄存器的位11中存储1。 否则、基准电压将减少1/4、并且一个零被存储在位11中。 使用新基准在下一个时钟周期中再次进行比较、新基准决定了结果的位10。 下一次调整是基准电压的1/8、依此类推、直到最后一次调整是基准电压的1/4096、位0被确定。 执行一次转换的过程需要16个 ADC 时钟周期。 解析最后一位后、除非使用硬件取平均值、否则结果将传输到 FIFO。

    如果使用硬件取平均值、结果被添加到一个从零开始的内部累加器中。 如果使用的是2倍平均值、则进行第二次转换并将其添加到第一次转换。 这总共需要32个 ADC 时钟周期(每次转换16个)。 得到的总和除以2 (实际上是右移的一位)、并且这个结果被存储在 FIFO 中。

    FIFO 只是用来存储 ADC 转换、直到它们可以被 CPU 或 DMA 读取。 它在转换或平均操作完成时加载。 它可以由 CPU 或 DMA 读取。 它由系统时钟计时。

    两个要点;首先、如果您以32MHz 运行 ADC 时钟并使用2倍平均值计算、则采样率为每秒1M 次采样。 其次、ADC 无法实现大于3.3V/4096或0.8mV 的精度。 如果以32MHz 运行、对规格的进一步分析显示总误差高达30LSB。 请注意、当 ADC 时钟为16MHz (+/- 4 LSB)时、误差更小。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SYSCLK 速度120000000和 VCO 速度536871532不正确。 系统时钟将是 VCO 速度的整数除法的结果。 我将会整合一个示例程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当您使用 SysCtlVCOGet()函数时、使用来自 sysctl.h 的定义来定义晶振、而不是实际的 MHz。

    //
    //从 PLL 以120MHz 运行。
    //
    ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000);
    
    SysCtlVCOGet (SYSCTL_XTAL_25MHz、\ui32VCOClock);
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    即使是这样、"在这种情况下没有狗(遇到)"-供应商的 Bob 在提供这样的"ADC 运营详情"方面表现出的耐心、努力和专业知识也值得称赞。   干得不错。

    一个(次要)点(可能)斜率-即 、[引用 user="Bob Crosby"]在此期间、外部电压与内部采样电容器上的电压相等

     "MCU 的内部电压是否(更有可能且更恰当)会均衡 "(或驱动到)"外部、外部世界电压?"    (事实证明、"外部电压应主导此过程"- MCU 的 ADC 应(正确)寻求与外部电压匹配而非"反之亦然"。    (如果 MCU (真正)"拉" 外部电压(报价确实表明)-则必须确定"此类拉电流的范围"并在 MCU 的 ADC 处理中进行补偿...)

    MCU 必须"弯曲和/或适应" (即适应)外部世界-并且"不"具有"外部世界"-屈从(任何) MCU 需求、这难道不是"正常/习惯"吗?   (但要完全符合 MCU 的规格!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CB1、
    是的、感谢您这么清楚。 我的措辞选择不好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    [引用 user="Bob Crosby"]。 通过比较采样电容器上的电压与基准电压来完成转换。 在第一个转换周期(周期5)内、它与基准值的1/2相比较。 如果采样电压大于基准的1/2、基准电压增加1/4、结果寄存器的位11中存储1。 否则、基准电压将减少1/4、而位11中存储了一个零。[/引用]

    同样、它不是模数转换中 VREFP 的1:1比率、图15-9清楚地显示了 每个模拟 1/4-VREFP-VRFN/4096 (微伏)、从而 在  全毫伏刻度(而不是微伏刻度)下产生0-4096个值。  您认为  、模拟侧的电压是多少?转换  比为1:1时、数字稳定至1/2 LSB。 公式的模拟侧 是数字毫伏 步进转换分辨率的微步进、而不是毫伏。  捕获 我布置 用于 LSB 趋稳、 示波器垂直 CH2设置为 X10 伏分辨率与 X1毫伏。 《存储范围手册》没有 任何细节;要测量 低于50mV 的垂直 X1衰减 、即使 X10探针开关 将 全带宽或 X1限制设置为5MHz、也需要设置 X1衰减。 因此、捕获的标度未以   微伏为单位显示1/2 LSB。   

    [引用 user="Bob Crosby">FIFO 只需存储 ADC 转换、直至 CPU 或 DMA 能够读取这些转换。 它在转换或平均操作完成时加载。 它可以由 CPU 或 DMA 读取。 它由系统时钟计时。[报价用户="Bob Crosby"]进行一次转换的过程需要16个 ADC 时钟周期。 解析最后一位后、除非使用硬件取平均值法、否则结果将传输到 FIFO。[/QUERPLET]

    您的似乎是为了让应用程序进程 在采样 就绪中断的近乎实时的情况下转换样本。 因此、串行化 FIFO 数据不能落后于 TS+TC 1125us 500ns 转换接受的模拟输入信号。  FIFO 时钟速度对于 应用 保持与 数字转换器和硬件取平均值接近同步至关重要。 这再次要求 SYSCLK 和 PLL 运行 正确的频率、以便 CPU 应用与   DSP 信号的反馈环路保持同步。  点是 FIFO 随后由 SYSCLK 计时、 但仍然滞后、因为它不是 ADCCLK 速度的16倍。 Charles 最近表示(TC 1us)、表示 FIFO 结果准备就绪。 似乎512MHz FIFO 速度更适合保持实时 采样采集与 CPU 应用和 NVIC 同步。 也许 FIFO 时钟速度 直接脱离了  538MHz 的 VCO   、这更适合实时采样 DSP 电流环路的要求。  

     在最近的论坛帖子 中、我们无意中通过 ADC 时钟分频器操作将 ADC 配置为运行60MHz。 在 最近  的论坛对话之后、PSYSDIV 实际上不是3N+1或 N=4、但我们相信这一点。 VCO 明显超过480MHz、 EK-TM4C1294XL 和我们的定制 PCB 都可能会导致 ADC 时钟出现一些问题。  

    [引用 user="Bob Crosby">第二、ADC 无法实现大于3.3V/4096或0.8mV 的精度。 [/报价]

    这将在  模拟微伏比的每1/2 LSB 稳定采集中产生大峡谷空隙。

    mV 每 ADC 代码=(VREFP - VREFN)/4096、 每个1/4 每个 ADC 代码 (0x4、0x8、0xC、0xFFF)具有800mV 分辨率或0.8x4=3v2 +/-30LSB 满量程、INL +/-3LSB。 因此、每个刻度都被 公式模拟侧的全数字刻度(4096)分频。 因此,相对于 完整 3V3刻度中的实际数字表示,我们在稳定采集点得到1000:1的比率。   

    [引用 user="Bob Crosby">如果使用硬件取平均值、结果将添加到从零开始的内部累加器中。 如果使用的是2倍平均值、则进行第二次转换并将其添加到第一次转换。 这总共需要32个 ADC 时钟周期(每次转换16个)。 得到的总和除以2 (实际上是右移的一位)、并且该结果存储在 FIFO 中。[/引用]

    在 后来的 Tivaware 代码中、SYSCLK 为什么不应该为60MHz 也许还有更多的原因?  为什么 PLL 在 Tivaware 版本中运行538MHz 并对 ADC 模块进行超频?  将 ADC 时钟减慢 至(32MHz)后、采集效果会更好。  RSCLKCFG 寄存器 对 PLL 块进行分频 、因为论坛最近的讨论 表明它是硬件强制的 PLL/2。   VCO 速度问题的 PLL 分频值似乎  是 最近的软件错误、不是由不良硬件引起的。

     根据 SysCtlVCOGE()、VCO 频率538MHz 是否未报告为真?  

    静态 uint32_t ui32VCOSpeed[0];
    
    SysCtlVCOGet (SYSCTL_XTAL_25MHz、ui32VCOSpeed);
    
    UARTprintf (">VCO-Speed->:%i\r\n"、ui32VCOSpeed); 

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101、

    从我所读的内容来看、通用 TM4C ADC 的功能似乎不够强大、无法满足您的特定需求。 有许多功能强大的外部 ADC 可按所需的速度和精度处理数据。 如果您不相信 Bob 所描述的 ADC 规格、尤其是0.8mV 精度、就足够了、那么我建议您研究其他选项。 TM4C 上的 ADC 具有其限制、如果您要达到这些限制、则应使用外部 ADC。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、我不知道您如何达到 VCO = 536/538 MHz、但这是完全错误的。 您无法将其配置为如此奇数的频率。 您的测量结果显示在某个位置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    BP101、

    尝试将代码更改为:

    静态 uint32_t ui32VCOSpeed;
    
    SysCtlVCOGet (SYSCTL_XTAL_25MHz、\ui32VCOSpeed);
    
    UARTprintf (">VCO-Speed->:%i\r\n"、ui32VCOSpeed);
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您真的认为800mV 是模拟分辨率、很明显、2MSPS SAR 如何检查将近似寄存器转换为3V3数字刻度的微伏采样采集点被误解了。 Bob 对 VREFP 上下移动1/4标度的解释甚至是相对于+/-30LSB 分辨率的完整3V3 ADC 标度、而 INL +/-3LSB 远非1000:1的比率现实。

    在几个帖子中发生了什么情况;  

    1. PLL 根据 SysCtlVCOGet()的回调似乎超频。 否则、会严重怀疑 VCOGet 公式中的 PLL 速度结果在发送到数组的指针(uint32_t * pui32VCOFrequency)中是否正确。

    2.在 g_ui32SysClock 报告 PSYSDIV N3+1的120MHz 下、 VCO 速度检查如何正确? 更好的是、为什么 Tivaware 2.1.4.178 忽略传递变量(120000000) 降低 了 SYSCLK 速度 60MHz?  为什么 Tivaware 2.1.4.178 SysClkFreqSet()  与较早的 Tivaware 2.1.0.12573 SysClkFreqSet()相对 PSYSDIV (N+1)不一致,并且在 SYSCLK 速度120000000中不一致? SYSCLK 的 ADC0 FIFO 速度是否可以达到120MHz、而60MHz SYSCLK 则可以解决一些 ADC 问题?  

    我们 强制 ADCCLK 分频器相信论坛讨论 PLL/2 为缺省值、但 ADCLK 实际上运行60MHz 、这会导致  每个1/4 VREP-VREFN 上的周期信号的模拟采集问题。   

    /* MPU 使用 MOSC 驱动的 PLL 480MHz/4产生120MHz SYSCLK:
    Y1 = 25MHz XTAL HIGHFREQ。 //
    g_ui32SysClock = map_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    BP101、

    [引用 user="BP101"]您确实认为800mV 是模拟分辨率[/引用]

    不、Ralph 和我都说它是0.8mV (800uV)。

    [引用 user="BP101]1. 根据 SysCtlVCOGet ()的回叫、PLL 似乎正在超频。[/quot]

    您未正确使用该函数。 请参阅我之前的帖子以及对您的代码的建议更正。

    [引用 user ="BP101"]为什么 Tivaware 2.1.4.178 忽略传递变量(120000000) 降低 了 SYSCLK 速度 60MHz?

    这不是发生的情况。  系统时钟为120MHz、但 VCO 为240MHz。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    也许这就是1/2 LSB 分辨率被称为 Rs 阻抗的电荷共享的原因,例如 ,Cext 到 CADC 是一个 RC 电荷交换,不会对3V3 VREF 产生直接影响。 定义的电荷交换应有助于将 MCU +2V LDO 与 ANIx 模拟信号隔离。 ANIx 输入的模拟多路复用器侧对内部 MCU 电压不应产生直接影响。 CADC 应该是所有电荷共享中的中间参照点。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby"]不、Ralph 和我都说它是0.8mV (800uV)。

    800uV 远远高于800mV、这是我的错误。 根据图15-9 1/4分辨率在 800mV/4096=201uV 1/4 刻度低端分辨率时结束。  因此、我不知道您会在哪里得到800uV 的1/4量程模拟分辨率。 正如我说过的、800mV 虽然800uV 更好、但对于大多数需要闭环反馈的 DSP 应用而言、不接受非采集的巨大优势。

    mV 每 ADC 代码=(VREFP - VREFN)/4096、并且每个 ADC 代码 输入表中的每个1/4步进被4096除以产生 201uV 分辨率、而不是800uV。 您不能创建公式 、稍后不能遵守公式中的数学运算、因为它与表中的所有 ADC 代码(级别)相关。

    [引用 user="Bob Crosby">这不是正在发生的情况。  系统时钟为120MHz、但 VCO 为240MHz[/QUERP]

    RSGCLKCTL=0x3中的 PSYSDIV 与屏幕截图上报告的 SYSCLK 速度120MHz 相同、而不是60MHz、因为 Tivaware 2.1.4.178、 最好再次检查它是否产生60MHz SYSCLK。

    [引用 user="Bob Crosby">您使用该函数时出错。 请参阅我之前的帖子以及对您的代码的建议更正。

    回调 SysCtlVCOGet()是一个指针 ,因此 如果  NVIC 中断函数,则结果可能不会产生正确的返回。  将会尝试一下, 但是 指向数组的指针 似乎是处理回调 的正确方法( *pui32VCOFrequency = ui32TempVCO;)。  仍然不能回答为什么通过 上面屏幕截图中指出的 Tivaware 2.1.4.178设置 SYSCLK 60MHz。

    如果 PSYSDIV 被设定为0x3 RSGCLKCTL、SYSCLK 不可能为120 60MHz。     当 ADCCLK 似乎被分频为60MHz 时、ADC 错过了周期信号的峰值采集。 至少现在、我们再次获得峰值电流检测32MHz ADCCLK。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定您的1/4刻度分辨率是什么意思。 VREFP 必须至少为2.4V。 VREFN 为 GND。  因此、"分辨率"可以小至2.4V/4096或580uV。 您使用的是 VREFA+的什么值?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定您的代码是如何设置 PLL 的、但我已经附加了一个使用 TivaWare 2.1.4.178的项目。 它将系统时钟设置为120MHz、将 VCO 输出设置为240MHz、并将 PSYSDIV = 1 (2分频)。

     /cfs-file/__key/communityserver-discussions-components-files/908/EK_2D00_PLL_2D00_Startup.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby"]我不确定1/4比例分辨率是什么意思[/引用]

    我是指图15-9如何将 4个季度中的任何一个细分为 更小的模拟 微伏采集点。 您可能 认为 模拟和数字刻度之间存在一对一的比率?

    如上面的公式所示、第一季度至少有4096个采集点、最小电荷共享检测201uV、 1/4 VREFP-VREFN/4096或825mV 1/4满量程、201uV 1/4 LSB 趋稳。  根据定义、趋稳至1/2 LSB 与 Cext 的微伏电荷共享步骤有关、其中 CADC 趋稳至1/2 LSB (402uV)或更高、1/4 LSB (201uV)。 这似乎表示最小的趋稳阶跃 201微伏、 而不是 图15-9中3V3满量程被分为四个季度的方式。  根据下面的 FIFO 输出(红框)判断、每1/4 VREFP-VREFN 似乎都突然跳跃、这是没有充分理由的。   图15-9不会在 SAR 采样信号频率中产生模数比还是1000:1比? 另一个要点是 串扰 被视为100微伏步长 、此步长在 信号的电荷共享步长 上、并且 来自相反的 通道。 即使 ADC 趋稳为825uV 1/4 LSB、这也不成问题 、因为我们预期采样 @1mA 的最小阶跃 发生在1mV 输出或10mV/A 示波器小工具中。

    信号跳转(红框) 发生 ADCCLK 32MHz 或60MHz。 ADCCLK (32MHz) PLL (480MHz)现在 在 1/4稳定采集中获得的 INA 信号更高的微伏峰   值、而不是每个被串化到 FIFO 数据中的脉冲的中心区域。 然而、单调采样是一种单向的上升、没有下降功能、即使在每个序列发生器阶跃 变化后 FIFO 被耗尽也能反映出来。  请注意、绿色框具有从具有 PWM 占空比的倍数添加的双向比率功能。 这是   如何产生样本采集缺失的线性上升(红框)。 因此、采样 周期采集点是一种 工作方式、但 不像在两个方向上都应该这样、而不 是增加 PWM 模块的同步。   

    请注意、下面的 PLL 为 480MHz、 SYSCLK 为120MHz 旧版 Tivaware。 较新版本 设置了我们的 SYSCLK 60MHz 、但 VCO 仍为480MHz/538Mhz。 在 ADC 时钟中仍然有一些问题、 分频器将 ADCCLK 推至60MHz 、从而使其以绝对没有 INA 周期信号比率的方式对整个信号进行采样。 红色框为 ADCCLK 32MHz、但非常不连贯、不能按比例调整4096/480、如下所示。 其他绿色框具有 PWM 模块、有助于 形成 示波器小部件和数字读数的正确读数。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby"] VCO 输出达到240MHz 且 PSYSDIV = 1 (2分频)。[/quot]

    当 使用 MCU 上的新版本 Tivaware 与 PSYSDIV 0x3N+1一起生产480MHz 时、为什么新版本设置 VCO=240MHz?  假设 VCO 为240MHz 、则 ADCCLK 为60MHz、因为 VCO 真正为480MHz。 VCO 正 被 CCS 调试中的 PSYSDIV (0x1N+1)强制为240Mhz、 但实际上 VCO 在我们所有 PCB 上运行480MHz 的 PSYSDIV N3+1、但在用较新的 SysClkFreqSet ()修补旧版本的 Tivaware 后、如何仅拆分 SYSCLK。  仅仅为了 更新 驱动程序库而将项目中的所有内容都吹走并不容易、并且有数百个符号缺失错误、让您的一天都过得非常愉快。  驱动程序库对 导入到 CCS 工程树中并通过库包含路径引用  的现有工程的引用不起作用、因为原始工程根在包含较新库之前首先搜索旧的驱动程序库。 这是 一个问题、必须通过添加更多缺少驱动程序路径和符号的问题来销毁感知的工作代码、然后新的驱动程序库不需要在根中找到。   

    也就是说,我只将新版本 SysClkFreqSet()修补到旧版本库中(清理/编译),并使用 新名称调用函数。 显然、如果最新 的 Tivaware 代码设置 PSYSDIV 0x1N+1或(2)、则还有更多事情需要处理。 我   在 劳动节之前没有制作 Tivaware 补丁、因此过去的 VCO 始终 相对于480MHz PLL/VCO 而非240Mhz。  新版本的 Tivaware 可能有 一个宏或寄存器调用行为错误!

    也许生产出的大量 MUC 存在问题、导致 PSYSDIV 无法设置正确的 VCO?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BTW INA 输出模拟信号在某种程度上从 FIFO 读取数据或低通滤波器反相。 与所有示波器捕获的原始 INA 输出模拟信号相比、它是颠倒的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="BP101]I 是指图15-9如何将 4个季度中的任何一个细分为 更小的模拟 微伏采集点。 [/报价]

    我认为您对图15-9的解释有误。

    此图显示1/4 (VREFP-VREFN)转换结果为0x400或1024。 在1/2时、结果为0x800或2048。 在满量程时、转换结果为0xFFF 或4095。 当 VREFP = 3.3V 且 VREFN = GND、3.3V/4096 = 0.000806V、0.806mV 或806uV 时。 这是一个 LSB (最低有效位)的大小。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    [引用 user="Bob Crosby"]不确定代码是如何设置 PLL 的,但我已经附加了一个使用 Tivaware 2.1.4.178的项目。 它将系统时钟设置为120MHz、将 VCO 输出设置为240MHz、并将 PSYSDIV = 1 (2分频)。[/引用]

    然而、您的屏幕截图显示 PLL 480MHz 和 PSYSDIV=1N+1 (div/2)应使 SYSCLK=240MHz、 而不 是报告120MHz。  这似乎是较旧的 Tivaware 和较新 版本之间交叉线缆的地方。 较早版本的 SysClkFreqSet() 480MHz PLL (PSYSDIV (2N+1) 除以4) 也报告 SYSCLK 为120MHz。 如果新版本具有相同 的480MHz PLL、并在变量中传递相同的 PLL、情况如何? 基本上、什么 Tivaware 2.1.4.178表示 PSYSDIV 寄存器无法将480MHz PLL 除以4? 然而,SysCtlVCOGet 在两个版本的 SysClkFreqSet()中报告480MHz,而将2.1.4.178修补到2.1.0.12573中, 在应用程序中调用唯一名称。 唯一的区别是 SYSCLK 为60MHz (2.1.0.1273)、这表明 它实际上在不使用 PSYSDIV 寄存器控制的情况下对 SYSCLK 进行预分频。  否则、SysCtlVCOGet()会返回两个版本的相同480MHz VCO 速度、并且无法完全信任。 这 表明 TI 编程人员没有对旧版本进行回归测试 、并希望社区在没有以 Wiki 报告格式提供完整说明的情况下有所改变!

      您的上面 SYSCLK 速度值似乎 在  屏幕快照中被强制为120MHz (2.1.4.178)。  最终结果是 ADC0 FIFO 以 更高的速度(240MHz?)运行  为了与速度快得多的 ADCCLK (60MHz)保持同步、 而不是像数据表所说的那样与32MHz 保持同步、它必须 是 2MSPS。  根据主时钟树图5.5、我们如何购买 PLL 在不使用 PSYDIV 的情况下分频240MHz 这一事实、在这个细节上是一致的? 如果主时钟树绘制不正确、更新后的图5-5可能需要社区?

    这也许是模拟信号中的采集点随着 更快的 FIFO 变化而变化的原因 、它与转换器保持更多同步、但仍需对此进行测试。  问题是我的 FIFO 的 SYSCLK 速度仍然是120MHz。  我 在较旧的 Tivaware 中的2.1.4.178 SysClkFreqSet()补丁再次 报告 SYSCLK=60MHz、PSYSDIV 3N+1 (div 4)已验证 CCS 调试。 根据时钟树图 5-5 (2.1.4.178) 以某种方式对 SYSCLK 进行预分频、 也许 图 5-5绘制错误?  在 AD 转换器的 ADCCLK 分频较慢之前、ADC 块可能会接收到 VCO (480MHz)进入 FIFO? 这在 PSYSDIV、VCO 和图5-5中更可信、该帖子旨在澄清确切的详细信息、而不是简单的支持或 WA、而不是非常清楚与图5-5相关的意图。 一种观点是 R2器件 不是 施加在 PSYSDIV 控制寄存 器上的勘误表、在 R1生产测试期间未发现该勘误表、在2.1.4.178度下、该器件已累得强制执行 WA。  

    示波器小工具(较旧 的 SysClkFreqSet())显示模拟信号的采样峰值 过高( ADCCLK/8=60MHz、480MHz PLL)。  SYSCLK 报告 120MHz、 PSYSDIV=3N+1分频 PLL/4。  另外请注意、示波器小工具信号 未 反相、但永远无法正确稳定至1/4 LSB 、甚至达到1/2 LSB 峰值、并导致 过流跳闸故障、 从而关闭系统。  INA 周期性输入源 3 AINx 通道也许可以验证 ADC0 FIFO 时钟是否保持数据表 INL +/-3LSB 规格。   我们永远无法达到真正的电流测量值、而 ADCCLK/8 (60MHz)在 Widget 实际平均电流 7.9-8.4安培已完全丢失。 数据表怎么可能如此错误 、生产器件测试未达到 2MSPS 需要240MHz PLL?  小工具可能会告诉您谁在第一个问题上的真实情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby">满量程时、转换结果为0xFFF 或4095。 当 VREFP = 3.3V 且 VREFN = GND、3.3V/4096 = 0.000806V、0.806mV 或806uV 时。 这是一个 LSB (最低有效位)的大小。[/QUERP]

    我不认为是这样的、原因如下。

    相对于 满量程-VREFP (3V3)或 4096 (数字) 毫伏 每季度出现1/2甚至1/4 LSB 的趋稳。

    因此、我不同意806uV 是最小的采集、因为您 没有将每个1/4除以满量程数字值 -3V3 VREP。  公式(每个 ADC 代码 mV) 表示 、对于 图左侧显示的 ADC 代码、我们将每个1/4 ADC 代码除以4096、 而不仅仅是被除以的满量程  4096。 如果 ADC 代码不是图左侧的值、您认为它是什么? 如果我们忽略  所示的公式、也会清楚地显示(每个 ADC 代码)图形左侧。

    如果它们不打算 用满量程 VREFP (4096)除以确定每个1/4的最小 LSB、则图形不应被除以等式中引用的1/4 ADC 代码。  否则 、表图 ADC 代码 (左侧)没有除+VREFP (3V3) 之外的基准点、这不是任何1/4 ADC 代码中 CADC 的1/2 LSB 稳定定义。

    我的每个1/4 LSB 稳定采集公式: 0.25*3.3=0.825/4096=0.000201V 或201uV。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BP101、
    我同意1/4 LSB 为201uV、但 ADC 分辨率为1LSB (806uV)、而不是1/4 LSB。 建议使用一个外部电容器、此电容器在采样窗口期间提供一个1/4 LSB 以内的稳定时间、这并不意味着 ADC 上的分辨率为1/4 LSB。 外部电压与采样电容器电压的任何不匹配都会增加总误差。

    假设是一个具有3.3V 基准电压的完美12位 SAR ADC。 提供807uV 输入。 理想的 ADC 会将输出解析为0x001、因为807uV 大于806uV 但小于1612uV。 为了实现理想的12位3.3V ADC、806uV 和1611uV 之间的所有输入均转换为0x001。 该 ADC 无法区分或唯一表示这两个电压。 没有隐藏缩放。

    在60MHz ADC 时钟下获得的任何结果无效、应忽略。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="BP101"]但是您的屏幕截图显示 PLL 480MHz 和 PSYSDIV=1N+1 (div/2)应使 SYSCLK=240MHz, 而不 是报告120MHz

    不、我的屏幕显示的是、如果我使用 TivaWare v2.1.4.178调用函数 SysCtlClockFreqSet 来请求480MHz VCO、它会将 VCO 设置为240MHz。

    G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000);
    

    该函数仍会设置 PSYSDIV、以便系统时钟根据 I 请求为120MHz。 唯一的问题是如何设置 ADC 时钟。 之所以这样做是因为勘误表 sysctl#22。 有时(很少) PSYSDIV 未正确加载到实际分频电路中。 因此、您不需要获得除以2、而是得到除以2。 当 VCO 处于480MHz 时、它会尝试以240MHz 运行器件、并且器件挂起。 为了避免这个问题、TivaWare 版本2.1.3和更高版本修改 了 SysCtlClockFreqSet 函数以不使用480MHz。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby"]我同意1/4 LSB 为201uV、  但 ADC 分辨率为1 LSB (806uV)、而不是1/4 LSB。[/引用]

    100%同意(甚至"喜欢")、作为(另一个)"外人"-我"在这场战斗中没有狗!"   因此、"零"预偏置。

    在 ADC (以前)出现之前(我之前的公司经常从'Burr-Brown'购买(高级) ADC (之前由该供应商收购)、我认为(有点)"通知并建议"我与供应商的 Bob 达成的协议-实际上  没有/零1/4 LSB 分辨率!

    这证明海报(唯一)部分存在明显的误解(无论抗议/重复的频率如何)!    (过去是否注意到"恢复"的倾向("不正当"("希望得到"结论)?)

    这种论点(无1/4 LSB 分辨率能力)可以 通过简单分析业务端技术端得到加强。  (Bob 的一面)    

    是否有任何 MCU 供应商-在提供'14位 ADC' 时(结果应该'1/4 LSB 证明有效) ...  保留  该(竞争巨大)信息?   或者-推广"主要优势"-仅  在某些(实际上未知)甘蔗应用手册中使用?   当然不是!   (以及 如何错过?)

    与"让现实世界"变成"错误的结论"(无论"多么希望")相比、"接受现实"更是出色...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby"]。 当 VCO 处于480MHz 时、它会尝试以240MHz 运行器件、并且器件挂起。 为了避免这个问题、TivaWare 版本2.1.3和更高版本修改 了 SysCtlClockFreqSet 函数以不使用480MHz。[/quot]

    除了   使 ADC 时钟分频成为论坛讨论中更令人困惑的点之外、这显然会混淆对不加载 driverlib 2.1.3或更高版本的任何人的讨论。 因此、ADC 的工作方式非常奇怪、480MHz PLL ADCCLK div 8 似乎产生60MHz 或4MSPS、从而使 FIFO 范围数据 看起来 未反相。 除了稳定采集被留在路边之外、它似乎不会使 MCU 发热或引起任何其他问题。

    BTW:TM4C1294 ADC 是一款精密 SAR、我希望分辨率远高于800uV、因为 这种分辨 率比接近1mV 的分辨率要好。  在 1/4 LSB 稳定收购中、201uV 分辨率肯定值得 SAR 作为(精度)。  我认为、接近1mV 的分辨率是接近精密 SAR 的地方、即使混合中存在+/-30 LSB 误差、也是不恰当的。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby"]我同意1/4 LSB 为201uV、但 ADC 分辨率为1 LSB (806uV)、而不是1/4 LSB。[/引用]

    我认为这不是应用文本所建议的1/4 LSB、但1 LSB 分辨率为201uV、是采集图15-9的最小值、或者它充其量不是一个精密 SAR、而是一个非常不精确的 SAR。 因此、在当今世界、接近1mV 的分辨率是很差的、而我的便宜 6000计数 DMM 具有更好 的 UV 分辨率、 因此很难相信806uV 和+/- 30 LSB 看起来会比 糟糕的分辨率更糟糕。

    下面的文本是  具有20pF CADC 的12位16通道 SAR 的通用文本、  它几乎涵盖 了更高级的20通道 SAR 功能、因为 它早于   TM4C129x MCU 类别中的较新器件。 您是否同意 精度不应 低于 以前由  M4 级 SAR 器件取代的 Stellaris M3级 SAR、而后者的进步更加有利、那么在更新过程中应提高精度?    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    INA240输出极速、如图9所示、Cext (1n、10n、15n)、似乎超过1/2 LSB 误差。 使 Cext (22n)加倍扩展并在80us 周期内降低峰值1/2 LSB 误差、希望将误差保持在1/4 LSB。 Cext 共享周围的通道采样时序尝试在周期组峰值时间周围保持窗口紧密、并且不会以较低的信号噪声使端(VREFN、VREFP)饱和。

    这个术语(LSB)似乎将1/4 LSB 向下推至0V 为位、而不是一个位。 不过、在 Cext 值的 PSpice 仿真中、不是大约200uV 开始的1/4 LSB (图10)。 我想知道为什么 TM4C1294没有20uV 的模拟分辨率、因为80uV 是几年前的技术、包括几种不同的 SAR。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="BP101"]我想知道 TM4C1294为什么不具有20uV 模拟分辨率

    为了解决这个问题、我们必须"突破"我们的6级"路径手册"。

    假设与  ADC 的"满量程电压"相同的3V3 (或3300mV 或3,300,000µV μ V)。

    然后...  3,300,000µV / 20µV = 165、000。   此值(165K)表示在此类 ADC 上强制执行的"解决方案"。

    我们"知道"、12位产生4、096个唯一 ADC 计数或值- 16位= 65、536 (唯一计数或值)、因此" 需要一个18位 ADC -以满足 您(最新)的需求!

    清楚地了解任何/所有供应商途径-随着他们的涌入-以满足您的最新需求...    您 的"向上"( 在"混合信号"器件对 模拟功能施加的限制上)可能会(减少)您的"好奇心"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="CB1_MOBIT"]我们"知道" 12位产生4、096个唯一的 ADC 计数或值- 16位= 65、536 (唯一计数或值)、因此" 需要一个18位 ADC -以满足 您(最新)的需求

    我指的是方程的模拟侧、而不是 数字校准 SW 等效项。 因此、3V3满量程中的20uV 分辨率将是 稳定采集、这与3V3满量程中的数字结果无关

    在  较旧的 M3 SAR 中、趋稳率通常为1000:1 (模数转换)、这是5k:1将是   设计上在 SAR 精度方面的下一个 M4发展的原因。  就像 WISE LSB 0V (0x000)和 计算1LSB (0x001) 只能是 接近1mV (805uV)的等效模拟测量一样、在稳定模拟采集的定义中似乎是一个大错误。

    实际上、从模拟采集角度而言、只要天花板以3V3满量程表示、0x001可以是任何您希望它以数字方式表示的内容。  当 比率为1000或更多时、尝试将12位(0-4096)平方到3V3以实现1:1的 AD 比率 似乎是错误的。 实际上、最小的趋稳采集点变为 floor 0x000、即  所有采集的上限0xFFF。  我们可以使本底电压为1uV、这并不意味着 SAR 可以对模拟电压进行采样、但它可以确保采样电压低于805uV。 我甚至想、201uV 与 0LSB 到1LSB 的实际情况有一定的不同。 这确实是所有 电气规格或转换主题中遗漏的拼图块、并替换为 SNR 和 20个内部参考所需的过采样、以实现+/-3LSB 增益误差。  然而、M3 SAR 数据表显示了具有内部基准的+/-3LSB 以及更新的 M4 +/-30LSB 任何单个采样都是 TI 无法相信的。

    同样、便宜的 DMM 可以测量750m Ω 分流电阻、电流低至1uA、但 TM4C SAR 可扼流 圈以跟随 INA 信号。 然而 、DMM 在没有   PWM 模块的情况 下测量相同的电流点、而不会出现任何问题。 仅此 而已表明、TM4C1294 SAR 存在的问题比本论坛中承认的更多、实验室分析将揭示所有问题的原因和方法。  

    问:ET +/-30 LSB =总未调整误差是任何一个代码相对于理想 ADC 曲线的最大误差。 它包括任何给定 ADC 代码的所有其他误差(偏移误差、增益误差和 INL)。

       当 M3针对  同一内部基准显示+/-3LSB 时、M4为什么不调整 ET?  这 是否表现为 向后步进或 M3 SAR 结果是否呈流式?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我看到 TM4C SAR 发生了错误、  在硬件取平均值后、数字转换器无法从放入 FIFO 的转换结果中减去 VREFP (3V3)。

    也许 是为什么上面的示波器小部件(红框)剂量相对于 INA240 上升周期信号的采样采集不能平稳流动的原因。 PWM 占空比可修复转换器比率指标误差 2MSPS (TC = 4 ADCCLKS @32MHz)而不是16、这 可能会进一步加剧该问题。 我还记得、即使 M3未能以适当的比率指标正确地将 INA282输出信号数字化、 在多个芯片设计中也存在相同的问题。 M3将采样放大器偏置 时间300万乘以得出比率指标结果、SAR 本应从稳定到1/4 LSB -3V3 VREFP。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="BP101]I 是指方程的模拟端、而不 是数字校准 SW 等效项。 因此、3V3满量程中的20uV 分辨率将是 稳定采集、这与3V3满量程中的数字结果无关[/引述]

    让我们"接受"您的观点(如上所述)、稍等片刻。    那么、20µV 分辨率的(可能的)值是多少-因为 它不能提供给 ADC 用户?

    再一次-回归现实-您对(要么) 20或200µV 分辨率的信念-来自"低成本"混合信号器件-再次 证明(非常非常)与现实相去甚远!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我只想为那些一直关注这条线的勇敢的人澄清几点。

    当时钟频率为32MHz 时、TM4C129 ADC 的总误差为+/- 30 LSB。 (2MSPS)。 时钟频率为16MHz 时、总误差为+/-4LSB。 在16MHz ADC 时钟下进行单次转换比在32MHz ADC 时钟下进行2次采样硬件平均值转换更好。 它们所需的时间相同、可产生1Msps 的净采样率、但较慢的 ADC 时钟速率将提供更准确的结果。

    BP101、

    正如我之前尝试解释的那样、建议您使用一个外部电容器、这样采样电容器能够在采样时间内稳定至1/4 LSB 并不意味着 ADC 的精度为1/4 LSB。 如果你不相信我、让我们同意不同意。 如果 TM4C1294器件的805uV 精度不足以满足您的应用需求、我建议您去别处看看。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby">TM4C129 ADC 的总误差在32MHz 时为+/- 30 LSB。 (2MSPS)。 时钟频率为16MHz 时、总误差为+/-4LSB。 在16MHz ADC 时钟下进行单次转换比在32MHz ADC 时钟下进行2次采样硬件平均值转换更好。 它们所需的时间相同、可产生1Msps 的净采样率、但较慢的 ADC 时钟速率将提供更准确的结果。

    5月(非常)大声的"布拉沃"-在这个死/死线螺纹上回声。   (至少希望这样)

    请注意、供应商的 Bob 提供了"清晰、清晰的技术描述"-没有(任何) "意见" 、并提出了"高效"(以及特定于海报)的建议-与"已知事实"极其相关!   

    更好的是、"使用16MHz ADC 时钟"为众多应用提供了"大幅提高 ADC 精度"!   (同样、正如 Bob 所指出的、对于那些(非常)少数人来说、还剩下...)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    [引用 user="Bob Crosby"]如果 TM4C1294器件的805uV 精度不足以满足您的应用需求,我建议您查看其他位置

    我不相信您所说的内容、而是与在 M3 和 M4 SAR ADC 的多个帖子中报告的比率指标故障问题无关。  对于10mV/Amp 标度、即使是805uV 精度也不应成为问题。 然而、SAR 无法 正常运行 @10mV、更不用说 201uV、甚至805uV、两者 都是静音点。   

    当比率 SAR 无法正确解析 任何采样率(1或2MSPS)下的周期上升信号时、会出现严重错误。 由于60MHz ADCCLK 在不 落后于应用程序中断处理程序的情况下产生了非反向近(实时)采集、因此我仍然怀疑采用 FIFO 时钟。 我们可以忍受 精度误差 、但 问题 不止这些。  SAR 似乎 无法通过   处理 VREFP-VREFN 的转换器相对于 任何1/4 ADC 代码解析信号中的比率度量(周期性)模拟斜率 图 15-9.  根据    模拟烹饪手册和其他营销文档中的技术披露、INA240经设计证明可与 SAR ADC 配合使用。

    INA240模拟信号 之后应轻松跟随 M4 SAR 、并在 两个方向上均具有比率度量单调斜率。 然而、示波器小部件(红框)在任一方向上都无法正确遵循 (10mV/Amp) INA240 输入到 单端 AINx 通道的开环增益。   您在示波器小工具中看到的跳转(红框)似乎是转换器/平均值计算未 实时更新 FIFO 、并且落后于采样的中断处理。  比率度量斜率 产生1 或2MSPS 失败 、 无论硬件是否取平均值、逻辑扣除 都不起作用。  

    ADC0序列发生 器1 的优先级 为2、 并且比 PWM0 (INT26/27)的优先级(0x20)更高的 NVIC 中断(INT31)和更低的优先级(0x40)。       中断处理期间、FIFO 和循环读取的 NVIC 优先级是否可能与 INA 缺少 斜率数据有关?   如果您真正认为 M4 SAR 应   通过 INA240输出 信号产生比率度量斜率@10mV/Amp 采集点、为什么它不能这样做?  

    /*配置 GPIOADCCTL REG23 0x530:
    *通过 GPTM OneShot 1.5us 消隐计时器触发 ADC0 SS1样本
    *在 PWM0输出控制块的每个换向处激发
    *为 ADC0 SS1分配 ADCEMUX 第二高优先级。 *
    MAP_ADCSequenceConfigure (ADC0_BASE、1、ADC_TRIGGER_TIMER、1);
    
    /*硬件过采样在2MSPS 时启用。
    * NSH16/1.143Msps:2xOVs=571.5KSps
    * NSH8/1.6Msps:2x OVs=800Ksps
    * 0x0=NoAVG、0x1=2、0x2=4、0x3=8、0x4=16、 0x5=32、0x6=64 */
    HWREG (ADC0_BASE + ADC_O_SAC)= 0x1;
    
    /*增加此采样序列发生器的步进采样保持时间。
    *@32MHz:nsh (4)=Tshn0x0编码、Rs250欧姆2.0Msps
    *@32MHz:nsh (8)=Tshn0x2编码、Rs500欧姆1.6Msps
    *@32MHz:nsh (16)= Tshn0x4编码、Rs3.5k 欧姆1.143Msps
    *@32MHz:nsh (32)=Tshn0x6编码、Rs9.5k 最大值、727Ksps *
    HWREG (ADC0_BASE + ADC_O_SSTSH1)= 0x2222;
    
    MAP_ADCSequenceStepConfigure (ADC0_BASE、1、0、PIN_IPHASEA);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、1、1、PIN_IPHASEB);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、1、2、PIN_IPHASEC);
    MAP_ADCSequenceStepConfigure (ADC0_BASE、1、3、ADC_CTL_END | ADC_CTL_IE);
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BP101、
    我担心,关于精确度的所有讨论都是一条兔道,对我们两个人都没有好处。 关于 FIFO 时钟方案的讨论同样没有用处。 请通过一些实验帮助我隔离您的问题。

    1.是的、TM4C1294 ADC 为1:1、因为当使用3.3V 基准时、中的3.3V 将得到0xFFF 结果。 中的1.65V 给出了0x800。 您是否怀疑您获得的值是"缩放"? 如果是、请向 ADC 输入直流电压并检查结果。 如果它们为1:1、我们可以转到下一步。 如果不是,我们必须解决这个问题,然后再继续。

    2.您是否获得了预期的采样率。 首先、通过分析您上面发布的代码、我计算出您的采样率为:每秒200k 次采样、或每5uS 对每个相位进行采样。 这假定您只使用序列1。 该计算基于32MHz ADC 时钟除以每采样20个时钟(8个采样保持+ 12个转换)得出1.6m 采样/s 使用2个硬件取平均值将有效采样率减半、采样率为800K 次/秒 您正在对4个通道进行采样、这意味着每个通道以200K 采样/秒或每5uS 采样一次。 正如我之前提到的、我建议您使用16MHz ADC 时钟、而不是硬件平均值的2倍。 此外、1NA240的输出阻抗足够低、您不需要额外的采样时间。 进行这些更改会将采样率提高到250K 个样本/秒、并提高精度。 为了验证采样率是否正确、我建议您使用函数发生器并在20kHz 时对其中一个输入施加3V 正弦波(0至3V)。 然后、您应该会看到正弦波形每10个样本重复一次。 如果没有,我们需要解决这个问题,然后再继续。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby">时钟频率为16MHz 时、总误差为+/-4LSB。 在16MHz ADC 时钟下进行单次转换比在32MHz ADC 时钟下进行2次采样硬件平均值转换更好。 它们所需的时间相同、可产生1Msps 的净采样率、但较慢的 ADC 时钟速率将提供更准确的结果。

    不同之处在 于2MSPS 是所采样模拟信号采集点的两倍、通过硬件取平均值进一步提高精度、1MSPS 不能与该精度增益竞争。 这就是2MSPS 背后的整个概念 、可提高模拟采样时间范围的粒度。   奇怪的是、两个采样率都无法按  预期读取 INA240 (10mV/Amp)开环增益。

    奇怪的是、EK-TM4C1294XL ADC0 SS1 正在扫描 INA240 ANIx (开路)通道、以获取应用运行时或 空闲时间期间的当前样本。 DMM 电压 从1.2V 缓慢下降至0.5mV、 然后 再次循环。  由于 序列发生器步骤似乎在运行期间在每个打开的 ANIx 通道上进入采集、因此引脚的浮动 接近108mV。   当 ANIx 开路输入被设计成限制通道串扰时、任何超过几毫伏的东西都存在、我认为这是非常奇怪的。

    INA240输出 在  空闲时间内通过2k 系列 R 将每个 AINx 下拉至1.2mV-1.8mV。  预计每个 ANIx 引脚在  运行时间内也会尝试悬空至接近108mV。 这 似乎解释 了增加 Cext 值后开环增益远高于预期的原因。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为了结束这一主题、我要感谢 Bob 对没有净增益的生产系统应用了非常明确的说明。 因此、1MSPS 与2MSPS、1/4 LSB 或禁用硬件平均的问题不会改善样本的粒度、也不会在 Scope Widget 电流迹线中产生单调比率度量斜率。

    事实是、当 FIFO 阵列变量需要通过软件强制为零时、FIFO 数据 LSB 不会减少 Widget 信号中(红框)的阶跃。 示波器小部件信号的阶梯式步进是主要线索、AD 转换器 FIFO 数据会从序列发生器的配置步骤中取消对闭合电流环路的控制。