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

举报
TopSemic嵌入式 发表于 2021/10/19 22:07:32 2021/10/19
【摘要】 KE02如果想通过硬件触发实现每隔一定时间间隔,依次连续转换多路ADC数据,然后进入中断读取数据,那么该如何实现呢?由手册可以看到,KE02 使用FIFO 硬件触发有两种模式: 模式1 单次触发显然...

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

ADC->SC2 &= ~ADC_SC2_ADTRG_MASK;  
  
 
  • 1

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

ADC->SC2 |= ADC_SC2_ADTRG_MASK;  
  
 
  • 1

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

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

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

这里写链接内容

这里写链接内容

文章来源: blog.csdn.net,作者:TopSemic嵌入式,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/wangwenxue1989/article/details/46703863

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。