【正文】
統(tǒng)的控制精度較低,難以實現(xiàn)高性能、高精度的應(yīng)用場合。 嵌入式處理器 嵌入式處理器可以分為三類:嵌入式微處理器、嵌入式微控制器、嵌入式 DSP( Digital Signal Processor)。 但是,由于一般微控制單元集成度較低,片上不具備一些控制系統(tǒng)所需要的專用外設(shè),使以單片機為核心的控制器仍然需要較多的周邊元器件,如要加上存儲器、編碼器及 DA 轉(zhuǎn)換電路等,軟硬件設(shè)計的工作量較大,并增加了系統(tǒng)硬件的復(fù)雜性,降低了系 4 統(tǒng)的可靠性。DSP 在處理器結(jié)構(gòu)、指令系統(tǒng)和指令流程設(shè)計等方面都做了較大的改進, DSP 器件采用改進的哈佛結(jié)構(gòu),具有獨立的程序和數(shù)據(jù)空間,允許同時存取程序和數(shù)據(jù)。 ( 3) 嵌入式微處理器 嵌入式微處理器就是和通用計算機的微處理器對應(yīng)的 CPU。正是借助操作系統(tǒng)帶來的通訊協(xié)議和應(yīng)用軟件開發(fā)的便利, ARM 控制器通常具備了豐富的通訊接口和較復(fù)雜的控制算法程序,使得其可以應(yīng)用在眾多場合。 這也就是本項目研究的目的 及意義 。 軟件設(shè)計 : 在 Real View MDK(Keil uv3)軟件的 編程 環(huán)境下, 基于 UCOS/II 實時 操作系統(tǒng) 和 uC/GUI 圖形 顯示 界面,進行任務(wù) 劃分,編寫驅(qū)動程序和控制程序,最終實現(xiàn)一個演示系統(tǒng),采集 4 路溫度信號、 4 路壓力信號, 8 路開關(guān)量信號,并在顯示模塊顯示實時數(shù)據(jù)。然后繼續(xù)采集現(xiàn)場信息,等待 CPU 的下一次查詢。實現(xiàn)方案的選擇恰當(dāng)與否往往會影響到控制器整體功能的實現(xiàn),也影響到用戶使用操作是否便捷易行。 但是 受限于其 運算速度和內(nèi)存容量,大量的現(xiàn)場數(shù)據(jù)信息 難以 及時 處理 。 所以我們設(shè)計是采用了 ARM 微處理器和 CPLD 相結(jié)合的方法,并從模塊化的思路入手,將整個 復(fù)雜的 控制器 分成幾個部分,每個部分 形成 一個單獨的子模塊,再有這些子模塊共同工作來達(dá)到對現(xiàn)場信息的控制。 51單片機結(jié)構(gòu)簡單,編程難度小,而且價格便宜,所以現(xiàn)在 很多電子產(chǎn)品使用 51系列 單片機。 S3C2410 處 理器是 Samsung 公司基于 ARM 公司的 ARM920T 處理器核,采用 制造工藝的 32 位微控制器。 方案三:采用 ST公司生產(chǎn)的 STM32系列單片機。 通信協(xié)議的比較 本系統(tǒng)采用模塊化的設(shè)計思想,模塊之間采用 RS485 總線連接,以此來進行數(shù)據(jù)交互。在本系統(tǒng) 中,采用的協(xié)議不能太復(fù)雜,要能達(dá)到變成難度適中,數(shù)據(jù)互傳輸實時性好,通過比較我們采用 Modbus 協(xié)議 。不同廠商生產(chǎn)的控制設(shè)備 利用 Modbus 協(xié)議 可以連成 工業(yè)網(wǎng)絡(luò) ,進行集中監(jiān)控。也就是把所有的程序都放在一個大循環(huán)中。在本系統(tǒng)中,比如 AD 模塊,要進行 8路 AD 采集,而且還得隨時準(zhǔn)備發(fā)送給CPU 模塊。 多任務(wù)實現(xiàn)方式 有 實時進程和普通進程 之分 ,分別采用先來先服務(wù)和時間片輪轉(zhuǎn)調(diào)度 的方式來完成。 uC/OSII 是一個源代碼公開的實時嵌入式內(nèi)核,包含了任務(wù)調(diào)度、任務(wù)管理、時間管理、簡單內(nèi)存管理和任務(wù)間的通信與同步等實時系統(tǒng)所需的基本功能。分別從系統(tǒng)的硬件結(jié)構(gòu)和軟件設(shè)計思路做起,完成了模塊化工業(yè)控制器的完整系統(tǒng)的設(shè)計。 STM32 有兩個系列增強型和基本型。均可以用于顯示、聲音、存儲和高級控制;兼有低功耗和多種省電工作模式,能夠優(yōu)化工業(yè)設(shè)備、物業(yè)控制設(shè)備、醫(yī)療設(shè)備和計算機外設(shè)等產(chǎn)品的性能。 供電電源模塊 日常生活供電電壓一般為 220V 或者更高,但是 本系統(tǒng) 的 USB 接口供電電壓為 5V,選 用 的 主芯片 STM32 工作電壓在 , 所以在設(shè)計中, 需 要設(shè)計 電源 轉(zhuǎn)化電路,由于外界提供的電 壓可能不穩(wěn)定, 也 可能含有低頻、高頻成分的 干擾成分 ,需要電容、電感對其濾除。因此 用來為 STM32 芯片供電 非常合適 ,具體電路如 圖 32 所示: 圖 32 電源轉(zhuǎn)換電路圖 如上圖的電路設(shè)計,首先是 5V 電壓源的接口電路, 先 連接轉(zhuǎn) 換 開關(guān),然后連接AMS1117 芯片,輸出 電壓給 STM32 芯片供電?,F(xiàn)在多數(shù)的高級器件都支持 JTAG 協(xié)議 ,如 DSP、 FPGA、單片機器件等。 Modbus 協(xié)議的物理層一般都采用 RS485 半雙工結(jié)構(gòu)作為通信接口標(biāo)準(zhǔn)。 在設(shè)計中我們就采用 TI公司的 SN75LBC184作 RS485收發(fā)器 , 它是一種具有瞬變電壓抑制的收發(fā)器 ,可以防止因靜電放電 (ESD)對收發(fā)器造成的損壞。很多微控制器電路芯片內(nèi)集成 有 LCD 控制器,可以直接驅(qū)動LCD 顯示,運算結(jié)果數(shù)據(jù)通過 CPU 處理轉(zhuǎn)換后寫入顯示寄存器中,最后送到顯示驅(qū)動單元輸出。 圖 36 ILI9320 控制電路圖 在控制芯片選用好后,將其分別集成與 TFT 顯示屏上做成 20 管腳的集成芯片,并且和 STM32 芯片的顯示端 PG 接口連接,以控制數(shù)據(jù)的顯示。 在 125kHz 吞吐速率和 電壓下的功耗為 750uW,而在關(guān)閉模式下的功耗僅為 。當(dāng)外力使上下兩層在某一點接觸,則在未加電壓的另一層電極可以測得接觸點處的電壓,從而知道接觸點處的坐標(biāo)。 ADS7843 是一款連續(xù)近記錄( SAR)的 A/D 轉(zhuǎn)換器,本實訓(xùn)中通 過連接觸摸屏 X+將觸摸信號輸入到 A/D 轉(zhuǎn)換器,同時打開 Y+和 Y驅(qū)動,然后數(shù)字化 X+的電壓,從而得到當(dāng)前 Y位置的測量結(jié)果,同理也得到 x 方向的坐標(biāo)。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。 μC/OS II 操作系統(tǒng)介紹 μC/OS II 是一個 是一個源代碼公開的實時嵌入式內(nèi)核,包含了任務(wù)調(diào)度、任務(wù)管理、 時間管理、簡單內(nèi)存管理和任務(wù)間的通信與同步等實時系統(tǒng)所需的基本功能。這個特點使得它的實時性比非占先式的內(nèi)核要好。 μC/OS II 結(jié)構(gòu)的關(guān)系如下 圖 41 所示: 應(yīng) 用 軟 件( 用 戶 代 碼 )U C / O S Ⅱ已 處 理 器 無 關(guān) 的 原 代 碼O S _ C O R E . C O S _ S E M C . CO S _ F L A G . C O S _ T A S K . CO S _ M B O X . C O S _ T I M E . CO S _ M E M C . C U C O S Ⅱ . CO S _ M U T E X . C U C O S Ⅱ . HO S _ Q . CU C / O S Ⅱ 配 置與 應(yīng) 用 相 關(guān) 代 碼 O S _ C F G . HI N C L U D E S . HU C / O S Ⅱ 處 理 器 相 關(guān) 代 碼 O S _ C P U . HO S _ C P U _ A . A S MO S _ C P U _ C . C 圖 41 uC/OSII 結(jié)構(gòu)的關(guān)系圖 16 從圖中可以看出, μC/OS II 主要包括四大部分:①與處理器有關(guān)的代碼(驅(qū)動部分)部分;②與 μC/OS II 配置應(yīng)用相關(guān)代碼;③ μC/OS II 內(nèi)核的源代碼(與處理器無關(guān)的源代碼)部分;④用戶自己編寫的程序代碼。 ③修改頭文件 “OS_CPU . H ” 頭文 件 “OS_CPU . H” 包括了用 define 語句定義的、與處理器相關(guān)的常數(shù)、宏以及類型,需要修改的內(nèi)容有與編譯器相關(guān)的數(shù)據(jù)類型重定義部分和與處理器相關(guān)的少量代碼。 μ C/GUI 概述 μ C/GUI 是 Micrium 公司研發(fā)的圖像界面軟件。μC /GUI 函數(shù)庫為用戶程序提供 GUI 接口 , 包含的函數(shù)有文本 、 數(shù)值 、 二維圖形 、 輸入設(shè)備以及各種窗口對象 。 LCD驅(qū)動文件則負(fù)責(zé)把 μC /GUI的各種函數(shù)解釋成 的液晶接口函數(shù) , 這個文件與具體的硬件連接無關(guān) 。 μ C/GUI 可以應(yīng)用在 任意 的 LCD 控制器和 CPU 上進行移植。 18 ②定義訪問地址和訪問規(guī)則 ,對于使用存儲器映像的 LCD,僅僅需要在 中定義訪問地址。 ⑤使用 μ C/GUI 編寫 自己的 應(yīng)用程序 。在 CPU 模塊 中 中我們把 操作系統(tǒng) 分為 AppTaskPoll 任務(wù)和 AppTaskAnalyze 任務(wù)。 等待 CPU 的查詢。各通道的 A/D 轉(zhuǎn)換 有 單次、連續(xù)、掃描或間斷 幾種 模式 供選擇, 轉(zhuǎn)換結(jié)果以左對齊或右對齊方式存儲在 16 位數(shù)據(jù)寄存器中。即使你再小心的設(shè)計外圍電路,測的離譜的數(shù)據(jù)總會出現(xiàn)。 AD模塊配置程序流程圖如 圖 47所示: 開 始系 統(tǒng) 時 鐘初 始 化I / O 口 初 始化中 斷 控 制 器初 始 化定 時 器初 始 化串 口初 始 化進 入操 作 系 統(tǒng)D M A初 始 化A D初 始 化 圖 47 AD 模塊配置程序流程圖 AD主程序主要負(fù)責(zé)系統(tǒng)時鐘、 GPIO 口、嵌 套中斷的配置以及定時器、 ADC 模塊 串行通信模塊的初始化、采集任務(wù)的創(chuàng)建和數(shù)據(jù)的發(fā)送。 AppTaskAnalyze 任務(wù)的程序流程圖如 圖 48所示: 進 入 A p p T a s k A n a l y z e 任 務(wù)C R C 是 否 正 確A d d r = 1 ?功 能 碼 = 3 錯 誤 標(biāo) 志 位 復(fù) 位錯 誤 標(biāo) 志 位 置 位YYNYNN 圖 48 AppTaskAnalyze 任務(wù)程序流程圖 AppTaskMBTx 任務(wù)程序流程圖如圖 49 所示: 22 進 入A p p T a s k M B T x 任 務(wù)錯 誤 標(biāo) 志 位是 否 置 位發(fā) 送 正 確 響 應(yīng) 幀 發(fā) 送 錯 誤 響 應(yīng) 幀YN 圖 49 AppTaskMBTx 任務(wù)程序流程圖 AD 模塊通過串口接收和發(fā)送幀,在串口中斷服務(wù)子程序中對接收的幀進行 Modbus規(guī)則檢查。 之后設(shè)置 SENDCOM=1,以表示出發(fā)送完成標(biāo)志位置位。 AppTaskCollect 任務(wù)主要負(fù)責(zé)采集特定 I/O口的狀態(tài),程序流程圖如 圖 411所示: 進 入AppTaskCollect任 務(wù)采 集 特 定 IO口 狀 態(tài)對 狀 態(tài) 進 行 存 儲 圖 411 AppTaskCollect 任務(wù)流程圖 AppTaskAnalyze 任務(wù)主要負(fù)責(zé)對從串口接收的數(shù)據(jù)幀進行解析 ,其程序流程圖如圖412 所示: 進 入 A p p T a s k A n a l y z e 任 務(wù)C R C 是 否 正 確A d d r = 2 ?功 能 碼 = 2 錯 誤 標(biāo) 志 位 復(fù) 位錯 誤 標(biāo) 志 位 置 位YYNYNN 圖 412 AppTaskAnalyze 任務(wù)程 序流程圖 AppTaskMBTx 任務(wù)主要是根據(jù) AppTaskAnalyze 任務(wù)返回的狀態(tài)來確定,是否發(fā)送正確地響應(yīng)幀。從機對于主機的廣播查詢,無響應(yīng)返回 Modbus 協(xié)議報據(jù)設(shè)備地址,請求功能代碼, 24 發(fā)送數(shù)據(jù),錯誤校驗碼,建立了主機查詢格式,從機的響應(yīng)信息也用 Modbus 協(xié)議組織,它包括確認(rèn)動作的代碼,返回數(shù)據(jù)和錯誤校驗碼。 LCD 模塊的初始化程序流程圖如 圖 420 所示: 開 始系 統(tǒng) 時 鐘初 始 化I O 口 初 始 化中 斷 控 制 器初 始 化定 時 器初 始 化串 口初 始 化進 入操 作 系 統(tǒng)S P I初 始 化 圖 320 LCD 模塊的初始化程序流程圖 根據(jù) LCD 模 塊的功能將其劃分為三個任務(wù): AppTaskMB 任務(wù)、 AppTaskDisplay任務(wù)和 AppTaskTouch 任務(wù)。 其 程序流程圖如 圖 423 所示: 進 入AppTaskDispla任 務(wù)使 用 uCGUI繪 制顯 示 窗 口根 據(jù) 鍵 值 顯 示 相 應(yīng)的 數(shù) 據(jù) 圖 423 AppTaskDisplay 任務(wù)程序流程圖 最后一個是 AppTaskTouch 任務(wù),因為本系統(tǒng)采用觸摸屏技術(shù),所以該任務(wù)主要負(fù)責(zé)采集觸摸屏信號。 及其低級控制函數(shù): void Lcd_Initialize(void)。void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color) { ??} 。 uC/GUI 的 移植步驟 : 第一步:首先, 上述的 TFT 底層 驅(qū)動 寫好,既在裸機下,可以正常顯示。 return 0。 } 上面兩個函數(shù)是其他函數(shù)的最基本元素,其他 函數(shù)比如畫線、點、圓都需要調(diào)用改函數(shù)。 最后 連接 GC_GUI 的各種文件和庫函數(shù)的路徑。 AppTaskDisplay 任務(wù)主要負(fù)責(zé)驅(qū)動 LCD 顯示屏,在顯示任務(wù)中調(diào)用 LCD_Display();以此來完成各種背景顏色、漢字顏色、漢字內(nèi)容等的功能任務(wù);在 AppTaskMB 發(fā)送任務(wù)中和 ADC 模塊的從機接受主機指令類似 ,如下圖 412 調(diào)用了 Frame_Analyze()函數(shù)和TransmitFrame()函數(shù)來完成幀解析和請求幀發(fā)送等任務(wù),進而將 AD 的值和 I/O 的值完成在 LCD 屏的整個顯示。通過實訓(xùn),我們得到的更多的是 一種實踐