ADC多次采样的实现思路

模拟技术

2409人已加入

描述

功能要求

ADC扫描采样若干通道,数据保存在指定缓冲区,连续采样若干次之后触发中断,然后读取采样数据处理。

实现思路

通过定时中断触发ADC单次采样,采样结果通过DTC传输到指定缓冲区,设定DTC传输的次数,当DTC传输完成,会触发ADC中断(DTC传输过程中不会中断),然后读取处理ADC数据。

1FSP添加4个Stacks

adc

2Agt0 stack设定

设定agt0的中断间隔,如100us,不使用中断,回调函数可以设为NULL,输出管脚不配置。

adc

3ADC stack

设定单次采样,选择采样通道0,1,3,6,触发源选AGT0定时器中断。

adc

 

adc

4DTC stack

设定Block传输模式

Transfer Size=2Bytes(ADC结果寄存器值)

Number of Transfers=7(7个ADC结果)

Number of Blocks=10(传输10次ADC转换结果)

触发源为ADC0 SCAN END。

adc

5ELC stack

从System → Event Link Controller添加,无需配置。可以在ra_gen目录下的elc_data.c看到事件分配。

adc

 

adc

6DTC函数

设定DTC的传输源指针、目的指针,以及传输的数量。

adc

7按照以上FSP配置之后,生成代码。

hal_entry.c添加以下代码

adc

8测试结果

4个通道的每次ADC转换结果,占用了数组adc_buffer的7个16 bit。adc_buffer数组保存ADC转换10次的结果。

adc

9SADC12的多次采样平均,最多可以16次。

adc

FSP的设置,可以配置为4次采样平均。

adc


 


 

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分