国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于DMA技術(shù)單片機數(shù)字攝像頭圖像采集系統(tǒng)設(shè)計

2015-05-05 06:00:06王建軍
機械與電子 2015年9期
關(guān)鍵詞:源地址像素點中斷

喬 亮,王建軍

(1.中國人民解放軍94362部隊,山東 青島266100;2.昆明理工大學(xué)機電工程學(xué)院,云南 昆明650500)

0 引言

攝像頭作為一種圖像采集傳感器,被廣泛運用在工業(yè)機器人、車載導(dǎo)航儀等智能儀器上面,控制系統(tǒng)通過其采集周圍環(huán)境的圖像信號以便于控制系統(tǒng)控制儀器做出相應(yīng)的判斷。攝像頭分為模擬攝像頭和數(shù)字攝像頭2種。由于數(shù)字攝像頭數(shù)據(jù)量過大,單片機用傳統(tǒng)方法采集會占用大量的CPU資源,這將導(dǎo)致單片機的控制效果大為減弱。此外,數(shù)字攝像頭圖像信號輸出非???,單片機在處理過程中采集很有可能丟失數(shù)據(jù),從而影響整個控制系統(tǒng)的性能。

DMA(direct memory access)技術(shù)是指一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲器之間直接讀寫數(shù)據(jù),既不通過CPU,也不需要CPU干預(yù)。整個數(shù)據(jù)傳輸操作在DMA控制器的控制下進行。CPU只需在開始時刻配置DMA內(nèi)部寄存器參數(shù),且在每次數(shù)據(jù)傳輸開始和結(jié)束時做一點處理,而在傳輸過程中不用CPU干預(yù)。因此,利用DMA技術(shù)直接將圖像數(shù)據(jù)寫入單片機內(nèi)存空間,CPU需要圖像信息時只需從內(nèi)存空間中調(diào)用。這樣將大大地解放CPU資源,單片機CPU可以有更多的時間處理其他外部事件。從而極大地提高了控制系統(tǒng)的工作效率。

1 采集過程

1.1 MK60DMA模塊

MK60的DMA模塊主要由通道復(fù)用管理模塊和DMA控制模塊組成,通道復(fù)用管理模塊主要負責(zé)將MK60的16個DMA通道分配給63個DMA請求源[1-3];DMA管理模塊主要負責(zé)屬性配置和一些基本功能的管理。MK60的DMA模塊有63個DMA請求源。當DMA模塊被使能之后,只要1個DMA請求信號產(chǎn)生,DMA模塊就不斷地從源地址內(nèi)存空間中取出數(shù)據(jù),將其送入目的地址內(nèi)存空間。要將數(shù)據(jù)準確地送入預(yù)期的地址,就需要對DMA模塊進行正確的初始化配置。DMA模塊配置過程主要對DMA通道選擇、DMA請求源、DMA周期觸發(fā)功能、每次讀入字節(jié)數(shù)、源地址數(shù)據(jù)寬度、目的地址數(shù)據(jù)寬度、目的地址、源地址、主循環(huán)計數(shù)、副循環(huán)計數(shù)、源地址偏移、目的地址偏移以及DMA中斷等進行相關(guān)配置[1]。DMA通道選擇主要是從16個DMA通道中選擇1個作為當前數(shù)據(jù)的傳輸通道;DMA請求源是為當前所選DMA通道配置請求源,即當所配置的請求信號(上升沿或下降沿)產(chǎn)生時開始傳輸數(shù)據(jù);DMA周期觸發(fā)功能主要是決定DMA傳輸是定時觸發(fā)還是外部事件觸發(fā);每次讀入字節(jié)是配置DMA每次傳輸?shù)淖止?jié)數(shù);源地址數(shù)據(jù)寬度是指源地址內(nèi)存中所存儲的數(shù)據(jù)寬度(8位、16位、32位等);目的地址數(shù)據(jù)寬度是指目的地址內(nèi)存中所存儲的數(shù)據(jù)寬度(8位、16位、32位等);目的地址是指數(shù)據(jù)要被傳入的內(nèi)存地址;源地址是指數(shù)據(jù)取出的內(nèi)存地址;主循環(huán)計數(shù)和副循環(huán)計數(shù)相當于2層循環(huán)嵌套,其每執(zhí)行1次循環(huán)體完成1次DMA傳輸;源地址偏移和目的地址偏指每完成1次DMA傳輸后,源地址和目的地址的偏移量[2]。

