KE02如果想通过硬件触发实现每隔一定时间间隔,依次连续转换多路ADC数据,然后进入中断读取数据,那么该如何实现呢?由手册可以看到,KE02 使用FIFO 硬件触发有两种模式:
模式1 单次触发显然不满足要求,只能考虑使用第二种连续触发方式,但是这种方式存在一个问题,它在完成n路通道后会继续重新开始采样,如果读取的话可能会导致读取的值不是想要的特定时刻的值。那么该如何解决呢?
可以在中断里先设置ADC SC2寄存器关闭硬件触发,再读取各个值。
ADC->SC2 &= ~ADC_SC2_ADTRG_MASK;
读取完之后再打开硬件触发。
ADC->SC2 |= ADC_SC2_ADTRG_MASK;
可知写SC2寄存器,会导致连续转换终止,这样转换值就无效,ADC_R中的值为之前正确转换的值,这样就可以完成所需功能。
如果是软件触发的话,可以使用一个定时器,在定时器中断服务函数里依次触发多路通道,然后进ADC中断去处理。
以下是关于这个问题的讨论:
这里写链接内容