K60实现ADC四通道自动连续采集 无需CPU干预
0赞
发表于 10/31/2013 11:15:21 AM
阅读(4143)
|
之前有许多朋友询问如何使用K60的ADC实现多个通道的连续自动采集功能。其实就K60而言,他的ADC有ADC0和ADC1,每个ADCx又有A和B两组控制通道,因此最多可以实现4组ADC通道的连续自动采集,而且配合DMA和PDB,无需CPU对采集过程进行干预,我们可以直接读取内存中的转换结果! 本例程同样是基于LPLD的OSKinetis固件库开发的,代码中全部使用库函数进行开发,开发过程无需涉及任何寄存器操作。每步我们都写了详细注释,相信不了解原理的童鞋也能看个大概! 下面我还是简单叙述下实现原理: Step 1.配置ADC模块,配置A组和B组控制通道均为硬件触发,使能DMA请求。并使能相关输入通道。 Step 2.配置DMA模块,分别用2个DMA通道来控制ADC0和ADC1的DMA传输,并配置DMA源地址为ADC结果寄存器,配置主循环计数2次,因为要分别传输R[A]和R[B]结果寄存器的值。 Step 3.配置PDB模块,使用软件触发或其他外设触发均可,例程中位软件触发。关键步骤是要配置PDB的ADC预触发模式,使能通道0和通道1的预触发,并配置为Back to Back模式,这样才能让ADC的COCO转换完成标志自动触发下一个AD转换! Step 4.触发PDB工作,坐享其成!
运行结果:
例程下载:[拉普兰德K60固件库]例程(DMA PDB ADC)LPLD_DmaPdbAnalogSample.zip 务必注意:本例程只是一个用户代码,它必须基于OSKinetis固件库来运行,因此必须放置在固件库目录下的/project目录才能正确编译,固件库地址 http://www.lpld.cn/?p=97 |

