智能车制作

标题: 野火鹰眼在coldfire mcf52255上使用成功 [打印本页]

作者: hoeoi    时间: 2013-6-4 22:08
标题: 野火鹰眼在coldfire mcf52255上使用成功
      校内赛中以0.2秒的差距输给第一名,因为两队都是用k60,所以悲剧的。。 我们只好换芯片了。我们选择了用coldfire的芯片。只因为看中了它的dma功能。coldfire的资料真的是少之又少,其中dma的资料更是凤毛麟角。英语很差的我,只好开着有道词典,把数据手册中的dma模块看了一遍又一遍。。(真庆幸我还活着)。后来看手册看着看着就有感觉了,其实冷火的使用并没有传说中那么难。主要只是中文资料极少,很多人不愿意接触。
      经过许多天的奋斗。。终于在mcf52255上使用dma成功采集回来图像。

[attach]46553[/attach]
既然如此,我就把dma初始化部分的贴出来吧。事实证明,冷火的dma是可以用来采集摄像头图像的。
使用的是dtim触发dma请求。
下面是dma初始化代码

/*********************************% 质子一号 %*************************************
* 实现功能     : 初始化摄像头的dma与中断模块。
* 备注          :  dtin0触发dma请求
**********************************************************************************/
void Ov7725_exti_Init()
{

MCF_GPIO_PTIPAR = 0x00;      // 配置PTI为普通IO   
    MCF_GPIO_DDRTI = 0x00;    // 设置PTI为输入
//行、场中断
init_irq(3);//行中断
init_irq(5);//场中断

//DMA 配置
MCF_GPIO_PTCPAR |= MCF_GPIO_PTCPAR_DTIN0_DTIN0;  //DTin0

MCF_DMA0_DSR |= MCF_DMA_DSR_DONE;
/* Enable DMA master access in both supervisor and user mode */
MCF_SCM_MPR = MCF_SCM_MPR_MPR(0x05);
//dtim0 trigger DMA0
MCF_SCM_DMAREQC = MCF_SCM_DMAREQC_DMAC0(0x4);

MCF_DMA_SAR(0) = (uint32)CAMERA_ADDRESS;     
MCF_DMA_DAR(0) = (uint32)IMG_BUFF;            
MCF_DMA_BCR(0) = CAMERA_DMA_NUM;
MCF_DMA_DCR(0) = //MCF_DMA_DCR_INT   //不触发DMA中断
        MCF_DMA_DCR_SSIZE(1)    //ssize : byte   
      | MCF_DMA_DCR_DSIZE(1)    //dsize : byte
      | MCF_DMA_DCR_DINC     //目的地址自增
       //| MCF_DMA_DCR_SINC     //源地址保持不变
      | MCF_DMA_DCR_D_REQ    //传输完毕后,关闭dma请求
      | MCF_DMA_DCR_EEXT     //外部触发dma
      | MCF_DMA_DCR_CS;   //一个请求触发一次

//DTMR 配置   
MCF_DTIM0_DTMR =  0;    //清空dtmr寄存器

MCF_DTIM0_DTMR = MCF_DTIM_DTMR_CE_RISE //上升沿捕捉
                             | MCF_DTIM_DTMR_CLK_DIV1;   //使用系统时钟sysclk;
   
MCF_DTIM_DTXMR(0) |=  MCF_DTIM_DTXMR_DMAEN;   //dma请求使能

//MCF_DTIM_DTXMR(0) |=  MCF_DTIM_DTXMR_HALTED;  //挂起状态停止计数
   
//MCF_DTIM_DTXMR(0) &=  ~MCF_DTIM_DTXMR_MODE16;
  
//MCF_DTIM_DTMR(0) &=  ~MCF_DTIM_DTMR_FRR;  //Restart  

//MCF_DTIM_DTMR(0) |=  MCF_DTIM_DTMR_OM;   //OutputMode

MCF_DTIM_DTMR(0) |= MCF_DTIM_DTMR_PS(0x5);

      //启动DTMR  
    MCF_DTIM_DTMR(0) |= MCF_DTIM_DTMR_RST;

}





