嵌入式數(shù)字?jǐn)z像機(jī)配置系統(tǒng)設(shè)計(jì)
引 言
本文以BASLER A202k面陣 CCD攝像機(jī)的配置為目標(biāo)設(shè)計(jì)嵌入式攝像機(jī)配置系統(tǒng)。BASLER公司提供了2種攝像機(jī)配置方案:一是利用該公司提供的攝像機(jī)配置軟件CCT+(Camera Configuration Tool Plus),二是利用該公司提供的二進(jìn)制配置命令,由用戶(hù)編程實(shí)現(xiàn)。本文采用二進(jìn)制配置命令,通過(guò)設(shè)計(jì)的嵌入式系統(tǒng)配置攝像機(jī)。該攝像機(jī)的二進(jìn)制配置命令幀格式如下:
起始字 描述字 數(shù)據(jù)段 BCC 結(jié)束字BCC是塊檢查字(Block Check Character),需要由用戶(hù)計(jì)算。主要的配置命令及其二進(jìn)制幀格式如表1所示。
表中02h是起始字;03h是結(jié)束字。此外還有測(cè)試圖像命令、選擇啟動(dòng)點(diǎn),視頻輸出格式選擇、水平Binning和豎直Binning等命令。攝像機(jī)配置和攝像機(jī)特性的關(guān)系為:AOI(area of interesting)用于局部掃描的控制,Binning用于分辨率的控制,定時(shí)器用于曝光時(shí)間的控制等。
1 系統(tǒng)結(jié)構(gòu)與原理
設(shè)計(jì)的攝像機(jī)配置系統(tǒng)所在的圖像處理系統(tǒng)框架如圖1所示。
其中RS232和RS644是控制通道所用的協(xié)議,即攝像機(jī)配置系統(tǒng)的通道; LVDS和Camera Link是數(shù)據(jù)通道用到的協(xié)議。
根據(jù)所在系統(tǒng)的通道協(xié)議和攝像機(jī)的配置命令,同時(shí)考慮到必要的人機(jī)交互,設(shè)計(jì)了攝像機(jī)配置系統(tǒng)3大模塊:數(shù)據(jù)處理模塊,對(duì)二進(jìn)制配置命令進(jìn)行必要的處理;通信模塊,通過(guò)RS232串口收發(fā)攝像機(jī)配置命令;人機(jī)接口模塊,用于對(duì)攝像機(jī)配置的調(diào)節(jié)更改以及配置參數(shù)的顯示。此外還有支持處理器工作的時(shí)鐘、電源等。系統(tǒng)的結(jié)構(gòu)如圖2所示。
系統(tǒng)的工作原理為:處理器接收數(shù)據(jù)輸入,根據(jù)接收到的輸入執(zhí)行相應(yīng)的操作,通過(guò)串口讀寫(xiě)配置命令,從而達(dá)到對(duì)攝像機(jī)的配置調(diào)節(jié),并根據(jù)需要顯示配置參數(shù)。
2 硬件設(shè)計(jì)
由于高的性?xún)r(jià)比,單片機(jī)廣泛應(yīng)用于信號(hào)檢測(cè)、信號(hào)處理、數(shù)據(jù)采集和控制系統(tǒng)中。設(shè)計(jì)的系統(tǒng)以AT89C51AC2單片機(jī)為處理器,以撥碼開(kāi)關(guān)、鍵盤(pán)陣列為調(diào)節(jié)輸入,以數(shù)碼管作為顯示輸出。同時(shí)利用了鍵盤(pán)/顯示芯片Intel 8279簡(jiǎn)化系統(tǒng)設(shè)計(jì)。串口芯片選用MAX232A。系統(tǒng)工作時(shí)鐘為11.059 2 MHz,整個(gè)系統(tǒng)采用+5 V單電源供電。系統(tǒng)的硬件結(jié)構(gòu)圖如圖3所示。
以下介紹開(kāi)關(guān)電路、鍵盤(pán)顯示電路的設(shè)計(jì)和功能分配;串口電路和其他電路為單片機(jī)系統(tǒng)的常規(guī)電路,故此從略。
2.1 開(kāi)關(guān)電路
利用單片機(jī)P1口的直接輸入/輸出功能,接開(kāi)關(guān)和LED,單片機(jī)復(fù)位時(shí),P1口皆為高電平,常態(tài)為高電平, LED不亮。當(dāng)某一開(kāi)關(guān)接通時(shí),對(duì)應(yīng)的P1.i口被拉成低電平,對(duì)應(yīng)的LED亮。開(kāi)關(guān)電路及其功能分配如表2所示。
2.2 鍵盤(pán)/顯示電路
Intel 8279有鍵盤(pán)處理和自動(dòng)顯示功能。在8279內(nèi)部有2個(gè)RAM:一是鍵盤(pán) FIFO堆棧/傳感器RAM,具有自動(dòng)消抖動(dòng)和雙鍵互鎖功能;另一個(gè)是顯示RAM,最多可為16個(gè)數(shù)碼管提供RAM。
設(shè)計(jì)的系統(tǒng)需要用到6個(gè)數(shù)碼管,因此需要擴(kuò)展8279的掃描輸出線(xiàn)。選用3~8譯碼器74LS138來(lái)擴(kuò)展,同時(shí)設(shè)8279的工作方式為外部譯碼方式。由于8279的驅(qū)動(dòng)能力較弱,采用74ls06驅(qū)動(dòng)。數(shù)碼管編號(hào)為D0~D5。D0和D5分別表示顯示數(shù)據(jù)的最低位和最高位,其余類(lèi)推。
系統(tǒng)中采用30個(gè)鍵盤(pán),編號(hào)為S0~S29,代表的操作如表3所示。
3 軟件設(shè)計(jì)
軟件系統(tǒng)的總體思想如下:首先對(duì)單片機(jī)和8279進(jìn)行初始化,然后通過(guò)單片機(jī),把不需要調(diào)整的命令送到攝像機(jī)對(duì)攝像機(jī)進(jìn)行控制;再寫(xiě)進(jìn)另一部分命令,先給一定的初值,送到攝像機(jī),可以根據(jù)需要隨時(shí)通過(guò)鍵盤(pán)進(jìn)行調(diào)整,這部分命令一直存儲(chǔ)于單片機(jī)的RAM。然后單片機(jī)不斷查詢(xún)鍵盤(pán)和開(kāi)關(guān),一旦有動(dòng)作,就調(diào)用與動(dòng)作相對(duì)應(yīng)的子程序進(jìn)行相應(yīng)的處理。主程序流程圖如圖4所示。
3.1 存儲(chǔ)單元的分配
AT89C51AC2內(nèi)部有256 b的片內(nèi)RAM,其中有一半為特殊寄存器,剩下的另一半可供用戶(hù)自由使用。128 b的RAM不能存儲(chǔ)所有的攝像機(jī)配置命令。為簡(jiǎn)化電路,硬件電路不外接RAM,系統(tǒng)采用分時(shí)復(fù)用策略使用這128 b的RAM。RAM的分配如下:00h到07h是寄存器R0到R7。08h到0fh用以傳送開(kāi)關(guān)命令和暫存從攝像機(jī)讀回的命令;10h到15h用以暫存經(jīng)過(guò)調(diào)整要傳送給8279的顯示RAM的數(shù)據(jù);16h到18h用以暫存從命令幀中提取的數(shù)據(jù);19h到1ch用以暫存命令數(shù)據(jù)的上下限。20h之后的RAM,用以存放經(jīng)常調(diào)整的攝像機(jī)配置命令。
3.2 數(shù)據(jù)處理
3.2.1 顯示預(yù)處理
從攝像機(jī)讀回的命令中提取的命令值在寫(xiě)進(jìn)8279顯示RAM之前要做一定的調(diào)整。為簡(jiǎn)化程序,在顯示子程序中,數(shù)據(jù)的顯示代碼(共陰極)只列了從00h到0fh的16個(gè)。而命令值的一個(gè)字可以是00fh到ffh中的任意一個(gè),從10h到ffh的數(shù)值必須轉(zhuǎn)換為00h到0fh的組合來(lái)顯示,如ffh一個(gè)字變?yōu)閮蓚€(gè)字:0fh和0fh。
3.2.2 數(shù)據(jù)判限和計(jì)算
對(duì)于大部分的攝像機(jī)配置命令,數(shù)據(jù)段的值只有在一定的范圍內(nèi)或是一定值的組合時(shí)才是有效的。但是攝像機(jī)本身并不執(zhí)行這些數(shù)據(jù)限制的檢查。這項(xiàng)功能由軟件編程實(shí)現(xiàn)。數(shù)據(jù)計(jì)算包括數(shù)據(jù)值的加一操作和數(shù)據(jù)值的減一操作。
3.2.3 BCC計(jì)算
BCC是命令幀中的描述字段和數(shù)據(jù)段的按位異或和(XOR),需要在數(shù)據(jù)處理中計(jì)算。
3.3 人機(jī)接口
人機(jī)接口的軟件設(shè)計(jì)主要是8279的3個(gè)基本程序:一是8279初始化程序,二是顯示程序,三是鍵盤(pán)處理程序。初始化程序主要是送入各種命令字,給8279送鍵盤(pán)/顯示方式命令、分頻系數(shù)命令和清除命令等,在主程序的初始化部分被調(diào)用。顯示程序和鍵盤(pán)處理程序在主程序的按鍵查詢(xún)部分被調(diào)用。
3.4 串口通信
在RAM中開(kāi)辟發(fā)送數(shù)據(jù)存儲(chǔ)區(qū),首址為feedback(開(kāi)關(guān)操作實(shí)現(xiàn))和comdata(鍵盤(pán)操作實(shí)現(xiàn)),接收數(shù)據(jù)的首地址為feedback(與發(fā)送分時(shí)復(fù)用)。用R0存儲(chǔ)數(shù)據(jù)發(fā)送的地址;用R1存儲(chǔ)發(fā)送數(shù)據(jù)的字節(jié)數(shù);用R2存儲(chǔ)待發(fā)送數(shù)據(jù)的地址;用R3存儲(chǔ)待發(fā)送數(shù)據(jù)的字節(jié)數(shù)。單片機(jī)把數(shù)據(jù)從接收緩沖器中讀出和把數(shù)據(jù)寫(xiě)入發(fā)送緩沖器。通過(guò)檢測(cè)是RI置位,還是TI置位來(lái)決定單片機(jī)是進(jìn)行發(fā)送操作還是進(jìn)行接收操作。發(fā)送和接收都是通過(guò)調(diào)用相應(yīng)的子程序來(lái)完成。
4 實(shí)驗(yàn)結(jié)果
本文的設(shè)計(jì)在Protel Dxp(硬件設(shè)計(jì))和偉福編譯器上(軟件設(shè)計(jì))實(shí)現(xiàn)。利用本文設(shè)計(jì)的攝像機(jī)配置系統(tǒng)結(jié)合實(shí)驗(yàn)室研制的DSP圖像采集處理器實(shí)現(xiàn)了對(duì)BASLERA202k面陣CCD攝像機(jī)的實(shí)時(shí)參數(shù)配置調(diào)節(jié),為采集高質(zhì)量的實(shí)時(shí)圖像提供了有力的保證,滿(mǎn)足了工程的應(yīng)用需要。
5 結(jié) 論
利用介紹的數(shù)字?jǐn)z像機(jī)二進(jìn)制編程配置方法,以Basler A202K面陣CCD攝像機(jī)的配置為對(duì)象設(shè)計(jì)了基于單片機(jī)的嵌入式數(shù)字?jǐn)z像機(jī)配置系統(tǒng)。該系統(tǒng)可作為嵌入式圖像采集和處理系統(tǒng)的子系統(tǒng),通過(guò)少量軟件修改可應(yīng)用于其他攝像機(jī)的配置。
評(píng)論