智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 11079|回复: 61
打印 上一主题 下一主题

分享冷火单片机DMA采集摄像头与DTIM采集外部脉冲

    [复制链接]

17

主题

306

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2447
威望
985
贡献
750
兑换币
660
注册时间
2014-2-21
在线时间
356 小时
跳转到指定楼层
1#
发表于 2014-4-9 09:39:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. void DTIM3_Init()//配置DMA Timer
  2. {
  3.         MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL;
  4.         MCF_INTC0_IMRL|=MCF_INTC_IMRL_INT_MASK22;//DTIM3
  5.        
  6.         MCF_INTC0_ICR22=MCF_INTC_ICR_IP(6)+MCF_INTC_ICR_IL(2);

  7.         MCF_DTIM_DTMR(3)=0;    //清空dtmr寄存器
  8.         MCF_DTIM_DTER(3)|=MCF_DTIM_DTER_REF;//DMA标志位清零
  9.         MCF_DTIM_DTMR(3)=MCF_DTIM_DTMR_CE_NONE
  10.                                         |MCF_DTIM_DTMR_PS(0)//系统时钟的1分频;
  11.                                         |MCF_DTIM_DTMR_OM
  12.                                         |MCF_DTIM_DTMR_CLK_DIV1 //使用系统时钟sysclk;
  13.                                         |MCF_DTIM_DTMR_ORRI//输出触发的使能
  14.                                         |MCF_DTIM_DTMR_FRR;//每次计数到后清零
  15.         MCF_DTIM_DTXMR(3)|=MCF_DTIM_DTXMR_DMAEN;   //DMA询问使能,中断无效
  16.        
  17. }
  18. void DMA_Init()
  19. {
  20.         MCF_GPIO_PTJPAR = 0x00;      // 配置PTJ为普通IO   
  21.         MCF_GPIO_DDRTJ = 0x00;    // 设置PTJ为输入

  22.         MCF_GPIO_PTCPAR |= MCF_GPIO_PTCPAR_DTIN3_DTIN3  ;
  23.         MCF_DMA_DSR(3) |= MCF_DMA_DSR_DONE;//清除中断标志位
  24.         MCF_SCM_MPR = MCF_SCM_MPR_MPR(0x05);//允许DMA在用户和特权模式下作为主设备
  25.         MCF_SCM_DMAREQC = MCF_SCM_DMAREQC_DMAC3(0x7);//DMA timer3 对应 DMA通道3;
  26.         MCF_DMA_SAR(3)=PTJ_ADDRESS;//源地址
  27.         //MCF_DMA_DAR(3)=(uint32)(&IMG[0][0]);
  28.         //MCF_DMA_BCR(3)=100;
  29.         MCF_DMA_DCR(3)=//MCF_DMA_DCR_INT
  30.                                 MCF_DMA_DCR_DSIZE(1)
  31.                                 |MCF_DMA_DCR_SSIZE(1)//byte
  32.                                 |MCF_DMA_DCR_DINC//目的地址自增
  33.                                 |MCF_DMA_DCR_D_REQ//EEXT bit is cleared when the BCR is exhausted.
  34.                                 |MCF_DMA_DCR_CS//周期窃取
  35.                                 |MCF_DMA_DCR_EEXT;

  36.         //interrupt enable       
  37.         MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL;
  38.         MCF_INTC0_IMRL&=~MCF_INTC_IMRL_INT_MASK12;//cannel 3
  39.         MCF_INTC0_ICR12=MCF_INTC_ICR_IP(6)+MCF_INTC_ICR_IL(6);
  40.         DTIM3_Init();//配置DMA Timer,设置为PCLK触发
  41. }
  42. void DMA_start(uint8 line)
  43. {
  44.         MCF_DMA_DSR(3) |= MCF_DMA_DSR_DONE;//清除中断标志位
  45.         //MCF_DMA_SAR(3)=PTJ_ADDRESS;
  46.         MCF_DMA_DAR(3)=(uint32)(&IMG[line][0]);//目的地址
  47.         MCF_DMA_BCR(3)=100;//采集个数
  48.         MCF_DTIM_DTRR(3)=28;//调这个参数相当于调定时采集的延时,具体效果可以调这个参数,用上位机看图像效果,如果发现右边都是黑的,那就说明这个数值大了,如果发现仅采到图像的左边部分,那就说明这个数值小了
  49.         MCF_DTIM_DTMR(3)|=MCF_DTIM_DTMR_RST;
  50.         MCF_DMA_DCR(3)|= MCF_DMA_DCR_EEXT;       
  51.        
  52. }

  53. 上面这个是定时触发采集DMA的。
复制代码

