技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于DSP的空啤酒瓶圖像數(shù)據(jù)處理系統(tǒng)研制

基于DSP的空啤酒瓶圖像數(shù)據(jù)處理系統(tǒng)研制

時間:2013-02-18 15:57:48來源:董賢君

導語:?為了保證圖像處理時間的穩(wěn)定性和實時性,本文開展了基于DSP的圖像處理板卡的研究?;贒SP的圖像處理系統(tǒng)采用板上圖像采集芯片來完成圖像的采集,通過板上邏輯控制模塊控制全局邏輯,利用DSP對圖像數(shù)據(jù)進行處理,可以從硬件上保證圖像處理速度,同時利用較好的算法可以提高檢測精度。

1 引言

空瓶檢測機的機器視覺系統(tǒng)分為基于PC機、基于DSP和基于智能相機三種結(jié)構(gòu)。不論哪種結(jié)構(gòu),成像系統(tǒng)都是采用高速工業(yè)相機和光學照明系統(tǒng)對被檢測對象進行清晰成像,然后圖像進行后續(xù)的轉(zhuǎn)換和處理?;谥悄芟鄼C的嵌入式系統(tǒng),將圖像的采集、傳輸、處理都在智能相機內(nèi)部完成,系統(tǒng)集成化程度高,處理速度快,但是專用性強,開發(fā)周期長。目前,主要應用的是前兩種方式。

在對瓶口和瓶底圖像的處理中使用了包括低通濾波、邊緣提取等算法,這些卷積算法需要進行大量的乘加運算,而且要求很高的圖像處理速度。結(jié)合處理器速度和片上外設的要求,板上的處理器采用德州儀器(TI)的TMS320VC5502高性能數(shù)字信號處理器。

本文首先介紹了VC5502DSP的特點,然后介紹了系統(tǒng)時鐘、擴展內(nèi)存接口、串行通信接口等外設接口,闡述了啟動模式和目標程序內(nèi)存空間定址等內(nèi)容,最后給出了擴展程序內(nèi)存的燒寫時序。

2 VC5502DSP簡介

2.1 TMS320VC5502的特點

TMS320VC5502是一款定點數(shù)DSP,它的主要特征:

基于高性能,低功耗的TMS320C55x的CPU內(nèi)核。3-/5-ns的指令周期,300/200MHz的時鐘速率;16K字節(jié)指令緩存;600/400兆次/秒的乘累加運算(MMACS)。

內(nèi)部總線結(jié)構(gòu)包括1條內(nèi)部程序總線,3條內(nèi)部數(shù)據(jù)讀總線,2條內(nèi)部數(shù)據(jù)寫總線。沒有外部總線競爭時,可以在一個時鐘內(nèi)實現(xiàn)三次數(shù)據(jù)讀和兩次數(shù)據(jù)寫,并行度很高。

兩個40位乘累加單元(MAC),每個都可在一個時鐘周期內(nèi)實現(xiàn)一次17bit×17bit運算,一個40位的算術(shù)邏輯單元(ALU)輔以一個16位的算術(shù)邏輯單元。

使用可變長度指令增加指令密度,指令單元(IU)每次取指32bit放入程序單元(PU)進行排隊。PU進行指令譯碼,執(zhí)行指令,分配任務到地址單元(AU)和數(shù)據(jù)單元(DU),并且維護完全保護性指令流水線。分支預測技術(shù)減少因為條件指令造成指令流水線的刷新。

EMIF接口提供對異步EPROM、SRAM、SDRAM和異步突發(fā)式SRAM(SBSRAM)的無縫連接。程序內(nèi)存和數(shù)據(jù)內(nèi)存統(tǒng)一編址,支持8M16位字的內(nèi)存空間,分為四個區(qū)域(CE)。

另外,TI還提供了一系列開發(fā)工具和開發(fā)包,包括eXpressDSP,CodeComposerStudio,DSP/BIOS,TI標準算法庫,信號處理算法庫,視頻和圖像處理算法庫等,提高了用戶的開發(fā)效率。

2.2 系統(tǒng)時鐘設置

TMS320VC5502可以使用外部晶振和內(nèi)部的振蕩器作為時鐘源,也可以直接使用外部的時鐘源。VC5502內(nèi)部具有鎖相環(huán),可以被使能或旁路,上電復位時鎖相環(huán)缺省被旁路。DSP的時鐘源由復位時GPIO4引腳的狀態(tài)決定。

