專利名稱:基于usb接口的打標(biāo)控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于激光打標(biāo)機(jī)的打標(biāo)控制器,具體涉及一種基于通用串行總線USB接口的打標(biāo)控制器。
背景技術(shù):
在振鏡掃描式激光打標(biāo)系統(tǒng)中,控制系統(tǒng)的硬件電路都是基于計(jì)算機(jī)ISA總線或PCI總線而設(shè)計(jì)的控制卡,必須安裝在計(jì)算機(jī)主板的ISA總線或PCI總線擴(kuò)展槽中,給整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行帶來影響,降低了打標(biāo)系統(tǒng)的穩(wěn)定性;控制卡輸出的模擬電壓信號(hào)要通過一段較長的電纜才能傳輸?shù)秸耒R控制電路中,打標(biāo)系統(tǒng)中的激光電源產(chǎn)生的強(qiáng)電磁干擾很容易通過傳輸電纜引入到振鏡控制電路中,影響振鏡的正常工作;控制卡要和計(jì)算機(jī)一起使用,增加了控制系統(tǒng)的體積,也增加了控制系統(tǒng)的成本。還有一種由單片機(jī)控制的激光打標(biāo)控制器雖然脫離了計(jì)算機(jī)的ISA總線或PCI總線,但是單片機(jī)的存儲(chǔ)容量有限,而且其進(jìn)行插補(bǔ)運(yùn)算的速度很慢,只能進(jìn)行一些簡單的插補(bǔ)算法,因而不能對一些復(fù)雜的圖案進(jìn)行標(biāo)刻,其使用范圍有限,不能充分發(fā)揮激光打標(biāo)使用靈活的優(yōu)點(diǎn)。
發(fā)明內(nèi)容
本發(fā)明提供一種基于USB接口的打標(biāo)控制器,目的是克服現(xiàn)有技術(shù)的缺陷,既滿足客戶對復(fù)雜圖形打標(biāo)的要求,又滿足對簡單圖案打標(biāo)的要求,同時(shí)調(diào)整、修改、安裝方便,工業(yè)現(xiàn)場運(yùn)行穩(wěn)定可靠,即插即用。
本發(fā)明的一種基于USB接口的打標(biāo)控制器,包括USB接口控制器單元、數(shù)據(jù)存儲(chǔ)單元、程序存儲(chǔ)單元、D/A轉(zhuǎn)換單元、邏輯控制單元和人機(jī)接口單元;其中(1)USB接口控制器單元,支持USB1.1規(guī)范,具有獨(dú)立的8位數(shù)據(jù)總線和16位地址總線,有利于芯片的外圍電路擴(kuò)展;(2)數(shù)據(jù)存儲(chǔ)單元,在聯(lián)機(jī)使用模式時(shí)作為本打標(biāo)控制器的數(shù)據(jù)緩沖區(qū),暫存上位機(jī)傳輸過來的打標(biāo)數(shù)據(jù),在脫機(jī)使用模式時(shí)存儲(chǔ)打標(biāo)文件的打標(biāo)數(shù)據(jù);(3)程序存儲(chǔ)單元,存儲(chǔ)USB接口控制器單元的固件程序;(4)D/A轉(zhuǎn)換單元,具有3路D/A轉(zhuǎn)換通道,對打標(biāo)數(shù)據(jù)進(jìn)行D/A轉(zhuǎn)換,分別輸出模擬電壓信號(hào)去控制振鏡X軸、Y軸以及激光功率;(5)邏輯控制單元,對USB接口控制器單元的地址進(jìn)行譯碼,產(chǎn)生D/A轉(zhuǎn)換單元、數(shù)據(jù)存儲(chǔ)單元、程序存儲(chǔ)單元、人機(jī)接口單元的選通信號(hào),對數(shù)據(jù)存儲(chǔ)器的高位地址進(jìn)行鎖存,為外圍電路提供I/O口;(6)人機(jī)接口單元,由鍵盤和LCD顯示模塊組成,在脫機(jī)使用時(shí)對控制器進(jìn)行打標(biāo)文件選取、設(shè)定打標(biāo)參數(shù)、刪除打標(biāo)文件等操作。
所述的基于USB接口的打標(biāo)控制器,其特征在于所述D/A轉(zhuǎn)換單元中控制振鏡X軸和控制振鏡Y軸的2路D/A同時(shí)轉(zhuǎn)換,其輸出經(jīng)過運(yùn)算放大器以使其輸出電壓信號(hào)與振鏡的輸入電壓信號(hào)兼容;控制激光功率的D/A電路只有1路數(shù)/模轉(zhuǎn)換通道,為與8位數(shù)據(jù)總線兼容的12位電壓輸出型DAC,其電壓輸出信號(hào)與激光功率控制信號(hào)要求的輸入電壓兼容。
所述的基于USB接口的打標(biāo)控制器,其特征在于所述人機(jī)接口單元中,鍵盤的接口方式采用獨(dú)立方式,每個(gè)獨(dú)立按鍵以一對一的方式直接接到I/O輸入線上,LCD顯示采用點(diǎn)陣圖形液晶顯示模塊。
本發(fā)明既能與計(jì)算機(jī)聯(lián)機(jī)使用,又能脫離計(jì)算機(jī)單獨(dú)使用。當(dāng)打標(biāo)的內(nèi)容復(fù)雜,生成的打標(biāo)數(shù)據(jù)比較大時(shí),控制器就與計(jì)算機(jī)聯(lián)機(jī)使用,由計(jì)算機(jī)經(jīng)過插補(bǔ)處理的打標(biāo)數(shù)據(jù)通過USB總線傳輸給控制器進(jìn)行實(shí)時(shí)數(shù)/模轉(zhuǎn)換,直接控制打標(biāo)系統(tǒng)。當(dāng)打標(biāo)的內(nèi)容比較簡單,生成的打標(biāo)數(shù)據(jù)比較小時(shí),可以把由計(jì)算機(jī)經(jīng)過插補(bǔ)處理的打標(biāo)數(shù)據(jù)通過USB接口保存在控制器的存儲(chǔ)器中,然后由控制器中的單片機(jī)來控制打標(biāo)數(shù)據(jù)的數(shù)/模轉(zhuǎn)換,再去控制打標(biāo)系統(tǒng),這樣單片機(jī)就不需要對打標(biāo)數(shù)據(jù)進(jìn)行插補(bǔ)處理,從而大幅度地提高了控制器的打標(biāo)速度。另外,其中的打標(biāo)內(nèi)容還可以由計(jì)算機(jī)通過USB接口隨意改寫,并可以通過控制器上的鍵盤和LCD顯示對其進(jìn)行編輯、設(shè)定打標(biāo)參數(shù)等操作。
圖1是本發(fā)明組成示意圖;圖2為USB接口控制器單元電路;圖3為數(shù)據(jù)存儲(chǔ)單元和程序存儲(chǔ)單元電路;圖4為D/A轉(zhuǎn)換單元電路;圖5為邏輯控制單元電路;圖6為控制器邏輯控制單元的邏輯控制關(guān)系圖;
圖7為人機(jī)接口單元電路;圖8為聯(lián)機(jī)工作USB傳輸過程的流程圖;圖9為脫機(jī)工作USB傳輸過程流程圖;圖10為固件程序框架流程圖;圖11為打標(biāo)數(shù)據(jù)輸出流程圖;圖12為鍵盤輸入和LCD顯示流程圖。
具體實(shí)施例方式
以下結(jié)合附圖對本發(fā)明加以說明。
圖1是本發(fā)明的總體框架示意圖,包括USB接口控制器單元、數(shù)據(jù)存儲(chǔ)單元、程序存儲(chǔ)單元、D/A轉(zhuǎn)換單元、邏輯控制單元和人機(jī)接口單元。
下面結(jié)合圖2~圖7通過實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明1.USB接口控制器單元USB接口控制器單元電路如圖2所示,它由芯片U1、U7、U8、U9、U10,插座和跳線J1、J2、J3、J5以及拔碼開關(guān)S4組成。
U1選用Cypress公司的EZ-USB系列的AN2131Q作為USB接口控制器,它是支持USB1.1規(guī)范的全速USB接口控制器芯片,是整個(gè)電路的核心,具有80個(gè)引腳,有獨(dú)立的8位數(shù)據(jù)總線和16位地址總線,有利于芯片的外圍電路擴(kuò)展,它的處理器是增強(qiáng)型的8051內(nèi)核,與通用的8051指令兼容,但平均運(yùn)行速度快2.5倍,有利于提高打標(biāo)數(shù)據(jù)輸出的速度;外接12MHz的晶振,在芯片內(nèi)部通過倍頻電路倍頻到24HMz,USBD-和USBD+引腳通過兩個(gè)22Ω電阻分別和B型USB插座J1的D+和D-相連。PA2/OE#、PA3/CS#、PA4/FWR#、PA5/FRD#、PC6/WR#、PC7/RD#等6個(gè)引腳是多功能引腳,使用第二功能時(shí)引腳必須接上拉電阻,以確保沒有控制信號(hào)輸出時(shí)引腳信號(hào)無效。WAKEUP#引腳接下拉電阻是為了防止8051進(jìn)入掛起狀態(tài),確保EZ-USB一直都能運(yùn)行。
跳線J2決定EZ-USB復(fù)位時(shí)是否進(jìn)行斷開重新連接操作,當(dāng)1-2相連時(shí),有斷開重新連接操作,當(dāng)2-3相連時(shí)沒有斷開重新連接操作。跳線J3決定8051內(nèi)核是從EZ-USB芯片內(nèi)部程序RAM中開始獲得程序代碼還是從外部程序存儲(chǔ)器開始獲得代碼,當(dāng)1-2相連時(shí),從外部程序存儲(chǔ)器開始獲得代碼,PSEN引腳從程序存儲(chǔ)器的地址0x0000開始有效,當(dāng)2-3相連時(shí)從內(nèi)部程序RAM中開始獲得程序代碼,PSEN引腳從程序存儲(chǔ)器的地址0x1B40開始有效。跳線J5在對控制器的硬件電路進(jìn)行測試時(shí)使用,當(dāng)2-3相連時(shí),EZ-USB的所有功能引腳浮空以便對EZ-USB的外圍電路進(jìn)行在板測試,正常使用時(shí),使1-2相連。
U7是TI公司的SN75240PW芯片,它是USB接口瞬變抑制器,用來防止靜電損壞USB接口電路。
U8是MAXIM公司的MAX687芯片,它是3.3V線性穩(wěn)壓器,用來把5V電壓變?yōu)?.3V。EZ-USB是3.3V供電,而目前大多數(shù)的直流電源只能提供5V電壓,因此必須把5V電壓變?yōu)?.3V。U8的輸入電壓的范圍為2.7V到11.5V,輸出電壓的范圍為3.15V到3.45V,典型值為3.3V,能夠提供200mA的電流,完全滿足EZ-USB對電源的要求。
U9是Microchip公司的I2C串行EEPROM 24LC02,其容量為2Kbit(256×8),Vcc的范圍為1.8V到5.5V,可以擦寫一百萬次。它主要用來存儲(chǔ)產(chǎn)品標(biāo)識(shí)碼PID、廠家標(biāo)識(shí)碼VID和設(shè)備標(biāo)識(shí)碼DID,此時(shí)串行EEPROM的第一個(gè)字節(jié)必須為0xB0。它也可以用來存儲(chǔ)EZ-USB固件程序,此時(shí)串行EEPROM的第一個(gè)字節(jié)必須為0xB2,當(dāng)AN2131Q上電時(shí),其USB內(nèi)核會(huì)自動(dòng)把固件程序裝入AN2131Q的RAM的程序存儲(chǔ)區(qū)。
U10是MAXIM公司的MAX706微處理器監(jiān)控芯片,具有系統(tǒng)上電掉電時(shí)輸出復(fù)位信號(hào)、低電平有效的手動(dòng)復(fù)位輸入、看門狗定時(shí)器、1.25V門限值檢測器等功能。PFI引腳為電源故障輸入端,R11和R12為分壓電阻,當(dāng)+5V電源的電壓低于4.7V時(shí),PFI引腳的輸入電壓低于1.25V,MAX706的電源故障輸出端PFO輸出一個(gè)低電平信號(hào),通知AN2131Q為電源掉電做準(zhǔn)備。WDI引腳為看門狗輸入端,當(dāng)WDI引腳的輸入信號(hào)在1.6s內(nèi)沒有變化時(shí),看門狗輸出端WDO會(huì)變?yōu)榈碗娖?,通過二極管D4與手動(dòng)輸入端相連,使復(fù)位輸出端產(chǎn)生一個(gè)低電平信號(hào),使AN2131Q復(fù)位??撮T狗定時(shí)器可以使單片機(jī)擺脫死機(jī)狀態(tài)。
2.數(shù)據(jù)存儲(chǔ)單元和程序存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元和程序存儲(chǔ)單元由數(shù)據(jù)存儲(chǔ)器U3和程序存儲(chǔ)器U4組成,其硬件電路如圖3所示。
數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)容量為2048K×8,它具有20位地址總線,地址總線分為低15位和高6位兩部分,低15位地址由AN2131Q的地址總線的低15位輸出,高6位由AN2131Q的數(shù)據(jù)總線通過在CPLD中設(shè)置的鎖存器輸出。數(shù)據(jù)存儲(chǔ)單元在聯(lián)機(jī)使用模式時(shí)作為本打標(biāo)控制器的數(shù)據(jù)緩沖區(qū),暫存上位機(jī)傳輸過來的打標(biāo)數(shù)據(jù),在脫機(jī)使用模式時(shí)存儲(chǔ)打標(biāo)文件的打標(biāo)數(shù)據(jù),所以它應(yīng)該具有讀寫速度快、擦寫次數(shù)不限、掉電后數(shù)據(jù)不丟失和存儲(chǔ)容量大等特點(diǎn)。因此可以采用TI公司的非易失性存儲(chǔ)器BQ4016MC作為數(shù)據(jù)存儲(chǔ)單元的存儲(chǔ)芯片,容量為1024K×8,+5V供電。它的內(nèi)部是由鋰電池和標(biāo)準(zhǔn)的SRAM以及電壓監(jiān)控電路組成。當(dāng)電壓監(jiān)控電路發(fā)現(xiàn)BQ4016MC的Vcc引腳電壓低于電壓失壓檢測閾值4.62V時(shí),內(nèi)部控制電路自動(dòng)對SRAM采取寫保護(hù)措施保護(hù)其內(nèi)部的數(shù)據(jù)不被破壞,所有的輸出引腳為高阻狀態(tài),所有的輸入引腳無效,當(dāng)Vcc降低到3V時(shí),內(nèi)部控制電路把SRAM的供電由外部自動(dòng)切換到鋰電池,直到Vcc恢復(fù)正常電壓為止。因此,在上電后,其使用和一般的SRAM一樣,具有讀寫速度快(70ns),擦寫次數(shù)沒有限制,掉電后內(nèi)部數(shù)據(jù)不會(huì)丟失,而且至少可以保存10年??紤]到TI公司容量為2048K×8的非易失性存儲(chǔ)器BQ4017MC的引腳與BQ4016MC的引腳兼容,BQ4016MC中沒連接的引腳2在BQ4017MC中為地址總線的A20引腳,其他引腳都對應(yīng)相同,因此CPLD中的鎖存器實(shí)際上輸出的是6位地址線,以便以后對數(shù)據(jù)存儲(chǔ)器進(jìn)行擴(kuò)容。
程序存儲(chǔ)單元存儲(chǔ)USB接口控制器的固件程序。雖然AN2131Q芯片內(nèi)部具有8KB的RAM,可以用來存儲(chǔ)從計(jì)算機(jī)主機(jī)下載的固件程序,但是其內(nèi)部RAM的程序存儲(chǔ)空間不能超過6976字節(jié),考慮到控制器要實(shí)現(xiàn)的功能比較多,固件程序會(huì)比較大,所以固件程序全部放在外部的程序存儲(chǔ)空間,因此在USB接口控制器的外圍擴(kuò)展了一個(gè)程序存儲(chǔ)單元,程序存儲(chǔ)芯片U4采用Atmel公司的AT29C512 Flash存儲(chǔ)芯片。它是一種采用CMOS工藝制成的容量為64K×8位32引腳的快速讀取、可快速編程可電擦除的只讀存儲(chǔ)器,讀訪問時(shí)間為70ns,可以與一般高速微處理器匹配而不需要插入等待周期。為了避免總線沖突,芯片上有兩個(gè)選通控制引腳芯片使能CE\和輸出使能OE\。它可以進(jìn)行頁編程操作,有128B的內(nèi)部地址和數(shù)據(jù)鎖存。具有快速的編程周期時(shí)間,頁擦除和編程周期時(shí)間都為10ms。單一電源電壓,用于工作電源和編程電源都為+5V±10%。三態(tài)輸出,輸入與輸出都與TTL電平兼容??裳h(huán)擦寫次數(shù)為1萬次。固件程序的寫入是在編程器上進(jìn)行的,芯片正常工作時(shí)應(yīng)該禁止寫入,芯片的寫使能引腳WE\應(yīng)該接高電平。為了使程序存儲(chǔ)器在AN213lQ運(yùn)行過程中一直選中,芯片使能CE\引腳應(yīng)該接地。程序存儲(chǔ)器讀使能引腳OE\由PSEN#引腳控制。
3.D/A轉(zhuǎn)換單元D/A轉(zhuǎn)換單元對打標(biāo)數(shù)據(jù)進(jìn)行D/A轉(zhuǎn)換,輸出模擬電壓信號(hào)去控制振鏡X軸和Y軸以及激光功率,因此它有3路D/A轉(zhuǎn)換通道。
D/A轉(zhuǎn)換單元的硬件電路圖如圖4所示,它由兩個(gè)D/A轉(zhuǎn)換芯片U5和U6、兩個(gè)運(yùn)算放大器U12和U13以及精密電壓基準(zhǔn)芯片U11組成。
U5的作用是對打標(biāo)數(shù)據(jù)的振鏡X軸和Y軸控制信號(hào)進(jìn)行數(shù)/模轉(zhuǎn)換,使它們變?yōu)槟M電壓信號(hào)去控制振鏡X軸和Y軸電機(jī)。為了使打標(biāo)的曲線平滑變化,控制振鏡X軸和Y軸的2路D/A應(yīng)該同時(shí)轉(zhuǎn)換,以使這兩個(gè)軸的電機(jī)在打標(biāo)輸出時(shí)同時(shí)轉(zhuǎn)動(dòng),所以選用MAXIM公司的數(shù)/模轉(zhuǎn)換芯片MX7837,它是雙通道、12位、乘法、電壓輸出型D/A轉(zhuǎn)換器,每路D/A轉(zhuǎn)換器都有一個(gè)輸出放大器和一個(gè)反饋電阻。它具有雙緩沖的8位數(shù)據(jù)總線接口,與單片機(jī)的8位總線兼容,12位轉(zhuǎn)換數(shù)據(jù)的輸入需要兩次寫操作。所有的邏輯信號(hào)都是低電平觸發(fā)并且與TTL電平和CMOS電平兼容。U5采用±12V或±15V供電,轉(zhuǎn)換誤差為±1LSB,電壓輸出建立時(shí)間為4μs。
控制激光功率的D/A電路U11選用MAXIM公司的精密電壓基準(zhǔn)芯片MAX675,它只有1路數(shù)/模轉(zhuǎn)換通道,為與8位數(shù)據(jù)總線兼容的12位電壓輸出型DAC,其電壓輸出信號(hào)與激光功率控制信號(hào)要求的輸入電壓兼容。U5內(nèi)部沒有自帶參考電壓,其參考電壓需要通過VREFA引腳和VREFB引腳輸入。為了獲得高精度的D/A轉(zhuǎn)換,必須有高穩(wěn)定度的參考電壓源。U11的作用是為U5提供高穩(wěn)定度的參考電壓。它是+5V精密電壓基準(zhǔn)芯片,具有優(yōu)異的溫度穩(wěn)定性,能夠保證極低的溫度漂移系數(shù),同時(shí)還具有低的吸入電流和低噪聲等特性,輸入電壓的范圍為8V到33V,典型值為15V??梢酝ㄟ^電位器Rp1對U5的輸出電壓進(jìn)行微調(diào),調(diào)節(jié)的范圍為5V±150mV。
U12、U13是MAXIM公司的低噪聲、高精度運(yùn)算放大器MAX427。U5的電壓輸出范圍為-5V-0V,而振鏡控制電路要求的輸入電壓范圍為-5V-+5V,因此,必須通過運(yùn)算放大器把-5V-0V變?yōu)?5V-+5V。U12、U13具有低噪聲、超低的偏移電壓和溫度漂移、高電壓增益等特性,采用±15V供電。可以通過電位器Rp2和Rp3分別對兩路運(yùn)算放大器的輸入偏移電壓進(jìn)行微調(diào)。
U6是MAXIM公司的數(shù)/模轉(zhuǎn)換芯片MX7248,它是單通道12位電壓輸出型D/A轉(zhuǎn)換器,內(nèi)部自帶齊納電壓參考和電壓輸出放大器,因此不需要外部的基準(zhǔn)電壓源。它具有雙緩沖邏輯接口,8位數(shù)據(jù)總線,12位轉(zhuǎn)換數(shù)據(jù)的輸入需要兩次寫操作。所有邏輯信號(hào)都是低電平觸發(fā)并且與TTL電平和CMOS電平兼容。U6采用+15V供電,轉(zhuǎn)換誤差為±1LSB,電壓輸出建立時(shí)間為5μs。
U6的作用是對打標(biāo)數(shù)據(jù)的功率控制信號(hào)進(jìn)行數(shù)/模轉(zhuǎn)換,使它變?yōu)槟M電壓信號(hào)去控制激光器的輸出功率。U6的電壓輸出范圍為0V-+10V,與激光功率控制信號(hào)要求的輸入電壓兼容,所以不需要運(yùn)算放大電路對其進(jìn)行電壓變換。
4.邏輯控制單元邏輯控制單元采用Altera公司的MAX3000A系列CPLD芯片,其硬件電路如圖5所示。
邏輯控制單元完成對AN2131Q的地址進(jìn)行譯碼,產(chǎn)生外圍電路各功能單元的選通信號(hào),對數(shù)據(jù)存儲(chǔ)器的高位地址進(jìn)行鎖存,為外圍電路提供I/O口。由于邏輯控制單元需要的I/O引腳比較多,為了避免大量芯片帶來的不便,所以選用Altera公司的MAX3000A系列可編程邏輯器件CPLD中的EPM3128ATC100,它具有100個(gè)引腳,80個(gè)可分配I/O。由于邏輯控制關(guān)系可以由MAX+PLUS和Quartus等EDA軟件通過JTAG接口下載到CPLD中去,而且可以在CPLD的硬件電路不變的情況下更改其邏輯控制關(guān)系。
MAX3000A系列CPLD是高性能、低成本可編程邏輯器件。它采用MAX體系結(jié)構(gòu),具有通過JTAG接口進(jìn)行3.3V在系統(tǒng)編程的能力。高密度的PLD,具有600到10,000的可用門。引腳之間的邏輯延時(shí)為4.5ns,多電壓接口,能夠使器件內(nèi)核工作在3.3V而I/O引腳與5V、3.3V、2.5V邏輯電平兼容,引腳數(shù)量的范圍從44到256。它采用CMOS EEPROM工藝,編程和擦除次數(shù)可達(dá)100次。具有可編程加密位,可對芯片內(nèi)的設(shè)計(jì)加密,使別人不能輕易地讀出芯片內(nèi)的設(shè)計(jì)數(shù)據(jù)。
圖6是控制器邏輯控制單元的邏輯控制關(guān)系圖??梢杂脠D形輸入的方法把它輸入到Altera公司的EDA軟件MAX+PLUS或Quartus中進(jìn)行編譯,然后通過JTAG下載線下載到CPLD中。
AN2131Q的地址總線為16位,可以訪問外部64KB存儲(chǔ)空間,但是在地址為0x0000-0x1FFF和0x7B40-0x7FFF的存儲(chǔ)空間,其RD#、WR#、CS#、OE#等控制信號(hào)無效,因而當(dāng)AN2131Q訪問外部存儲(chǔ)器時(shí),不能連續(xù)尋址外部64KB存儲(chǔ)空間。為了對外部數(shù)據(jù)存儲(chǔ)器實(shí)現(xiàn)連續(xù)存取,充分利用其存儲(chǔ)空間,對存儲(chǔ)器按頁來讀寫,每頁大小為32KB,其存儲(chǔ)單元地址由單片機(jī)的低15位地址線A0-A14來提供,為了避免讀寫控制信號(hào)無效的地址空間,把每頁存儲(chǔ)單元的地址定為0x8000-0xFFFF。存儲(chǔ)器的高位地址為頁地址,對于2048K×8的存儲(chǔ)器,其頁地址從0x00到0x40。從圖6的邏輯控制關(guān)系圖可以看出,當(dāng)AN2131Q訪問0x0000到0x7FFF的存儲(chǔ)空間時(shí),A15引腳為低電平,外部數(shù)據(jù)存儲(chǔ)器的片選信號(hào)CE為高電平,外部數(shù)據(jù)存儲(chǔ)器沒有被選中,單片機(jī)不能訪問外部數(shù)據(jù)存儲(chǔ)器,而當(dāng)AN2131Q訪問0x8000到0xFFFF的存儲(chǔ)空間時(shí),A15引腳為高電平,外部數(shù)據(jù)存儲(chǔ)器的片選信號(hào)CE為低電平,外部數(shù)據(jù)存儲(chǔ)器被選中,單片機(jī)可以訪問外部數(shù)據(jù)存儲(chǔ)器。外部數(shù)據(jù)存儲(chǔ)器的頁地址(存儲(chǔ)器高6位)1A15-1A20由數(shù)據(jù)總線通過鎖存器輸出。
地址線A4-A15參加譯碼,通過譯碼器產(chǎn)生外部I/O口的片選信號(hào)。各端口地址如下1.DAC1_2D/A轉(zhuǎn)換開始信號(hào)端口LDACa地址-0x300X(X為任意值,下同);片選信號(hào)輸出端口CSa地址-0x301X;2.DAC3D/A轉(zhuǎn)換開始信號(hào)端口LDACb地址-0x302X;低8位輸出端口CSLSB地址-0x303X;高4位輸出端口CSMSB地址-0x304X;3.LCD片選信號(hào)輸出端口CS1地址-0x305X;4.聲光Q開關(guān)控制信號(hào)輸出端口Q地址-0x306X;5.數(shù)據(jù)存儲(chǔ)器高位地址輸出端口AddrH地址-0x307X;6.鍵盤接口A端口KeyA地址-0x308X;接口B端口KeyB地址-0x309X。
AN2131Q的讀寫信號(hào)RD和WR以及數(shù)據(jù)總線D0-D7經(jīng)過CPLD輸出,是為了提高它們的驅(qū)動(dòng)能力。AN2131Q的每個(gè)引腳的最大輸出電流只有±1.6mA,而AN2131Q數(shù)據(jù)總線和控制總線要驅(qū)動(dòng)的芯片有5個(gè)之多,考慮到MAX3000A系列CPLD的每個(gè)I/O引腳的最大輸出電流達(dá)到±25mA,因此這樣做既提高了單片機(jī)的數(shù)據(jù)總線和控制總線的驅(qū)動(dòng)能力,又省去了使用緩沖器的麻煩,充分利用了CPLD的I/O引腳。
微處理器監(jiān)控芯片U10輸出的RESET信號(hào)是低電平有效,而AN2131Q的復(fù)位信號(hào)是高電平有效,因此使RESET信號(hào)在CPLD中反相后輸出。
5.人機(jī)接口單元人機(jī)接口單元主要是在脫機(jī)使用時(shí)對控制器進(jìn)行打標(biāo)文件的選取、設(shè)定打標(biāo)參數(shù)、刪除打標(biāo)文件等控制操作,它由鍵盤和LCD顯示模塊組成,其硬件電路如圖7所示,它主要包括鍵盤接口插座P9和LCD顯示模塊接口插座P2以及帶施密特觸發(fā)器的反相器U15。
為了利用充分利用CPLD的I/O引腳,簡化按鍵查詢程序,鍵盤的接口方式采用獨(dú)立方式,每個(gè)獨(dú)立按鍵以一對一的方式直接接到CPLD的I/O輸入線上,每個(gè)輸入引腳都接上一個(gè)上拉電阻,使鍵盤的輸入為低電平有效。鍵盤端口A的8位按鍵KEYA0-KEYA7的狀態(tài)和端口B的8位按鍵KEYB0-KEYB7的狀態(tài)由單片機(jī)通過數(shù)據(jù)總線讀入,而其他輸入引腳通過帶施密特觸發(fā)器的反相器U15直接與單片機(jī)的INT0、INT1、INT4、INT6等中斷請求信號(hào)輸入引腳相連。帶施密特觸發(fā)器的反相器使按鍵的輸入信號(hào)波形變得陡直,保證單片機(jī)能夠可靠地檢測到中斷請求信號(hào)。
各個(gè)按鍵的功能定義如下S1-數(shù)字鍵0;S2-數(shù)字鍵1;S3-數(shù)字鍵2;S4-數(shù)字鍵3;S5-數(shù)字鍵4;S6-數(shù)字鍵5;S7-數(shù)字鍵6;S8-數(shù)字鍵7;S9-數(shù)字鍵8;S10-數(shù)字鍵4S11-保留;S12-“+”號(hào);S13-“-”號(hào);S14-確認(rèn);S15-取消;S16-保留;S17-停止;S18-開始;S19-復(fù)位;S20-功能;LCD顯示模塊的型號(hào)為YM12864F,其接口引腳如圖7所示。YM12864F是128×64點(diǎn)陣圖形液晶顯示模塊,它自帶T6963C LCD控制器和T6A39、T6A40 LCD驅(qū)動(dòng)器,8KB的外部顯示存儲(chǔ)器(SRAM),128個(gè)字符的內(nèi)部字符發(fā)生器CGROM,有圖形、字符、圖形和字符混合三種顯示模式以及6×8和8×8兩種顯示字體。
YM12864F可以采用負(fù)電源和+5V供電,也可以采用單-+5V供電。采用負(fù)電源和+5V供電時(shí)可以通過電位器Rp4來調(diào)節(jié)LCD顯示的對比度??烧{(diào)電阻R52用來調(diào)節(jié)顯示模塊的背光亮度。
以下結(jié)合圖8至圖12說明本發(fā)明的工作過程USB批量數(shù)據(jù)傳輸是大批串行數(shù)據(jù)的傳輸,光有打標(biāo)數(shù)據(jù)的格式還不行,還得規(guī)定打標(biāo)數(shù)據(jù)的傳輸順序,讓單片機(jī)知道打標(biāo)數(shù)據(jù)什么時(shí)候傳輸開始,什么時(shí)候傳輸結(jié)束,各個(gè)字節(jié)屬于哪一個(gè)打標(biāo)插補(bǔ)點(diǎn)數(shù)據(jù)的哪一部分。
我們規(guī)定,在第一個(gè)批量傳輸事務(wù)的開始為一個(gè)打標(biāo)文件的打標(biāo)數(shù)據(jù)傳輸開始,當(dāng)打標(biāo)文件的打標(biāo)數(shù)據(jù)傳輸完畢后,主機(jī)通過控制傳輸發(fā)送一個(gè)打標(biāo)數(shù)據(jù)傳輸完畢信號(hào),單片機(jī)就知道打標(biāo)數(shù)據(jù)傳輸完畢。在批量傳輸過程中,打標(biāo)數(shù)據(jù)是按第1個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)→第2個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)→第3個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)…這樣的順序傳輸?shù)?,而每個(gè)插補(bǔ)點(diǎn)數(shù)據(jù)的每個(gè)字節(jié)是按如下順序傳輸?shù)?.矢量打標(biāo)時(shí)振鏡X軸定位控制信號(hào)低8位XL→振鏡X軸定位控制信號(hào)高8位XH→振鏡Y軸定位控制信號(hào)低8位YL→振鏡Y軸定位控制信號(hào)高8位YH→聲光Q開關(guān)控制信號(hào)Q;2.點(diǎn)陣打標(biāo)時(shí)振鏡X軸定位控制信號(hào)低8位XL→振鏡X軸定位控制信號(hào)高8位XH→振鏡Y軸定位控制信號(hào)低8位YL→振鏡Y軸定位控制信號(hào)高8位YH。
當(dāng)控制器中的單片機(jī)正確從USB總線傳輸過來的數(shù)據(jù)中取出打標(biāo)數(shù)據(jù)后,再加上相應(yīng)的控制信號(hào),如延時(shí)控制信號(hào)、激光功率控制信號(hào)(用2個(gè)字節(jié)表示,PL表示低8位,PH表示高8位),以插補(bǔ)點(diǎn)為單位,按USB總線傳輸過來的順序輸出。每次輸出一個(gè)插補(bǔ)點(diǎn)時(shí),其數(shù)據(jù)的每個(gè)字節(jié)的輸出順序如下1.矢量打標(biāo)時(shí)振鏡X軸定位控制信號(hào)低8位XL→振鏡X軸定位控制信號(hào)高8位XH→振鏡Y軸定位控制信號(hào)低8位YL→振鏡Y軸定位控制信號(hào)高8位YH→激光功率控制信號(hào)低8位PL→激光功率控制信號(hào)高8位PH→聲光Q開關(guān)控制信號(hào)Q→延時(shí)控制信號(hào);2.點(diǎn)陣打標(biāo)時(shí)振鏡X軸定位控制信號(hào)低8位XL→振鏡X軸定位控制信號(hào)高8位XH→振鏡Y軸定位控制信號(hào)低8位YL→振鏡Y軸定位控制信號(hào)高8位YH→激光功率控制信號(hào)低8位PL→激光功率控制信號(hào)高8位PH→聲光Q開關(guān)出光控制信號(hào)Q→延時(shí)控制信號(hào)→聲光Q開關(guān)關(guān)光控制信號(hào)Q;聯(lián)機(jī)工作USB傳輸過程的流程圖如圖8所示。首先上位機(jī)通過控制傳輸向控制器發(fā)出獲取控制器狀態(tài)請求,控制器使用1個(gè)字節(jié)的數(shù)據(jù)返回控制器狀態(tài),如果控制器返回“打標(biāo)中”或“出錯(cuò)”狀態(tài)或在規(guī)定時(shí)間內(nèi)沒有返回控制器狀態(tài)數(shù)據(jù),則上位機(jī)報(bào)告控制器的狀態(tài),如果控制器返回“空閑”狀態(tài),則上位機(jī)向控制器發(fā)出設(shè)置工作模式請求和設(shè)置打標(biāo)參數(shù)請求,告訴控制器打標(biāo)工作模式為“聯(lián)機(jī)工作、矢量打標(biāo)或點(diǎn)陣打標(biāo)”,并確定插補(bǔ)周期和激光功率。如果上位機(jī)在控制傳輸?shù)臓顟B(tài)階段收到控制操作成功完成的應(yīng)答信號(hào),則上位機(jī)就可以使用批量傳輸中的OUT事務(wù)(數(shù)據(jù)凈負(fù)荷區(qū)的長度為64字節(jié))依次傳送各個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)。控制器把上位機(jī)傳來的打標(biāo)數(shù)據(jù)存放在32KB的緩沖器中,當(dāng)緩沖器中存滿16KB打標(biāo)數(shù)據(jù)時(shí),控制器以插補(bǔ)周期定時(shí)產(chǎn)生中斷,每次中斷輸出1個(gè)插補(bǔ)點(diǎn)。當(dāng)打標(biāo)數(shù)據(jù)不足16KB時(shí),上位機(jī)通過發(fā)出開始打標(biāo)請求來啟動(dòng)控制器的打標(biāo)輸出。當(dāng)打標(biāo)數(shù)據(jù)傳輸完畢時(shí),上位機(jī)通過控制傳輸發(fā)出數(shù)據(jù)傳輸結(jié)束請求,告訴控制器打標(biāo)數(shù)據(jù)已傳輸完畢。在聯(lián)機(jī)打標(biāo)過程中,如果需要中途停止打標(biāo),上位機(jī)可以通過放棄打標(biāo)請求來結(jié)束打標(biāo)操作。
脫機(jī)工作USB傳輸過程的流程圖如圖9所示。首先,上位機(jī)通過控制傳輸向控制器發(fā)出獲取控制器狀態(tài)請求,控制器使用1個(gè)字節(jié)的數(shù)據(jù)返回控制器狀態(tài),如果控制器返回“打標(biāo)中”或“出錯(cuò)”狀態(tài)或在規(guī)定時(shí)間內(nèi)沒有返回控制器狀態(tài)數(shù)據(jù),則上位機(jī)報(bào)告控制器的狀態(tài),如果控制器返回“空閑”狀態(tài),則上位機(jī)再向控制器發(fā)出獲取剩余存儲(chǔ)器空間請求,控制器用4個(gè)字節(jié)的數(shù)據(jù)返回控制器剩余存儲(chǔ)器空間大小,用1個(gè)字節(jié)返回存儲(chǔ)的文件數(shù)量。如果剩余存儲(chǔ)器空間小于打標(biāo)文件大小或文件數(shù)量為10,則上位機(jī)就報(bào)告控制器剩余空間不足或文件數(shù)量超額,如果如果剩余存儲(chǔ)器空間大于或等于打標(biāo)文件大小且文件數(shù)量小于10,則上位機(jī)再使用控制傳輸向控制器發(fā)出設(shè)置工作模式請求和設(shè)置打標(biāo)參數(shù)請求,告訴控制器打標(biāo)工作模式為“脫機(jī)工作、矢量打標(biāo)或點(diǎn)陣打標(biāo)”,并確定插補(bǔ)周期和激光功率。如果上位機(jī)在控制傳輸?shù)臓顟B(tài)階段收到控制操作成功完成的應(yīng)答信號(hào),則上位機(jī)使用批量傳輸中的OUT事務(wù)(數(shù)據(jù)凈負(fù)荷區(qū)的長度為64字節(jié))依次傳送各個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù),控制器把上位機(jī)傳來的數(shù)據(jù)存儲(chǔ)在控制器的數(shù)據(jù)存儲(chǔ)器中。當(dāng)打標(biāo)數(shù)據(jù)傳輸完畢時(shí),上位機(jī)通過控制傳輸發(fā)出數(shù)據(jù)傳輸結(jié)束請求,告訴控制器打標(biāo)數(shù)據(jù)已傳輸完畢,等待脫機(jī)工作。
激光打標(biāo)控制器固件是固化到EZ-USB代碼區(qū)的底層程序,可以用匯編語言或C51編寫,它主要完成USB協(xié)議處理與數(shù)據(jù)交換,配置控制器,實(shí)現(xiàn)與計(jì)算機(jī)的USB通信以及輸出打標(biāo)數(shù)據(jù)等功能。固件是USB設(shè)備開發(fā)的重點(diǎn)和難點(diǎn),要對固件進(jìn)行設(shè)計(jì),就必須既熟悉USB協(xié)議,又了解USB接口控制器芯片的內(nèi)部硬件資源,還得有匯編語言或C51的編程經(jīng)驗(yàn)。固件既要實(shí)現(xiàn)USB設(shè)備與主機(jī)的USB傳輸,又要實(shí)現(xiàn)USB設(shè)備的功能,因此它的性能直接決定USB通信的實(shí)際傳輸速度和USB設(shè)備的性能。由于使用了EZ-USB芯片,廠方提供了控制器程序框架和通用驅(qū)動(dòng)程序,大大加快了程序開發(fā)的進(jìn)度,以及開發(fā)程序的難度。
固件程序框架要完成EZ-USB的初始化、處理標(biāo)準(zhǔn)USB設(shè)備請求和自定義設(shè)備請求以及USB掛起時(shí)的電源管理,而控制器功能的實(shí)現(xiàn)由固件的打標(biāo)數(shù)據(jù)傳輸、打標(biāo)數(shù)據(jù)輸出、人機(jī)接口等三個(gè)功能模塊來完成。
控制器固件的程序框架流程圖如圖10所示。EZ-USB上電復(fù)位后,程序框架首先初始化所有的內(nèi)部狀態(tài)變量,然后調(diào)用用戶初始化函數(shù)TD_Init(),初始化用戶的全局狀態(tài)變量,并同時(shí)打開中斷。當(dāng)完成上面的任務(wù)后,EZ-USB固件程序就每隔1秒進(jìn)行一次設(shè)備重枚舉直到端點(diǎn)0接收到一個(gè)SETUP包為止。一旦EZ-USB收到SETUP包,固件程序框架就開始進(jìn)行任務(wù)分配。任務(wù)分配就是依次重復(fù)地執(zhí)行下面的過程1.判斷是否有鍵按下,如果有,則調(diào)用人機(jī)接口函數(shù)Key_Display()。函數(shù)Key_Display()的任務(wù)是對按鍵進(jìn)行判斷,分析其功能,并對其進(jìn)行相應(yīng)的處理,如選擇打標(biāo)文件、設(shè)定打標(biāo)參數(shù)、刪除打標(biāo)文件等,并通過LCD顯示模塊對其相應(yīng)的信息進(jìn)行顯示。2.調(diào)用用戶函數(shù)TD_Poll()。用戶函數(shù)TD_Poll()就是打標(biāo)數(shù)據(jù)USB傳輸固件模塊,其任務(wù)是接收計(jì)算機(jī)通過USB總線傳輸?shù)紼Z-USB批量傳輸端點(diǎn)的打標(biāo)數(shù)據(jù),并根據(jù)控制器的工作模式(聯(lián)機(jī)工作或脫機(jī)工作)來決定是把它們暫時(shí)存儲(chǔ)在控制器的緩沖器中還是存儲(chǔ)在打標(biāo)文件的存儲(chǔ)空間中。3.判斷是否有設(shè)備請求,如果有,則分析該請求并做出相應(yīng)的操作。控制器固件程序不但要對USB標(biāo)準(zhǔn)設(shè)備請求做出響應(yīng),還要對自定義設(shè)備請求做出相應(yīng)的處理。在打標(biāo)數(shù)據(jù)傳輸之前,計(jì)算機(jī)還要向控制器傳輸一些控制命令,如查詢控制器狀態(tài)、控制器復(fù)位、選擇打標(biāo)方式以及傳輸打標(biāo)延時(shí)參數(shù)和激光功率參數(shù)等,這些信號(hào)都以自定義設(shè)備請求的形式通過SETUP包傳輸給控制器,從而達(dá)到對控制器進(jìn)行控制的目的。在聯(lián)機(jī)工作模式的情況下,當(dāng)打標(biāo)數(shù)據(jù)傳輸?shù)揭欢〝?shù)量時(shí),計(jì)算機(jī)通過SETUP包發(fā)出開始打標(biāo)指令,啟動(dòng)Timer0開始打標(biāo)輸出,當(dāng)一個(gè)文件的打標(biāo)數(shù)據(jù)傳輸完畢后,計(jì)算機(jī)通過SETUP包發(fā)出數(shù)據(jù)傳輸完畢指令,使控制器能夠正常結(jié)束打標(biāo)操作。如果打標(biāo)需要中途停止,計(jì)算機(jī)通過SETUP包發(fā)出放棄打標(biāo)請求,使打標(biāo)過程中止。4.判斷是否需要初始化Timer0,如果需要,則調(diào)用Timer0的初始化函數(shù)Timer0_Init()。每一個(gè)打標(biāo)文件輸出之前都要對Timer0進(jìn)行初始化。初始化的操作包括設(shè)定Timer0的工作模式,計(jì)數(shù)數(shù)值、打開Timer0中斷等。5.判斷USB內(nèi)核是否接收到USB掛起信號(hào)。如果接收到,則調(diào)用用戶函數(shù)TD Suspend(),此函數(shù)可使設(shè)備處于低功耗狀態(tài)并返回TRUE或FALSE。當(dāng)TD_Suspend()返回為TRUE時(shí),再檢測是否發(fā)生USB喚醒事件,如果未檢測到,則處理器進(jìn)入掛起狀態(tài),如果檢測到,則調(diào)用用戶函數(shù)TD_Resume(),對處理器進(jìn)行重啟,程序繼續(xù)運(yùn)行。如果從TD_Suspend()函數(shù)返回為FALSE,則程序繼續(xù)運(yùn)行。
打標(biāo)數(shù)據(jù)輸出由Timer0的時(shí)鐘中斷服務(wù)程序來完成的。
打標(biāo)數(shù)據(jù)傳輸固件模塊TD_Poll()主要完成接收通過USB總線傳輸過來的打標(biāo)數(shù)據(jù)的任務(wù),其執(zhí)行過程的流程圖如圖9所示。
固件程序首先對變量進(jìn)行初始化,然后根據(jù)通過控制傳輸發(fā)送的設(shè)置工作模式請求分析打標(biāo)文件的工作模式,判斷是聯(lián)機(jī)矢量打標(biāo)、聯(lián)機(jī)點(diǎn)陣打標(biāo)、脫機(jī)矢量打標(biāo)和脫機(jī)點(diǎn)陣打標(biāo)中的哪一種。
當(dāng)打標(biāo)文件的工作模式為聯(lián)機(jī)矢量打標(biāo)時(shí),固件程序按順序執(zhí)行如下過程1.判斷EZ-USB的批量傳輸端點(diǎn)OUT2(假設(shè)接收打標(biāo)數(shù)據(jù)的批量傳輸端點(diǎn)為OUT2端點(diǎn))有沒有打標(biāo)數(shù)據(jù)。如果OUT2端點(diǎn)沒有打標(biāo)數(shù)據(jù),則直接從TD_Poll()函數(shù)返回到固件的程序框架,執(zhí)行程序框架中其他的語句和函數(shù)。
2.判斷緩沖器中暫存的打標(biāo)數(shù)據(jù)是否超過16KB,并且判斷正在打標(biāo)的標(biāo)志變量MarkFlag的值是否等于0。當(dāng)這兩個(gè)條件同時(shí)滿足時(shí),就啟動(dòng)Timer0開始計(jì)時(shí),并且把1賦值給MarkFlag,以表明打標(biāo)正在進(jìn)行中,當(dāng)Timer0計(jì)時(shí)時(shí)間到時(shí)就產(chǎn)生Timer0中斷,進(jìn)行打標(biāo)數(shù)據(jù)輸出。
3.判斷緩沖器是否已經(jīng)存滿打標(biāo)數(shù)據(jù)。為了避免打標(biāo)數(shù)據(jù)的丟失,在往緩沖器存打標(biāo)數(shù)據(jù)之前要判斷緩沖器是否已經(jīng)存滿數(shù)據(jù)。如果緩沖器已滿,則進(jìn)入等待狀態(tài),直到有打標(biāo)數(shù)據(jù)輸出使緩沖器空出一個(gè)緩沖單元為止。
4.從OUT2端點(diǎn)取一個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)存入緩沖器,然后使緩沖器輸入指針指向下一個(gè)緩沖單元,再使計(jì)數(shù)器i的值增加5。i用來計(jì)數(shù)已從OUT2端點(diǎn)取走數(shù)據(jù)的字節(jié)數(shù),i的值加5是因?yàn)槭噶看驑?biāo)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)由5個(gè)字節(jié)構(gòu)成。
5.比較i值和OUT2端點(diǎn)的字節(jié)計(jì)數(shù)器OUT2BC值的大小。如果i小于OUT2BC,說明OUT2端點(diǎn)的數(shù)據(jù)還沒取完,還得繼續(xù)從前面的過程2開始執(zhí)行,把OUT2端點(diǎn)中下一個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)存到緩沖器中。如果i大于OUT2BC,說明OUT2端點(diǎn)的數(shù)據(jù)已經(jīng)取完,然后寫0到OUT2BC中,再返回到固件的程序框架。寫0到OUT2BC中是為了使OUT2端點(diǎn)在下次調(diào)用TD_Poll()函數(shù)時(shí)準(zhǔn)備好接收下一個(gè)數(shù)據(jù)包。
當(dāng)打標(biāo)文件的工作模式為聯(lián)機(jī)點(diǎn)陣打標(biāo)時(shí),打標(biāo)數(shù)據(jù)的傳輸過程與聯(lián)機(jī)矢量打標(biāo)的數(shù)據(jù)傳輸過程基本相同。由于點(diǎn)陣打標(biāo)的插補(bǔ)點(diǎn)數(shù)據(jù)由4個(gè)字節(jié)構(gòu)成,因而每次取完一個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)后,計(jì)數(shù)器i的值增加4。
當(dāng)打標(biāo)文件的工作模式為脫機(jī)矢量打標(biāo)和脫機(jī)點(diǎn)陣打標(biāo)時(shí),它們的打標(biāo)數(shù)據(jù)傳輸過程都相同,固件程序按順序執(zhí)行下面的過程1.判斷EZ-USB的批量傳輸端點(diǎn)OUT2有沒有打標(biāo)數(shù)據(jù)。如果OUT2端點(diǎn)沒有打標(biāo)數(shù)據(jù),則直接執(zhí)行過程5。
2.判斷數(shù)據(jù)開始傳輸標(biāo)志變量StartFlag的值是否等于0。如果StartFlag的值等于0,則調(diào)用Start_Addr()函數(shù)。Start_Addr()函數(shù)主要實(shí)現(xiàn)把通過控制傳輸?shù)淖远x設(shè)備請求傳輸過來的打標(biāo)參數(shù)和打標(biāo)類型存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中,設(shè)定打標(biāo)文件存儲(chǔ)的起始地址,并使打標(biāo)數(shù)據(jù)輸入指針指向起始地址等功能。當(dāng)程序從Start_Addr()函數(shù)返回后,使變量StartFlag的值為1,以表明打標(biāo)數(shù)據(jù)已經(jīng)開始傳輸。如果變量StartFlag的值不等于0,則說明已經(jīng)開始打標(biāo)數(shù)據(jù)的傳輸,不需要調(diào)用Start_Addr()函數(shù),直接執(zhí)行過程3。
3.從OUT2端點(diǎn)取1個(gè)字節(jié)的打標(biāo)數(shù)據(jù)存入打標(biāo)數(shù)據(jù)輸入指針指向的存儲(chǔ)單元,然后使打標(biāo)數(shù)據(jù)輸入指針指向下一個(gè)存儲(chǔ)單元,接著使計(jì)數(shù)器i的值加1。
4.比較i值和OUT2端點(diǎn)的字節(jié)計(jì)數(shù)器OUT2BC值的大小。如果i小于OUT2BC,說明OUT2端點(diǎn)的數(shù)據(jù)還沒取完,還得繼續(xù)執(zhí)行前面取打標(biāo)數(shù)據(jù)的步驟,把OUT2端點(diǎn)中下一個(gè)字節(jié)的打標(biāo)數(shù)據(jù)存到存儲(chǔ)器中。如果i大于OUT2BC,說明OUT2端點(diǎn)的數(shù)據(jù)已經(jīng)取完,然后寫0到OUT2BC中,使OUT2端點(diǎn)準(zhǔn)備好接收下一個(gè)數(shù)據(jù)包。
5.判斷打標(biāo)數(shù)據(jù)傳輸完畢標(biāo)志變量DataFinish的值是否等于0。如果DataFinish的值等于0,則說明打標(biāo)數(shù)據(jù)傳輸完畢,然后調(diào)用End_Addr()函數(shù),設(shè)定打標(biāo)文件的結(jié)束地址,當(dāng)程序從End_Addr()函數(shù)返回后,再使變量DataFinish的值為1,使變量StartFlag的值為0,這樣就使這兩個(gè)變量的值恢復(fù)到打標(biāo)數(shù)據(jù)傳輸之前的初始狀態(tài),然后返回到固件的程序框架,準(zhǔn)備下一次打標(biāo)數(shù)據(jù)的傳輸。如果變量DataFinish的值不等于0,則說明打標(biāo)數(shù)據(jù)還沒有傳輸完畢,然后返回到固件的程序框架,準(zhǔn)備接收打標(biāo)數(shù)據(jù)的下一次USB批量傳輸。
打標(biāo)數(shù)據(jù)輸出固件模塊是Timer0的中斷服務(wù)程序,主要完成把存儲(chǔ)在緩沖器或數(shù)據(jù)存儲(chǔ)器中的打標(biāo)數(shù)據(jù)進(jìn)行D/A轉(zhuǎn)換輸出的任務(wù),其執(zhí)行過程的流程圖如圖11所示。
當(dāng)Timer0計(jì)時(shí)時(shí)間到時(shí),產(chǎn)生Timer0中斷,進(jìn)入Timer0的中斷服務(wù)程序。固件程序首先停止Timer0計(jì)時(shí),然后分析打標(biāo)文件的工作模式,判斷是聯(lián)機(jī)矢量打標(biāo)、聯(lián)機(jī)點(diǎn)陣打標(biāo)、脫機(jī)矢量打標(biāo)和脫機(jī)點(diǎn)陣打標(biāo)中的哪一種。
當(dāng)打標(biāo)文件的工作模式為聯(lián)機(jī)矢量打標(biāo)時(shí),中斷服務(wù)程序按順序執(zhí)行如下過程1.判斷緩沖器是否為空。如果緩沖器為空,說明其中沒有打標(biāo)數(shù)據(jù),則關(guān)掉激光,再判斷打標(biāo)數(shù)據(jù)傳輸完畢標(biāo)志變量DataFinish的值是否等于0。如果DataFinish等于0,就說明打標(biāo)數(shù)據(jù)已經(jīng)輸出完畢,則使變量MarkFlag等于0,變量DataFinish等于1,并使打標(biāo)輸入和輸出指針都復(fù)位,這樣使它們都恢復(fù)到打標(biāo)輸出之前的狀態(tài),然后中斷返回,等待下一次打標(biāo)輸出。如果DataFinish不等于0,說明打標(biāo)數(shù)據(jù)還沒有輸出完畢,則啟動(dòng)Timer0計(jì)時(shí),然后中斷返回,等待再次進(jìn)行打標(biāo)輸出。
2.X軸的定位控制信號(hào)送入DACl,Y軸的定位控制信號(hào)送入DAC2,然后同時(shí)啟動(dòng)DACl和DAC2。
3.激光功率信號(hào)送入DAC3,然后啟動(dòng)DAC3。
4.輸出聲光Q開關(guān)控制信號(hào),然后使打標(biāo)輸出指針指向下一個(gè)緩沖單元。
5.啟動(dòng)Timer0計(jì)時(shí),然后中斷返回,等待下一個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)輸出。
當(dāng)打標(biāo)文件的工作模式為聯(lián)機(jī)點(diǎn)陣打標(biāo)時(shí),中斷服務(wù)程序執(zhí)行過程與工作模式為聯(lián)機(jī)矢量打標(biāo)時(shí)基本相同,不同的是聯(lián)機(jī)點(diǎn)陣打標(biāo)輸出時(shí),用在判斷緩沖器是否已滿的過程之前的關(guān)閉激光和在啟動(dòng)DAC3之后打開激光這兩個(gè)操作代替聯(lián)機(jī)矢量打標(biāo)輸出時(shí)的聲光Q開關(guān)控制信號(hào)輸出操作。
當(dāng)打標(biāo)文件的工作模式為脫機(jī)矢量打標(biāo)時(shí),中斷服務(wù)程序按順序執(zhí)行如下過程1.判斷正在打標(biāo)標(biāo)志變量MarkFlag的值是否等于0。如果MarkFlag的值等于0,說明這次打標(biāo)數(shù)據(jù)輸出是這個(gè)打標(biāo)文件的第一次輸出,則調(diào)用Set_Pointer()函數(shù)。Set_Pointer()函數(shù)主要實(shí)現(xiàn)從數(shù)據(jù)存儲(chǔ)器中讀取打標(biāo)文件的起始地址并把它賦給打標(biāo)輸出指針的功能。然后再使變量MarkFlag的值為1,以表明打標(biāo)數(shù)據(jù)正在輸出。
2.判斷打標(biāo)數(shù)據(jù)是否輸出完畢。如果輸出完畢,則使變量MarkFlag的值為0,然后關(guān)閉激光,再中斷返回,等待下一個(gè)打標(biāo)文件的輸出。
3.X軸的定位控制信號(hào)送入DAC1,Y軸的定位控制信號(hào)送入DAC2,然后同時(shí)啟動(dòng)DAC1和DAC2。
4.激光功率信號(hào)送入DAC3,然后啟動(dòng)DAC3。
5.輸出聲光Q開關(guān)控制信號(hào),然后使打標(biāo)輸出指針指向下一個(gè)存儲(chǔ)單元。
6.啟動(dòng)Timer0計(jì)時(shí),然后中斷返回,等待下一個(gè)插補(bǔ)點(diǎn)的打標(biāo)數(shù)據(jù)輸出。
當(dāng)打標(biāo)文件的工作模式為脫機(jī)點(diǎn)陣打標(biāo)時(shí),中斷服務(wù)程序執(zhí)行過程與工作模式為脫機(jī)矢量打標(biāo)時(shí)基本相同,不同的是脫機(jī)點(diǎn)陣打標(biāo)輸出時(shí),用判斷標(biāo)志變量MarkFlag的值是否等于0的過程之前的關(guān)閉激光和啟動(dòng)DAC3之后打開激光這兩個(gè)操作代替脫機(jī)矢量打標(biāo)輸出時(shí)的聲光Q開關(guān)控制信號(hào)輸出操作。
人機(jī)接口固件模塊Key_Display()函數(shù)主要在脫機(jī)使用時(shí)完成對數(shù)據(jù)存儲(chǔ)器中打標(biāo)文件的選擇、打標(biāo)參數(shù)的修改、刪除其中的打標(biāo)文件、開始打標(biāo)、放棄打標(biāo)、控制器復(fù)位等操作,從而實(shí)現(xiàn)對控制器的控制,其執(zhí)行過程的流程圖如圖12所示。
固件模塊首先對變量進(jìn)行初始化,然后根據(jù)輸入的鍵值分析其要實(shí)現(xiàn)的功能,確定是選擇打標(biāo)文件、修改打標(biāo)參數(shù)、刪除打標(biāo)文件等3種操作中的哪一種。
當(dāng)輸入的功能鍵是選擇打標(biāo)文件時(shí),首先判斷有沒有文件編號(hào)輸入,如果沒有就一直等待,直到有文件編號(hào)輸入為止。如果有文件編號(hào)輸入,則判斷文件選擇是否確認(rèn),如果沒有確認(rèn),就直接從函數(shù)返回。如果文件選擇確認(rèn),就指定選擇的文件編號(hào),接著再把選擇的文件編號(hào)通過LCD顯示模塊顯示出來,然后從函數(shù)返回到固件的程序框架。
當(dāng)輸入的功能鍵是修改打標(biāo)參數(shù)時(shí),首先選擇要修改的參數(shù)。如果選擇的是修改激光功率首先判斷有沒有參數(shù)輸入,如果沒有參數(shù)輸入就一直等待,直到有參數(shù)輸入為止;如果有參數(shù)輸入,則判斷修改是否確認(rèn),如果修改沒有確認(rèn),就直接從函數(shù)返回,如果修改確認(rèn),就保存修改的打標(biāo)參數(shù)并通過LCD顯示模塊顯示出來,接著再返回到固件的程序框架。如果選擇的是修改延時(shí)參數(shù),其執(zhí)行的過程和修改激光功率的過程相同。
當(dāng)輸入的功能鍵是刪除打標(biāo)文件時(shí),首先選擇刪除方式。如果選擇的是刪除最后一個(gè)文件首先判斷刪除是否確認(rèn),如果沒有確認(rèn),就直接從函數(shù)返回;如果刪除得到確認(rèn),就從數(shù)據(jù)存儲(chǔ)器中清除編號(hào)最后的一個(gè)文件的信息,然后再通過LCD顯示模塊顯示“刪除完畢”信息,最后再從函數(shù)返回到固件的程序框架。如果選擇的是刪除全部文件,其執(zhí)行過程基本與刪除最后一個(gè)文件的過程相同,不同的是,當(dāng)刪除確認(rèn)后,就把所有文件的信息從數(shù)據(jù)存儲(chǔ)器中刪除。
另外,開始打標(biāo)、放棄打標(biāo)、控制器復(fù)位等功能鍵直接與EZ-USB的外部中斷輸入引腳相連,它們的功能實(shí)現(xiàn)是通過各自的中斷服務(wù)程序來完成。
權(quán)利要求
1.一種基于USB接口的打標(biāo)控制器,包括USB接口控制器單元、數(shù)據(jù)存儲(chǔ)單元、程序存儲(chǔ)單元、D/A轉(zhuǎn)換單元、邏輯控制單元和人機(jī)接口單元;其中(1)USB接口控制器單元,支持USB1.1規(guī)范,具有獨(dú)立的8位數(shù)據(jù)總線和16位地址總線,有利于芯片的外圍電路擴(kuò)展;(2)數(shù)據(jù)存儲(chǔ)單元,在聯(lián)機(jī)使用模式時(shí)作為本打標(biāo)控制器的數(shù)據(jù)緩沖區(qū),暫存上位機(jī)傳輸過來的打標(biāo)數(shù)據(jù),在脫機(jī)使用模式時(shí)存儲(chǔ)打標(biāo)文件的打標(biāo)數(shù)據(jù);(3)程序存儲(chǔ)單元,存儲(chǔ)USB接口控制器單元的固件程序;(4)D/A轉(zhuǎn)換單元,具有3路D/A轉(zhuǎn)換通道,對打標(biāo)數(shù)據(jù)進(jìn)行D/A轉(zhuǎn)換,分別輸出模擬電壓信號(hào)去控制振鏡X軸、Y軸以及激光功率;(5)邏輯控制單元,對USB接口控制器單元的地址進(jìn)行譯碼,產(chǎn)生D/A轉(zhuǎn)換單元、數(shù)據(jù)存儲(chǔ)單元、程序存儲(chǔ)單元、人機(jī)接口單元的選通信號(hào),對數(shù)據(jù)存儲(chǔ)器的高位地址進(jìn)行鎖存,為外圍電路提供I/O口;(6)人機(jī)接口單元,由鍵盤和LCD顯示模塊組成,在脫機(jī)使用時(shí)對控制器進(jìn)行打標(biāo)文件選取、設(shè)定打標(biāo)參數(shù)、刪除打標(biāo)文件等操作。
2.如權(quán)利要求1所述的基于USB接口的打標(biāo)控制器,其特征在于所述D/A轉(zhuǎn)換單元中控制振鏡X軸和控制振鏡Y軸的2路D/A同時(shí)轉(zhuǎn)換,其輸出經(jīng)過運(yùn)算放大器以使其輸出電壓信號(hào)與振鏡的輸入電壓信號(hào)兼容;控制激光功率的D/A電路只有1路數(shù)/模轉(zhuǎn)換通道,為與8位數(shù)據(jù)總線兼容的12位電壓輸出型DAC,其電壓輸出信號(hào)與激光功率控制信號(hào)要求的輸入電壓兼容。
3.如權(quán)利要求1或2所述的基于USB接口的打標(biāo)控制器,其特征在于所述人機(jī)接口單元中,鍵盤的接口方式采用獨(dú)立方式,每個(gè)獨(dú)立按鍵以一對一的方式直接接到I/O輸入線上,LCD顯示采用點(diǎn)陣圖形液晶顯示模塊。
全文摘要
基于USB接口的打標(biāo)控制器,屬于激光打標(biāo)機(jī)的打標(biāo)控制器,目的是克服現(xiàn)有技術(shù)的缺陷,既滿足客戶對復(fù)雜圖形打標(biāo)的要求,又滿足對簡單圖案打標(biāo)的要求,同時(shí)調(diào)整、修改、安裝方便,工業(yè)現(xiàn)場運(yùn)行穩(wěn)定可靠,即插即用。本發(fā)明包括USB接口控制器單元、數(shù)據(jù)存儲(chǔ)單元、程序存儲(chǔ)單元、D/A轉(zhuǎn)換單元、邏輯控制單元和人機(jī)接口單元;本發(fā)明既能與計(jì)算機(jī)聯(lián)機(jī)使用,又能脫離計(jì)算機(jī)單獨(dú)使用,其中的打標(biāo)內(nèi)容還可以由計(jì)算機(jī)通過USB接口隨意改寫,并可以通過控制器上的鍵盤和LCD顯示對其進(jìn)行編輯、設(shè)定打標(biāo)參數(shù)等操作。
文檔編號(hào)B41J3/00GK101017424SQ2006101251
公開日2007年8月15日 申請日期2006年11月24日 優(yōu)先權(quán)日2006年11月24日
發(fā)明者胡兵, 廖洪海, 應(yīng)花山, 郭飛, 李洵 申請人:華中科技大學(xué)