天天看點

cmos sensor (圖像傳感器) CSI接口

Chapter 39(Page 1429)

CMOS Sensor Interface(CSI)

 本章介紹了CMOS圖像傳感器接口(CSI)的架構,操作守則以及程式設計原型。該CSI接口能夠使得MX27直接連接配接到外部的CMOS圖像傳感器上。

CMOS圖像傳感器分為兩類,非智能和智能。非智能的這類圖像傳感器隻是支援傳統的攝像頭時序(場同步和行同步),然後輸出一個Bayer(拜耳)以及

統計的資料,而智能傳感器支援CCIR656視訊解碼格式,并且還提供了額外的一些圖像處理(例如:圖像壓縮,圖像濾波預處理,以及多種資料輸出格式)

CSI的包含的能力如下:

   .前端-配置邏輯接口以便支援大多數通用的可用的CMOS攝像頭接口。

   .支援CCIR656視訊接口以及傳統的攝像頭接口。

   .8位資料口,支援友善YCC,YUV,Bayer或者是RGB的資料格式輸入。

   .完全可控的8-bit或16-bit資料到32-bit的FIFO進行打包

   .32*32大小的FIFO存儲接受到的的圖像像素資料,該FIFO可以通過可程式設計的IO或者是DMA進行讀取.

   .後端-提供了直接到eMMA的預處理PrP塊接口(PrP和PP組成了MX27圖形加速器eMMA,PrP和PP能夠用來給視訊做預處理和後期處理,例如,放大,縮小,顔色轉換)

   .提供sensor的可屏蔽中斷源,該中斷源也是中斷可控的: 開始Frame,結束Frame,Change of Field,FIFO Full

   .提供給外部sensor用的,可配置的主時鐘頻率

   .由統計資料産生的自動曝光(AE)和自動白平衡(AWB)控制。

39.1 CSI結構

 39-5圖,顯示了CMOS攝像頭接口的框圖,它包含了2個控制寄存器(Control Register 1和3)來建立接口的時序以及中斷産生,另外一個控制器

(Control Register 2)用來産生統計資料,還有一個狀态寄存器,接口邏輯,資料包邏輯,CCIR時序編碼,中斷控制,主時鐘産生源,統計資料産生,

32*32圖像資料接受FIFO(RxFIFO),還有16*32統計資料FIFO(StatFIFO).

39.2 CSI接口信号描述

 CSI子產品和外部的CMOS圖像傳感器的接口如下:

   .CSI_VSYNC input    Vertical Sync(Start of Frame) 攝像頭傳輸進CSI接口,是場同步接口,提供起始幀

   .CSI_HSYNC input  Horizontal Sync(Blank Signal) 攝像頭傳輸進CSI接口,是行同步接口,提供行同步信号,判斷消隐信号

   .CSI_D[7:0]  input   8-bit攝像頭資料總線(傳輸YUV,YCC,RGB,或者Bayer等資料)

   .CSI_MCLK output  Sensor Master Clock 該接口是CSI輸出接口,提供給外部攝像頭的主時鐘

   .CSI_PIXCLK  input    pixel Clock      該接口是攝像頭輸出的像素時鐘,一般都等于MCLK主時鐘

        在CSI的RxFIFO和eMMA的預處理塊PrP之間有一條用來快速傳輸資料的資料線. 該資料線可以enabled或者disabled。

    當該bus enabled時,CSI的RxFIFO會從AHB總線上取消,并且連接配接到PrP上。任何CPU或者DMA通道到RxFIFO寄存器的請求讀取都将被忽略(因為連接配接到PrP上了)

  所有的CSI中斷都被MASK防止軟體通路FIFO以及相關的狀态寄存器。

    RxFIFO設定Full level等級為4/8/16 Words,如果是24words那麼内部邏輯認為是8Words.

    使用者使用RxFIFO的full level來參考資料格式和線性寬度,來確定傳輸的幀是一個完整的幀, 圖像的大小(in Words)必須是RxFIFO設定的full level

 的整數倍。

 關系如下:

 資料格式  每個像素包含的byte數目      每個Words包含的像素數目     RxFIFO Full level等級    所需要的線寬(line Width)

 YUV422        2    2     4/8/16Words        8/16/32的倍數

 YCC422        2    2     同上                      8/16/32的倍數

 RGB565       2    2      同上                       8/16/32的倍數

 RGB888       4    1      同上                         4/8/16的倍數

 Bayer           1    4                                   16/32/64的倍數

