智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6503|回复: 25
打印 上一主题 下一主题

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

  [复制链接]

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15139

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11068
贡献
1411
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
跳转到指定楼层
1#
发表于 2013-10-31 15:06:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 洋葱圈 于 2013-10-31 15:07 编辑

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

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

运行结果:



例程下载:
务必注意:本例程只是一个用户代码,它必须基于OSKinetis固件库来运行,因此必须放置在固件库目录下的/project目录才能正确编译,固件库地址 http://www.znczz.com/thread-207411-1-1.html



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

15

主题

168

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2419
威望
1433
贡献
598
兑换币
530
注册时间
2014-1-13
在线时间
194 小时
26#
发表于 2014-1-22 14:00:54 | 只看该作者
回复 支持 反对

使用道具 举报

8

主题

36

帖子

0

精华

高级会员

Rank: 4

积分
708
威望
353
贡献
195
兑换币
222
注册时间
2013-10-19
在线时间
80 小时
25#
发表于 2013-11-21 16:11:37 | 只看该作者
洋葱圈 发表于 2013-11-20 18:30
你要是死在K60,那KL没准也得死。。。踏踏实实搞定一款吧。。。

不是,是因为k60学校有人做了,不想在校赛自相残杀,所有有换芯片的意向
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15139

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11068
贡献
1411
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
24#
 楼主| 发表于 2013-11-20 18:30:35 | 只看该作者
zzh11011 发表于 2013-11-20 17:18
freedom有提供例程吗???还有底层库什么时候会出啊??要死了现在准备从K60换成KL...不知来得及不?T_T ...

你要是死在K60,那KL没准也得死。。。踏踏实实搞定一款吧。。。
回复 支持 反对

使用道具 举报

8

主题

36

帖子

0

精华

高级会员

Rank: 4

积分
708
威望
353
贡献
195
兑换币
222
注册时间
2013-10-19
在线时间
80 小时
23#
发表于 2013-11-20 17:18:18 | 只看该作者
洋葱圈 发表于 2013-11-1 18:35
听闻飞思卡尔官方会出KL系列底层库,我们等着就好了,肯定比第三方写的好。官方出得freedom开发板,也提供 ...

freedom有提供例程吗???还有底层库什么时候会出啊??要死了现在准备从K60换成KL...不知来得及不?T_T
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15139

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11068
贡献
1411
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
22#
 楼主| 发表于 2013-11-12 17:42:33 | 只看该作者
逍逍遥游 发表于 2013-11-12 16:06
求助:那个printf输出用什么可以检测到啊?那个serialpanel软件哪儿有啊?

串口调试助手
回复 支持 反对

使用道具 举报

6

主题

126

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4049
威望
1562
贡献
1013
兑换币
989
注册时间
2012-9-23
在线时间
737 小时
21#
发表于 2013-11-12 16:06:33 | 只看该作者
求助:那个printf输出用什么可以检测到啊?那个serialpanel软件哪儿有啊?
回复 支持 反对

使用道具 举报

20

主题

259

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5644
威望
2695
贡献
1597
兑换币
1729
注册时间
2013-1-5
在线时间
677 小时
20#
发表于 2013-11-8 17:14:28 | 只看该作者
请问老师光电的CCD需要用到比较器模块么?
回复 支持 反对

使用道具 举报

6

主题

126

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4049
威望
1562
贡献
1013
兑换币
989
注册时间
2012-9-23
在线时间
737 小时
19#
发表于 2013-11-6 22:14:04 | 只看该作者
洋葱圈 发表于 2013-11-6 22:05
你的理解是正确的,原理的话你得去啃技术文档。

好的  谢谢啦
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15139

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11068
贡献
1411
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
18#
 楼主| 发表于 2013-11-6 22:05:49 | 只看该作者
逍逍遥游 发表于 2013-11-6 20:07
也就是说只按照pit的周期来?pit先触发pdb,然后pdb直接触发adc采集?

延时的意思是不是pit先触发pdb, ...

你的理解是正确的,原理的话你得去啃技术文档。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-22 18:15 , Processed in 0.076655 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表