0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【紫光同創(chuàng)國產(chǎn)FPGA教程】【第十五章】OV5640攝像頭顯示例程

FPGA技術(shù)專欄 ? 來源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-02-22 13:45 ? 次閱讀

原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處(alinx.com)。

1. 實驗簡介

本實驗將采用500萬像素的OV5640攝像頭模組(模塊型號:AN5640)為大家顯示更高分辨率的視頻畫面。OV5640攝像頭模組最大支持QSXGA (2592x1944)的拍照功能,支持1080P、720P、VGA、QVGA視頻圖像輸出。本實驗將OV5640配置為RGB565輸出,先將視頻數(shù)據(jù)寫入外部存儲器,再從外部存儲器讀取送到VGA、LCD等顯示模塊。

2.實驗原理

2.1 OV5640傳感器簡介

OV5640攝像頭模組采用美國OmniVision(豪威)CMOS芯片圖像傳感器OV5640,支持自動對焦的功能。OV5640芯片支持DVP 和MIPI 接口,本實驗所用 OV5640攝像頭模組通過DVP接口和FPGA連接實現(xiàn)圖像的傳輸。

2.2 OV5640的參數(shù)說明

像素:硬件像素500W;

感光芯片:OV5640;

感光尺寸:1/4;

功能支持:自動對焦, 自動曝光控制(AEC),自動白平衡(AWB);

圖像格式 : RAW RGB, RGB565/555/444, YUV422/420和JPEG壓縮;

捕獲畫面:QSXGA(2592x1944), 1080p, 1280x960, VGA(640x480), QVGA(320x240);

工作溫度:-30~70℃, 穩(wěn)定工作溫度為0~50℃

2.3 OV5640的寄存器配置

OV5640的寄存器配置是通過FPGA的I2C(也稱為SCCB接口)接口來配置。用戶需要配置正確的寄存器值讓OV5640輸出我們需要的圖像格式,實驗中我們把攝像頭輸出分辨率和顯示設(shè)備分辨率配置成一樣的, OV5640的攝像頭輸出的數(shù)據(jù)格式在以下的0x4300的寄存器里配置,在我們的例程中OV5640配置成RGB565的輸出格式。

pIYBAGAvUHqAdeZMAACF743-LVA360.jpg

關(guān)于OV5640的寄存器還有很多很多,但很多寄存器用戶無需去了解,寄存器的配置用戶可以按照OV5640的應用指南來配置就可以了。如果您想了解更多的寄存器的信息,可以參考OV5640的datasheet中的寄存器說明。

2.4 OV5640的RGB565輸出格式

OV5640在HREF信號為高時輸出一行的圖像數(shù)據(jù),輸出數(shù)據(jù)在PCLK的上升沿的時候有效。因為RGB565顯示每個像數(shù)為16bit, 但OV5640每個PCLK輸出的是8bit,所以每個圖像的像數(shù)分兩次輸出,第一個Byte輸出為R4~R0和G5~G3, 第二個Byte輸出為G2~G0和B4~B0,將前后2個字節(jié)拼接起來就是16Bit RGB565數(shù)據(jù)。

o4YBAGAvUHuAHmDsAACJY1IfDsA711.jpg

3. 程序設(shè)計

前面的實驗已經(jīng)為本實驗做了大量的鋪墊,包括I2C寄存器的配置、外部存儲器的讀寫,本程序一個比較關(guān)鍵的地方在于視頻同時讀寫,如何做到讀寫不沖突?在設(shè)計幀讀寫模塊時就已經(jīng)考慮到這點,所以有幀基地址選擇,最大4幀選擇,每次讀視頻幀地址和正在寫的幀地址是不同的,而是上次寫入一幀數(shù)據(jù)的地址,這樣就可以避免讀寫沖突,避免視頻畫面裂開錯位。

pIYBAGAvUHuAGpdaAAAuwNhQAQI350.jpg

cmos_8_16bit模塊完成攝像頭輸入的2個8bit數(shù)據(jù)轉(zhuǎn)換到一個16bit數(shù)據(jù)(一個像素),數(shù)據(jù)位寬變成2倍,時鐘頻率不變,所以16bit數(shù)據(jù)是隔一個時鐘周期有效,并不是每個時鐘一直有效。

信號名稱 方向 說明
rst in 異步復位輸入,高復位
pclk in 傳感器像素時鐘輸入
pdata_i in 傳感器8bit數(shù)據(jù)輸入
de_i in 數(shù)據(jù)有效(HREF)
pdata_o out 16bit數(shù)據(jù)輸出
hblank out de_i延時一個時鐘周期
de_o out 數(shù)據(jù)輸出有效

cmos_8_16bit模塊端口