补充内容 (2013-6-5 12:02):
MCF_DTIM_DTMR(0) |= MCF_DTIM_DTMR_PS(0x5);    这句代码是可以注释掉的,用于对时钟进行分频。有没有都一样。
作者: xiaomei120108    时间: 2013-6-4 23:27
顶起
作者: 徐晋鸿!    时间: 2013-6-5 09:04
楼主实乃圣人也,佩服之~好贴不能沉呀!
作者: 野火    时间: 2013-6-5 09:14
质子一号 ,非常好
作者: jack_channel    时间: 2013-6-5 11:43
看到我们的冷火跟BDM了
作者: 小诸    时间: 2013-6-5 11:47
楼主威武!
作者: 1228463834    时间: 2013-6-5 11:49
jack_channel 发表于 2013-6-5 11:43
看到我们的冷火跟BDM了

JACK 很高兴
作者: hoeoi    时间: 2013-6-5 11:53
徐晋鸿! 发表于 2013-6-5 09:04
楼主实乃圣人也,佩服之~好贴不能沉呀!

哈,共同学习
作者: hoeoi    时间: 2013-6-5 12:01
MCF_DTIM_DTMR(0) |= MCF_DTIM_DTMR_PS(0x5);    这句代码是可以注释掉的,用于对时钟进行分频。有没有都一样。
作者: Medichen    时间: 2013-6-5 12:10
楼主能把采集到图像发上来看下吗
作者: jack_channel    时间: 2013-6-5 12:13
1228463834 发表于 2013-6-5 11:49
JACK 很高兴

[qq]1849086382[/qq]是啊是啊,这都被你看出来了

作者: 梦枫辰    时间: 2013-6-5 12:26
狂顶
作者: 梦枫辰    时间: 2013-6-5 12:30
楼主,请求加你为好友,求交流
作者: hoeoi    时间: 2013-6-5 15:06
梦枫辰 发表于 2013-6-5 12:30
楼主,请求加你为好友,求交流

加了
作者: 陈实1991    时间: 2013-6-5 15:21
mcf52255是5V的吗????我正在用MPC5604调鹰眼,MPC5604是5V的,不知道支不支持!!!!!!!!!!!!!!!
作者: hoeoi    时间: 2013-6-5 15:33
陈实1991 发表于 2013-6-5 15:21
mcf52255是5V的吗????我正在用MPC5604调鹰眼,MPC5604是5V的,不知道支不支持!!!!!!!!!!!! ...

mcf52255是3.3v的。 。

作者: hui911127    时间: 2013-6-5 16:14
楼主威武
作者: Mr_Q    时间: 2013-6-5 19:42

作者: 厚朴    时间: 2013-6-5 19:46
陈实1991 发表于 2013-6-5 15:21
mcf52255是5V的吗????我正在用MPC5604调鹰眼,MPC5604是5V的,不知道支不支持!!!!!!!!!!!! ...

呵呵

作者: yyyzrxh    时间: 2013-8-2 11:26
mark
作者: 哈哈!向上!    时间: 2013-9-14 14:52
MCF_DMA_DAR(0) = (uint32)IMG_BUFF;
楼主! (uint32)IMG_BUFF我换成(uint32)&MCF_GPIO_PORTAN ,为什么不管摄像头对着哪里,采集回来的都是白点,我又换成uint32)MCF_GPIO_PORTAN ,采集回来的都是黑点,到底源地址要怎样设置才有效啊?
作者: 哈哈!向上!    时间: 2013-9-14 14:55
(uint32)IMG_BUFF 要怎么设置才能采回AN口的值呀?
求救啊!最近几天都在写采集图像模块,就是采集不回正常的图像!

作者: hoeoi    时间: 2013-10-21 21:12
哈哈!向上! 发表于 2013-9-14 14:52
MCF_DMA_DAR(0) = (uint32)IMG_BUFF;
楼主! (uint32)IMG_BUFF我换成(uint32)&MCF_GPIO_PORTAN ,为什么不 ...

MCF_DMA_SAR(0) = (uint32)CAMERA_ADDRESS;     //这个是设置源地址的
MCF_DMA_DAR(0) = (uint32)IMG_BUFF;               //这个IMG_BUFF是图像数组的头指针


/*************这个下面是我的宏定义******************/
//PTI PTJ PTAN 的输入地址
#define PTI_ADDRESS         0x40100034
#define PTJ_ADDRESS                0x40100036
#define PTAN_ADDRESS        0x4010003A

