K60实现ADC四通道自动连续采集 无需CPU干预

2020-02-21 21:06发布

之前有许多朋友询问如何使用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工作,坐享其成!

主要代码如下:
太长不贴了, 直接看程序吧各位。。。

运行结果:

1502417no0v3k876oi83i8.png (25.73 KB, 下载次数: 0) 下载附件 2013-11-6 10:33 上传


例程下载请到我的另一个帖子:http://www.amobbs.com/thread-5557967-1-1.html
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
RainKing
1楼-- · 2020-02-22 15:38
支持一个............
holts2
2楼-- · 2020-02-22 20:24
 精彩回答 2  元偷偷看……
浪里白条
3楼-- · 2020-02-23 01:00
猜都用的是DMA
cn_x
4楼-- · 2020-02-23 05:01
这个值得借鉴,收藏先
wanstrive
5楼-- · 2020-02-23 05:20
感觉KL系列,与KE系列的AD采样转换时间太慢了。。。
rootxie
6楼-- · 2020-02-23 07:31
不错,感谢分享

一周热门 更多>