巧妙利用DMA来实现脉冲累加(Kinetis)
所属分类:参考设计
上传者:hanqi1236
文档大小:770 K
所需积分:0分积分不够怎么办?
文档介绍:Kinetis 系列 只有 一路 LPT 模块 ,要实现 多路脉冲累加 (不进入中断服务函数,不占用 CPU 资源),难道就没方法了吗?就目前网上公开的资料来看,貌似还没有公开实现多路脉冲累加的方法吧?都是靠 FTM 的 输入捕捉 或者 GPIO 的触发中断,在中断函数里进来累加。其实,Kinetis 的DMA模块,是 可以实现 16路 15位 的 脉冲累加。 完全可以不进入中断服务函数,由硬件进行累加。彻底解决 Kinetis单片机不能多路脉冲累加的功能 …… 可通过增加个中断来实现拓展计数位数,几乎不影响CPU…… 实测 30KHz 的PWM脉冲波 ,用PIT 来 1秒定时,读取到脉冲波:30012个 ,比 LPT误差还更小……与 LPT 相比,我们的方法是巧妙借用了 DMA 每次传输,会自动减1 的功能 (硬件实现的)而 LPT 则是一个计数器 ,两种的原理是不一样的……实测 30KHz 的PWM脉冲波 ,用PIT 来 1秒定时,读取到脉冲波:30012个 ,比 LPT误差还更小……函数接口非常方便…… DMA_count_Init 初始化…… DMA_count_get 获取计数值…… DMA_count_reset 重新计数……
现在下载
VIP会员,AET专家下载不扣分;重复下载不扣分,本人上传资源不扣分。