欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11211|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

SCCB接口時(shí)序(兼容I2C)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140343 發(fā)表于 2016-9-25 10:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
SCCB的總線時(shí)序與I2C基本相同,它的響應(yīng)信號ACK被稱為一個(gè)傳輸單元的第9位,分為Don’t care和NA。Don’t care位由從機(jī)產(chǎn)生;NA位由主機(jī)產(chǎn)生,由于SCCB不支持多字節(jié)的讀寫,NA位必須為高電平。另外,SCCB沒有重復(fù)起始的概念,因此在SCCB的讀周期中,當(dāng)主機(jī)發(fā)送完片內(nèi)寄存器地址后,必須發(fā)送總線停止條件。不然在發(fā)送讀命令時(shí),從機(jī)將不能產(chǎn)生Don’t care響應(yīng)信號。

    由于I2C和SCCB的一些細(xì)微差別,所以采用GPIO模擬SCCB總線的方式。SCL所連接的引腳始終設(shè)為輸出方式,而SDA所連接的引腳在數(shù)據(jù)傳輸過程中,通過設(shè)置IODIR的值,動態(tài)改變引腳的輸入/輸出方式。SCCB的寫周期直接使用I2C總線協(xié)議的寫周期時(shí)序;而SC-CB的讀周期,則增加一個(gè)總線停止條件