1.2 OV7620時序分析

對于OV7620攝像頭采集只需要關(guān)注場中斷信號VSYN、行中斷信號HREF和像素中斷信號PCLK。OV7620同步信號時序圖如圖1所示。像素同步信號PCLK為讀取有效像素值提供同步信號,高電平時輸出有效圖像數(shù)據(jù),若當前圖像窗口大小為320×240,則在VSYN 2個正脈沖之間有240個HREF的正脈沖,即240行;在每個HREF正脈沖期間有320個PCLK正脈沖,每個PCLK正脈沖下對應(yīng)1個點的圖像數(shù)據(jù),即每行320個像素。這就是VSYN、HREF、PCLK 3個同步信號之間的關(guān)系。

圖1 OV7620時序圖

2 MK60采集圖像

2.1 MK60的DMA初始化配置

MK60與OV7620攝像頭接線如圖2所示。由圖2可知,使用MK60的PORTA19作為場開始信號VSYN的檢測端口,使用PORTB6作為行開始信號的檢測端口,采用PORTE0作為像素同步信號的檢測端口。PORTD0~PORTD7作為8位圖像灰度數(shù)據(jù)接收端口。根據(jù)1.2節(jié)所述,要采集1場完整的圖像,就必須從檢測到場信號開始讀取圖像數(shù)據(jù),而1場圖像是由多行組成且每行又有多個像素點,要正確采集1場圖像,就必須要將采集到的數(shù)據(jù)對齊,但是DMA只負責(zé)數(shù)據(jù)的傳輸[3],因此,必須根據(jù)攝像頭的特征對DMA進行正確的初始化后,才能夠采集到正確的圖像。一種可以實現(xiàn)圖像采集的DMA初始化過程如圖3所示。

圖2 MK60與OV7620攝像頭接線圖

由圖3可知,DMA模塊通道選擇為CH0[4],攝像頭的像素同步信號PCLK與PORTE連接,當1個像素點數(shù)據(jù)產(chǎn)生后,PCLK產(chǎn)生上升沿跳變被PORTE捕捉到之后產(chǎn)生DMA請求,DMA得到請求之后開始傳輸當前像素點的灰度數(shù)據(jù)。由于DMA采集像素點由PCLK產(chǎn)生信號,因此禁止其周期觸發(fā)功能而采用外部觸發(fā)功能[4-5]。

圖3 DMA初始化流程

設(shè)定主循環(huán)計數(shù)為每1行的像素點個數(shù),即當行中斷產(chǎn)生之后DMA通道要傳輸?shù)臄?shù)據(jù)個數(shù),因此要設(shè)定為攝像頭每1行的數(shù)據(jù)點個數(shù)。次循環(huán)計數(shù)設(shè)為1,由于1個像素點數(shù)據(jù)為8位的數(shù)據(jù)寬度,DMA 1次可以傳輸完畢,不需要多次次循環(huán)。由于攝像頭的每1個灰度數(shù)據(jù)都從Y0~Y7接口送入 MK60的 GPIOD_PDIR寄存器[6],每次讀取源地址不變,所以設(shè)定源地址為GPIO_PDIR寄存器的首地址、源地址偏移量設(shè)定為0。目的地址為存儲圖像數(shù)據(jù)數(shù)組的首地址,由于1幅圖像有多個像素點組成的二維圖像,要采集到1場圖像,就要將每1個像素點的數(shù)據(jù)存入到1個數(shù)組里面,因此在每個像素點數(shù)據(jù)通過DMA傳輸完成之后,源地址必須偏移。而對于OV7620來說,1個像素點數(shù)據(jù)為8位數(shù)據(jù)寬度,因此源地址偏移量設(shè)定為1個字節(jié)[4]。

