2 存儲模塊設計
目前存儲數據的方式有很多種,如硬盤、FLASH、光盤等,其中容易攜帶且使用方便的應是移動硬盤、優(yōu)盤、SD卡,這幾種方式都可以通過USB口來傳輸數據(SD卡或CF等可借助相應的讀卡器再通過USB口傳輸數據),可見USB總線的應用已經很普遍,USB總線的即插即用、速度快、可以自供電等優(yōu)點也的確是其他設備所不能比的。所以系統(tǒng)的存儲部分設計成USB設備,USB設備分為USB主(Host)設備和USB從(Device)設備,USB從設備只能被動地由主設備寫入或讀出數據,不符合本系統(tǒng)的要求。所以選擇了USBHost設備,只要將優(yōu)盤等USB從設備插到系統(tǒng)的USB口上,就可以將當前要存儲的圖片存儲到U盤等存儲設備中。
USB Host設備的典型例子是PC機,這種Host功能是在操作系統(tǒng)下完成的,所以現在市面上可以移植操作系統(tǒng)的微控制器芯片大多都集成了USB Host功能,像三星和飛利浦的ARM芯片、君正公司開發(fā)的MIPS核芯片JZ4740等。這種采用帶操作系統(tǒng)的方案對有一定經驗的開發(fā)人員來說開發(fā)起來比較容易,但對生手來說需要一定的熟悉過程。只為了實現USB Host功能就選擇用操作系統(tǒng)的方式完成整個系統(tǒng)的控制是沒有必要的,這樣做不僅浪費資源,而且會增加底層驅動的開發(fā)時間。所以本設計選擇了比較簡單的方式,只用一片單片機和一個USB接口芯片來完成USB Host功能。這樣只要會用單片機的開發(fā)人員都可以做USBHost設備。市場上USB從設備的接口芯片有飛利浦的PDIUSBDl2和ISPl581等,但USB Host接口芯片則比較少。經試驗,最終確定VNClL-1A這款芯片作為USB Host控制器。
2.1 USB Host控制器
VNClL-1A芯片在FTDI公司Vinculum系列中第一個嵌入了USB主控制器,不僅能處理USB Host接口和數據,還內置了MCU和FLASH,而且也封裝了USB Device類。它集成了12~48 MHz的時鐘倍頻器,支持上電復位功能,嵌入了64 KB FLASH ROM,4 KB SRAM,擁有FTDI提供的標準的USB固件庫,支持USB 2.O的全速(12 Mb/s)和低速(1.5 Mb/s)速率。28個GPIO可以做通用I/O和命令監(jiān)測接口,具有2對USB總線接口,可以用串口或者磁盤方式對其燒寫程序。當芯片作為主設備要與優(yōu)盤等從設備通信時,它可以處理FAT文件系統(tǒng),支持FATl2,FATl6,FAT32格式,文件命名方式為傳統(tǒng)的8.3格式,即文件名不超過8個字符,擴展名為3個字符,如文件名可以為text.txt。在執(zhí)行具體的操作時只需要向VNClL發(fā)送一個簡單的命令就能完成像新建文件夾、新建文件、讀文件、寫文件、打開關閉文件等功能。比如要在優(yōu)盤中創(chuàng)建一個hello.-txt文件,可以用字符方式向VNClL逐一寫入“OPW+空格+hello.txt+回車”的字符,就可以在優(yōu)盤中看見一個hello.txt的文件,或者用十六進制代碼的方式發(fā)送“09 20 file OD”,其中file為hello.txt各字符的相應ASCII碼值。廠家在網站上提供了免費的目標代碼,用戶可以根據不同的需求下載不同的目標代碼,在本設計中,選擇用一個USB口作USBHost功能的VDAPFUL_V3_65.ROM目標代碼,并設計成串口方式將目標代碼燒錄到芯片中。所以用戶不用關心VNClL內部程序是怎么執(zhí)行的,只關心需要它完成USB主設備還是從設備還是其他功能,去找相應的目標代碼就可以了,燒錄完程序的VNCIL芯片就相當于一顆接口芯片,只要接口連接正確,時序操作正確需要的功能就會正常運行。VNC-lL擁有專門的UART,SPI和并口引腳,所以對它進行控制時可以選用三種接口中的任意一種,如果想看一下操作命令的返回值,可以用串口方式連接到PC機上,在PC機上用串口調試助手向VNClL發(fā)送相應的命令后,會看到對應的返回值情況。
2.2 存儲過程的實現
位圖圖像在計算機中使用很廣泛,例如在Windows中,記事本、寫字板中的文字就是用位圖圖像表示出來的。許多以其他格式存儲的圖像,就是在位圖圖像的基礎上,進行優(yōu)化處理后得到的,例如JPEG圖像等。在數字圖像處理中,許多算法就是針對24位真彩色位圖或灰度位圖設計的。因此,將采集的圖像以位圖的格式存儲便于后期對圖像的處理。位圖的存儲格式分為24位真彩色格式和灰度位圖格式,24位真彩色格式比灰度位圖格式大2/3,因為灰度圖像是用一個字節(jié)表示一個像素,而24位真彩色位圖是用三個字節(jié)表示一個像素,所以本設計用灰度位圖格式存儲圖像。
當要存儲一幀圖像時,ATmega8L向VNClL發(fā)送新建文件命令,在存儲設備中就會新建一個.BMP文件,然后ATmega8L再將位圖的14 B的文件頭、40 B的信息頭、1 024 B的顏色索引表寫入.BMP文件的開始部分,寫完后ATmega8L給FPGA一個ready信號,FPGA收到此信號后直接將圖像數據通過VNC1L送到存儲設備的.BMP文件中;FPGA送完一幀圖像數據后再給ATmega8L一個結束信號,之后ATmega8L執(zhí)行關閉當前文件命令,至此一個BMP圖存儲結束。本設計希望此系統(tǒng)采集的所有圖像在存儲設備中用單獨的文件夾存儲,這樣每次在新插入存儲設備時ATmega8L要先向VNC1L發(fā)送一個查詢命令,查詢當前根目錄中是否已存在本系統(tǒng)專用的文件夾,如果沒有則新建此文件夾,有則在此文件夾中查詢是否已經有.BMP文件,如果沒有則新建,并且文件名以數字編號O開始命名,如果有則要查詢當前哪個文件名的編號最大,然后以最大編號數加一的方式作為要新建文件的文件名。當要從存儲設備中讀取一幅圖像時,ATmega8L同樣要執(zhí)行查詢文件夾和文件是否存在的命令,如果都存在則從文件名編號最大的那張圖片開始讀取。讀取過程與寫過程類似,只是用的命令不同,而且讀的時候要等VNC1L將位圖的1078B的文件信息讀完后才能將圖像數據傳給FPGA。VNC1L與FPGA和ATmega8L用并口的方式進行通信,只需8條數據線和4根信號線即可完成數據傳輸,接口連接如圖2所示。
3 遙控功能設計
目前大多數的電子產品采用的控制方式都是開關式按鍵或觸摸的方式,如數碼相機、手機等,工業(yè)用的設備也是如此。本文所述的控制方式采用了無線的遙控方式,這種遙控方式在電視機領域已應用多年,技術已經很成熟,原理簡單,易于實現。由于選用的遙控器適用于36~40 kHz載波頻率的紅外接收器,所以設計中選用了36 kHz紅外接收器,ATmega 8L接收紅外接收器的信號,從中解析出遙控器上各個按鍵的碼值,并會轉去執(zhí)行遙控器上相應按鍵上的功能。遙控器上設計了21個按鍵,代表了此系統(tǒng)擁有的所有功能,分別為:
圖像存儲功能 按下存儲鍵就可以將當前看到的畫面存儲到存儲設備中;
圖像預覽即讀圖功能 將存儲在存儲設備中的圖片重新讀出,在顯示器上顯示,預覽圖片時可以在當前圖片的基礎上,上翻或下翻即可循環(huán)瀏覽已存儲的所有圖片;
紅、綠、藍增益及曝光值的調節(jié)功能 可以對這4個參數進行增大和減小的控制;
雙十字線的控制和調節(jié)功能 當想要十字線功能時只要按一下十字線按鍵就會在當前實時顯示的畫面上看到兩條十字交叉的線,十字線的位置可以根據用戶的需要任意移動,當需要雙十字線時需要兩個控制十字線的按鍵都按下,使用雙十字線可以圈定整幅畫面上重點觀察的范圍;
圖像凍結功能 當凍結鍵按下時顯示器上的整個畫面凍結,此時不能進行存圖、讀圖或其他任何操作;
當前參數值保存功能 此鍵按下后會對當前的增益、曝光、十字線位置等參數的當前值存儲到ATmega8L的E2PROM中,這樣在下次啟動系統(tǒng)時,系統(tǒng)會將E2PROM保存的各參數值一一讀出;
復位初始參數值功能 如果用戶不小心將某一參數值調亂了,可以按下此鍵來恢復系統(tǒng)最原始的參數值。
4 結語
本文所述的圖像采集系統(tǒng)中存儲方案的選擇和設計對于數據量稍大又不是很復雜的系統(tǒng)的設計具有借鑒作用,而且將遙控器技術作為系統(tǒng)控制操作的方式,讓人耳目一新,此圖像采集系統(tǒng)應用于工業(yè)領域,操作方便且實惠新穎。