这两天又重新折腾了一下这个东西,我重新下载了芯片的英文手册,发现了这么一段话:
ADC conversions can either be stored in the ADC Sample Sequence FIFOs or compared using the
digital comparator resources
这个词表明这两条路径只能二选一了,我一直参照的是另一款TM4C123的中文手册,中文翻译没有体现出这个,原文如下:
“取决于 ADC 采样序列 n 操作 (ADCCSOPn) 寄存器中的 SnDCOP 位的设置,ADC 转换结果可以保
存到 ADC 采样序列 FIFO 中,也可以供给数字比较器进行比较。”
也字换成“或者”应该就意思明确了,然后我继续实验,使用下面的代码对同一个通道多次采样:
ROM_ADCSequenceStepConfigure(ADC0_BASE, key_sequence, 0, ADC_CTL_CH0);
ROM_ADCSequenceStepConfigure(ADC0_BASE, key_sequence, 0, ADC_CTL_CH0 | ADC_CTL_CMP0);
ROM_ADCSequenceStepConfigure(ADC0_BASE, key_sequence, 0, ADC_CTL_CH0 | ADC_CTL_END);
这个的结果是在进入中断后成功采样到了触发中断的电压值,但是惊讶的发现,采样结果有一个周期的延迟,比如我分别用1V,1.5V,3V,2V,1V这样的序列触发,中断里采到的是RANDOM,1V,1.5V,3V,2V,我是想用ADC的这个特性做一个按键电压判断,这样一来本次触发得到的都是上一个按键的值,这导致按键功能完全没法实现,翻阅手册暂时没有看到这方面的描述,但是偶然中我发现驱动库函数手册ADCComparatorReset()函数介绍里面是这样写的:
“Because the digital comparator uses current and previous ADC values, this function allows the comparator to be reset to its initial value to prevent stale data from being used when a sequence is enabled.”
使用了前一次和本次的采样值?是怎样使用的?是否这就是产生延迟的原因?
感觉追踪到这已经超出手册所能提供的支持范围了,不知道有没有对这个具体细节了解的大大,希望看到了能不吝指教,虽然用曲线救国的方法在ADC比较中断后马上切回普通采样模式也能在按键没松开的时间段内采到按键值,但是我很看好这个功能,要是能直接采到就完美了。希望有共同关注这个问题的朋友<_>
这两天又重新折腾了一下这个东西,我重新下载了芯片的英文手册,发现了这么一段话:
ADC conversions can either be stored in the ADC Sample Sequence FIFOs or compared using the
digital comparator resources
这个词表明这两条路径只能二选一了,我一直参照的是另一款TM4C123的中文手册,中文翻译没有体现出这个,原文如下:
“取决于 ADC 采样序列 n 操作 (ADCCSOPn) 寄存器中的 SnDCOP 位的设置,ADC 转换结果可以保
存到 ADC 采样序列 FIFO 中,也可以供给数字比较器进行比较。”
也字换成“或者”应该就意思明确了,然后我继续实验,使用下面的代码对同一个通道多次采样:
ROM_ADCSequenceStepConfigure(ADC0_BASE, key_sequence, 0, ADC_CTL_CH0);
ROM_ADCSequenceStepConfigure(ADC0_BASE, key_sequence, 0, ADC_CTL_CH0 | ADC_CTL_CMP0);
ROM_ADCSequenceStepConfigure(ADC0_BASE, key_sequence, 0, ADC_CTL_CH0 | ADC_CTL_END);
这个的结果是在进入中断后成功采样到了触发中断的电压值,但是惊讶的发现,采样结果有一个周期的延迟,比如我分别用1V,1.5V,3V,2V,1V这样的序列触发,中断里采到的是RANDOM,1V,1.5V,3V,2V,我是想用ADC的这个特性做一个按键电压判断,这样一来本次触发得到的都是上一个按键的值,这导致按键功能完全没法实现,翻阅手册暂时没有看到这方面的描述,但是偶然中我发现驱动库函数手册ADCComparatorReset()函数介绍里面是这样写的:
“Because the digital comparator uses current and previous ADC values, this function allows the comparator to be reset to its initial value to prevent stale data from being used when a sequence is enabled.”
使用了前一次和本次的采样值?是怎样使用的?是否这就是产生延迟的原因?
感觉追踪到这已经超出手册所能提供的支持范围了,不知道有没有对这个具体细节了解的大大,希望看到了能不吝指教,虽然用曲线救国的方法在ADC比较中断后马上切回普通采样模式也能在按键没松开的时间段内采到按键值,但是我很看好这个功能,要是能直接采到就完美了。希望有共同关注这个问题的朋友<_>
举报