色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 用虛擬I2C總線技術(shù)實(shí)現(xiàn)SAA7111的初始化

          用虛擬I2C總線技術(shù)實(shí)現(xiàn)SAA7111的初始化

          作者: 時(shí)間:2005-05-31 來源:網(wǎng)絡(luò) 收藏

          摘要:介紹了的特點(diǎn),描述了用單片機(jī)(C51)的普通I/O口以及對(duì)DSP(TMS320VC5402)的McBSP口和HPI-8口模擬接口的設(shè)計(jì)方案,最后給出了對(duì)進(jìn)行化的方法。

          關(guān)鍵詞:;;DSP;I2C總線

          SAA7111是Philips半導(dǎo)體公司生產(chǎn)的一種視頻輸入處理器(VIP),在視頻采集系統(tǒng)中,通常需要諸如SAA7111之類的視頻解碼器作為模擬視頻前端,而視頻解碼器的化主要通過I2C總線接口來完成。然而,目前的單片機(jī)和DSP器件大多都不帶有I2C總線接口,為此,本文提出了用總線來模擬I2C總線功能,利用DSP的多功能I/O口和單片機(jī)的普通I/O口模擬I2C總線接口設(shè)計(jì),從而DSP和單片機(jī)對(duì)SAA7111的化與控制的新方法。

          1 虛擬I2C總線技術(shù)

          1.1 多主方式下的I2C總線虛擬

          I2C總線是Philips公司推出的一種連接IC器件的二線制總線,它既可以用于構(gòu)成多主系統(tǒng),又可工作在單主方式下。因?yàn)槎嘀鞣绞较聲?huì)出現(xiàn)多主競(jìng)爭(zhēng)的復(fù)雜狀態(tài),此時(shí)如果系統(tǒng)中沒有帶I2C總線接口的主控制器,那么要構(gòu)成多主系統(tǒng)的虛擬I2C總線,就必須在虛擬I2C總線中解決多主競(jìng)爭(zhēng)狀態(tài),而這幾乎是不可能的,鑒于此,多主I2C總線系統(tǒng)必須使用帶I2C總線接口的控制器。

          1.2 單主方式下的I2C總線虛擬

          當(dāng)I2C總線中只有一個(gè)主器件時(shí),I2C總線系統(tǒng)的工作方式稱為單主方式。在單主方式下,由于I2C總線上只有一個(gè)主器件成為主節(jié)點(diǎn),因此,該主器件會(huì)永遠(yuǎn)占據(jù)總線,而不會(huì)出現(xiàn)總線競(jìng)爭(zhēng),此時(shí)的主節(jié)點(diǎn)也不必有自己的節(jié)點(diǎn)地址。在這種情況下,主器件若沒有I2C總線接口,就可以用主控制器的I/O口來模擬I2C總線接口。

          目前,許多視頻、音像電器中都采用了虛擬I2C總線技術(shù)。SAA7111的初始化控制操作就工作在單主方式下,因此可以用虛擬I2C總線技術(shù)來SAA7111的初始化控制。下面分別以單片機(jī)和DSP為例來說明虛擬I2C總線技術(shù)的實(shí)現(xiàn)方法。

          2 用單片機(jī)普通I/O模擬I2C總線接口

          用單片機(jī)普通I/O口模擬I2C總線接口時(shí),其硬件配置非常簡(jiǎn)單,因?yàn)閱纹瑱C(jī)的I/O口很多,并且大多I/O口都是雙向的,因此可以直接用兩個(gè)I/O口線作為I2C總線的串行時(shí)鐘線SCL和串行數(shù)據(jù)線SDA。圖1所示為C51 單片機(jī)與SAA7111的硬件連接圖。 當(dāng)硬件配置完成后,根據(jù)I2C總線的時(shí)序特性可用軟件編程來模擬I2C總線接口。圖2為I2C總線的起始信號(hào)(S),它表示在SCL為高電平期間,數(shù)據(jù)線SDA由高電平向低電平變化將啟動(dòng)I2C總線。下面是相應(yīng)的匯編程序。其它子程序可以參考I2C總線時(shí)序來實(shí)現(xiàn),這里就不一一給出了。

          啟動(dòng)I2C總線:

          SETB P1.0 ; SDA=1

          SETB P1.1 ; SCL=1

          CALL DELAY ;保持?jǐn)?shù)據(jù)時(shí)間,DELAY

          為延遲子程序

          CLR P1.0 ; SDA=0

          CALL DELAY

          CLR P1.1 ;鉗定總線,開始發(fā)送數(shù)據(jù)

          RET

          3 用DSP外圍接口模擬I2C總線接口

          由于TMS320VC5402只有兩個(gè)通用的I/O引腳,且都是單向的,而在I2C總線中,SDA必須是雙向的,因此必須借助于其它總線接口。

          3.1 用McBSP口模擬I2C總線接口

          首先,通過配置串口控制寄存器SPCR1和SPCR2以及引腳控制寄存器PCR的禁用McBSP功能,以將McBSP引腳(包括CLKX、CLKR、DX、DR、FSX、FSR、和CLKS)作為通用I/O口?,F(xiàn)以發(fā)送器為例,當(dāng)SPCR2的XRST=0、PCR的XIOEN=1時(shí),串口發(fā)送器無效,FSX、CLKX用作通用I/O引腳。FSX和CLKX作為通用I/O端口的引腳設(shè)置情況如表1所列。以McBSP0為例,也可以從FSX0和CLKX0引出兩條線分別表示SDA線和SCL線。

          表1 將FXS和CLKX作為通用I/O的設(shè)置方法

          引腳 FSX數(shù)據(jù)方向 CLKX數(shù)據(jù)方向 FSX輸出值 CLKX輸出值
          FSXM CLKXM FSXP CLKXP
          0 1 0 1 0 1 0 1
          FSX 輸入 輸出 - - - 1 - -
          CLKX - - 輸入 輸出 - - 0 1

          注:“-”表示無影響

          圖3為I2C總線的結(jié)束信號(hào)時(shí)序,下面是相應(yīng)的程序:

          #define SPSA0 0x0038 //SPSA0指向McBSP0子地址寄存器

          #define SPSD0 0x0039 //SPSD0指向McBSP0

          子區(qū)數(shù)據(jù)存儲(chǔ)器

          #define PCR0 ‘0x000E //PCR0代表子地址

          0x000E

          結(jié)束I2C總線:

          void stop ? ? ?

          *?short *?SPSA0=PCR0; //SPSA0指向子

          地址PCR0

          *?short *?SPSD0=0x2A02? //初始化PCR0,

          令FSX0=0,CLKX=1。即SDA=0,SCL=1

          delay? ?; //延時(shí)。Delay()為延時(shí)子程序

          *?short *?SPSD0=0x2A0A; //令FSX0=1,

          CLKX=1。即SDA=1,SCL=1

          }

          3.2 用HPI-8口模擬I2C總線接口

          同樣,首先必須禁用HPI-8的功能,這可通過設(shè)置HPI-8控制寄存器(HPIC)的HPIENA為0來完成。當(dāng)HPI-8工作在通用I/O端口(GPIO)方式時(shí),通過通用I/O控制寄存器(GPIOCR)和通用I/O狀態(tài)寄存器(GPIOSR)可以控制GPIO方式下的HPI-8數(shù)據(jù)引腳。GPIOCR的DIRx(x=0~7)位為低電平表明HDx引腳為輸入,高電平表明HDx為輸出。 GPIOSR的D/Ox位則反映了引腳HDx的邏輯值,D/Ox為低電平表明HDx輸入/輸出為0,D/Ox為高電平表明HDx輸入/輸出為1。因?yàn)樵冢牵校桑戏绞较?,HDx為雙向I/O端口,因此可以任意選擇一個(gè)HDx(如HD0)作為SDA,再用另外一個(gè)HDx(HD1)作為SCL以實(shí)現(xiàn)I2C總線接口的模擬。

          4 SAA7111的初始化

          SAA7111內(nèi)部有32個(gè)寄存器(Subaddress00~1FH),其中22個(gè)是可編程的。00H、1A~1CH、1FH是只讀寄存器,其中00H描述的是芯片版本信息;1A~1CH是文本信息檢測(cè)和解碼寄存器,一般很少用到;1FH用來描述芯片的狀態(tài)。02H~12H是可讀寫寄存器,其中02H~05H是模擬輸入控制寄存器,02H用于設(shè)置模擬視頻信號(hào)輸入方式(共8種),03H~05H用于設(shè)置增益控制方式, 06H~12H主要用于設(shè)置解碼方式,通過配置這些寄存器可以設(shè)置行同步信號(hào)的開始和結(jié)束位置,并可確定亮度、色度、飽和度的大小以及輸出圖像數(shù)據(jù)信號(hào)的格式。 01H、13H~19H、1DH~1EH寄存器保留使用。需要注意的是,在讀00H寄存器前,必須將它初始化為0。在對(duì)多個(gè)連續(xù)的寄存器進(jìn)行操作時(shí),寄存器地址有自動(dòng)加1功能。內(nèi)部寄存器控制位的功能含義詳見參考文獻(xiàn)。

          可以采用上面任何一種方法來模擬I2C總線接口,只是具體的編程方法應(yīng)視不同的控制器而異。但軟件編程具有相同之處,首先必須根據(jù)I2C總線的原理寫出啟動(dòng)、結(jié)束、發(fā)送應(yīng)答信號(hào)及讀、寫一個(gè)字節(jié)的程序,然后根據(jù)SAA7111的寄存器操作格式寫出讀、寫寄存器的程序,最后根據(jù)以上子程序?qū)懗龀跏蓟樱粒粒罚保保钡某绦蚨?。SAA7111的初始化流程如圖4所示。

          以單片機(jī)為例,硬件連接見前文圖1所示,其中IICSA是SAA7111的讀寫控制位,IICSA=0表示SAA7111的寫地址為48H。這里把SAA7111初始化設(shè)定為:一路模擬視頻信號(hào)輸入(AI12)、自動(dòng)增益控制、625行50Hz PAL制式、YUV 422 16位數(shù)字視頻信號(hào)輸出、設(shè)置默認(rèn)的圖象對(duì)比度、亮度及飽和度。相應(yīng)的寄存器初始化值如表2所列。下面是向SAA7111的19個(gè)連續(xù)的子地址寄存器(00H~12H)寫入一組數(shù)據(jù)的的程序。

          表2 寄存器初始化值

          SubAddress Data SubAddress Data
          00H 00H 01H 00H
          02H C1H 03H 33H
          04H 00H 05H 00H
          06H EBH 07H E0H
          08H 88H 09H 01H
          0AH 80H 0BH 47H
          0CH 40H 0DH 00H
          0EH 01H 0FH 00H
          10H 40H 11H 1CH
          12H 03H   

          入口參數(shù):SAA7111寫地址48H、子地址00H、發(fā)送數(shù)據(jù)緩沖區(qū)DBUF、發(fā)送字節(jié)數(shù)19。

          WNBYTE:MOV R3,19 ;發(fā)送字節(jié)數(shù)19送入R3

          LCALL START ;調(diào)用啟動(dòng)子程序

          MOV A,#48H ;SAA7111寫地址送入A

          LCALL WBYTE ;調(diào)用寫一個(gè)字節(jié)子程序

          LCALL CHECK ;調(diào)用檢查應(yīng)答位子程序

          JB F0,NEXT0 ;有應(yīng)答,轉(zhuǎn)到NEXT0,其

          中F0為應(yīng)答標(biāo)志位,F0=1

          表示有應(yīng)答

          AJMP WNBYTE ;無應(yīng)答,重新發(fā)送

          NEXT0:MOV A, 00H ;SAA7111子地址送入A

          LCALL WBYTE

          LCALL CHECK

          JB F0,NEXT1

          AJMP START

          MOV R2,#DBUF ;發(fā)送數(shù)據(jù)緩沖區(qū)首地址

          送入R2

          NEXT1:MOV A, @R2 ;發(fā)送數(shù)據(jù)緩沖區(qū)數(shù)據(jù)送

          入A

          LCALL WBYTE

          LCALL CHECK

          JNB F0,WNBYTE ;未應(yīng)答,重新發(fā)送

          INC R2

          DJNZ R3,NEXT1 ;發(fā)送完否?未完,繼續(xù)發(fā)送

          EXIT: LCALL STOP ;發(fā)送完畢?調(diào)用結(jié)束子程序

          RET

          5 結(jié)束語(yǔ)

          對(duì)一個(gè)典型的以DSP為核心處理器的視頻采集系統(tǒng)而言,用單片機(jī)普通I/O口模擬I2C總線接口的編程比較簡(jiǎn)單,操作也很方便,但是相應(yīng)的會(huì)增加設(shè)計(jì)成本,因?yàn)橄到y(tǒng)要額外的增加一片單片機(jī)。而用DSP的McBSP口或者HPI-8口模擬I2C總線接口,雖然不必考慮成本問題,但是必須要禁用McBSP或者HPI-8的功能,這對(duì)系統(tǒng)中DSP功能的擴(kuò)展來說是不利的。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