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.
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中所示的实际独立配置的时钟源? 也许在 外设块的图中说明时钟源的另一个好理由!
尊敬的 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基址。
您好、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);