//--------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------
2.2 SCCB通信規(guī)范


  SCCB(Serial Camera Control Bus)是OminiVision公司定義的主從模式串行通信協(xié)議,用于控制該公司圖像傳感器系列芯片的內(nèi)部寄存器。該協(xié)議有通信使能信號SIO_E、時(shí)鐘信號SIO_C和數(shù)據(jù)信號SIO_D,在簡化引腳的封裝中不再提供SIO_E引腳,協(xié)議也變成了兩線串行通信。協(xié)議支持的最高串行通信速率是400 Kb/s,規(guī)定圖像傳感器在通信中只能作為SLAVE工作。一SCCBMASTER可以控制1~8個(gè)SLAVE工作,由不同的ID來識別,在只有一個(gè)SLAVE時(shí)固定SLAVE的ID為42H(寫)和43H(讀)。該協(xié)議符合網(wǎng)絡(luò)攝像機(jī)CPU的I2C口時(shí)序子集,設(shè)計(jì)中OV529作為SCCB的MASTER,并且只帶1個(gè)SLAVE OV7720。協(xié)議要求數(shù)據(jù)線必須在時(shí)鐘信號高電平期間穩(wěn)定,在低電平時(shí)更新。協(xié)議支持3字節(jié)寫、2字節(jié)寫和2字節(jié)讀三種傳輸模式。傳輸數(shù)據(jù)時(shí)每個(gè)字節(jié)包括9位串行數(shù)據(jù)位,除了8位數(shù)據(jù),還有第9位不相關(guān)位或NA位,用在有多個(gè)SLAVE的系統(tǒng)來標(biāo)識通信是否完成。SLAVE可以用兩種方式應(yīng)答該位,一種是正在被寫的SLAVE在收到數(shù)據(jù)后驅(qū)動該位為0表示成功;另一種是SLAVE不應(yīng)答該位,這種情況下所有SLAVE的第9位保持懸空。在3字節(jié)寫周期MASTER必須提供子地址,即芯片中寄存器的地址,第3字節(jié)為所寫數(shù)據(jù)。讀周期不提供子地址,但必須由MASTER把數(shù)據(jù)后的NA位(第9位)驅(qū)動為高電平。所以在每個(gè)讀周期前必須有3字節(jié)或2字節(jié)寫操作,使SLAVE獲得寄存器地址,其中的2字節(jié)寫周期并沒有寫數(shù)據(jù),它的用途是在讀操作前提供給SLAVE子地址。
  3 硬件系統(tǒng)實(shí)現(xiàn)
  3.1 微控制器模塊
  微控制器模塊是該系統(tǒng)的核心部件,采用Atmel公司的ARM7芯片AT91SAM7X256作為系統(tǒng)的主控芯片。它是一款A(yù)tmel 32位ARM RISC處理器小引腳數(shù)FLASH微處理器,主頻為55 MHz,處理速度快,功能強(qiáng),性價(jià)比高,能很好地滿足嵌入式Linux系統(tǒng)的需求。它在系統(tǒng)中的主要作用是在系統(tǒng)上電時(shí)配置其他芯片的功能寄存器,在正常工作狀態(tài)下調(diào)度整個(gè)系統(tǒng)工作,通過片內(nèi)以太網(wǎng)控制器控制物理層芯片發(fā)送碼流,并通過片內(nèi)的SPI總線實(shí)現(xiàn)對外圍DATAFLASH和SDRAM的控制。
  3.2 網(wǎng)絡(luò)模塊
  AT91SAM7X256的在片以太網(wǎng)卡端口與網(wǎng)絡(luò)物理層芯片DM9161E的MII接口通信。發(fā)送數(shù)據(jù)時(shí)首先置發(fā)送使能信號ETXEN有效。數(shù)據(jù)發(fā)送端ETX0~ETX1與DM9161E的ETX0~ETX1引腳對應(yīng)連接,作為數(shù)據(jù)發(fā)送通道,以DM9161E的時(shí)鐘信號REF_CLK發(fā)送數(shù)據(jù)。數(shù)據(jù)接收端ERX0~ERX1與DM9161E的RXD0~RXD1引腳對應(yīng)連接,作為數(shù)據(jù)接收通道。管理時(shí)鐘信號EMDC和管理數(shù)據(jù)輸入/輸出信號EMDIO用于芯片控制參數(shù)的寫入和讀取。DM9161E的MDINTR端用來產(chǎn)生中斷信號。片內(nèi)以太網(wǎng)卡通過DMA通道進(jìn)行數(shù)據(jù)發(fā)送,不影響AT91SAM7X256的正常運(yùn)行。首先正確設(shè)置傳送控制寄存器和傳送地址寄存器的傳送數(shù)據(jù)塊字節(jié)數(shù)、數(shù)據(jù)塊存儲首地址等參數(shù),隨后依次從指定數(shù)據(jù)存儲區(qū)地址讀取數(shù)據(jù),送入內(nèi)部發(fā)送緩沖器中,由MAC對數(shù)據(jù)進(jìn)行封裝發(fā)送,同時(shí)記錄已傳送字節(jié)數(shù),直到數(shù)據(jù)塊發(fā)送完畢。當(dāng)發(fā)送完一組數(shù)據(jù)后,發(fā)出DMA中斷請求,由AT91SAM-7X256進(jìn)行相應(yīng)的處理。整個(gè)網(wǎng)絡(luò)子系統(tǒng)電路由AT91SAM7X256控制和調(diào)度。
  3.3 相機(jī)控制模塊
  相機(jī)控制模塊包括圖像采集傳感器OV7720和相機(jī)控制芯片OV529。OV7720內(nèi)含A/D轉(zhuǎn)換和DSP,能夠直接將圖像信號數(shù)字化,并通過相機(jī)接口向OV529直接輸出并行的數(shù)字化圖像信號。
  OV529自帶的MCU進(jìn)行各種控制,它通過串行相機(jī)控制總線(SCCB)與OV7720交互控制信息實(shí)現(xiàn)對圖像傳感器的控制和數(shù)據(jù)采集。OV529包含一個(gè)壓縮引擎,對從OV7720采集的圖像信息幀進(jìn)行壓縮,壓縮后的信號經(jīng)OV529的串行通信傳給主控芯片AT91SAM7X512,再經(jīng)AT91SAM7X512上的MAC層處理,通過網(wǎng)絡(luò)接口將視頻流發(fā)送到網(wǎng)絡(luò)上。
  4 軟件設(shè)計(jì)
  嵌入式Linux系統(tǒng)由4個(gè)部分組成:引導(dǎo)內(nèi)核啟動的文件bootloader,Linux內(nèi)核文件kernel,虛擬磁盤文件ramdisk和用戶空間文件use-r。它們分別被放在DATAFLASH內(nèi)的4個(gè)分區(qū)模塊中。根據(jù)不同模塊的具體功能采用不同的文件系統(tǒng):bootloader,kernel,ramdisk。移植完成后不需要?jiǎng)討B(tài)改變,使用較節(jié)省空間的ROMFS只讀文件系統(tǒng)。user模塊內(nèi)放置一些可以動態(tài)更新的配置文件等。需要進(jìn)行較多次的讀/寫操作,所以使用支持動態(tài)擦寫保存的JFFS2文件系統(tǒng)。
  4.1 CGI控制程序設(shè)計(jì)
  應(yīng)用程序接口(Common Gateway Interface,CGI),提供Web Server執(zhí)行外部程序的通道,CGI程序編譯成可執(zhí)行文件,放在服務(wù)器端運(yùn)行,服務(wù)器根據(jù)用戶的請求調(diào)用相應(yīng)的CGI程序,并將CGI程序得到的動態(tài)信息封裝到頁面中,發(fā)送到用戶瀏覽器上。該系統(tǒng)CGI的工作過程是在PC機(jī)端的IE瀏覽器中輸入網(wǎng)絡(luò)攝像機(jī)IP地址,嵌入式網(wǎng)絡(luò)服務(wù)器根據(jù)要求,將相應(yīng)的控制頁面反饋給IE瀏覽器,用戶填寫表單,然后提交,CGI程序提取信息,并根據(jù)得到的信息作相應(yīng)的處理,如調(diào)節(jié)相機(jī)的轉(zhuǎn)向、焦距等。CGI模塊的設(shè)計(jì)主要包括三部分:嵌入式Web服務(wù)器的配置、HTML頁面的編寫、CGI程序的設(shè)計(jì)。嵌入式Web服務(wù)器采用的是Apache,其配置是以配置文件的形式提供,放在Ramdisk中,其配置主要涉及配置根文件路徑、配置CGI外部程序所放的路徑和配置環(huán)境變量三個(gè)方面。網(wǎng)頁編寫采用HTML與SHTML相結(jié)合的方式。HTML的解析速度較快,SHTML可以在普通網(wǎng)頁中嵌入外部CGI程序,通過這種方式將系統(tǒng)的默認(rèn)配置反饋給客服端。CGI程序采用的是C語言和Shell腳本相結(jié)合的方式,具體編寫過程與Linux下編程相同。
  4.2 解碼程序
  該部分已成功做成Toolbox插件,該插件只要在PC機(jī)上注冊安裝后,就可方便地被網(wǎng)頁調(diào)用,從而實(shí)現(xiàn)在PC機(jī)上實(shí)時(shí)觀看視頻。安裝后的實(shí)圖如圖2所示。


  5 結(jié)語
  本文利用CMOS圖像傳感器設(shè)計(jì)了一款嵌入式網(wǎng)絡(luò)攝像機(jī)。經(jīng)測試,系統(tǒng)穩(wěn)定、可靠、實(shí)時(shí)性好,圖像清晰度明顯好于同價(jià)位的產(chǎn)品,完全可滿足目前網(wǎng)絡(luò)攝像頭市場對中、低端產(chǎn)品的要求,具有良好的市場前景。

