Other Parts Discussed in Thread: LP-MSPM0L2228
器件型号: MSPM0L1228
主题中讨论的其他器件: LP-MSPM0L2228
您好、
d/s 提到使用内部 Vref 时的最大 ADC 采样速度为 200ksps。 客户需要以 288ksps 的采样率进行采样。 此采样速度的误差是多少?
我知道有限因素是 1uA 的 Ivref。 更大的电容可以提高最大采样速度吗?
我认为最坏的情况是 Vref 电容器完全没有电容。
此致、Holger
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.
Other Parts Discussed in Thread: LP-MSPM0L2228
器件型号: MSPM0L1228
主题中讨论的其他器件: LP-MSPM0L2228
您好、
d/s 提到使用内部 Vref 时的最大 ADC 采样速度为 200ksps。 客户需要以 288ksps 的采样率进行采样。 此采样速度的误差是多少?
我知道有限因素是 1uA 的 Ivref。 更大的电容可以提高最大采样速度吗?
我认为最坏的情况是 Vref 电容器完全没有电容。
此致、Holger
您好、Holger、
根据讨论、无法以特定模式计算误差。 原因是、如果采样率超过限制值、可能会发生丢失代码的情况。 如果在 高地址出现代码丢失、则错误会很大。
例如:
预期 ADC 结果:1101.0000.0001b ->当 ADC 采样率太快时、缺少代码的实际 ADC 结果:1100.0000.0001b
现在、我从内部团队那里收到一些评论、认为设计规格可能支持更高的速率、但数据表无法保证这一点。 您能否帮助确认 ADC 通道上的客户设置:
ADC 时钟源和时钟分频器
采样时间
分辨率(等于转换时间)
如果可以共享所有 ADC 初始化代码或设置、效果会更好。
B.R.
Sal
尊敬的 Sal:
抱歉、这已经是针对 200ksps 的修改。 对于 288ksps、它们使用:
ADC 时钟源: ULPCLK、分频器:1.
硬件均值计算:8 倍
SCOMP0: 75 个时钟周期
分辨率: 12 位
由于通道数量很多、我们在半个 (9) 后将配置更改为 ULLMEM.MEMCTL、并调整 DMA 发送。 它会暂时禁用 ADC、但会丢失一些时间。
遗憾的是、只有 MEMRES0 到 MEMRES11、而不是 MEMRES23、如参考手册中 CTL2 寄存器的寄存器说明所述。 这里、MEMRESx 寄存器的数量在文档中有几次变化。
RGS、Holger
尊敬的 Sal:
这很有趣。然而,他们的测量结果表明,CONVCLK 显然在 32MHz 上运行。 CLKFREQ.FRANGE 当然设置为 5(>24 设置为 32MHz / 8 分频)、VRSEL 设置为 2h(内部基准)。 原因可能是什么?
但是、在当前设置下、效果很好。 实际上、如果 CONVCLK 需要在 4MHz 运行、则 他们必须调整输入滤波器、或者在最坏的情况下、转到外部基准或 MSPM0G1228。
此致、Holger
您好、Holger:
请让客户进行仔细检查、我测试了与 TRM 描述相匹配的 LP-MSPM0L2228。
测试代码:
while (1) {
/* Low - High pulse represents sample+conversion time */
/* 4 channel sampling:
* Sample time = 1us
* CONV time = 14* 1/4M = 3.5us (12-bit, 4MHz with internal clock; ulpclk/8=4MHz)
* Total time per channel: 4.5us
*
* Total time for 4 channels: 4.5us*4=18us
*
* RIS assert time = 1/4M = 0.25us
* Total time: 18.25us+ minus time (CPU write register time)
* */
DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
__NOP();
DL_ADC12_startConversion(ADC12_0_INST);
while(DL_ADC12_INTERRUPT_MEM3_RESULT_LOADED !=
DL_ADC12_getRawInterruptStatus(ADC12_0_INST, DL_ADC12_INTERRUPT_MEM3_RESULT_LOADED));
DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
__NOP();
// gCheckADC = false;
// adcResult = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
DL_ADC12_clearInterruptStatus(ADC12_0_INST, DL_ADC12_INTERRUPT_MEM3_RESULT_LOADED);
DL_ADC12_enableConversions(ADC12_0_INST);
__NOP();
}
测试结果:

B.R.
Sal