TMS320VC5502分為四個時鐘組:C55x核系統(tǒng)時鐘組,快速外設時鐘組,慢速外設時鐘組和EMIF接口時鐘組,分別對應CLKOUT3、SYSCLK1、SYSCLK2、SYSCLK3四個內(nèi)部時鐘信號??焖偻庠O時鐘SYSCLK1主要提供給DMA和HPI接口使用,慢速外設時鐘SYSCLK2在本應用中主要供I2C模塊使用,EMIF接口時鐘SYSCLK3用作內(nèi)存訪問時鐘。

在本圖像處理卡中,使用頻率為200MHz的MK1711作為外部時鐘源,MK1711是德州儀器推薦的DSP外部時鐘。GPIO4引腳在復位時接高電平,其狀態(tài)會被bootloader檢測并將CLKMD[0]位置1。

當EMIF模塊使用內(nèi)部時鐘作為時鐘源時,SYSCLK3的頻率必須小于或等于100MHz;當EMIF模塊使用外部時鐘源時,SYSCLK3的頻率必須小于或等于SYSCLK1,但是外部時鐘源CLKIN的頻率必須小于100MHz。SYSCLK2的頻率必須小于或等于SYSCLK1的頻率。

在本應用中,系統(tǒng)正常工作時使用的各個時鐘的頻率如下表1:

修改C55x子系統(tǒng)時鐘控制寄存器(PLLCSR),PLL分頻寄存器(PLLDIV0)和PLL倍頻器(PLLM),需要遵從一定的順序。本系統(tǒng)修改如下:

1) 將PLLCSR的PLLEN位清零,使PLL處于旁路狀態(tài);

2) 將PLLCSR的PLLRST位置位,使PLL進入復位狀態(tài);

3) 清零PLLDIV0的D0EN位,不使能PLL分頻器;

4) 修改PLLDIV0寄存器的分頻數(shù)值為100b;

5) 置位PLLDIV0的PLLEN位,使能PLL分頻器;

6) 修改PLLM寄存器的倍頻數(shù)值為100b;

7) 延時1微秒(仍按原來頻率計);

8) 清零PLLCSR的PLLRST位,使鎖相環(huán)脫離復位狀態(tài);

9) 輪詢PLLCSR的LOCK位,直到該位為1表示鎖相成功,鎖相環(huán)具有穩(wěn)定的頻率輸出;

10) 將PLLCSR的PLLEN位置1,使系統(tǒng)進入鎖相環(huán)使能模式。

缺省時,SYSCLKx這三個時鐘的分頻系數(shù)都是4,為了加快訪問外設的速度,需要進行修改。在修改相應的PLLDIVx寄存器時,TI推薦首先使相應接口進入IDLE狀態(tài),以避免外設訪問發(fā)生錯誤。

通過修改PLLDIV1=2使SYSCLK1時鐘頻率運行在100MHz;PLLDIV2使用缺省值4不作修改,SYSCLK2運行在50MHz;修改PLLDIV3=2使EMIF接口時鐘SYSCLK3運行在100MHz。

ECLKOUTx兩個時鐘僅在使用同步動態(tài)內(nèi)存和同步突發(fā)式SRAM時需要,使用異步SRAM時不需要。為了減少電磁干擾,將此兩個時鐘引腳關(guān)閉,可以通過設置EMIF全局控制寄存器EMIFGCRx的EKxEN和EKxHZ為0來完成。

為了加快啟動加載過程,鎖相環(huán)和各外設時鐘分頻寄存器可以在加載應用程序代碼前通過啟動表格由bootloaer做修改。但是在啟動表格中無法進行步驟6中LOCK位的輪詢,為此可以采用一定的延時(如1微秒),只要保證PLL能夠成功鎖相有穩(wěn)定頻率輸出即可。相應命令文件代碼參見啟動表格結(jié)構(gòu)節(jié)。

2.3 擴展內(nèi)存接口EMIF

EMIF接口支持CPU/DMA對外部數(shù)據(jù)的8位、16位、32位訪問,支持的外設包括異步內(nèi)存(SRAM、ROM、FLASH內(nèi)存),同步動態(tài)內(nèi)存(SDRAM)和同步突發(fā)式SRAM(SBSRAM)。內(nèi)存字節(jié)順序只支持大端模式。