//参数配置
#define CAMERA_ADDRESS      PTJ_ADDRESS                        //使用PTJ端口




你要使用AN口的话,只要把MCF_DMA_SAR(0) 设置成PTAN_ADDRESS(也就是PTAN输入数据寄存器的地址0x4010003A)就行了。不好意思,比完赛,好久没上论坛了。

作者: 哈哈!向上!    时间: 2013-10-25 09:49
hoeoi 发表于 2013-10-21 21:12
MCF_DMA_SAR(0) = (uint32)CAMERA_ADDRESS;     //这个是设置源地址的
MCF_DMA_DAR(0) = (uint32)IMG_BU ...

呵呵!!!我将 (uint32)CAMERA_ADDRESS改为MCF_GPIO_SETAN就好了!!!谢了!!!


作者: 金刀丸    时间: 2013-11-6 15:14
我用冷火的参考比较模式触发dma,老是提示我配置错误,怎么破?,大神
作者: 金刀丸    时间: 2013-11-7 18:26
哈哈!向上! 发表于 2013-10-25 09:49
呵呵!!!我将 (uint32)CAMERA_ADDRESS改为MCF_GPIO_SETAN就好了!!!谢了!!!

哥,我用DMA采图像,老是显示配置错误(CE位置位),怎么回事?可以把你的DMA程序发我邮箱里吗?我邮箱928848595@qq.com是我地址格式不对吗?
作者: 青青水草    时间: 2013-11-7 19:10

作者: 乡间的麦草    时间: 2013-11-7 19:23
顶一个
作者: 哈哈!向上!    时间: 2013-11-9 12:01
金刀丸 发表于 2013-11-7 18:26
哥,我用DMA采图像,老是显示配置错误(CE位置位),怎么回事?可以把你的DMA程序发我邮箱里吗?我邮箱是我地 ...

我用的就是这样配置的呀!
void Ov7725_exti_Init()
{

MCF_GPIO_PTIPAR = 0x00;      // 配置PTI为普通IO   
    MCF_GPIO_DDRTI = 0x00;    // 设置PTI为输入
//行、场中断
init_irq(3);//行中断
init_irq(5);//场中断

//DMA 配置
MCF_GPIO_PTCPAR |= MCF_GPIO_PTCPAR_DTIN0_DTIN0;  //DTin0

MCF_DMA0_DSR |= MCF_DMA_DSR_DONE;
/* Enable DMA master access in both supervisor and user mode */
MCF_SCM_MPR = MCF_SCM_MPR_MPR(0x05);
//dtim0 trigger DMA0
MCF_SCM_DMAREQC = MCF_SCM_DMAREQC_DMAC0(0x4);

MCF_DMA_SAR(0) = (uint32)CAMERA_ADDRESS;   //换成你摄像头八位数据传输地址就好了  
MCF_DMA_DAR(0) = (uint32)IMG_BUFF;            
MCF_DMA_BCR(0) = CAMERA_DMA_NUM;
MCF_DMA_DCR(0) = //MCF_DMA_DCR_INT   //不触发DMA中断
        MCF_DMA_DCR_SSIZE(1)    //ssize : byte   
      | MCF_DMA_DCR_DSIZE(1)    //dsize : byte
      | MCF_DMA_DCR_DINC     //目的地址自增
       //| MCF_DMA_DCR_SINC     //源地址保持不变
      | MCF_DMA_DCR_D_REQ    //传输完毕后,关闭dma请求
      | MCF_DMA_DCR_EEXT     //外部触发dma
      | MCF_DMA_DCR_CS;   //一个请求触发一次

//DTMR 配置   
MCF_DTIM0_DTMR =  0;    //清空dtmr寄存器

MCF_DTIM0_DTMR = MCF_DTIM_DTMR_CE_RISE //上升沿捕捉
                             | MCF_DTIM_DTMR_CLK_DIV1;   //使用系统时钟sysclk;
   
MCF_DTIM_DTXMR(0) |=  MCF_DTIM_DTXMR_DMAEN;   //dma请求使能

//MCF_DTIM_DTXMR(0) |=  MCF_DTIM_DTXMR_HALTED;  //挂起状态停止计数
   
//MCF_DTIM_DTXMR(0) &=  ~MCF_DTIM_DTXMR_MODE16;
  
//MCF_DTIM_DTMR(0) &=  ~MCF_DTIM_DTMR_FRR;  //Restart  

//MCF_DTIM_DTMR(0) |=  MCF_DTIM_DTMR_OM;   //OutputMode

MCF_DTIM_DTMR(0) |= MCF_DTIM_DTMR_PS(0x5);

      //启动DTMR  
    MCF_DTIM_DTMR(0) |= MCF_DTIM_DTMR_RST;

}



