ADC多次采样的实现思路

ADC多次采样的实现思路,第1张

功能要求

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

实现思路

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

1FSP添加4个Stacks

ADC多次采样的实现思路,d28b365c-2ff5-11ed-ba43-dac502259ad0.png,第2张

2Agt0 stack设定

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

ADC多次采样的实现思路,d2cc6f46-2ff5-11ed-ba43-dac502259ad0.png,第3张

3ADC stack

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

ADC多次采样的实现思路,d30c5390-2ff5-11ed-ba43-dac502259ad0.png,第4张

 

ADC多次采样的实现思路,d32d160c-2ff5-11ed-ba43-dac502259ad0.png,第5张

4DTC stack

设定Block传输模式

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

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

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

触发源为ADC0 SCAN END。

ADC多次采样的实现思路,d3717b6c-2ff5-11ed-ba43-dac502259ad0.png,第6张

5ELC stack

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

ADC多次采样的实现思路,d39d6c22-2ff5-11ed-ba43-dac502259ad0.png,第7张

 

ADC多次采样的实现思路,d3cafd0e-2ff5-11ed-ba43-dac502259ad0.png,第8张

6DTC函数

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

ADC多次采样的实现思路,d49dfbc8-2ff5-11ed-ba43-dac502259ad0.jpg,第9张

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

hal_entry.c添加以下代码

ADC多次采样的实现思路,d4caeee4-2ff5-11ed-ba43-dac502259ad0.jpg,第10张

8测试结果

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

ADC多次采样的实现思路,d51b427c-2ff5-11ed-ba43-dac502259ad0.png,第11张

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

ADC多次采样的实现思路,d568c7cc-2ff5-11ed-ba43-dac502259ad0.png,第12张

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

ADC多次采样的实现思路,d5eba8cc-2ff5-11ed-ba43-dac502259ad0.png,第13张


 


 

审核编辑:汤梓红

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2998365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存