在圖像處理卡中,EMIF的CE1內(nèi)存空間接DSP的程序FLASH,CE2空間通過CPLD內(nèi)存切換模塊接SRAM,內(nèi)存訪問參考時鐘選擇ECLKOUT1,時鐘頻率100MHz。

EMIF可編程控制異步內(nèi)存的時序,這些時序參數(shù)是通過各個內(nèi)存空間的CExCTL寄存器實現(xiàn)的。主要參數(shù)有:

1) 建立時間(SETUP):指從內(nèi)存訪問周期開始到讀或?qū)戇x通信號有效的時間。最小值為1,對于一次單一或突發(fā)訪問的幾次連續(xù)訪問的第一個訪問,SETUP最小值為2;

2) 選通時間(STOBE):讀或?qū)戇x通信號從有效到無效的時間,最小值為1。

3) 保持時間(HOLD):指讀或?qū)戇x通信號從失效到訪問周期結(jié)束的時間,留作地址總線的變化時間,最小值可以為0;

這些時間參數(shù)以SYSCLK3(ECLKOUT1)為基準。EMIF為每個CE內(nèi)存空間的讀和寫訪問提供獨立的SETUP、STOBE、HOLD時間。

EMIF每次總是進行32位讀寫,對于16位寬度的內(nèi)存,進行連續(xù)兩個16位讀寫,TMS320VC5502的EMIF對16位寬度內(nèi)存的讀寫時序圖如圖1。

圖1 (a)EMIF接口16位寬度異步內(nèi)存讀時序

圖1 (b)EMIF接口16位寬度異步內(nèi)存寫時序

EMIF會在對同一個CE內(nèi)存空間單一讀或突發(fā)讀操作結(jié)束后自動加上一個CE讀保持時間,該時間不能編程控制,其大小與最后一個讀保持時間的和為12個SYSCLK3時鐘周期(如圖1a);寫內(nèi)存操作時,會在對同一個CE內(nèi)存空間的單獨寫或突發(fā)寫操作結(jié)束后自動加上一個CE寫保持時間,該時間同樣不能編程控制,其大小與所有SETUP、STOBE、HOLD時間的和最小為11(如圖1b),當所有SETUP、STOBE、HOLD時間的和大于11時,CE寫選通時間為0。

在本圖像處理卡中,DSP程序存儲器FLASH采用SST半導體的SST39VF400A。SST39VF400A是NORFLASH,程序代碼可以直接在其中運行,為256Kb×16布局,共4Mbit。整個內(nèi)存分為256個區(qū)域塊,讀訪問周期70ns。根據(jù)EMIF啟動方式要求,SST39VF400A配置在CE1內(nèi)存空間,16位字地址空間為200000H-23FFFFH。復位后,DSP的啟動加載代碼根據(jù)啟動表格將外部FLASH中的用戶應用程序代碼加載到內(nèi)部RAM中,然后跳轉(zhuǎn)到程序入口點執(zhí)行。

為了使這些參數(shù)能夠在加載外部程序代碼時起作用,這些參數(shù)必須在啟動表格中通過bootloader進行修改,要注意保證足夠的延時,使輸出時鐘穩(wěn)定。DSP的外部擴展SRAMCY7C1061AV33的配置在CE2內(nèi)存空間,作為圖像內(nèi)存,16位字地址空間為400000H-4FFFFFH。對于讀CY7C1061AV33操作,不使用VC5502EMIF的/ARE引腳,直接用/AOE和CY7C1061AV33的/OE引腳連接,則此時地址信號、片選/CE1、輸出允許/OE會同時給出,此時CY7C1061AV33處于連續(xù)讀狀態(tài),數(shù)據(jù)的輸出只受地址總線的控制。地址總線變化時,便給出相應單元的數(shù)據(jù)。CY7C1061AV33的讀時序如圖2。

圖2 CY7C1061AV33內(nèi)存讀時序

計算出讀操作SETUP=1,STOBE=1,HOLD=0即可滿足讀操作時序要求。

對于CY7C1061AV33寫操作,本應用使用/WE和/OE控制方式且/OE保持高電平。由CY7C1061AV33寫時序圖可知,CE2CTL的寫操作SETUP=1,STOBE=1,HOLD=0可以滿足SRAM寫時序要求。如圖3所示。

