打印
[技术问题解答]

KL16 ADC与DMA实现多通道采集功能

[复制链接]
4006|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近在学习使用freescale新推出的KL16,到ADC这一章,因为KL16只有一个ADC,所有当需要采集多路时,就需要多通道分时采集。我想用DMA结合ADC进行采样,可是怎么配置寄存器,都实现不了。
到底该怎么弄呢?没有用那个寄存器配置软件,直接手工输入的。有没有相关的例程呢?好苦恼啊!
请大虾们多多指教!

相关帖子

沙发
qingtai81|  楼主 | 2014-3-25 15:34 | 只看该作者
在线等待,快有大虾来呀!

使用特权

评论回复
板凳
FSL_TICS_Robin| | 2014-3-25 16:50 | 只看该作者
楼主你好
飞思卡尔官网提供的针对于KL26、KL16芯片的例程包FRDM-KL26Z_SC
在这个例程包安装目录下,有两个与ADC模块相关的例程可以参考。
E:\...\FRDM-KL26Z_SC\FRDM-KL26Z_SC_Rev_1.0\klxx-sc-baremetal\build\iar


使用特权

评论回复
地板
FSL_TICS_Robin| | 2014-3-25 16:53 | 只看该作者
关于ADC结合DMA,请问你是想怎么应用呢?
ADC模块中有ADCx_SC2寄存器的DMAEN位,但这个位是供你在ADC转换完成时激活ADC DMA request的。
感觉和你提到的分时复用没啥关系。

使用特权

评论回复
5
qingtai81|  楼主 | 2014-3-26 13:19 | 只看该作者
谢谢 FSL_TICS_Robin:)
我用到了ADC8、ADC9、ADC12这几路,想让ADC自己后台运行,采集电压,得到的采样值直接通过DMA送到指定的内存地址,当我想去读这几个采样值时,直接是从内存地址读取。不知道这样描述清楚了没?

使用特权

评论回复
6
qingtai81|  楼主 | 2014-3-27 09:48 | 只看该作者
呜~~~~没人理呢!

使用特权

评论回复
7
FSL_TICS_Robin| | 2014-3-27 11:47 | 只看该作者
qingtai81 发表于 2014-3-26 13:19
谢谢 FSL_TICS_Robin
我用到了ADC8、ADC9、ADC12这几路,想让ADC自己后台运行,采集电压,得到的采样值直 ...

楼主你好
飞思卡尔官网提供一篇K系列的DMA结合ADC应用手册AN4590,但是用到了PDB模块你的KL16没有。
不过你可以参考一下这个思路。


使用特权

评论回复
8
qingtai81|  楼主 | 2014-3-27 13:42 | 只看该作者
太感谢楼主了,想要的就是这个思路呢!:)
如果KL16的没PDB,也就是没有触发源了,那是不是说,我可以设置一个时钟,比如说设定TPM为1ms定时触发一次ADC转换,这样,就可以实现ADC的自动采样+DMA数据传输了?
就一这点而言,感觉没有STM32的DMA好用呢!
另外,弱弱地问一声,你这个pdf在哪里找到的呢?我怎么总就找不到想要的pdf,能教教方法吗?
谢谢啦:handshake

使用特权

评论回复
9
FSL_TICS_Robin| | 2014-3-27 17:33 | 只看该作者
qingtai81 发表于 2014-3-27 13:42
太感谢楼主了,想要的就是这个思路呢!
如果KL16的没PDB,也就是没有触发源了,那是不是说,我可以设置一 ...

K系列的eDMA与L系列的DMA还有些区别,因为我也没有这么用过所以不确定是否可行。
那篇AN中eDMA用到了ELINK(K60手册中可以找到相关资料),你可以看一下L系列DMA中是否也有类似的link功能。

我是在飞思卡尔官网搜索到这篇AN的,搜索方法如图:


使用特权

评论回复
10
qingtai81|  楼主 | 2014-3-28 09:48 | 只看该作者
谢谢FSL_TICS_Robin 这么详细的解答,我再自己好好研究一下。等研究通了,把方法贴出来大家一起分享!

使用特权

评论回复
11
FSL_TICS_Robin| | 2014-3-28 10:08 | 只看该作者
qingtai81 发表于 2014-3-28 09:48
谢谢FSL_TICS_Robin 这么详细的解答,我再自己好好研究一下。等研究通了,把方法贴出来大家一起分享! ...

:D客气
祝顺利,期待你的结果哟!

使用特权

评论回复
12
hsguan| | 2014-4-27 12:07 | 只看该作者
FSL_TICS_Robin 发表于 2014-3-28 10:08
客气
祝顺利,期待你的结果哟!

您好,麻烦问一下,在kl26上能不能能实现这样的或者类似的操作:
从vlps下利用定时器如LPTMR定时操作DMA开启AD转换,完成后存储数值,转换一定次数以后从VLPS直接跳转到VLPR进行操作,完成后进入VLPS继续刚才的过程。

使用特权

评论回复
13
gnhxsk| | 2014-10-4 09:41 | 只看该作者
正好最近在看,涨知识了

使用特权

评论回复
14
513299943| | 2015-4-10 11:21 | 只看该作者
请问楼主多通道AD结合DMA解决没?  现在正在研究  希望一起交流!

使用特权

评论回复
15
ianhom| | 2015-4-11 11:31 | 只看该作者
513299943 发表于 2015-4-10 11:21
请问楼主多通道AD结合DMA解决没?  现在正在研究  希望一起交流!

KL25的定时器+ADC+DMA搞定了,不知道KL16是否可用,欢迎交流

使用特权

评论回复
16
513299943| | 2015-4-16 11:33 | 只看该作者
能否看一下代码 我主要是配置不对时钟接收不到AD的数据  我邮箱513299943@qq.com 万分感激!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

14

帖子

0

粉丝