39.3 操作原理 

  該小段描述sensor接口的操作模式

  CSI設計是為了支援普通的sensor接口時序以及CCIR656的視訊接口時序。傳統的CMOS傳感器典型使用SOF,HSYNC(消隐),和PIXCLK信号

 給Bayer或者YUV輸出。智能CMOS傳感器,一般在片上都有圖像處理,并且通常都支援視訊模式的傳輸,它們使用了内嵌的時序編碼來取代了SOF和BLANK信号。

 該時序編碼依據的标準就是CCIR656.

 39.3.1 門選通時鐘模式(Gated Mode)

   VSYNC,HSYNC,以及PIXCLK信号采用的都是門選時鐘模式(脈沖門)

 一個幀通常都開始于VSYNC的上升沿_||__,然後HSYNC信号開始變高HIGH,并且hold高電平整行資料(line)。并且當HSYNC信号是高電平的時候,

     pixel clock才是合法的像素時鐘,Data資料就是每HSYNC高電平期間,每個pixel clock上升沿讀取的資料才是有效資料。當HSYNC為低電平的時候

     那麼該行就結束了。pixel clock就是不合法了,并且CSI也停止從stream中接收資料。然後等待下一行的HSYNC重複開始,最後重複VSYNC進入下一幀。

 39.3.2 非門選通時鐘模式(non-Gated Mode)

  該模式下,隻有VSYNC和pixel clock兩個信号使用到,HSYNC是被忽略的。

  該模式下,總的時間是和gated mode一樣的,差別隻是在于HSYNC信号。HSYNC是被CSI忽略的,所有的pixel clock時鐘所表示的資料都是合法的,

 其實差別就是Gate模式的pixel clock是一直開着的,而該模式下是和HSYNC同步進行了與門的操作,隻保留了有效資料的pixel clock.是以pixel clock

 在非法資料時候是低電平。

 39.3.3 CCIR656接口模式

  在CCIR656模式中,隻有pixel clock和DATA[7:0]信号被使用到。起始幀VSYHC和BLANK消隐信号都被攝像頭内直接内嵌的時序編碼根據時序直接替換

 為有效資料流,不需要後期進行資料流的處理。每一個有效行伴随SAV碼激活,并且伴随EAV碼結束。有一些方案,數字化的消隐信号是插在SAV和EAV之間的。

 CSI會從資料流中進行編碼以及濾出相關的時序,來還原VSYHC和HSYNC信号,來給内部使用,例如統計塊控制和CSI-to-PrP互連時。

 資料從直接轉發,以原來連續的方式進行打包。是以,第一幀是跟在第二幀後面的(如果得到了2幀的話)。是以,該幀序是需要重新進行排序的,來還原原來的圖像。

 COF(Change of Field改變域/幀/場) ,它觸發奇偶場的變化。中斷服務會讀取狀态寄存器來确定是否是目前的幀。

 依據CCIR656标準,圖像必須是625/50幀的PAL,或者是525/60幀的NTSC格式。另外,圖像還要交錯成奇偶場, 垂直和行消隐資料都被填入特定的行。

 資料必須是YCC422格式,每個像素包含了2 bytes,Y+Cr+Y+Cb.這些都是TV模式的設定。

 該CSI僅僅支援PAL和NTSC制式。

 從39-3圖中可以看到,SOF是一個中斷,時序編碼timing codec中斷産生,表示來了新的幀,SOV1和SOV2是表示奇偶域。

 39-4,39-5兩圖表示具體的碼和有效資料位。

 39.3.4 CCIR656更進模式

        CMOS攝像頭系統提供的VGA或CIF分辨率,CIF标準中,奇偶場交錯不用很嚴格的指出,因為CIF圖像本身就很小,使用奇場或偶場就可以了。

        一般是使用奇場,即Field 1.大多數的sensor都支援該CCIR模式,是以在CIF下,隻要一個SOF中斷進入新的一幀,而不需要SOV來判斷奇偶場了。

 39.3.5 CCIR656編碼錯誤校驗

  依據CCIR編碼表,SAV和EVAV之間的保護資料是被編碼過的,使用這種方法,編碼器可以糾正1-bit錯誤,可以檢查2-bit的錯誤。

  該特征隻是在CSI的CCIR編碼中,僅僅是奇偶交錯模式中支援。

 39.4 中斷産生

 39.4.1起始幀中斷Start Of Frame Interrupt(SOF_INT)--- 一般都是VSYHC的上升沿開始,就觸發了

  在傳統模式中,VSYHC信号來自傳感器,是以SOF_INT中斷是由VSYHC信号的上升沿或者是下降沿觸發的。

  在CCIR模式中,SOF中斷資訊是從嵌入的代碼檢索出來的,并且産生SOF_INT的。

  在CCIR更進模式中,有下面兩個SOF中斷:

   .内部VSYHC模式,SOF是從嵌入的代碼檢索出來

   .外部VSYHC模式,來自外部攝像頭輸入的VSYHC信号,根據VSYHC的上升沿或下降沿來産生SOF.

 39.4.2 結束幀中斷End of Frame Interrupt(EOF_INT)

  當一幀結束或者是一個在RxFIFO中的完整的幀資料被全部讀出時,EOF中斷就産生了,EOF并不在CSI的PrP模式中使用。

 39.4.3 改變幀中斷Change Of Field Interrupt(COF_INT)

  該中斷是用在CCIR奇偶域交錯的模式下使用,該中斷當Field 1 和Field 2交錯的時候産生。F1_INT和F2_INT會産生

 39.4.4 CCIR錯誤中斷(ECC_INT)

  CCIR中斷僅僅用在CCIR奇偶場交錯的模式下使用,因為如果沒有奇偶場交錯的話,不需要校驗該幀的奇偶幀,如果有的話,那麼如果是錯誤下,

  還将該奇偶場拼接進行合成的話,那麼畫面肯定出問題了。

 39.4.5 Data Packing Style資料打包格式

  由于圖像在采集的過程中,不同的端口大小,不同的階段,資料的位元組順序是非常重要的。

  為了能夠靈活的對圖像資料進行打包,CSI子產品提供了資料交換空間,通過PACK_DIR和SWAP16_EN bits(包含在CSIRC1--CSI Control Register1中)

  資料在送出給RxFIFO之前,利用設定PACK_DIR的bit位來進行打包。

 39.4.6 RxFIFO路徑

  Bayer資料是一個從圖像傳感器獲得典型的行資料。該資料寬度一定要通過軟體轉化為RGB空間或者是YUV空間的資料格式。 

  PACK_DIR bit設定為0,表示系統是小端,不是大端系統。使用P0,P1,P2,P3存放了打包了的資料内容,P0是第一個Data,依次,P3是最後一個data.

 Page 1438

  39.4.6.1 RGB565資料

  (我們用的ov9660-0xd7[1:0]是選擇YUV還是RGB模式,YUV=00,RGB=01)

  RGB565資料是從圖像傳感器獲得的處理過的資料,該資料可以直接顯示到Video Buffer上面。

  這個資料格式是16-bits的寬度,該資料可以直接通過CSI給Memory,然後Memory給LCDC.

  39.4.6.2 RGB888資料格式 ----24位bit屏可用

 總結:

  MX27提供了一個非常專業的攝像頭CSI接口,可以配置相關的口進行接口比對。

  我們的攝像頭是ov9660,輸出設定為YUV模式,是以,CSI擷取的資料也是YUV格式的資料,是以還需要通過軟體,将YUV的格式轉化為

  RGB565、RGB656、RGB888格式放到LCDC對應的Memory進行顯示輸出。

  轉化公式如下:

  From RGB to YUV

  Y = 0.299R + 0.587G + 0.114B

  U = 0.492 (B-Y)

  V = 0.877 (R-Y)

  It can also be represented as:

  Y =  0.299R + 0.587G + 0.114B

  U = -0.147R - 0.289G + 0.436B

  V =  0.615R - 0.515G - 0.100B

  From YUV to RGB

  R = Y + 1.140V

  G = Y - 0.395U - 0.581V

  B = Y + 2.032U