配置CE2CTL如下(MTYPE=0001b,表16位寬度異步SRAM)

圖3 CE2CTL寄存器設置

因為在系統(tǒng)啟動加載過程中沒有對CE2內(nèi)存空間SRAM的訪問,所以可以通過十六進制轉(zhuǎn)換命令文件和十六進制轉(zhuǎn)換工具將CE2CTL記錄在啟動表格中,由Bootloader來做修改。

2.4 啟動引導模式

VC5502的片內(nèi)ROM有幾個預編程的分區(qū),其上包括如下代碼或內(nèi)容:

啟動加載程序;啟動模式跳轉(zhuǎn)表;Sin函數(shù)值查找表;中斷向量表。

啟動加載程序通過啟動模式跳轉(zhuǎn)表跳轉(zhuǎn)到相應的啟動模式執(zhí)行代碼,啟動模式的選擇由系統(tǒng)復位時BOOTM[2:0]的狀態(tài)決定。BOOT[2:0]與啟動模式的關(guān)系如下表2:

表2BOOT[2:0]與啟動模式的關(guān)系

本項目中,選擇BOOTM=[2:0],采用EMIF口16位擴展Flash啟動方式。復位時,ST3狀態(tài)寄存器的MPNMC位會被清零,指示片上ROM被映射到FF_8000-FF_FFFFh。CE1內(nèi)存空間會被配置為16位寬度異步內(nèi)存,啟動加載代碼從其中加載用戶程序代碼到內(nèi)部RAM并跳轉(zhuǎn)到入口點執(zhí)行。

啟動過程中,TMS320VC5502會采樣GPIO4、GPIO6和GPIO7引腳的狀態(tài),這些引腳的狀態(tài)決定EMIF時鐘源和復用接口的選擇。復位時GPIO4、GPIO6和GPIO7引腳的狀態(tài)對系統(tǒng)配置的影響如表3所示:

表3  GPIO4、GPIO6、GPIO7與系統(tǒng)配置的關(guān)系

2.5 目標程序定位和啟動表格生成

DSP目標程序內(nèi)存空間映射由用戶通過鏈接命令文件生成,可由十六進制轉(zhuǎn)換工具根據(jù)轉(zhuǎn)換命令文件生成下載文件或者編輯內(nèi)存空間映射。

2.5.1 目標程序定位

程序的定位方式有三種:編譯時定位、鏈接時定位和加載時定位。DSP系統(tǒng)采用鏈接時定位,編譯器將整個程序區(qū)分為數(shù)個節(jié),并以地址0開始為節(jié)區(qū)定址,鏈接器將同名節(jié)合并,并按照鏈接命令文件(.cmd)中的節(jié)命令進行實際的定位。

鏈接命令文件用于指示鏈接器如何生成存儲器映象文件(.map)和可執(zhí)行輸出文件(.out)(COFF目標模塊)。鏈接命令文件主要指示鏈接器完成兩個功能:第一,如何將輸入節(jié)合并為輸出節(jié);第二,如何將輸出節(jié)定位到實際的存儲空間中。鏈接命令文件通過MEMORY和SECTIONS兩個命令實現(xiàn)上述功能。MEMORY命令用于描述系統(tǒng)實際的硬件資源;SECTIONS命令用于描述節(jié)如何定位到適當?shù)挠布Y源上,在該命令中可以定義節(jié)的加載地址和運行地址。

在CCS的編譯選項卡中選擇編譯器類型為55x;在鏈接選項卡中的自動初始化方式中選擇運行時初始化,這會讓鏈接器生成運行時用填充數(shù)據(jù)初始化.bss數(shù)據(jù)節(jié)的代碼;在鏈接選項卡的map文件名中輸入文件名生成鏈接映射文件,用于檢查編譯、鏈接和定址結(jié)果。

編譯鏈接工程后會生成COFF格式可執(zhí)行文件,這個文件是可執(zhí)行文件映像,并不是直接在內(nèi)存中運行代碼的轉(zhuǎn)儲(dump),需要利用hex55.exe將其中的節(jié)數(shù)據(jù)信息抽取出來,結(jié)合hex55的命令腳本文件,重新將數(shù)據(jù)以啟動表格的形式組織在hex文件中,然后下載到FLASH,TMS320VC5502啟動后,片上bootloader將其加載到RAM上運行。

