基于 ARM 的繡花機(jī)控制系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:繡花機(jī)控制系統(tǒng)作為繡花機(jī)最核心的部分,是提高性能和降低成本的關(guān)鍵。本文按照 嵌入式系統(tǒng)的開發(fā)過程,首先研究了繡花機(jī)控制系統(tǒng)的硬件框架,詳細(xì)設(shè)計(jì)了電源電路、復(fù) 位電路、存儲器接口電路、鍵盤與顯示電路、USB 接口電路等電路。然后按照上位機(jī)和下 位機(jī)的結(jié)構(gòu)層次,構(gòu)建了繡花機(jī)控制系統(tǒng)的軟件框架,對鍵盤輸入、圖形顯示、USB 驅(qū)動(dòng)、 花樣存儲與管理、串口通信等具體模塊進(jìn)行了軟件設(shè)計(jì)。這樣可設(shè)計(jì)出一套基于 ARM 的技 術(shù)先進(jìn)、功能精簡、高性價(jià)比的繡花機(jī)控制系統(tǒng)。
關(guān)鍵詞:繡花機(jī)控制系統(tǒng);嵌入式系統(tǒng);ARM
0 引言
隨著全自動(dòng)繡花機(jī)的不斷發(fā)展,機(jī)械方面的改進(jìn)對機(jī)器的性能改善已經(jīng)沒有太大的效果。因而,控制系統(tǒng)就成為了繡花機(jī)提高性能和降低成本的關(guān)鍵,也是各大繡花機(jī)廠商的競 爭重點(diǎn)[1,2]。控制系統(tǒng)的硬件決定了整個(gè)系統(tǒng)的可靠性和穩(wěn)定性,硬件質(zhì)量的好壞除了 CPU 芯片之外,外圍芯片的選擇和電路的設(shè)計(jì)也起著至關(guān)重要的作用。而控制系統(tǒng)所有的功能都 需要通過軟件來實(shí)現(xiàn),軟件的設(shè)計(jì)對于將來系統(tǒng)的穩(wěn)定運(yùn)行至關(guān)重要。
由于市場上絕大部分微處理器芯片都是以 ARM 為基礎(chǔ)[3],本文研究了基于 ARM 的繡 花機(jī)控制系統(tǒng)的軟硬件設(shè)計(jì)。首先在 LH7A404 和 LPC2214 的基礎(chǔ)上確定了繡花機(jī)控制系統(tǒng)的硬件框架,詳細(xì)設(shè)計(jì)了電源電路、復(fù)位電路、存儲器接口電路、鍵盤與顯示電路等具體電 路以及接口;然后按照上位機(jī)和下位機(jī)的層次構(gòu)建了繡花機(jī)控制系統(tǒng)的軟件框架,對鍵盤輸入、圖形顯示、USB 驅(qū)動(dòng)、花樣存儲與管理、串口通信等具體模塊的軟件進(jìn)行了設(shè)計(jì)。
1 控制系統(tǒng)軟硬件框架
根據(jù)繡花機(jī)系統(tǒng)的模塊劃分和系統(tǒng)架構(gòu),硬件可以分為上位機(jī)和下位機(jī)系統(tǒng),兩者通過串行接口進(jìn)行實(shí)時(shí)通信,分別圍繞 LH7A404 和 LPC2214 兩個(gè) CPU 進(jìn)行設(shè)計(jì)。硬件框架如圖 1 所示,LH7A404 作為上層 CPU 負(fù)責(zé)輸入輸出接口和花樣存儲系統(tǒng),LPC2214 作為下層 CPU 負(fù)責(zé)繡花機(jī)機(jī)械動(dòng)作的控制。其中電源電路和復(fù)位電路為兩個(gè) CPU 共用。
控制系統(tǒng)的軟件部分的設(shè)計(jì)也依據(jù)此結(jié)構(gòu)劃分層次,上位機(jī)系統(tǒng)包括鍵盤輸入、圖形顯 示、USB 驅(qū)動(dòng)、花樣存儲與管理,下位機(jī)系統(tǒng)即為機(jī)電控制模塊,包括機(jī)電控制系統(tǒng)和機(jī) 電執(zhí)行系統(tǒng)。軟件框架如圖 2 所示。
圖 2 繡花機(jī)控制系統(tǒng)軟件框架
2 控制系統(tǒng)硬件設(shè)計(jì)
2.1 電源電路
開關(guān)電源系統(tǒng)提供 5V 和 12V 兩套電源,5V 電源用于驅(qū)動(dòng)各 I/O 口,12V 電源直接作為機(jī)電和底層設(shè)備的驅(qū)動(dòng)電源。由于整個(gè)系統(tǒng)控制電路的工作電壓并不都是 5V 和 12V,需 要對 5V 電源進(jìn)行 DC-DC 轉(zhuǎn)換,因此本文采用 TI 公司的 TPS54310PWP 電壓轉(zhuǎn)換芯片將 5V 電源轉(zhuǎn)換成 3.3V/3A 的電源,用于給 CPU 及其外圍電路供電。另外,系統(tǒng) CPU 內(nèi)核需要1.8V 的電壓供給,且消耗電流的極限不超過 200mA,為保證可靠性并留下一定余量,1.8V 的電源系統(tǒng)提供的電流應(yīng)不小于 0.5A。備份電池用于斷電時(shí)給 SRAM 供電,以便及時(shí)備份 數(shù)據(jù),需要 3.9V/0.5A 的電源供給。
2.2 復(fù)位電路
復(fù)位電路主要實(shí)現(xiàn)系統(tǒng)上電復(fù)位、手動(dòng)復(fù)位和電源監(jiān)控三個(gè)功能。系統(tǒng)上電時(shí) CPU 狀態(tài)不穩(wěn)定,需要有一個(gè)復(fù)位邏輯將其初始化為某個(gè)確定的狀態(tài);系統(tǒng)運(yùn)行過程中,程序可能“跑飛”或進(jìn)入死循環(huán),這時(shí)需要強(qiáng)行對系統(tǒng)手動(dòng)復(fù)位;電源系統(tǒng)的可靠性直接影響到控制 系統(tǒng)的穩(wěn)定性,需要有一個(gè)監(jiān)控電路來監(jiān)控電源的變化。
2.3 存儲器接口電路
數(shù)據(jù)存儲器分為動(dòng)態(tài)存儲器和靜態(tài)存儲器兩種。本控制系統(tǒng)中應(yīng)用了同步動(dòng)態(tài)存儲器(SDRAM)和雙口靜態(tài)存儲器(SRAM)。SDRAM 成本低廉,容量大,應(yīng)用比較廣泛,在 上位機(jī)系統(tǒng)的設(shè)計(jì)中根據(jù) LH7A404 存儲器接口的特點(diǎn)選用 Micron Technology 公司的 MT48LC16M16GT-75 作為設(shè)計(jì)基礎(chǔ)。雙口靜態(tài)存儲器 SRAM 成本較高、容量較小,但具有 存取速度快、接口簡單、掉電后保存數(shù)據(jù)的優(yōu)點(diǎn)。根據(jù) LPC2214 的接口特點(diǎn),設(shè)計(jì)中選用
ISSI 公司的 IS61LV25616AL 芯片,具有 512KB 的容量。 程序存儲器用于存儲啟動(dòng)代碼、操作系統(tǒng)、應(yīng)用程序和部分重要數(shù)據(jù)。考慮到系統(tǒng)的軟件升級和數(shù)據(jù)擦寫,選擇 FLASH 存儲器,它具有低功耗、大容量、擦寫速度快、可整片或 分扇區(qū)在線編程(燒寫)和擦除等特點(diǎn)。在上位機(jī)和下位機(jī)系統(tǒng)的設(shè)計(jì)中,選用 INTEL 公 司的 3V StrataFlashTM 存儲器 E28F128J3,其單片容量可達(dá) 16MB,有 128 個(gè) 128K 字節(jié)可擦除塊,每個(gè)數(shù)據(jù)塊 100000 個(gè)擦除周期。
2.4 鍵盤與顯示電路
鍵盤是系統(tǒng)操作的輸入設(shè)備,用于輸入數(shù)字參數(shù)和控制命令。本控制系統(tǒng)的按鍵總共有36 個(gè),采用矩陣式結(jié)構(gòu)。ROW1~ROW6 和 COL1~COL7 分別為 6 行和 7 列按鍵的接口。將 行線 ROW1~ROW6 設(shè)為輸出,輸出值設(shè)為 0,列線 COL1~COL7 設(shè)為輸入,在每一行和每 一列的交叉點(diǎn)放置一個(gè)按鍵,每個(gè)按鍵就是一個(gè)瞬時(shí)接觸開關(guān),AT89C2051 通過這些接口 按照一定的頻率對鍵盤進(jìn)行定時(shí)掃描。uP_KMIDAT 和 uP_KMICLK 為 PS2 鍵盤接口。
顯示器是系統(tǒng)的輸出設(shè)備,用于反饋系統(tǒng)的運(yùn)行狀態(tài),并給用戶以直觀信息,用戶可以 根據(jù)提示進(jìn)行相應(yīng)的操作。本控制系統(tǒng)采用 LCD 顯示屏,沒有驅(qū)動(dòng)電路,需要設(shè)計(jì)驅(qū)動(dòng)電路與之配合使用。設(shè)計(jì)中所選的液晶顯示屏是 SHARP 公司的 5.7 寸顯示屏 LQ057Q3DC12I, 其供電要求是 3.0V~3.6V,需將芯片接上 3.3V 的電壓。
3 控制系統(tǒng)軟件設(shè)計(jì)
3.1 鍵盤輸入程序
鍵盤輸入模塊的工作任務(wù)包括鍵盤掃描、鍵盤驅(qū)動(dòng)和鍵盤處理。鍵盤掃描獲得按鍵的掃描碼,鍵盤驅(qū)動(dòng)接收掃描碼并對其進(jìn)行處理,將處理后的數(shù)據(jù)送至應(yīng)用程序,應(yīng)用程序獲得鍵值信息后對信息進(jìn)行處理,實(shí)現(xiàn)按鍵功能。
鍵盤采用循環(huán)掃描方式,按照設(shè)定的掃描頻率對鍵盤輸入進(jìn)行檢測。系統(tǒng)創(chuàng)建一個(gè)掃 描任務(wù),當(dāng)檢測到合法按鍵之后就將該按鍵掃描碼寫入消息發(fā)送給其他任務(wù),通知系統(tǒng)某鍵 被按下,被按鍵的掃描碼通常放置在一個(gè)緩沖區(qū)內(nèi),直到該應(yīng)用程序準(zhǔn)備處理一個(gè)按鍵為止。鍵盤驅(qū)動(dòng)由 VxWorks 操作系統(tǒng)的一個(gè)可選組件——多媒體庫 WindML 提供[4],包括下 層驅(qū)動(dòng)和上層驅(qū)動(dòng)。下層驅(qū)動(dòng)負(fù)責(zé)驅(qū)動(dòng)設(shè)備控制器并向上層驅(qū)動(dòng)傳送設(shè)備的原始數(shù)據(jù),它是 作為 I/O 驅(qū)動(dòng)來實(shí)現(xiàn)的,被設(shè)置在系統(tǒng)內(nèi)核。上層驅(qū)動(dòng)接收來自下層驅(qū)動(dòng)的設(shè)備原始數(shù)據(jù),并進(jìn)行解釋處理,將其打包成一個(gè)輸入事件信息,然后將該信息發(fā)送至驅(qū)動(dòng)接口。 應(yīng)用程序通過驅(qū)動(dòng)獲得鍵盤的狀態(tài)之后,根據(jù)從緩沖區(qū)讀出的鍵值,按照鍵盤的預(yù)定義對各控制模塊的組態(tài)信息進(jìn)行設(shè)置,以執(zhí)行相應(yīng)的功能。[!--empirenews.page--]
3.2 圖形顯示程序
進(jìn)行圖形界面(GUI)的設(shè)計(jì)同樣需要加載多媒體庫 WindML,WindML 支持多線程和多任務(wù),但圖形的資源是一定的,為了防止多線程之間產(chǎn)生資源沖突,需要使用互斥信號量鎖定資源。在使用一組繪圖函數(shù)前,用 uglBatchStart(gc)通過互斥信號量鎖定圖形上下文, 圖形設(shè)備及緩沖,并隱藏光標(biāo)。繪圖操作完成后,再用 uglBatchEnd(gc)釋放被鎖定的資源, 以被其他的繪圖函數(shù)使用。以下根據(jù) WindML 的編程流程,以繪制直線為例給出一個(gè)繪圖 操作的程序:
{
UGL_GC_ID gc;
......
uglInitialize(); // 初始化
......
uglColorAlloc(devId, &colorTable[GREEN].rgbColor, UGL_NULL,
&colorTable[GREEN].uglColor, 1); // 配置顏色
......
gc= uglGcCreate(devId); // 創(chuàng)建圖形上下文
......
uglBatchStart(gc); // 鎖定圖形資源
uglForegroundColorSet(gc, colorTable[WHITE].uglColor); // 設(shè)置前景色 uglBackgroundColorSet(gc, colorTable[RED].uglColor); // 設(shè)置背景色 uglLineWidethSet(gc, 9); // 設(shè)定線寬
uglLine(gc, 50); // 繪制直線
uglBatchEnd(gc); // 釋放圖形資源
......
}
3.3 USB 驅(qū)動(dòng)程序
VxWorks 操作系統(tǒng)的 USB 驅(qū)動(dòng)模塊由四層組成:USB Client 模塊、USB 主驅(qū)動(dòng)、USB主控制器驅(qū)動(dòng)、USB 主控制器。最低層是 USB 主控制器(USB Host Controller),這是主系 統(tǒng)中控制每一個(gè) USB 設(shè)備的硬件部分。對于每個(gè)主控制器都需要開發(fā) USB 主控制器驅(qū)動(dòng)程 序(HCD),HCD 對主控制器芯片進(jìn)行了抽象,為上層軟件屏蔽底層硬件之間的差異。USB 主驅(qū)動(dòng)(USBD)和 HCD 之間的接口允許一個(gè)或多個(gè)底層主控制器。Wind River 的 USBD 能夠同時(shí)連接多個(gè) HCD。
USBD 是在 HCD 之上的獨(dú)立于硬件的模塊,它通過提供一組抽象的服務(wù)簡化了程序員對上層 USB Client 模塊的開發(fā)工作,即為 HCD 和 USB Client 兩個(gè)模塊之間的請求和相應(yīng)提 供統(tǒng)一的標(biāo)準(zhǔn)接口。USB Client 模塊位于結(jié)構(gòu)圖最上層,屬于應(yīng)用程序,根據(jù)具體應(yīng)用的不 同,其內(nèi)容和功能也不同,但都要實(shí)現(xiàn)與 USBD 的接口,對由 HCD 監(jiān)測到并由 USBD 傳送 給上層應(yīng)用程序的 USB 標(biāo)準(zhǔn)要求作出適當(dāng)?shù)捻憫?yīng)。
3.4 花樣存儲與管理程序
在花樣存儲系統(tǒng)中,花樣文件是以一定的格式存入到系統(tǒng)內(nèi)存的,所以文件的格式關(guān)系到系統(tǒng)能否識別花樣。目前刺繡生產(chǎn)實(shí)際中流行的花樣文件格式有四種:DST 格式、DSB格式、T01 格式和 T03 格式。
當(dāng)不同格式的花樣文件被讀入到 FLASH 之后,需要對它們進(jìn)行解析,轉(zhuǎn)換成內(nèi)部格式 的數(shù)據(jù)結(jié)構(gòu),同時(shí)對花樣數(shù)據(jù)進(jìn)行各種運(yùn)算和處理,包括旋轉(zhuǎn)、放大縮小、拉伸、鏡像等。 花樣處理過程就是系統(tǒng)調(diào)用接口函數(shù)實(shí)現(xiàn)處理任務(wù)。
3.5 串口通信程序
由于串口傳輸涉及到上位機(jī) CPU 和下位機(jī) CPU 之間的通信,因此作出命名約定:上位機(jī) CPU 稱為“左”側(cè),代碼存放在以 left_*開頭的文件中,下位機(jī) CPU 稱為“右”側(cè),代 碼存放在以 right_*開頭的文件中。串口模塊結(jié)構(gòu)大體可分為控制層、傳輸層和驅(qū)動(dòng)程序, 串口傳輸層的作用在于向上層系統(tǒng)提供透明而高效的傳輸接口,用于兩個(gè) CPU 之間的數(shù)據(jù) 交互。
4 結(jié)語
本文根據(jù) ARM 處理器的選型原則,選擇 LH7A404 和 LPC2214 為上下位機(jī) CPU 芯片;將繡花機(jī)控制系統(tǒng)的硬件分為上位機(jī)和下位機(jī)兩部分,在全面考慮系統(tǒng)功能需求的基礎(chǔ)上,圍繞已選定的上下位機(jī) CPU 確定了硬件框架。詳細(xì)設(shè)計(jì)了電源電路、復(fù)位電路、存儲器接 口電路、鍵盤與顯示電路等具體電路。然后按照上位機(jī)和下位機(jī)的層次構(gòu)建了繡花機(jī)控制系 統(tǒng)的軟件框架,以 VxWorks 操作系統(tǒng)為平臺,在 Tornado 開發(fā)環(huán)境下設(shè)計(jì)了鍵盤輸入、圖形顯示、USB 驅(qū)動(dòng)、花樣存儲與管理等模塊程序。
本文作者創(chuàng)新點(diǎn):將基于 ARM 嵌入式系統(tǒng)技術(shù)引入繡花機(jī)控制系統(tǒng),詳細(xì)設(shè)計(jì)了繡花機(jī)控制系統(tǒng)的軟硬件系統(tǒng),具有技術(shù)先進(jìn)、功能精簡、高性價(jià)比等特點(diǎn)。