找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2178|回复: 0
收起左侧

死磕到底2—STM32F407驱动无FIFO无时钟ov7670

[复制链接]
ID:716413 发表于 2020-7-4 20:29 | 显示全部楼层 |阅读模式
本帖最后由 新洲罗远 于 2020-7-4 20:32 编辑

上次的F103驱动OV7670究竟没有实用价值,我又买了一块STM32F407开发小板,
驱动了无FIFO无时钟ov7670,320*240每秒28帧(应该还可以快点)。
感觉到这个方案比用有FIFO的划算,STM32F407开发小板+ov7670=60元左右。
一、407带摄像头接口,取摄像头数据由片内硬件操作,超爽。
二、我用示波器看PA8输出时钟,幅度很小,这不是程序问题,是示波器频率不够,
      调试时候不要怀疑这个信号。我在这里白白纠结了几天。
三、摄像头相关的口线比较多,一根口线多处设置,还有硬件连接的问题,容易出错。
       调式时候可以一步一步来,先调SCCB,把摄像头初始化搞OK,再调直接读取图像数据,
       这样,端口和线路连接都没有问题了,就可以进入第三步,上DCMI和DMA。
        //ov7670_GPIO2_Init();        //老的端口输入设置
        //camera_refresh();   //老的取数操作

     这两句就是直接取数据,不用DCMI和DMA。

int main(void)
{

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);  //初始化延时函数
        uart_init(115200);                //初始化串口波特率为115200
//   usart2_init(42,115200);                //初始化串口2波特率为115200
        LED_Init();                                        //初始化LED
         LCD_Init();                                        //LCD初始化  
  //        KEY_Init();                                        //按键初始化
        
         TIM3_Int_Init(10000-1,8400-1);//10Khz计数,1秒钟中断一次        //打印帧率
        
//          TIM1_PWM_Init();
//          usmart_dev.init(84);                //初始化USMART
        
         POINT_COLOR=RED;//设置字体为红色         
        
        LCD_ShowString(30,130,240,16,16,"OV7670 Init?");
        
        
        while(OV7670_Init())//初始化OV7670
        {
                LCD_ShowString(30,130,240,16,16,"OV7670 ERR");
                delay_ms(200);
          LCD_Fill(30,130,239,170,WHITE);
                delay_ms(200);
        }
        
        LCD_ShowString(30,130,200,16,16,"OV7670    OK   ");
        delay_ms(1500);        
               
        OV7670_Window_Set(12,176,240,320);//OV7670设置输出窗口
        //OV7670_Color_Saturation(4);//颜色饱和度
        
  //ov7670_GPIO2_Init();        //老的端口输入设置
        //camera_refresh();   //老的取数操作
        
         My_DCMI_Init();                        //DCMI配置
         DCMI_DMA_Init((u32)&LCD->LCD_RAM,  10,  DMA_MemoryDataSize_HalfWord,  DMA_MemoryInc_Disable);//DCMI DMA配置  
         DCMI_Start();                 //启动传输
         
         while(1)
        {        

        }
}


例程来源于正点原子,特此感谢!

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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