2.5.2 啟動表格生成

啟動加載程序加載Flash上程序代碼是通過加載表格來完成的,使用啟動表格增強了啟動加載代碼對不同加載模式的獨立性。它包含COFF文件格式中程序節(jié)、數(shù)據(jù)節(jié)等節(jié)信息和寄存器設置等信息。啟動表格由十六進制轉(zhuǎn)換工具根據(jù)轉(zhuǎn)換命令文件和鏈接輸出文件生成。其結(jié)構(gòu)如圖4。

32位程序入口地址是程序被bootloader加載進內(nèi)部RAM后,程序執(zhí)行流程的跳轉(zhuǎn)地址。

32位寄存器配置數(shù)目是需要在啟動加載中加載應用程序前需要配置的IO內(nèi)存映射寄存器和延時的數(shù)目。

16位寄存器地址是要配置的寄存器的地址,后面是16位的配置值;若寄存器修改需要延時,可以用0xFFFF延時標記,后面跟著延時時鐘數(shù)。

32位節(jié)字節(jié)數(shù)目表示程序節(jié)、數(shù)據(jù)節(jié)等節(jié)長度(按字節(jié)計);

32位節(jié)開始地址表示相應節(jié)的其實地址,后面緊跟著該節(jié)的內(nèi)容,開頭或末尾會有0字節(jié)32位邊界對齊,以加快數(shù)據(jù)的加載速度。各節(jié)依次排列。

圖4 啟動表格結(jié)構(gòu)

32位全0字節(jié)數(shù)目,表示達到末尾節(jié),已經(jīng)沒有要加載的節(jié)。

Bootloader會在加載外部程序和數(shù)據(jù)節(jié)之前對注冊在啟動表格中的寄存器做修改。這個特性提供了修改系統(tǒng)時鐘配置以加快代碼加載速度和在執(zhí)行用戶代碼前正確配置EMIF接口內(nèi)存空間參數(shù)的機會。

在腳本文件中,寄存器修改使用reg_config選項來實現(xiàn),格式為

-reg_configREG_ADDRREG_VALUE;

延時使用delay選項來實現(xiàn),格式為

-delayDELAY_COUNT。

HEX55.exe十六進制轉(zhuǎn)換工具可以讀取轉(zhuǎn)換命令文件和編譯輸出文件,構(gòu)造出正確的啟動表格。本圖像處理卡上,在啟動過程中需要修改的寄存器主要有鎖相環(huán)PLL寄存器、外設系統(tǒng)時鐘分頻寄存器、EMIF接口CExCTL寄存器。轉(zhuǎn)換命令文件代碼如下:

−boot                  ;option to create a boot table

−v5510:2            ;use C55x boot table format for TMS320VC5502

−parallel16 ;boot mode is 16-bit external async mem

;to shut down ECLKOUTx

-reg_config   0x0800  0x271C

-reg_config   0x0801  0x0008

-delay    0x80

;to config PLL registers

-reg_config   0x1C80 0x0048  ;PLLCSR

-delay    0x100

-reg_config   0x1C8A       0x0000  ;PLLDIV0

-delay    0x80

-reg_config   0x1C8A       0x1003

-delay    0x100

-reg_config   0x1C88 0x0004  ;PLLM

-delay    0x80

-reg_config   0x1C80 0x0040  ;PLLCSR.PLLRST=0

-delay    0x100

-reg_config   0x1C80 0x0041  ;PLLCSR.PLLEN=1

-delay    0x80

;to config PLLDIVx registers

-reg_config   0x1C8C 0x1001  ;PLLDIV1

-delay    0x80

-reg_config   0x1C90 0x1001  ;PLLDIV3

-delay    0x80

;to config EMIF CExCTL registers

-reg_config   0x0802  0xC211

-delay    0x80

-reg_config   0x0803  0xFFF3

-delay    0x80

-reg_config   0x0808  0xC110

-delay    0x80

-reg_config   0x0809  0x1081

-delay    0x80

.............

−x                                     ;desired output format is Tektronix format

−o bottlecheck.hex           ;specify the output filename

bottlecheck.out                ;specify the input file

運行hex55.exe生成.hex十六進制下載文件,通過FlashBurn程序?qū)⒛繕舜a下載到擴展程序內(nèi)存中。

