Thread 中讨论的其他器件:MSPM0G3507
工具/软件:
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.
工具/软件:
adc_singlechannel_LP_MSPM0G3507_freertos_ticlang为基础、遇到意外的通道干扰问题。 我希望在这里获得一些见解。 e2e.ti.com/.../7462.ti_5F00_drivers_5F00_config.h 上传了缺失的 ti_drivers_config.h
您好:
我遇到了 ti_drivers_config.c 文件中的 ADC 设置配置问题。
问题:
我已经确定问题在于 const ADCMSPM0_HWAttrs adcHWAttrs 中的配置 ti_drivers_config.c。 当前的 SDK 示例主要演示单次转换模式、但需要将 ADC 配置为序列模式运行。
具体请求:
我想向 ADC0 添加一个额外的通道 (PA14、A0_12)、并对其进行配置以实现序列模式运行。 您能帮助我了解需要修改 adcHWAttrs 结构中哪些参数才能实现这一点吗?
当前配置片段:
const ADCMSPM0_HWAttrs adcHWAttrs[CONFIG_ADC_COUNT] = {
/* CONFIG_ADC_0 */
{.adc = ADC_0_INST,
.adcInputDIO = CONFIG_GPIO_ADC_0_AIN,
.adcInputPincm = CONFIG_GPIO_ADC_0_AIN_PINCM,
.adcInputPinMux = CONFIG_GPIO_ADC_0_AIN_PINMUX,
.adcPosRefDIO = GPIO_INVALID_INDEX,
.adcNegRefDIO = GPIO_INVALID_INDEX,
.adcChannel = 7,
.refSource = ADCMSPM0_VDDA_REFERENCE,
.samplingDuration = 16,
.refVoltage = 3300000, /* uV */
.resolutionBits = ADCMSPM0_RESOLUTION_12_BIT,
.adcClkkDivider = ADCMSPM0_CLKDIV_8,
.adcClkSelect = ADCMSPM0_CLK_ULPCLK,
.adcClkFreqRange = ADCMSPM0_CLK_FREQ_RANGE_24TO32,
.conversionMode = ADCMSPM0_SINGLE_CH_SINGLE_CONV,
.conversionStartAddr = 0,
.conversionEndAddr = 0,
.repeatConversionMode = ADCMSPM0_REPEAT_MODE_ENABLED,
.samplingMode = ADCMSPM0_SAMPLING_MODE_AUTO,
.sampleTrigger = ADCMSPM0_SAMPLING_TRIG_SW,
.conversionDataFormat = ADCMSPM0_CONV_DATA_FORMAT_UNSIGNED,
.sampleTimerSrc = ADCMSPM0_SAMP_TMR_SOURCE_SCOMP0,
.conversionTrigger = ADCMSPM0_NEXT_CONV_WITH_TRIG,
.adcHWAveraging = ADCMSPM0_HW_AVG_DISABLED,
.idxMEMCTLx = 0},
/* CONFIG_ADC_1 */
}
问题:
从单次转换模式更改为序列模式需要修改哪些参数?
如何配置转换序列的起始地址和结束地址?
使用序列模式时、对于采样计时器源或触发器设置是否有任何具体注意事项?
如何在序列模式下为多个通道正确设置存储器控制寄存器 (MEMCTLx)?
非常感谢您提供指导、说明需要对 adcHWAttrs 结构进行具体修改、以便启用具有多个通道的序列模式、尤其是在向 ADC0 添加 PA14 (A0_12) 时。
感谢您的帮助。
此致、
谢谢。
添加这些新通道后、我注意到一个异常情况:从 A1_0 (PA15) 和 A1_1 (PA16) 读取 ADC 值时、它们的读数会受到 PA17 上输入电压的显著影响(来自原始示例的 ADC1)。 即使 PA17 上的微小电压变化也会导致 A1_0 和 A1_1 的测量值出现不合理的波动、而原始 ADC0 (PA22) 也不受影响。
ADC 通道之间似乎存在串扰。
您正在使用哪个软件包?
您能否确认这些信号是否是不同通道之间同一 ADC 内的串扰?
您可以参考 Driverlib 来测试以下 ADC 通道:
C:\ti\mspm0_sdk_2_06_00_05\examples\nortos\LP_MSPM0G3507\driverlib\ADC12_SEQUENCE_CONVERSION
我们首先确认 ADC 串扰问题!
感谢您的答复。
简而言之、我们的 ADC 硬件没有串扰问题。 单独测试时、通道工作正常。 我们的咨询是关于软件配置方面的具体问题。
我们正在寻求有关如何在使用 TI 驱动程序框架的同时正确实现外部 ADC 通道扩展的指导。 具体而言、我们想了解通过 TI 驱动程序接口添加其他外部 ADC 通道的正确配置参数和方法。
您能否就该方案的实施方法提供帮助? 我们感谢您的支持、帮助我们浏览驱动程序配置以获得扩展的渠道支持。
谢谢你。
我将在接下来的两个工作日检查这个问题。
另一个主题: MSPM0G1507:ADC
ADC tidrivers 不直接支持 ADC 序列模式。
您可以使用 drivelib ADC init 代码作为另一种方法。
如果要使用 ADC 序列模式、至少需要更改此模式:
1.hwAttrs->conversionMode == ADCMSPM0_MULTI_CH_SEQUENCE_CONV
但是、检查 ADCMSPM0.c 中的 ADCMSPM0_initHw 后:
如果用作 ADC 序列模式、则 需要 在 ADCMSPM0.c 中的 ADCMSPM0_initHw 中运行几个 DL_ADC12_configConversionMem 函数
您可以从以下代码获得示例。
但我发现 ADCMSPM0+中只有一个调用的 DL_ADC12_configConversionMem
因此、现在、ADC tidrivers 不支持 ADC 序列模式。
如果你想修改这个,这将需要很多工作。
以下是基于 Driverlib 的 ADC 序列模式示例:
您可以在[SYSCFG_DL_ADC12_0_init]函数中找到 ADC 序列初始化函数。
e2e.ti.com/.../0451.adc12_5F00_sequence_5F00_DMA_5F00_G3507.zip
感谢您的跟进。 我的调查结果确实与你的调查结果一致。 据我所知、这应该是一个标准用例。 您能否深入介绍一下 TI ADC 驱动程序当前不支持序列模式的原因?
关于未来的支持、这是否是 TI 计划包含在即将发布的 SDK 版本中的功能?
[引述 userid=“571933" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1566782/mspm0g1507-adc_singlechannel_lp_mspm0g3507_freertos_ticlang/6041153因此、现在、ADC tidrivers 不支持 ADC 序列模式。
如果你想修改这个,这将需要很多工作。
[/报价]虽然我可能会在我这边实施修改、但主要问题是长期可维护性、尤其是当 SDK 升级或其他团队成员正在处理同一个项目时。