//--------------------------------------------------------------------------------------------------------------------
SCCB(OmniVision serial camera control bus),即串行攝像機(jī)控制總線。OmniVision 公司已經(jīng)定義和

采納的SCCB總線是一種三線結(jié)構(gòu)的串行總線,用于完成對絕大多數(shù)OmniVision 系列圖像傳芯片功能的控制。
在簡化的引腳封裝中,SCCB總線可以工作在改進(jìn)的兩線工作方式下。
兩線SCCB接口有兩條通迅連接線,即SIO_D(數(shù)據(jù)線)和 SIO_C(時(shí)鐘線),下面是雙總線功能原理圖:
在雙總線情況下,要求主控機(jī)有以下兩種功能之一來支持SCCB通迅:
1、主控器件支持并能保持?jǐn)?shù)據(jù)在三態(tài)模式;
2、如果不支持三態(tài),

二、管腳功能
主控器件管腳描述
從控器件管腳描述
SCCB——E 信號
低電平有效,一個(gè)高到低的轉(zhuǎn)換表明數(shù)據(jù)傳輸開始;一個(gè)低到高的轉(zhuǎn)換表明數(shù)據(jù)傳輸結(jié)束;數(shù)據(jù)傳輸過程保持為低
電平;高電平表明總線處于空閑狀態(tài)。在SCCB——E表明數(shù)據(jù)傳輸開始之前主機(jī)必須將數(shù)據(jù)線SIO——D置為1,這樣可以避免
總線數(shù)據(jù)傳輸開始之前的總線不確定狀態(tài)的出現(xiàn)。
SIO——C 信號
高電平有效,當(dāng)處于空閑狀態(tài)時(shí)必須被拉高;當(dāng)啟動傳輸后,SIO——C被拉低表明數(shù)據(jù)傳輸?shù)拈_始,傳輸過程中高電平
表明一位數(shù)據(jù)正在傳輸,所以SIO——D的數(shù)據(jù)變化只能在SIO——C為低時(shí)發(fā)生,一位傳輸時(shí)間定義為tCYC,最小為10us。
三總線數(shù)據(jù)傳輸
SIO——D信號
可以被主機(jī)和從機(jī)驅(qū)動,當(dāng)總線處于空閑時(shí)保持懸浮或三態(tài);
在傳輸Don‘t-Car()e或NA位時(shí),總線浮動和爭用是允許的
SIO——C的一個(gè)高電平表明一位數(shù)據(jù)的傳輸,SIO——D只能在SIO——C的低電平期間發(fā)生變化,但在傳輸?shù)拈_始和結(jié)束
也有例外,在SCCB——E斷言并且SIO——C拉低之前,SIO——D可以被拉低,在SIO——C拉高之前和去斷言之前,SIO——D
也可以被拉低。
數(shù)據(jù)傳輸?shù)钠鹗?/font>
SCCB——E由高到低的變化,表明數(shù)據(jù)傳輸?shù)拈_始,在SCCB——E斷言之前,主機(jī)必須把SIO——D拉高,這樣可以避免
在數(shù)據(jù)傳輸之前傳輸一個(gè)不確定的總線狀態(tài);在SCCB——E去斷言之后,主機(jī)必須把SIO——D拉高在一個(gè)定義的時(shí)間段
內(nèi),來再次避免一個(gè)不確定狀態(tài)的總線狀態(tài)傳輸。
在啟動傳輸過程中有兩個(gè)時(shí)間參數(shù),TPRA和TPRC,TPRC被定義為SID——D預(yù)充電時(shí)間,這表明SIO——D必須先于
SCCB——E被拉高的時(shí)間,最小值為15ns,TPRA被是指在SIO——D拉低之前,SID——E必須被斷言的時(shí)間,最小為1.25us。
數(shù)據(jù)傳輸?shù)慕K止

