查看: 10606|回复: 6

[求助] K60 DMA采集图像问题

[复制链接]

该用户从未签到

1

主题

1

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2012-4-23 22:17:57 | 显示全部楼层 |阅读模式
#include "MK60N512VMD100.h
#include "includes.h"
uint8 image_data[27][200];//存放数据数组
uint16 row=0;//摄像头行计数
uint8 imagerow=0;//采集行计数
uint8  flag_image=0,flag_DMA=0;//标志一场采集结束
uint16 data_table[]={46,53,68,83,97,109,120,130,139,147,
                                  155,163,170,178,186,192,197,202,206,210,
                                  214,218,222,225,228,231,234};
int8  chang,hang,dma;
void pllinit180M(void)
{
 uint32_t temp_reg;
        //使能IO端口时钟   
 
    //这里处在默认的FEI模式
    //首先移动到FBE模式
    MCG_C2 = 0; 
    //MCG_C2 = MCG_C2_RANGE(2) | MCG_C2_HGO_MASK | MCG_C2_EREFS_MASK;
    //初始化晶振后释放锁定状态的振荡器和GPIO
    SIM_SCGC4 |= SIM_SCGC4_LLWU_MASK;
    LLWU_CS |= LLWU_CS_ACKISO_MASK;
   
    //选择外部晶振,参考分频器,清IREFS来启动外部晶振
    //011 If RANGE = 0, Divide Factor is 8; for all other RANGE values, Divide Factor is 256.
    MCG_C1 = MCG_C1_CLKS(2) | MCG_C1_FRDIV(3);
   
    //等待晶振稳定    
    //while (!(MCG_S & MCG_S_OSCINIT_MASK)){}              //等待锁相环初始化结束
    while (MCG_S & MCG_S_IREFST_MASK){}                  //等待时钟切换到外部参考时钟
    while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2){}
    //进入FBE模式,
    MCG_C5 = MCG_C5_PRDIV(0x0e);//分频在2~4MHz之间,分频后频率=晶振频率/(PRDIV+1) 3.3MHz               
    MCG_C6 = 0x0;//确保MCG_C6处于复位状态,禁止LOLIE、PLL、和时钟控制器,清PLL VCO分频器
    temp_reg = FMC_PFAPR;//保存FMC_PFAPR当前的值
    FMC_PFAPR |= FMC_PFAPR_M7PFD_MASK | FMC_PFAPR_M6PFD_MASK | FMC_PFAPR_M5PFD_MASK
                     | FMC_PFAPR_M4PFD_MASK | FMC_PFAPR_M3PFD_MASK | FMC_PFAPR_M2PFD_MASK
                     | FMC_PFAPR_M1PFD_MASK | FMC_PFAPR_M0PFD_MASK; //通过M&ampFD置位M0PFD来禁止预取功能  
    ///设置系统分频器
    //MCG=PLL, core = MCG, bus = MCG/3, FlexBus = MCG/3, Flash clock= MCG/8
    SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1(0) | SIM_CLKDIV1_OUTDIV2(2)
                 | SIM_CLKDIV1_OUTDIV3(2) | SIM_CLKDIV1_OUTDIV4(7);      
    FMC_PFAPR = temp_reg;//从新存FMC_PFAPR的原始值
    //设置VCO分频器,使能PLL为100MHz, LOLIE=0, PLLS=1, CME=0, VDIV=26
    MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(30);  //VDIV = 31 (x54)
                                                  //VDIV = 26 (x50)
    while (!(MCG_S & MCG_S_PLLST_MASK)){}; // wait for PLL status bit to set   
    while (!(MCG_S & MCG_S_LOCK_MASK)){}; // Wait for LOCK bit to set   
    //进入PBE模式   
    //通过清零CLKS位来进入PEE模式
    // CLKS=0, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0
    MCG_C1 &= ~MCG_C1_CLKS_MASK;
    //等待时钟状态位更新
    while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){};
}

//数码管显示速度值
void GPIO_Init()
{

     //LED  
        gpio_init (PORTA,14,1,1);
        gpio_init (PORTA,15,1,0);
        gpio_init (PORTA,16,1,0);
        gpio_init (PORTA,17,1,1);
      //DMA
        PORTD_PCR0=PORT_PCR_MUX(1);//B0引脚设置为GPIO模式
 PORTD_PCR1=PORT_PCR_MUX(1);//B1引脚设置为GPIO模式
 PORTD_PCR2=PORT_PCR_MUX(1);//B2引脚设置为GPIO模式
 PORTD_PCR3=PORT_PCR_MUX(1);//B3引脚设置为GPIO模式
 PORTD_PCR4=PORT_PCR_MUX(1);//B4引脚设置为GPIO模式
 PORTD_PCR5=PORT_PCR_MUX(1);//B5引脚设置为GPIO模式
 PORTD_PCR6=PORT_PCR_MUX(1);//B6引脚设置为GPIO模式
 PORTD_PCR7=PORT_PCR_MUX(1);//B7引脚设置为GPIO模式
 GPIOD_PDDR&=0XFFFFFF00;//D0~D7设置为输入,数字摄像头8位灰度输入
 
       
 PORTB_PCR22=PORT_PCR_MUX(1)|PORT_PCR_IRQC(1);//上升沿触发DMA请求
        GPIOB_PDDR&=~(1
我知道答案 目前已有5人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-4-24 21:51:52 | 显示全部楼层

    RE:K60 DMA采集图像问题

    数据变化是正常的,由于环境的因素,比如光线等,可能会引起某些点的颜色和会发生变化。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    79

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    441
    最后登录
    1970-1-1
    发表于 2012-4-24 22:27:00 | 显示全部楼层

    RE:K60 DMA采集图像问题

    也有可能是DMA传输,发生了抢总线控制权……看不到采集效果,不好说原因
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    45

    帖子

    0

    新手上路

    Rank: 1

    积分
    64
    最后登录
    1970-1-1
    发表于 2012-5-3 16:15:35 | 显示全部楼层

    RE:K60 DMA采集图像问题

    为啥没有DMA的中断啊?
    你初始化不是写了DMA中断使能么?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    1
    最后登录
    1970-1-1
    发表于 2013-4-4 11:12:25 | 显示全部楼层

    RE:K60 DMA采集图像问题

      应该还有别的采集方案吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
    发表于 2014-1-8 02:14:48 | 显示全部楼层

    回复:K60 DMA采集图像问题

    小弟刚学做智能车,请问这代码对应接的引脚是什么,万分感谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    2019-5-27
    发表于 2014-6-21 02:24:02 | 显示全部楼层

    回复:K60 DMA采集图像问题

    回复第 3 楼 于2012-04-24 22:27:00发表:
    也有可能是DMA传输,发生了抢总线控制权……看不到采集效果,不好说原因
     
     
     
    火哥,我用这个程序的时候发生了抢总线权限的情况,图像的某些行数据出现了晚传输或早传输的情况,图像边缘出现锯齿。我采集的时候关闭了DMA中断,后就可以很好的采集到图像,但是这样会影响到其他模块的使用,不知道这个怎么解决的。
     
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 08:04 , Processed in 0.099560 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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