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.
大家好、
我观察到、如上所述、最多可连接16个独立可配置的模拟输入通道。 但是、在 SysConfig 中、我最多只能连接4个通道。 如果我想增加要配置的通道数量、我应该怎么做。 有人能尽快帮助我吗?
您好、Santhosh:
与 MSPM0G 不同、MSPM0L 只有4个 MEMRES 寄存器。 这意味着您可以一次分配16个通道中的4个。 如果要在所有16个通道上进行测量、则需要在测量每组4个通道后重新配置通道分配和 MEMRES 寄存器。
解决这个问题的一种方法是克隆 SysConfig 创建的 ADC 设置代码并针对您需要的通道修改。 下面我复制了设置每个 MEMRES 和通道的行、以便您看到。 这不是最佳方法、而是实现这一目标的唯一方法。
DL_ADC12_configConversionMem(ADC12_0_INST, ADC12_0_ADCMEM_0, DL_ADC12_INPUT_CHAN_0, DL_ADC12_REFERENCE_VOLTAGE_VDDA, DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0, DL_ADC12_AVERAGING_MODE_DISABLED, DL_ADC12_BURN_OUT_SOURCE_DISABLED, DL_ADC12_TRIGGER_MODE_AUTO_NEXT, DL_ADC12_WINDOWS_COMP_MODE_DISABLED); DL_ADC12_configConversionMem(ADC12_0_INST, ADC12_0_ADCMEM_1, DL_ADC12_INPUT_CHAN_3, DL_ADC12_REFERENCE_VOLTAGE_VDDA, DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0, DL_ADC12_AVERAGING_MODE_DISABLED, DL_ADC12_BURN_OUT_SOURCE_DISABLED, DL_ADC12_TRIGGER_MODE_AUTO_NEXT, DL_ADC12_WINDOWS_COMP_MODE_DISABLED); DL_ADC12_configConversionMem(ADC12_0_INST, ADC12_0_ADCMEM_2, DL_ADC12_INPUT_CHAN_0, DL_ADC12_REFERENCE_VOLTAGE_VDDA, DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0, DL_ADC12_AVERAGING_MODE_DISABLED, DL_ADC12_BURN_OUT_SOURCE_DISABLED, DL_ADC12_TRIGGER_MODE_AUTO_NEXT, DL_ADC12_WINDOWS_COMP_MODE_DISABLED); DL_ADC12_configConversionMem(ADC12_0_INST, ADC12_0_ADCMEM_3, DL_ADC12_INPUT_CHAN_0, DL_ADC12_REFERENCE_VOLTAGE_VDDA, DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0, DL_ADC12_AVERAGING_MODE_DISABLED, DL_ADC12_BURN_OUT_SOURCE_DISABLED, DL_ADC12_TRIGGER_MODE_AUTO_NEXT, DL_ADC12_WINDOWS_COMP_MODE_DISABLED);
您好、Dennis、
对迟交的答复表示歉意。 我一直在处理此操作、尝试通过中断检索 ADC 值。 在第一种开关情况 ADC_Count_0中、我将收到一个值4095 (12位)、但在 ADC_Count_1和 ADC_Count_2中、它将输出为零。 您能为我介绍一下我可能错过的任何内容吗?
static UINT16 ADC_Count_0; static UINT16 ADC_Count_1; static UINT16 ADC_Count_2; void ADC12_0_INST_IRQHandler(void) { switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)) { case DL_ADC12_IIDX_MEM0_RESULT_LOADED: DL_ADC12_configConversionMem(ADC12_0_INST, DL_ADC12_MEM_IDX_0, DL_ADC12_INPUT_CHAN_5, DL_ADC12_REFERENCE_VOLTAGE_VDDA, DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0, DL_ADC12_AVERAGING_MODE_DISABLED, DL_ADC12_BURN_OUT_SOURCE_DISABLED, DL_ADC12_TRIGGER_MODE_AUTO_NEXT, DL_ADC12_WINDOWS_COMP_MODE_DISABLED); ADC_Count_0 = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0); DL_ADC12_clearInterruptStatus(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM0_RESULT_LOADED)); DL_ADC12_disableInterrupt(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM0_RESULT_LOADED)); DL_ADC12_enableInterrupt(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM1_RESULT_LOADED)); break; case DL_ADC12_IIDX_MEM1_RESULT_LOADED: DL_ADC12_configConversionMem(ADC12_0_INST, DL_ADC12_MEM_IDX_1, DL_ADC12_INPUT_CHAN_3, DL_ADC12_REFERENCE_VOLTAGE_VDDA, DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0, DL_ADC12_AVERAGING_MODE_DISABLED, DL_ADC12_BURN_OUT_SOURCE_DISABLED, DL_ADC12_TRIGGER_MODE_AUTO_NEXT, DL_ADC12_WINDOWS_COMP_MODE_DISABLED); ADC_Count_1 = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_1); DL_ADC12_clearInterruptStatus(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM1_RESULT_LOADED)); DL_ADC12_disableInterrupt(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM1_RESULT_LOADED)); DL_ADC12_enableInterrupt(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM2_RESULT_LOADED)); break; case DL_ADC12_IIDX_MEM2_RESULT_LOADED: DL_ADC12_configConversionMem(ADC12_0_INST, DL_ADC12_MEM_IDX_2, DL_ADC12_INPUT_CHAN_4, DL_ADC12_REFERENCE_VOLTAGE_VDDA, DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0, DL_ADC12_AVERAGING_MODE_DISABLED, DL_ADC12_BURN_OUT_SOURCE_DISABLED, DL_ADC12_TRIGGER_MODE_AUTO_NEXT, DL_ADC12_WINDOWS_COMP_MODE_DISABLED); ADC_Count_2 = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_2); DL_ADC12_clearInterruptStatus(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM2_RESULT_LOADED)); DL_ADC12_disableInterrupt(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM2_RESULT_LOADED)); DL_ADC12_enableInterrupt(ADC12_0_INST, (DL_ADC12_INTERRUPT_MEM0_RESULT_LOADED)); } break; default: break; }
您好、Dennis、
您能回答一下吗?我们正在等待您的回复。
您好、Santhosh:
我非常抱歉耽误你的时间。 根据您的代码、如果您仅尝试读取4个通道、则使用 SysConfig 配置这些通道。 如果您尝试通过重新分配另外4个通道来测量全部16个通道、我会等到您获得 DL_ADC12_IIDX_MEM3_RESULT_LOADD 的中断、然后重新配置接下来的4个通道、依此类推...