3 外圍模塊設置

3.1 I2C模塊設置

I2C總線是飛利浦公司發(fā)起的二線制串行總線。TMS320VC5502上的I2C模塊完全兼容飛利浦I2C總線規(guī)范(2.1版本),可以用來實現(xiàn)對THS8083A內(nèi)部寄存器的初始化。I2C總線連接非常簡單,直接將VC5502和THS8083A的SCL和SDA引腳對應連接即可。由于I2C總線是開漏極輸出,所以需要在SCL和SDA總線上接上拉電阻。在本應用中,VC5502工作在主發(fā)送模式,THS8083A只能工作在從發(fā)送模式,采用400kbps的傳輸速度。

I2C模塊的輸入時鐘為SYSCLK2,I2C模塊的模塊時鐘使用10MHz,輸出的主時鐘SCL使用400KHz,相關(guān)寄存器設置如下:

*I2CPSC       =    0x0004;

*I2CCLKL     =    0x0007;

*I2CCLKH     =    0x0008;

TMS320VC5502產(chǎn)生數(shù)據(jù)傳輸?shù)钠鹗嘉缓屯V刮唬蒊2C命令寄存器I2CMDR設置;TMS320VC5502的I2C模塊的本地地址寄存器I2COAR設置為0x0001,THS8083A的地址在TMS320VC5502的I2C模塊中的從地址寄存器I2CSAR中設置為0x0020;I2C模塊通過中斷方式向C55x核表明數(shù)據(jù)發(fā)送完畢,中斷允許寄存器I2CIER設置為0x0010。THS8083A共有35個寄存器需要初始化,I2C模塊共需發(fā)送70個字節(jié),設置在I2CCNT中。相應設置代碼如下:

*I2CMDR      =     0x2E00  

*I2CMDR      =     0x2E20          ; I2CMDR.IRS=1

*I2COAR       =     0x0001

*I2CSAR       =     0x0020

*I2CIER =     0x0010

*I2CCNT       =     0x0046

將THS8083A的內(nèi)部寄存器的地址和寄存器初始化值作為constshort類型全局數(shù)組,直接用寄存器的地址和數(shù)據(jù)初始化數(shù)組單元,則每個地址或數(shù)據(jù)占存儲單元的高八位,低八位填充為0。

在TMS320VC5502的I2C中斷處理程序中檢查中斷原因I2CISRC,重置中斷標志I2CSTR寄存器中的發(fā)送結(jié)束中斷標志位,檢查并更新THS8083A寄存器表格指針,將數(shù)據(jù)填入發(fā)送寄存器I2CDXR經(jīng)I2CXSR移位發(fā)送出去,直至到達寄存器表格結(jié)尾,屏蔽I2C模塊中斷。寄存器I2CDXR只有低八位有效,高八位是保留的,寫入數(shù)據(jù)會被舍棄,將全局數(shù)組中的16位值寫入該寄存器,數(shù)據(jù)就會通過I2C總線正確發(fā)送出去。中斷處理程序片斷如下:

void c_int02(void)

{

......

if(I2Ctblptr == I2Ctblend)

       {

             *I2CIER = 0x0010    ;disenable the interrupt

}

if((*I2CISRC) & 0x0005)

       {

              *I2CDXR = *I2Ctblptr++;

*I2CSTR &= XRDYMASK;

              }

              ......

       }

3.2 UART模塊和GPIO的配置

VC5502處理完每副圖像后,以串行通訊和通用輸入輸出口兩種方式輸出圖象處理的結(jié)果。通用輸出口僅已電平的方式給出圖像對應的檢測對象是否合格,串口通訊可以輸出關(guān)于不合格處的更多信息。

TMS320VC5502的UART口使能時,SP1、SP3分別作為串口通訊的發(fā)送線和接收線。在此選用MAX232與UART相連接構(gòu)成RS232串行通訊方式,輸出圖像處理結(jié)果。DSPUART的數(shù)據(jù)接收端RXD連接至MAX232的接收輸出端R1OUT,UART的數(shù)據(jù)發(fā)送端TXD連接至MAX232的發(fā)送輸入端。

設置串口發(fā)送速率19200bps,1位起始位和1位停止位,8位數(shù)據(jù)位,無校驗。設置VC5502的UART工作于輪詢FIFO發(fā)送方式,當圖像處理結(jié)果積累到設定個數(shù)時,通過串口發(fā)送出去。相關(guān)寄存器初始化如下:

