找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3122|回復: 0
收起左側

死磕到底2—STM32F407驅動無FIFO無時鐘ov7670

[復制鏈接]
ID:716413 發(fā)表于 2020-7-4 20:29 | 顯示全部樓層 |閱讀模式
本帖最后由 新洲羅遠 于 2020-7-4 20:32 編輯

上次的F103驅動OV7670究竟沒有實用價值,我又買了一塊STM32F407開發(fā)小板,
驅動了無FIFO無時鐘ov7670,320*240每秒28幀(應該還可以快點)。
感覺到這個方案比用有FIFO的劃算,STM32F407開發(fā)小板+ov7670=60元左右。
一、407帶攝像頭接口,取攝像頭數據由片內硬件操作,超爽。
二、我用示波器看PA8輸出時鐘,幅度很小,這不是程序問題,是示波器頻率不夠,
      調試時候不要懷疑這個信號。我在這里白白糾結了幾天。
三、攝像頭相關的口線比較多,一根口線多處設置,還有硬件連接的問題,容易出錯。
       調式時候可以一步一步來,先調SCCB,把攝像頭初始化搞OK,再調直接讀取圖像數據,
       這樣,端口和線路連接都沒有問題了,就可以進入第三步,上DCMI和DMA。
        //ov7670_GPIO2_Init();        //老的端口輸入設置
        //camera_refresh();   //老的取數操作

     這兩句就是直接取數據,不用DCMI和DMA。

int main(void)
{

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統(tǒng)中斷優(yōu)先級分組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)
        {        

        }
}


例程來源于正點原子,特此感謝!

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表