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.

[参考译文] SW-EK-TM4C1294XL:ADC 块时钟

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/733203/sw-ek-tm4c1294xl-adc-block-clock

器件型号:SW-EK-TM4C1294XL
主题中讨论的其他器件:REF2033TM4C1294KCPDTTM4C1294NCPDT

ADC1温度传感器读取和其他无法解释 的序列发生器行为的奇怪问题 可能 与时钟相关。 过去的数据表 15.3.2.7 状态 ADC0 通过 ADCCC REG66设置 ADC 模块的时钟。 在    通过 ADCClockConfigSet()配置 ADC 时钟时,大多数人都不会考虑检查 REG 66该语句的计数器。 ADC 模块包含 ADC0和 ADC1模块或外设。  如果    未配置 ADC1时钟分频值1、则默认 ADC1时钟分频值1在 PLL 速度下产生 ADCCLK、即 REG 66基址0x4003.9000实际有效。

当     只调用 ADCClockConfigSet() 来为 0x4003.8000 ADC 模块配置 ADCCC REG66时,显示 ADC1基址的寄存器66会使15.3.2.7语句变得奇数。  似乎存在一个拼写错误 、即 ADC0设置模块 时钟、大多数人 认为 这是指 两个 ADC 块。  最近发现 的 ADC1基地址 也存在 REG66并且 ADCClockConfigSet()只使用 ADC0基地址调用一次。