cmos_write_req_gen模塊通過判斷攝像頭的列同步信號cmos_vsync的上升沿,生成ov5640數(shù)據(jù)寫入的請求信號,表示一幀圖像開始寫入請求。另外生成write_addr_index寫地址選擇和read_addr_index讀地址選擇,這里read_addr_index的值會比write_addr_index的值延遲一幀,使得讀和寫的地址不沖突。

信號名稱 方向 說明
rst in 異步復位輸入,高復位
pclk in 傳感器像素時鐘輸入
cmos_vsync in 場同步輸入,每一幀視頻都會變化一次,可以用于一幀的開始或結(jié)束
write_req out 寫數(shù)據(jù)請求
write_addr_index out 寫幀地址選擇
read_addr_index out 讀幀地址選擇
write_req_ack in 寫請求應答

cmos_write_req_gen模塊端口

frame_read_write模塊我們已經(jīng)在前面的例程中使用過,在這里就是把攝像頭采集的數(shù)據(jù)存入寫FIFO里,然后產(chǎn)生DDR3的Burst寫請求,寫入到DDR3中,另外讀也是一樣,當讀FIFO里的數(shù)據(jù)小于一定值時,產(chǎn)生DDR3的Burst讀請求。在這里我們實例化了2個frame_read_write模塊,分別對應2路視頻的數(shù)據(jù)存儲和讀取。這里每路視頻的DDR3的存儲地址是不一樣的。

第一路視頻的存儲地址如下:

o4YBAGAvUHuATrUmAAAJDzY4OT8862.jpg

第二路視頻的存儲地址如下:

pIYBAGAvUHuADACcAAAJf7u3oSI351.jpg

video_rect_read_data模塊功能跟HDMI字符顯示osd_display模塊的功能類似,本例程中是把從DDR3里讀取的視頻圖像跟彩條圖像疊加,因為ax7035使用的是雙目攝像頭,所以需要調(diào)用2個video_rect_read_data模塊。

信號名稱 方向 說明
video_clk in 視頻的像素時鐘
rst in 復位信號
video_left_offset in 視頻顯示的水平偏移地址
video_top_offset in 視頻顯示的垂直偏移地址
video_width in 視頻的寬度
video_height in 視頻的高度
read_req out 讀一幀圖像數(shù)據(jù)請求
read_req _ack in 讀請求應答
read_en out 讀數(shù)據(jù)使能
read_data in 讀到的數(shù)據(jù)
timing_hs in 輸入的行同步信號
timing_vs in 輸入的列同步信號
timing_de in 輸入的數(shù)據(jù)有效信號
timing_data in 輸入的數(shù)據(jù)信號
hs out 輸出的行同步信號
vs out 輸出的列同步信號
de out 輸出的數(shù)據(jù)有效信號
vout_data out 輸出的數(shù)據(jù)信號

4. 實驗現(xiàn)象

1)將攝像頭模塊插入開發(fā)板,保證1腳對齊,1腳在焊盤形狀和其他引腳是有明顯區(qū)別的,是方形的。

AN5640攝像頭模塊連接開發(fā)板連接圖

AN5642攝像頭模塊連接開發(fā)板連接圖

2)如果使用HDMI來顯示,連接好HDMI顯示器,如果使用液晶屏顯示,插入液晶屏模塊,連接方法在《HDMI測試實驗教程》中已講述。

3)下載實驗程序,可以看到攝像頭模塊輸出的視頻。注意:ov5640模塊焦距是可調(diào)的,如果焦距不合適,圖像會模糊,旋轉(zhuǎn)鏡頭,可以調(diào)節(jié)焦距。攝像頭模塊要輕拿輕放,不要用手觸摸元器件。

實驗效果圖

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598880
  • 視頻
    +關(guān)注

    關(guān)注

    6

    文章

    1914

    瀏覽量

    72517
  • 攝像頭
    +關(guān)注

    關(guān)注

    59

    文章

    4752

    瀏覽量

    94384
  • OV5640
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    14138
  • 紫光同創(chuàng)
    +關(guān)注

    關(guān)注

    5

    文章

    78

    瀏覽量

    27445
