功能要求 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次采样平均。
审核编辑:汤梓红 (责任编辑:admin) |