*URDLL = 0x00A3;

       *URFCR = 0x00B9;

//wait for some time

*URFCR = 0x00BC;

       *URLCR = 0x0003;

4 JTAG調(diào)試接口

TMS320VC5502提供JTAG接口對DSP進行在線調(diào)試,JTAG是IEEE1149.1國際標準,廣泛應用于嵌入式系統(tǒng)的在系統(tǒng)調(diào)試。

JTAG標準包括邊界掃描和測試訪問。邊界掃描的基本思想是在靠近芯片的輸入輸出引腳上增加一個稱為邊界掃描寄存器的移位寄存器單元,當芯片處于調(diào)試狀態(tài)時,邊界掃描寄存器可以將芯片和外界輸入輸出隔離。通過這些邊界掃描寄存器,可以實現(xiàn)對芯片輸入輸出信號的觀察和控制。在正常運行狀態(tài)下,這些邊界掃描寄存器對芯片是透明的。而且,芯片輸入輸出引腳上的邊界掃描寄存器單元可以相互連接起來形成一條邊界掃描鏈。一般芯片都會提供幾條獨立的邊界掃描鏈,用來實現(xiàn)完整的測試功能。邊界掃描鏈可以串行地輸入輸出數(shù)據(jù),通過相應的時鐘和控制信號,可以方便地觀察和控制被調(diào)試的芯片。邊界掃描鏈屬于JTAG標準兩種寄存器中的數(shù)據(jù)寄存器,另一種寄存器是指令寄存器,后者用來實現(xiàn)對數(shù)據(jù)寄存器的控制。測試訪問端口(TAP)是一個通用端口,通過測試訪問端口可以訪問到芯片提供的所有數(shù)據(jù)寄存器和指令寄存器。對整個TAP的控制通過TAP控制器實現(xiàn)的。TAP總共包括五個信號接口:TMS、TCK、TDI、TDO和TRST,也就是所謂的JTAG接口[31-34]。

在圖像處理卡電路板上設計14口的JTAG接口。

需要注意的問題有:

1) VC5502的Emu0,Emu1引腳需要上拉;

2) 為了保證好的TCK信號,在TCK上加去噪電路;

3) 在3.3VDSP中,PD腳為3.3V供電,但是仿真器上需要5V電壓供電,所以仿真器需要單獨供電。

5 擴展Flash燒寫

本應用中通過TI的FlashBurn軟件和FBTC目標組件完成SST39VF400A的燒寫。FlashBurn通過內(nèi)部協(xié)議和目標DSP通信,將用十六進制轉(zhuǎn)換工具得到的hex文件下載到片上RAM中,然后通過FBTC程序核將目標代碼燒寫到FLASH中。

SST39VF400A具有內(nèi)部編程邏輯電路,可以方便的完成扇區(qū)擦除、塊擦除、片擦除和字、字節(jié)編程等操作,具有/WE控制編程周期和/CE控制編程周期兩種方式,使用/WE控制編程周期方式時,地址和數(shù)據(jù)分別在/WE的下降沿和上升沿被鎖存,然后內(nèi)部燒寫程序啟動,將數(shù)據(jù)編程到相應地址單元中。SST39VF400A的寫時序圖如圖5所示。

VC5502處理完每副圖像后,以串行通訊和通用輸入輸出口兩種方式輸出圖象處理的結(jié)果。通用輸出口僅已電平的方式給出圖像對應的檢測對象是否合格,串口通訊可以輸出關(guān)于不合格處的更多信息。

TMS320VC5502的UART口使能時,SP1、SP3分別作為串口通訊的發(fā)送線和接收線。在此選用MAX232與UART相連接構(gòu)成RS232串行通訊方式,輸出圖像處理結(jié)果。DSPUART的數(shù)據(jù)接收端RXD連接至MAX232的接收輸出端R1OUT,UART的數(shù)據(jù)發(fā)送端TXD連接至MAX232的發(fā)送輸入端。

設置串口發(fā)送速率19200bps,1位起始位和1位停止位,8位數(shù)據(jù)位,無校驗。設置VC5502的UART工作于輪詢FIFO發(fā)送方式,當圖像處理結(jié)果積累到設定個數(shù)時,通過串口發(fā)送出去。相關(guān)寄存器初始化如下:

圖5 SST39VF400A內(nèi)存編程時序

結(jié)合VC5502的寫異步內(nèi)存的時序圖圖1b可以設置燒寫FLASH時的CE1CTL寄存器的值。SST39VF400A在編程前必須首先進行扇區(qū)擦除或塊擦除或片擦除操作。由于SST39VF400A具有硬件和軟件數(shù)據(jù)保護機制,要進行擦除和編程操作,必須首先使用相應的命令序列,然后對相應單元進行操作。擦除和寫命令序列如表4:

SST39VF400A在擦除和編程過程中,對于內(nèi)存單元的讀操作不會返回該單元的內(nèi)容,而是會返回內(nèi)部狀態(tài)寄存器的內(nèi)容,該寄存器的數(shù)據(jù)查詢位DQ7和數(shù)據(jù)翻轉(zhuǎn)位DQ6可以用來判斷擦除或編程操作是否結(jié)束。

DQ7在編程過程中返回的是被讀內(nèi)存單元第7位的補碼,編程結(jié)束后返回被讀單元相應位的原碼;在擦除過程中總是返回0,擦除操作結(jié)束后返回被讀單元相應位的值。在編程和擦除過程中DQ6,返回的則是1和0的交錯翻轉(zhuǎn);編程和擦除結(jié)束后返回被讀單元的相應位。本應用中使用DQ6來檢測編程和擦除操作是否結(jié)束,程序片斷如下

void Check_Toggle_Ready (short *Dst)

{

......

PreData = *Dst;

PreData = PreData & 0x4040;

while ((TimeOut< 0x07FFFFFF) && (Loop))

{

CurrData = *Dst;

CurrData = CurrData & 0x4040;

if (PreData == CurrData)

Loop = FALSE;   /* ready to exit the while loop */

PreData = CurrData;

TimeOut++;

}

}

SST39VF400A的燒寫和擦除算法在閃存燒寫目標組件(FBTC)的源文件中實現(xiàn),其中有兩個主要函數(shù):BurnFlash()函數(shù)和EraseFlash()函數(shù)。BurnFlash函數(shù)讀取被燒寫hex文件,然后發(fā)送燒寫地址和數(shù)據(jù)到FBTC模塊,直至達到燒寫要求的字節(jié)數(shù);EraseFlash函數(shù)發(fā)送命令給SST39VF400A執(zhí)行扇區(qū)或塊或片擦除命令。

VC5502復位后,以HPI方式啟動,在CCSTUDIO中用GEL初試化DSP。GEL文件主要完成DSP的內(nèi)存空間配置、輸入/輸出空間配置、寄存器初始化等功能。然后啟動FlashBurn程序,在下載框中的要燒寫的文件項填入生成的十六進制文件,在邏輯地址項填入0x0,選中寫驗證復選框;在目標系統(tǒng)的處理器類型中選擇55x,F(xiàn)BTC程序文件選擇FBTC55.out,F(xiàn)lash內(nèi)存物理地址填入0x400000(按字節(jié)計),字節(jié)數(shù)填寫0x80000(512K),配置好后,F(xiàn)lashBurn會將配置存儲在擴展名為.cdd的文件中。

FlashBurn程序和下載到VC5502內(nèi)部RAM中的FBTC程序通訊,對DSP型號、FLASH燒寫起始地址、FLASH字節(jié)數(shù)做驗證后,就可以將十六進制文件通過JTAG口發(fā)送到VC5502,由FBTC負責將數(shù)據(jù)燒寫到Flash中。

6 結(jié)束語

微電子技術(shù)和圖像處理技術(shù)的發(fā)展促進了基于機器視覺的在線檢測技術(shù)的發(fā)展,高性能DSP的推出使得大容量圖像數(shù)據(jù)的實時處理變?yōu)楝F(xiàn)實,這更加促進了機器視覺檢測技術(shù)的發(fā)展?;贒SP的圖像數(shù)據(jù)處理方式的運用提高了空瓶檢測的效率和精度,在線檢測領(lǐng)域有一定的借鑒意義。

標簽:

點贊

分享到:

上一篇:唐山匯豐公司煤氣加壓機變頻...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。

網(wǎng)站簡介|會員服務|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務平臺

網(wǎng)站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號