15.3.2.7模块时钟:系统时钟频率必须与 ADC 时钟相同或更高。 所有 ADC 模块共用同一个时钟源、以便在转换单元之间同步数据采样、其选择和编程由 ADC0的 ADCCC 寄存器提供。 ADC 模块不能以不同的转换速率运行。

 ADC0和 ADC1模块是否共享 ADC 模块相同的时钟源 、或者是否为 REG-66中所示的实际独立配置的时钟源? 也许在  外设块的图中说明时钟源的另一个好理由!

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

    您好 BP101:

    15.3.2.7语句正确、其中 ADC0和 ADC1将以相同的速率共享相同的时钟源。 下面是 ADC0和 ADC1的另一个时钟树视图。 您可以看到时钟源是相同的、N 分频器将同时应用 ADC0/ADC1。

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

    时钟树右侧仅显示一个除数块。 寄存器66有2个基址、一个用于 ADC0、一个用于 ADC1、其中 PLL 分频值必须针对每个 ADC 块而不是时钟树所示的模块进行配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    时钟树右侧仅显示一个除数块。 寄存器66有2个基址、一个用于 ADC0、一个用于 ADC1、其中 PLL 分频值必须针对每个 ADC 块而不是时钟树所示的模块进行配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    BP101、

    查尔斯是对的。 数据表中的时钟树是正确的。 它甚至在 ADCClockConfigSet()函数的文档中解释说 ADC 时钟配置只针对 ADC0_BASE 完成。 ADC1的 ADCCC 寄存器不执行任何操作。

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

    尊敬的 Bob:

    然而 、寄存器66与  写入 的共用 ADC 块 时钟的数字和文本直接相矛盾、请注意 "并非所有器件上都有可用的值"语句。  最近发现的 ADC1 ADCPP 寄存 器位字段(9:4通道) RO 表示24个通道可用。 这也是 ADC1未正确配置的另一个令人震惊的赝像、因为它不是一个记录在案的勘误表。

    不喜欢 Fact 寄存器66基址与主时钟树图和后续文本相矛盾。   我不想 相信 文本源 、因为外设基 址偏移量控制器件。  似乎 编写了数据表分析文本、但未考虑为 ADC1时钟源指定的基址。  也许技术写作人员通过 直接使用主时钟树获取有关 ADC1的信息而形成了支持?

    为什么有人认为寄存器偏移地址 不正确甚至不需要?

      

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

    然而、是什么使文本正确且 REG 66 ADC1基址不正确? 如果时钟确实是共享的、那么使用 ADCCC 基址 RW (0x4003.9000)是否不正确?

    也许有人忘记在 ADCClockConfigSet()中添加配置 ADC1 ADCCC RW 位 CLKDIV 9:4、CS 3:0的同时添加代码? 作为调用点的 ADC 模块通过/要求 ADC 模块基址、但没有断言以拒绝 ADC1基址。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    器件中有两个 ADC 模块。 从程序员的模型角度来看、除了 ADCCC 之外、这两个模块是相同的。 数据表中可能会注明 ADCCC 寄存器描述仅适用于 ADC0、并删除了为 ADC1提及的 ADCCC 偏移地址。 同样、如前所述、ADC 时钟配置仅针对 ADC0_BASE 完成。 ADC1的 ADCCC 寄存器不执行任何操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    但是、如果我们检查 ADC1;ADCCC、 CLKDIV 位 为0x1、 则仅当 SW 不首先配置 ADC1时钟源时。 单凭这一点似乎与 ADC0/1共用同一时钟源的任何和所有先前的信念相矛盾。 自行检查、如果先前尝试在 ADC1序列发生 器上使用 PWM0 GEN 触发器、则会导致 ADC1结果快速变化。 如果我们允许 ADC0时钟源运行480MHz (CLKDIV=1)、我们将获得 快速采样、就像未配置 ADC1时钟源(CLKDIV=1)而 ADC1 CLKDIV=15时一样。  通常 同意这两种情况  、但 ADC1 随机返回 非常高的值 样本  MCU AGND 引脚连接到 PCB AGND 平面、而 DGND 布线运行、但从 PWM0 Gen1触发的 ADC0样本 没有问题。   

     自行测试问题:

    ui32Config0 = ADCClockConfigGet (ADC0_base、&ui32ClockDiv0);
    ui32Config1 = ADCClockConfigGet (ADC1_base、&ui32ClockDiv1);
    UARTprintf (">ADC0-VCO/DIV->:%i\r\n"、 ui32ClockDiv0);
    UARTprintf (">ADC1-VCO/DIV->:%i\r\n"、ui32ClockDiv1); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不确定 AGND/DGND 是否有问题、原因是 ADC1 SS3随机产生非常高的值、导致 MCU 温度传感器故障、而 ADC0 SS3不是。 总之、值得一提的是连接到 DGND 的 AGDN 引脚在两种接地模式下均可从内部 VREF 生成更清晰的样本、而在任何一种接地模式下均可从外部 REF2033生成更清晰的样本。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将重新绘制数据表中时钟树形图中已显示的内容。 就是这样。 ADC0 ADCCC 寄存器中的 CLKDIV 和 CS 字段用于将 ADCCLK 配置为 ADC0 AD ADC1。 ADC1控制器中的 CLKDIV 和 CS、即使 ADCCLK 与 ADC1转换器没有关系。 如果您不想相信它、则由您决定。  

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

    我理解您的说法/绘图/张贴内容、但证据证明、否则有两个单独的时钟源寄存器。

    上面发布的测试证明了 ADC1、CCC CLKDIV 位的配置、如果寄存器偏移 ADC1不存在、该怎么办? 如果我们读取偏移 ADC1 CCC CLKDIV 位、它将返回精确的配置值。 分析似乎没有说明 TMC1294中弃用了 ADC1 CCC 偏移、但数据表再次引导我们检查 CCS 调试寄存器视图中的 GEL 文件设置。 奇怪的是、TM4C1294KCPDT GEL 存储器映射包含相同的寄存器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CCS TM4C1294NCPDT GEL 文件似乎也同意数据表 REG 视图偏移 ADCCC。 如果 ADCCC 寄存器毫无意义、为什么 sanity sakes 会包含在 CCS 调试寄存器视图和 GEL 存储器映射中?

    没有合理的解释、为什么 ADC1 SS3 MCU 温度传感器值会随机跃进数十亿个计数。 计数跳转太糟糕、必须切换到 ADC0 SS3以了解 MCU 温度。 如果配置 ADC0 CLKDIV=1、就会注意到数十亿计数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您确定 ADC1 ADCCC 寄存器不执行任何操作吗? 是否已通过 ADC1上的 MCU 温度监控器等测试程序确认了这一点?