2.2 MK60的端口初始化

由圖1可知,場開始信號VSYN的下降沿與行開始信號HERF更接近,捕捉VSYN的下降沿更便于圖像對齊。而對于OV7620來說,每1個有效像素點是像素同步信號PCLK高電平時的數(shù)據(jù),而行開始信號HERF的上升沿與像素同步信號PCLK的上升沿對齊,因此捕捉HERF的上升沿便于圖像對齊,捕捉PCLK的上升沿之后,才能夠產(chǎn)生DMA請求來傳輸數(shù)據(jù)。所以根據(jù)圖2的接線圖來初始化MK60的端口,MK60端口初始化流程如圖4所示。其初始化過程為:使能PORTA端口時鐘,將其引腳功能定為GPIO功能,由于PORTA19用來捕捉VSYN的下降沿跳變,因此初始化為輸入、高電平狀態(tài);使能PORTB端口時鐘,將其引腳復(fù)用功能定義為GPIO功能,由于PORTB6用于捕捉HERF上升沿信號,因此初始化為輸入、低電平狀態(tài);使能PORTE端口時鐘,將其引腳復(fù)用功能定義為GPIO功能,由于PORTE0用來捕捉PCLK上升沿信號,因此初始化為輸入、高電平狀態(tài)。由于PORTD0~PORTD7用來采集攝像頭的數(shù)據(jù),因此初始化為GPIO功能、輸入,初始化為低電平[7]。

圖4 端口初始化流程

2.3 中斷服務(wù)函數(shù)

為了能夠準確地捕捉到場開始信號VSYN和行開始信號HREF,采用外部事件觸發(fā)端口中斷方式,PORTA19采集到VSYN產(chǎn)生的中斷信號之后,進入PORTA中斷服務(wù)函數(shù)。PORTA中斷服務(wù)函數(shù)流程如圖5所示。PORTA中斷產(chǎn)生后,在PORTA中斷服務(wù)函數(shù)中要重新加載DMA目的地址(圖像數(shù)組首地址),使攝像頭的第1個數(shù)據(jù)存入圖像數(shù)組第1個元素。由于當PORTA中斷產(chǎn)生之后代表場開始信號,而1場圖像有很多行組成,緊隨PORTA產(chǎn)生中斷之后產(chǎn)生的行開始信號HREF為該場圖像的第1行,因此要在程序進入場中斷之后立馬使能PORTB中斷,來捕捉行開始信號,此后每1個行開始信號都會進入PORTB中斷服務(wù)函數(shù)。

PORTB中斷服務(wù)函數(shù)流程如圖6所示。由于每1行有很多個像素點,在行開始信號HERF產(chǎn)生(進入行中斷)之后,代表此后每1個PCLK高電平時輸出的數(shù)據(jù)為該行相應(yīng)點的像素數(shù)據(jù),因此,在進入PORTB中斷服務(wù)函數(shù)之后立即使能DMA通道CH0請求,即每產(chǎn)生1個PCLK(PORTE0)上升沿信號DMA都進行1次數(shù)據(jù)傳輸,將相應(yīng)點的灰度數(shù)據(jù)送入到與之對應(yīng)的圖像數(shù)組元素中存儲。每1行采集完之后行采集計數(shù)自增1,當采集行數(shù)為1場圖像行數(shù)時,將場采集完成標志位置1,關(guān)場中斷回到主函數(shù)將采集到的圖像通過UART串口模塊[8]發(fā)送給上位機顯示,當串口發(fā)完1場圖像之后開PORTA中斷,開始采集新的1場圖像數(shù)據(jù)。

圖5 PORTA中斷服務(wù)流程

圖6 PORTB中斷服務(wù)流程

2.4 主要采集過程

