智能车制作

标题: stm32 DMA采集OV7620,采用外部pclk触发,定时器部分怎么设置??@野火 火哥求助 [打印本页]

作者: 何俊    时间: 2013-12-21 10:36
标题: stm32 DMA采集OV7620,采用外部pclk触发,定时器部分怎么设置??@野火 火哥求助
本帖最后由 何俊 于 2013-12-21 10:43 编辑

以下是DMA和TIM部分的设置,但是数据传入上位机没图像。
__IO uint8_t PHOTO_BUFF[ROW][COLUMN]; //图像原始数据
DMA_InitTypeDef DMA_InitStruct;
TIM_ICInitTypeDef  TIM_ICInitStruct;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStruct;

void DMA_Config()
{

  DMA_DeInit(DMA1_Channel6);
  DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)&GPIOD->IDR;   //该参数用以定义DMA外设基地址
  DMA_InitStruct.DMA_MemoryBaseAddr = (uint32_t) PHOTO_BUFF;       //该参数用以定义DMA内存基地址
  DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralSRC;                  //规定了外设是作为数据传输的目的地还是来源
  DMA_InitStruct.DMA_BufferSize = 100;                             //用以定义指定DMA通道的DMA缓存的大小,单位为数据单位
  DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;    //用来设定外设地址寄存器递增与否
  DMA_InitStruct.DMA_MemoryInc =DMA_MemoryInc_Disable;// DMA_MemoryInc_Enable;//用来设定内存地址寄存器递增与否
  DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;   //设定了外设数据宽度
  DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;     //设定了内存数据宽度
  DMA_InitStruct.DMA_Mode = DMA_Mode_Circular;                     //设置了CAN的工作模式
  DMA_InitStruct.DMA_Priority = DMA_Priority_VeryHigh;             //设定DMA通道x的软件优先级
  DMA_InitStruct.DMA_M2M = DMA_M2M_Disable;                        //使能DMA通道的内存到内存传输
  DMA_Init(DMA1_Channel6, &DMA_InitStruct);   
  DMA_ITConfig(DMA1_Channel6,DMA_IT_TC,ENABLE);

  DMA_Cmd(DMA1_Channel6, ENABLE);
}


  /* TIM3 Configuration ------------------------------------------------------*/
  /* TIM3CLK = 72 MHz, Prescaler = 0, TIM3 counter clock = 72 MHz */
  /* Time base configuration */
void Timer3_Init() //PC6
{ TIM_TimeBaseStruct.TIM_Period =255;                               //设置了在下一个更新事件装入活动的自动重装载寄存器周期的值
  TIM_TimeBaseStruct.TIM_Prescaler = 0;                              //设置了用来作为TIMx时钟频率除数的预分频值
  TIM_TimeBaseStruct.TIM_ClockDivision = 0;                          //设置了时钟分割
  TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up;           //选择了计数器模式
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStruct);

  /* Input Capture Mode configuration: Channel1 */                    //选择了TIM输入捕获模式
  TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;                       //选择通道
  TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising;            //输入活动沿
  TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;        //选择输入
  TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;                  //设置输入捕获预分频器
  TIM_ICInitStruct.TIM_ICFilter = 0;                                  //选择输入比较滤波器
  TIM_ICInit(TIM3, &TIM_ICInitStruct);

         //TIM_ETRConfig(TIM3,TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_Inverted,0);

  TIM_TIxExternalClockConfig(TIM3,TIM_TIxExternalCLK1Source_TI2, TIM_ICPolarity_Rising,0);  //选择触发为外部时钟
  TIM_ETRClockMode2Config(TIM3,TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);  //外部时钟配置2
        /* Enable TIM3 DMA */
  TIM_DMACmd(TIM3, TIM_DMA_Trigger, ENABLE);
  /* Enable TIM3 counter */
        TIM_Cmd(TIM3, ENABLE);
}


作者: quzhanguang    时间: 2013-12-22 00:14
如果是F4或F2的话,用DCMI采集更方便,网上也有调好的例程。
我的定时器触发DMA也没调好呢(F407)的板子。
作者: 何俊    时间: 2013-12-22 08:56
quzhanguang 发表于 2013-12-22 00:14
如果是F4或F2的话,用DCMI采集更方便,网上也有调好的例程。
我的定时器触发DMA也没调好呢(F407)的板子。

。。。是F1的,可能调的是对的,但是F1的速度接收不到。

作者: quzhanguang    时间: 2013-12-22 14:17
何俊 发表于 2013-12-22 08:56
。。。是F1的,可能调的是对的,但是F1的速度接收不到。

貌似DMA有独立的高速总线,不会和CPU竞争。速度应该很高的。
你可以先设置地址从内存到内存,先排除IO数据设置和读取的问题,成功触发后再进一步从外设到内存。

作者: 何俊    时间: 2013-12-22 16:18
quzhanguang 发表于 2013-12-22 14:17
貌似DMA有独立的高速总线,不会和CPU竞争。速度应该很高的。
你可以先设置地址从内存到内存,先排除IO数 ...

用的F1,主频低,可能不会完整接收到PCLK信号

作者: quzhanguang    时间: 2013-12-22 16:36
何俊 发表于 2013-12-22 16:18
用的F1,主频低,可能不会完整接收到PCLK信号

超频最高到多少呢?
作者: 何俊    时间: 2013-12-22 17:08
quzhanguang 发表于 2013-12-22 16:36
超频最高到多少呢?

用的103,没敢超频,还是72M,网上说100M左右还算稳定。

作者: quzhanguang    时间: 2013-12-22 18:41
何俊 发表于 2013-12-22 17:08
用的103,没敢超频,还是72M,网上说100M左右还算稳定。

足够了吧,摄像头的40M左右。

作者: UnciaUncia    时间: 2014-5-23 16:54
楼主,介绍一下怎样快速采集7620的数据吗?我用中断读IO数据,只能读取一半
作者: Illidan-LG    时间: 2016-9-1 23:11
啊啊啊,请问楼主搞定了吗?弄的好头疼,收不到数据
作者: lzhh    时间: 2016-10-25 23:18
同问,跪求解答
作者: cjerome    时间: 2017-4-4 09:57
请问楼主解决了吗?求解答,拜谢。。
作者: znjqr    时间: 2017-4-4 11:13
感恩无私的分享与奉献





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