收藏 人收藏

    評論

    相關(guān)推薦

    【小梅哥FPGAOV5640攝像頭資料,含應用手冊,1280*720P分辨率,30幀應用工程

    AC620_OV5640V2_SDRAM_TFT800_30FPS:使用Verilog直接配置OV5640攝像頭,RGB565、800*480分辨率、30FPS。圖像存入SDRAM后讀出并顯示
    發(fā)表于 04-30 10:26

    ov5640攝像頭采集的圖像顯示出來是錯誤的

    `STM32板子上ov5640攝像頭采集的JPEG數(shù)據(jù)圖像顯示出來是錯誤的。這樣的問題因為什么?該如何修改呢?`
    發(fā)表于 04-16 21:12

    STM32F4及STM32L4系列驅(qū)動OV5640攝像頭的代碼

    送到上位機軟件進行解碼。本文可作為STM32F4及STM32L4系列驅(qū)動OV5640攝像頭的代碼參考,本例程輸出分辨率(640×480)是通過DCMI的CROP方式從大圖片中“剪”出,使用者也可以做
    發(fā)表于 08-20 06:47

    STM32H750是如何獲取OV5640攝像頭圖像及上位機解碼的

    送到上位機軟件進行解碼。本文可作為STM32H7及STM32F7系列驅(qū)動OV5640攝像頭的代碼參考,本例程輸出分辨率(640×480)是通過DCMI的CROP方式從大圖片中“剪”出,使用者也可以做
    發(fā)表于 08-20 06:16

    如何利用stm32驅(qū)動ov5640攝像頭?

    如何利用stm32驅(qū)動ov5640攝像頭?
    發(fā)表于 02-22 07:44

    實驗教程:雙目攝像頭——紫光盤古50K開發(fā)板配套教程

    一、實驗目的Double_OV5640 雙目攝像頭模組采集視頻,通過 HDMI 輸出到外部顯示器。二、實驗設(shè)計OV5640 寄存器配置FPGA
    發(fā)表于 04-18 16:45

    紫光同創(chuàng)FPGA入門指導:OV5640 雙目攝像頭——紫光盤古系列50K開發(fā)板實驗教程

    :產(chǎn)生 visa 時序; ms72xx_ctl:配置 HDMI PHY; 五、實驗現(xiàn)象 步驟 1:按圖所示,連接 Double_OV5640 雙目攝像頭模組,HDMI 顯示器。 注 1:實驗
    發(fā)表于 06-13 16:01

    微雪電子OV5640 攝像頭模塊C型簡介

    OV5640攝像頭模塊C型 500萬像素 自動對焦 閃光燈 控制接口:SCCB 兼容I2C 型號 OV5640 Camera Board (C)
    的頭像 發(fā)表于 12-31 16:55 ?2925次閱讀
    微雪電子<b class='flag-5'>OV5640</b> <b class='flag-5'>攝像頭</b>模塊C型簡介

    微雪電子OV5640攝像頭模塊A型簡介

    OV5640攝像頭模塊A型 500萬像素 控制接口:SCCB 兼容I2C 型號 OV5640 Camera Board (A)
    的頭像 發(fā)表于 01-02 14:41 ?5898次閱讀
    微雪電子<b class='flag-5'>OV5640</b><b class='flag-5'>攝像頭</b>模塊A型簡介

    微雪電子OV5640 攝像頭模塊B型簡介

    OV5640攝像頭模塊B型 500萬像素 魚眼 廣視角 控制接口:SCCB 兼容I2C 型號 OV5640 Camera Board (B)
    的頭像 發(fā)表于 01-02 14:49 ?3755次閱讀
    微雪電子<b class='flag-5'>OV5640</b> <b class='flag-5'>攝像頭</b>模塊B型簡介

    基于OmniVision的OV5640設(shè)計的USB攝像頭模塊

    0V5640 USB攝像頭模塊是基于OmniVision公司的OV5640圖像傳感器進行設(shè)計的USB接口攝像頭模塊,高清免驅(qū)動,尺寸小巧,和廣州創(chuàng)龍AM335x、AM437x、AM57
    的頭像 發(fā)表于 11-12 15:55 ?5674次閱讀
    基于OmniVision的<b class='flag-5'>OV5640</b>設(shè)計的USB<b class='flag-5'>攝像頭</b>模塊

    自動對焦攝像頭模塊OV5640原理圖

    自動對焦攝像頭模塊OV5640原理圖下載
    發(fā)表于 02-13 09:44 ?46次下載

    【正點原子FPGA連載】第十五章 窗口門狗(WWDG)實驗 -摘自【正點原子】新起點之FPGA開發(fā)指南_V2.1

    【正點原子FPGA連載】第十五章 窗口門狗(WWDG)實驗 -摘自【正點原子】新起點之FPGA開發(fā)指南_V2.1
    發(fā)表于 12-05 11:21 ?12次下載
    【正點原子<b class='flag-5'>FPGA</b>連載】<b class='flag-5'>第十五章</b> 窗口門狗(WWDG)實驗 -摘自【正點原子】新起點之<b class='flag-5'>FPGA</b>開發(fā)指南_V2.1

    STM32驅(qū)動攝像頭ov5640的驅(qū)動源碼

    STM32驅(qū)動攝像頭ov5640的驅(qū)動源碼
    發(fā)表于 09-26 14:47 ?7次下載

    如何通過OV5640攝像頭顯示在VGA顯示屏上

    從本例開始,接下來的幾例,都將圍繞OV5640攝像頭來學習,教大家學會,如何通過OV5640攝像頭,采集圖像,并且顯示在VGA
    的頭像 發(fā)表于 10-18 09:20 ?3026次閱讀