主函數(shù)流程如圖7所示。在MK60系統(tǒng)上電之后關(guān)閉系統(tǒng)總中斷,對端口進行初始化配置、對DMA模塊初始化配置,開PORTA中斷,開總中斷之后進入死循環(huán)函數(shù),等待圖像采集完成標志位置1,如果標志位置1說明1場圖像采集完成。為了避免下1場圖像對當前圖像產(chǎn)生干擾,要暫時關(guān)閉PORTA中斷,調(diào)用UART串口將采集到的圖像發(fā)送給上位機。當前圖形發(fā)送完成之后,開PORTA中斷采集新的圖像數(shù)據(jù)。

圖7 攝像頭數(shù)據(jù)采集系統(tǒng)流程

3 圖像采集實驗驗證

MK60通過其內(nèi)嵌的DMA模塊采集到的數(shù)據(jù),通過串口將數(shù)據(jù)發(fā)送給上位機,獲得的圖像如圖8所示。圖像效果較好,驗證了采集過程的正確性。

圖8 MK60采集到的圖像

4 結(jié)束語

攝像頭是一種應(yīng)用非常廣泛的傳感器,其圖像采集在工程測試、環(huán)境監(jiān)控等方面有著重要的意義。通過內(nèi)嵌有DMA模塊的MK60單片機,設(shè)計了一種DMA圖像采集系統(tǒng),該系統(tǒng)CPU基本不用干預(yù)就能完成攝像頭的圖像采集,使得CPU有更多時間去處理其他外部事件,從而極大地提高了單片機的工作能力和效率,對于工業(yè)應(yīng)用有一定應(yīng)用前景。

[1] Freescale.K60sub-family reference manual——K60 P144M100SF2V2RM rev.2[Z].2012.

[2] ARM.Cortex-M4technical reference manual revision r0p0[Z].2011.

[3] Freescale.K60sub-family data sheet rev.6[Z].2011.

[4] Freescale.Kinetis peripheral module quick reference rev.0[Z].2010.

[5] Freescale.K60sub-family reference manual rev.6[Z].2011.

[6] Yiu J.ARM Cortex-M3權(quán)威指南[M].宋巖,譯.北京:北京航空航天大學(xué)出版社,2009.

[7] 王宜懷,吳瑾,蔣銀珍.嵌入式系統(tǒng)原理與實踐——ARM Cortex-M4Kinetis微控制器[M].北京:電子工業(yè)出版社,2012.

[8] 楊東軒,王嵩.ARM Cortex-M4自學(xué)筆記——基于 Kinetis K60[M].北京:北京航空航天大學(xué)出版社,2013.

猜你喜歡
源地址像素點中斷
國內(nèi)互聯(lián)網(wǎng)真實源地址驗證研究進展①
基于canvas的前端數(shù)據(jù)加密
跟蹤導(dǎo)練(二)(5)
千里移防,衛(wèi)勤保障不中斷
解放軍健康(2017年5期)2017-08-01 06:27:44
基于逐像素點深度卷積網(wǎng)絡(luò)分割模型的上皮和間質(zhì)組織分割
基于Node-Cell結(jié)構(gòu)的HEVC幀內(nèi)編碼
實現(xiàn)RSF機制的分布式域間源地址驗證
網(wǎng)絡(luò)安全策略中防火墻技術(shù)的應(yīng)用
天融信防火墻的雙線路路由和VPN設(shè)置
AT89C51與中斷有關(guān)的寄存器功能表解
滕州市| 浦东新区| 南漳县| 南澳县| 东平县| 宁武县| 璧山县| 铁岭县| 金川县| 泰顺县| 娱乐| 洞口县| 吉木乃县| 日照市| 和平县| 元谋县| 阿克陶县| 凌源市| 石台县| 台安县| 山西省| 牙克石市| 遂昌县| 许昌县| 海门市| 三河市| 且末县| 阿拉善盟| 和政县| 丘北县| 进贤县| 屏边| 吉安县| 南溪县| 和顺县| 驻马店市| 万全县| 洪泽县| 福建省| 怀宁县| 金山区|