这个是外部脉冲触发采集DMA的
  1. //外部脉冲连接到P4引脚,定时读取MCF_DTIM_DTCN(2),读取后可清零
  2. void DTIM2_Init()
  3. {
  4.         MCF_GPIO_PTCPAR |= MCF_GPIO_PTCPAR_DTIN2_DTIN2;
  5.         MCF_DTIM_DTMR(2)=0;
  6.         MCF_DTIM_DTMR(2)|=MCF_DTIM_DTMR_CE_NONE //不进行捕捉
  7.                                         |MCF_DTIM_DTMR_CLK_DTIN //外部时钟源
  8.                                         |MCF_DTIM_DTMR_FRR;//触发事件之后计数值清零
  9.         MCF_DTIM_DTRR(2)=0xFFFFFFFF;//计数器基准值,32位,可以计到0xFFFFFFFF                               
  10.         MCF_DTIM_DTMR(2)|=MCF_DTIM_DTMR_RST;       
  11. }
  12.        
复制代码
这个是采集脉冲的,这样使用冷火单片机的电磁组跟摄像头组的同学们就能实现GPT+DTIM测速了

回复

使用道具 举报

10

主题

75

帖子

0

精华

高级会员

Rank: 4

积分
709
QQ
威望
346
贡献
257
兑换币
206
注册时间
2014-6-1
在线时间
53 小时
62#
发表于 2015-6-6 17:25:35 | 只看该作者
直立摄像头 发表于 2014-4-11 21:29
外部脉冲连接到P4引脚,定时读取MCF_DTIM_DTCN(2),这样子不行?你先确定是有没有外部脉冲先?不如你搞个PW ...

p4引脚是哪个??
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
55
威望
39
贡献
10
兑换币
11
注册时间
2015-1-4
在线时间
3 小时
毕业学校
合肥学院
61#
发表于 2015-1-4 17:30:35 | 只看该作者
能加个qq吗?443026507求助
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
威望
248
贡献
130
兑换币
150
注册时间
2013-10-13
在线时间
57 小时
毕业学校
华东交通大学
60#
发表于 2014-6-11 18:38:20 | 只看该作者
1092734906可以加好友不~
回复 支持 反对

使用道具 举报

34

主题

275

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3207
威望
1489
贡献
944
兑换币
947
注册时间
2013-3-5
在线时间
387 小时
59#
发表于 2014-6-11 09:14:21 | 只看该作者
春暖花开谎的我 发表于 2014-4-11 20:14
大神你那个测速的是用的参考比较模式么?外部的编码器脉冲和0xffffff比较么?这编码器应该没那么多脉冲吧, ...

测速使用输入捕捉即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

高级会员

Rank: 4

积分
592
威望
302
贡献
170
兑换币
181
注册时间
2013-11-14
在线时间
60 小时
毕业学校
黄石学院
58#
发表于 2014-6-11 03:41:52 | 只看该作者
春暖花开谎的我 发表于 2014-4-12 21:36
恩恩,谢谢大神

DTIM测速,求助,读取值一直为0啊
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

高级会员

Rank: 4

积分
592
威望
302
贡献
170
兑换币
181
注册时间
2013-11-14
在线时间
60 小时
毕业学校
黄石学院
57#
发表于 2014-6-11 02:20:23 | 只看该作者
春暖花开谎的我 发表于 2014-4-12 20:12
大神我的那个DTIN测速稍微测试了一下,能测速,现在要改开发板,两个都用DTIN测速,我还要给摄像头PCLK弄个 ...

新手求教,我也想用DTIM测速,可是结果跟你开始一样,读取值一直为0,请问你是怎么解决的?
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
330
威望
169
贡献
99
兑换币
109
注册时间
2013-11-13
在线时间
31 小时
毕业学校
重庆邮电大学
56#
发表于 2014-6-9 19:43:22 | 只看该作者
大神,能不能加个Q啊??382991208
回复 支持 反对

使用道具 举报

65

主题

696

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3631

活跃会员奖章优秀会员奖章论坛骨干奖章论坛元老奖章在线王奖章

威望
1886
贡献
1057
兑换币
1118
注册时间
2013-4-23
在线时间
344 小时
55#
发表于 2014-6-7 11:53:45 | 只看该作者
???
回复 支持 反对

使用道具 举报

27

主题

150

帖子

0

精华

会长

Rank: 8Rank: 8

积分
3077

优秀会员奖章活跃会员奖章

威望
1484
贡献
901
兑换币
931
注册时间
2013-6-7
在线时间
346 小时
毕业学校
燕山大学
54#
发表于 2014-6-7 08:44:08 | 只看该作者
呦!周期窃取模式
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 15:31 , Processed in 0.122516 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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