我的額外話題:

目前攝像頭的參數我們基本上主要看:

1.攝像頭像素是多少萬的? 我這邊羅列了一部分

2560*1960 =4915200,也就是通常說的500W

1600*1200 =1920000,也就是200W

1280*960 =1228800,也就是130W像素

640*480=307200,也就是30W

該像素可以放映到你的抓圖上面的大小,該像素就是說明你的CMOS或者是CCD感光元件的像素點多少,可以想象在相同的面積上,數量越多,感光元件肯定要越小,感光元件小,那麼圖像的品質其實會變差,這個當然可以了解,但是從大的方面來說,隻要鏡頭好,光源充足,那麼效果也會變好,這樣畫面就比像素低的更加的細膩,是以高像素的好處就在這裡。有種專業上的說法,是你的攝像頭達到幾線幾線的?

2.幀率?也就是看你的最大分辨率的時候能夠達到的最大幀率是多少?

像OV系列來說,一般最大的分辨率下的幀率是30幀左右,也可以調頻率進行提高。我們人的眼睛一般情況下,隻要圖像能夠達到每秒30幀,那麼利用眼睛的視覺殘留,基本上可以感覺到圖像是連續的,人眼的視覺殘留時間超過30ms。

我調試攝像頭的時候,可以發現有個非常嚴重的現象就是,加開夜光模式的時候,幀率掉的非常嚴重,這個估計就是DSP後期處理的時候,處理不了每秒30幀,隻能往下降了,黑白的話效果好一些。