作者: 金刀丸    时间: 2013-11-9 23:37
哥,我的问题貌似解决了,但不知道你一行采了多少个点?
作者: 金刀丸    时间: 2013-11-9 23:38
哈哈!向上! 发表于 2013-11-9 12:01
我用的就是这样配置的呀!
void Ov7725_exti_Init()
{

哥,我的问题貌似解决了,但不知道你一行采了多少个点?
作者: ly8    时间: 2013-11-20 16:52
同样情况啊!
作者: ぺ蒍伱絯孓気    时间: 2013-11-20 17:01
楼主觉得这个单片机的烧写和调试麻烦吗
作者: 13760271915    时间: 2013-12-10 18:50
求楼主QQ号,交流一下冷火
作者: 追随者    时间: 2013-12-18 21:38
顶起
作者: lbdhr1    时间: 2014-1-24 14:50
请问你们用52255超频到多少了?还稳定吗?芯片发热厉害吗?
作者: qms527080813    时间: 2014-1-24 14:53
:):)大家加油啊!
作者: ppg小小    时间: 2014-1-24 15:44
楼主厉害
作者: kicker    时间: 2014-1-24 16:31
难道不用加一句 MCF_DTIM_DTER(0)|=MCF_DTIM_DTER_CAP来使能上升沿触发DMA么?
作者: 箫剑酒仙    时间: 2014-2-14 13:32
好帖啊
作者: 姑娘放开那黄瓜    时间: 2014-2-14 15:06
膜拜
作者: 气宇轩昂    时间: 2014-2-19 17:02
l楼主,请问你使得屏是什么型号的??
作者: 小豪no1    时间: 2014-2-25 22:29
能加个好友吗扣扣号2861539354
作者: 阿灰    时间: 2014-2-26 17:51
着实 佩服 ! 现在用野火的 鹰眼图像数据处理中! 第一次搞,各种蛋疼,楼主神速!

作者: I__can!    时间: 2014-2-27 23:13
楼主很厉害…………
请问楼主的外部触发频率是多少啊?
作者: -Lamborghini    时间: 2014-2-28 13:46
穗佳100引脚的K60?楼主FTM2能用么/
作者: 把球给我。。    时间: 2014-3-2 09:59
那接口是怎么接的呢比如行场中断和 PLCK

作者: Mr、C    时间: 2014-3-20 20:27

作者: 蓝月    时间: 2014-3-20 21:41
楼主好人。。
作者: 露子    时间: 2014-3-26 16:19
init_irq(3);//行中断
init_irq(5);//场中断
这两个函数是怎么写的啊?

作者: martin2011qi    时间: 2014-4-29 13:29

作者: 把球给我。。    时间: 2014-5-1 19:38
这个能用吗?如果源地址由两部分组成怎么破。。
作者: 把球给我。。    时间: 2014-5-11 16:54
楼主还在么。能把你的用了你的程序好像也不行啊,能给个.C和.H文件么?
作者: 吐息间丶时光中    时间: 2015-1-25 13:20
楼主,不知道你能不能注意到我的消息。第十届飞思卡尔我也打算利用coldfire mcf52255,但遇到诸多问题无法解决。请问能不能向你请教下。如果可以,还劳烦加下QQ1692292576.
作者: 心态    时间: 2015-3-16 20:46
求mcf52255oled的完整例程,谢谢各位
作者: 永不言弃的执著    时间: 2015-7-27 03:52
外部中断怎么设置啊
作者: yjhdhr    时间: 2016-6-7 13:58
吐息间丶时光中 发表于 2015-1-25 13:20
楼主,不知道你能不能注意到我的消息。第十届飞思卡尔我也打算利用coldfire mcf52255,但遇到诸多问题无法 ...

你好,mcf52255你还在用吗,加个扣扣请教一下行吗8094425





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2