TPSC是SCCB——E去斷言后,SIO——D保持邏輯高電平的時(shí)間,最小為15ns,TPSA
是SIO——D去斷言后,SCCB——E必須保持低電平的時(shí)間,最小為0ns。
傳輸階段
SCCB讀數(shù)據(jù)的Verilog實(shí)現(xiàn)
   `START1 : begin
    //Rd_Data <= 8'h0;
    if( Shift_Start == 1 )
     I2C_Start( Start_Buf);
    else begin
     if( Scl_r == 1'b1) begin
     Scl_Ctrl <= 1'b1;
     M_State <= `WR_ID1;
     Shift_Start <= 1'b1;
    // Scl_Ctrl <= 1'b0;
     end
     else M_State <= `START1;
    end
   end
  `WR_ID1 : begin
    if( Shift_Start == 1'b1 )
     Shift8_Out( WR_id );
    else begin
     Shift_Start <= 1'b1;
     M_State <= `WR_SB_AR1;
     end
    end
  `WR_SB_AR1 : begin
    if( Shift_Start == 1'b1 )
     Shift8_Out ( 8'h11 );
    else begin
     Shift_Start <= 1'b1;
     M_State <= `END2;
     end
    end
  `END2 : begin
    if( Scl_r == 1'b1 )
   
    Scl_Ctrl <= 1'b0;
    else if( Shift_Start == 1'b1)
     I2C_End( End_Buf);
    else begin
     M_State <= `IDLE2;
    // Shift_Start <= 1'b1;
    end
   end
  `IDLE2 : begin
    Scl_Ctrl <= 1'b0;//Scl 設(shè)置為高電平
    Sda_io_Flag <= 1'b0;//Sda 設(shè)置為高阻
    Sda_Reg <= 1'b1;
    M_State <= `START2;
    Shift_Start <= 1'b1;
    end
   
  `START2 : begin
   // Rd_Data <= 8'h0;
    if( Shift_Start == 1 )
     I2C_Start( Start_Buf);
    else begin
     if( Scl_r == 1'b1) begin
     Scl_Ctrl <= 1'b1;
     M_State <= `RD_ID;
     Shift_Start <= 1'b1;
    // Scl_Ctrl <= 1'b0;
     end
     else M_State <= `START2;
    end
   end
  `RD_ID : begin
    if( Shift_Start == 1'b1)
     Shift8_Out ( RD_id );
    else begin
     Shift_Start <= 1'b1;
     M_State <= `RD_DATA;
    // Sda_io_Flag <= 1'b1;
      end
     end
  `RD_DATA : begin
    if( Shift_Start == 1'b1 ) begin
     Shift8_in( Rd_Data );
     Sda_io_Flag <= 1'b1;
     end
    else begin
     Sda_io_Flag <= 1'b0;
     if( Scl_r ==  1'b1 ) begin
     M_State <= `END1;
     Shift_Start <= 1'b1;
      end
     end
    end
`END1 : begin
    if( Scl_r == 1'b1 )
   
    Scl_Ctrl <= 1'b0;
    else if( Shift_Start == 1'b1)
     I2C_End( End_Buf);
    else begin
     M_State <= `IDLE1;
    // Shift_Start <= 1'b1;
    end
   end
  `IDLE1 : begin
    Scl_Ctrl <= 1'b0;//Scl 設(shè)置為高電平
    Sda_io_Flag <= 1'b0;//Sda 設(shè)置為高阻
    Sda_Reg <= 1'b1;
    M_State <= `START1;
    Shift_Start <= 1'b1;
    end
   



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表