KE02 实现一次硬件触发转换多个通道

来源:互联网 发布:wumpus java 游戏编码 编辑:程序博客网 时间:2024/06/05 08:31

KE02如果想通过硬件触发实现每隔一定时间间隔,依次连续转换多路ADC数据,然后进入中断读取数据,那么该如何实现呢?由手册可以看到,KE02 使用FIFO 硬件触发有两种模式:
这里写图片描述
模式1 单次触发显然不满足要求,只能考虑使用第二种连续触发方式,但是这种方式存在一个问题,它在完成n路通道后会继续重新开始采样,如果读取的话可能会导致读取的值不是想要的特定时刻的值。那么该如何解决呢?
可以在中断里先设置ADC SC2寄存器关闭硬件触发,再读取各个值。

ADC->SC2 &= ~ADC_SC2_ADTRG_MASK;  

读取完之后再打开硬件触发。

ADC->SC2 |= ADC_SC2_ADTRG_MASK;  

这里写图片描述
这里写图片描述
可知写SC2寄存器,会导致连续转换终止,这样转换值就无效,ADC_R中的值为之前正确转换的值,这样就可以完成所需功能。

如果是软件触发的话,可以使用一个定时器,在定时器中断服务函数里依次触发多路通道,然后进ADC中断去处理。

以下是关于这个问题的讨论:
这里写链接内容

这里写链接内容

这里写链接内容

0 0