模拟技术
功能要求
ADC扫描采样若干通道,数据保存在指定缓冲区,连续采样若干次之后触发中断,然后读取采样数据处理。
实现思路
通过定时中断触发ADC单次采样,采样结果通过DTC传输到指定缓冲区,设定DTC传输的次数,当DTC传输完成,会触发ADC中断(DTC传输过程中不会中断),然后读取处理ADC数据。
1FSP添加4个Stacks
2Agt0 stack设定
设定agt0的中断间隔,如100us,不使用中断,回调函数可以设为NULL,输出管脚不配置。
3ADC stack
设定单次采样,选择采样通道0,1,3,6,触发源选AGT0定时器中断。
4DTC stack
设定Block传输模式
Transfer Size=2Bytes(ADC结果寄存器值)
Number of Transfers=7(7个ADC结果)
Number of Blocks=10(传输10次ADC转换结果)
触发源为ADC0 SCAN END。
5ELC stack
从System → Event Link Controller添加,无需配置。可以在ra_gen目录下的elc_data.c看到事件分配。
6DTC函数
设定DTC的传输源指针、目的指针,以及传输的数量。
7按照以上FSP配置之后,生成代码。
hal_entry.c添加以下代码
8测试结果
4个通道的每次ADC转换结果,占用了数组adc_buffer的7个16 bit。adc_buffer数组保存ADC转换10次的结果。
9SADC12的多次采样平均,最多可以16次。
FSP的设置,可以配置为4次采样平均。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !