Answer:
本文以RA4M2为例介绍如何设置ADC窗口比较功能。
RA4M2的ADC12 提供比较功能(窗口 A 和窗口 B)。比较功能分别指定窗口 A和窗口B 的参考值上限和的参考值下限,当所选通道的 A/D 转换值满足比较条件时输出中断。窗口A 和窗口B 的主要区别在于它们的中断输出信号不同以及对窗口B 只能选择一个通道的限制。
这里以窗口A为例进行介绍。窗口A有以下4种比较模式。
- 结果低于阈值
- 结果高于阈值
- 结果在窗口内
- 结果在窗口外
窗口A比较功能相关的寄存器有ADCMPCR、ADCMPLR0/1和ADCMPDR0/1寄存器,详情请参考RA硬件手册。




将ADC数据与可设置的高低阈值进行比较,并可为AD数据在设定的门限值内、外、高或低自动生成比较中断。需要设置三个选项位置,接下来我们将逐个介绍各种情况下属性设置和用户代码。
1、A/D转换结果高于门限值时产生窗口比较A中断(ADC120_CMPAI)

若想实现上面的比较功能,请按照下图中所示,在FSP中设置ADC属性。
(1)Input -> Window Compare -> Window A
Enable:选择Enabled
Lower Reference:请在这里设定阈值
(2) Input -> Window Compare
Window Mode:选择Disabled
(3)代码中将CMPLCHA0位设置为“1”
R_ADC0->ADCMPLR_b->CMPLCHA0 = 1;

当AD转换结果 > ADCMPDR0( Lower Reference 设定值时) 时,产生Compare中断。
2、A/D转换结果低于门限值时产生窗口比较A中断(ADC120_CMPAI)

若想实现上图的比较功能,请按照下图中所示,在FSP中设置ADC属性。
(1)Input -> Window Compare -> Window A
Enable:选择Enabled
Lower Reference:请在这里设定阈值
(2) Input -> Window Compare
Window Mode:选择Disabled
(3)代码中将CMPLCHA0位设置为“0”
R_ADC0->ADCMPLR_b->CMPLCHA0 = 0;

当AD转换结果 < ADCMPDR0( Lower Reference 设定值时) ,产生Compare中断。
3、A/D转换结果在门限值内

若想实现上图的比较功能,请按照下图中所示,在FSP中设置ADC属性。
(1)Input -> Window Compare -> Window A
Enable:选择Enabled
Lower Reference、Upper Reference:请在这里设定阈值
(2) Input -> Window Compare
Window Mode:选择Enabled
(3)代码中将CMPLCHA0位设置为“1”
R_ADC0->ADCMPLR_b->CMPLCHA0 = 1;

当 ADCMPDR0( Lower Reference 设定值时) < AD转换结果 < ADCMPDR1( Upper Reference 设定值时)时 ,产生Compare中断。
4、A/D转换结果在门限值外

若想实现上图的比较功能,请按照下图中所示,在FSP中设置ADC属性。
(1)Input -> Window Compare -> Window A
Enable:选择Enabled
Lower Reference、Upper Reference:请在这里设定阈值
(2) Input -> Window Compare
Window Mode:选择Enabled
(3)代码中将CMPLCHA0位置为“0”
R_ADC0->ADCMPLR_b->CMPLCHA0 = 0;

当AD转换结果 < ADCMPDR0( Lower Reference 设定值时) 或者 > ADCMPDR1( Upper Reference 设定值时)时 ,产生Compare中断。
另外,使用窗口比较功能时请注意以下限制:
- 比较功能不能与自诊断功能或双触发模式一起使用。 (比较功能不适用于 ADRD、ADDBLDR、ADDBLDRA 和 ADDBLDRB。)
- 使用匹配/不匹配事件输出时请使用单次扫描模式。
- 当温度传感器输出时,窗口A 选择内部参考电压,窗口B 操作被禁用。
- 当温度传感器输出时,窗口B 选择内部参考电压,窗口A 操作被禁用。
- 禁止为窗口A 和窗口B 设置相同的通道。
- 设置参考电压值时,请将高电位参考电压值设置为大于或等于低电位参考电压值。