电工基础

电工基础知识_电工技术-电工最常见电路

ADC多次采样的实现思路

时间:2023-03-15 11:26来源:未知 作者:admin 点击:
功能要求 ADC 扫描采样若干通道,数据保存在指定缓冲区,连续采样若干次之后触发中断,然后读取采样数据处理。 实现思路 通过定时中断触发 AD C单次采样,采样结果通过DTC传输到指

功能要求

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

实现思路

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

1FSP添加4个Stacks

d28b365c-2ff5-11ed-ba43-dac502259ad0.png

2Agt0 stack设定

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

d2cc6f46-2ff5-11ed-ba43-dac502259ad0.png

3ADC stack

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

d30c5390-2ff5-11ed-ba43-dac502259ad0.png

 

d32d160c-2ff5-11ed-ba43-dac502259ad0.png

4DTC stack

设定Block传输模式

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

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

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

触发源为ADC0 SCAN END。

d3717b6c-2ff5-11ed-ba43-dac502259ad0.png

5ELC stack

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

d39d6c22-2ff5-11ed-ba43-dac502259ad0.png

 

d3cafd0e-2ff5-11ed-ba43-dac502259ad0.png

6DTC函数

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

d49dfbc8-2ff5-11ed-ba43-dac502259ad0.jpg

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

hal_entry.c添加以下代码

d4caeee4-2ff5-11ed-ba43-dac502259ad0.jpg

8测试结果

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

d51b427c-2ff5-11ed-ba43-dac502259ad0.png

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

d568c7cc-2ff5-11ed-ba43-dac502259ad0.png

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

d5eba8cc-2ff5-11ed-ba43-dac502259ad0.png


 


 

审核编辑:汤梓红

(责任编辑:admin)
织梦二维码生成器
相关文章
------分隔线----------------------------
栏目列表
推荐内容