3. 鏡頭也是非常關鍵的,這個就要看不同的廠家,不同的顯示效果

題外篇

我們買到的數位相機,現在都是1300W以上的,但是并不是說我們的攝像模式下可以達到這個分辨率,不信的話你可以去試試看,因為攝像要求比較高,需要達到每秒30幀以上,這個對DSP處理的負荷很重(RGB--顔色空間轉換----H264編碼/JPG編碼),有人說我們為什麼不利用數位相機的連續抓拍功能,這樣既能保證分辨率又可以攝像,其實原理是一樣的,抓拍也不可能高像素下達到每秒30幀。

還有,我們有一些非常高的像素是如何達到的呢?

其實作在的做法都是靠拼裝,也就是說兩塊CCD感光子產品分别進行攝像,然後在末端進行同步,這樣就能提高像素,而且DSP的負荷不用太過進行提升,但是這樣的拼裝方法有一個缺陷就是,如果子產品太多,那麼在末端進行同步就很難把握了,是以現在一般都是2個CCD或者3個CCD,再多就不行了。

Chapter 40 

Video Codec 

該視訊編解碼子產品是MX27的多媒體視訊處理器子產品。參考圖40-1.

40.1特征

視訊編解碼子產品支援下面的多媒體視訊流處理:

 .多媒體标準視訊編碼

 -MPEG4 part-II 簡單類 編碼、解碼

 -H264/AVC 基本規範 編解碼

 -h263 P3編解碼

 -多方會議呼叫:最多可同時處理4路圖像/位流的編解碼

 -全雙工多格式支援: 在做MPEG4編碼的同時可以做H264的解碼

 .Coding 工具

 ......

40.2

概括

視訊整合了H264 BP,MPEG4 SP,H263 P3( annex I,J,K,T)視訊處理标準

Video Codec使用兩個總線接口協定:IP寄存器通道和AHB資料通道。它使用了3個記憶體:嵌入的記憶體,系統内部的記憶體,以及系統外部的記憶體。

1.檔案位置:

  drivers/media/video/mxc/下有opl,output,capture三個檔案

  包含的驅動有mx27_csi.ko opl.ko ov9650_cam.ko mx27_capture.ko

2.mx27_csi.c----------------mx27 CSI硬體

  opl.c---------------------mx27 旋轉相關

  ov9650_cam.c--------------mx27 外接攝像頭的驅動,用i2c驅動

  mx27_v4l2_capture.c+mxc_prpsw.c...------mx27_caputre.ko 一些應用程式,記憶體相關比較複雜

繼續閱讀