畢設(shè)論文---住宅小區(qū)信息發(fā)布系統(tǒng)_第1頁
已閱讀1頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  編號: </p><p><b>  畢業(yè)設(shè)計說明書</b></p><p>  題 目 : 住宅小區(qū)信息發(fā)布系統(tǒng) </p><p>  院 (系): 電子工程與自動化學院 </p><p>  專 業(yè) : 測控技術(shù)與儀器 </p&g

2、t;<p>  題目類型: 理論研究 實驗研究 工程設(shè)計 工程技術(shù)研究 軟件開發(fā)</p><p>  2015年5月 20日</p><p><b>  摘 要</b></p><p>  利用LabVIEW、RS485總線、STM32微處理器、FPGA等技術(shù),實現(xiàn)文字和圖片信息的遠程、動態(tài)發(fā)布。<

3、/p><p>  上位機程序采用LabVIEW編寫。上位機通過485總線向STM32發(fā)送待顯示內(nèi)容。STM32將數(shù)據(jù)暫存Micro SD卡中,在VGA場消隱期間,從Micro SD卡中讀取數(shù)據(jù),寫入顯存。FPGA讀取顯存數(shù)據(jù),產(chǎn)生VGA信號。顯示器讀取VGA信號,將文字、圖片顯示出來。上位機與STM32之間的通信采用4線485總線。以數(shù)據(jù)幀作為通信的基本單元,采用和校驗的校驗方法,能在一定程度上保證數(shù)據(jù)傳輸?shù)臏蚀_性和

4、完整性。采用GBK字庫,通過LabVIEW向Micro SD卡燒錄了3種字體、7種字號。通過上位機向STM32發(fā)送GBK編碼,STM32就能根據(jù)編碼,從Micro SD卡中讀取對應(yīng)的點陣信息,并寫入顯存,實現(xiàn)漢字顯示。ASCII碼的顯示與漢字的顯示方法一致。</p><p>  利用IMG2LCD軟件生成圖片點陣文件,或者由LabVIEW對圖片進行解碼,生成圖片點陣文件。再將圖片點陣文件、圖片的大小位置信息發(fā)送給

5、STM32進行處理,實現(xiàn)圖片顯示。在1024x768分辨率的顯示器上,實現(xiàn)顯示3種字體、7種字號的ASCII碼與漢字,實現(xiàn)顯示65536色的圖片,顯示穩(wěn)定、色彩鮮艷!</p><p>  關(guān)鍵詞:小區(qū)信息發(fā)布;485總線;VGA接口;LabVIEW</p><p><b>  Abstract</b></p><p>  This system

6、 Release words and pictures remotely and Dynamically by using the technology of LABVIEW,RS485 BUS,STM32 MCU,FPGA etc.</p><p>  The host program designed by LabVIEW. The host send data to the STM32 by RS485 b

7、us.STM32 will saves the data to Micro SD, and reads data from Micro SD ,then writes to the display memory in the course of VGA VBLANK.FPGA reads the data from the display memory ,and produces the signal of VGA. The displ

8、ay reads VGA signal and shows them on screen. The media of communication between HOST and STM32 is 4-wire RS485 Bus. The basic unit of communication is data frame. The check method of data frame is su</p><p>

9、;  Using IMG2LCD software to generate the image dot matrix files, or decoding images by LabVIEW to generate the image dot matrix files. Then send dot matrix files ,image size signal and image position signal to STM32.STM

10、32 will write data to display memory by these information, so it can display images.It can display 3 typeface, 7 font size ASCII code and Chinese characters, and can display the images with 65536 colors. Display stable a

11、nd colorful!</p><p>  Key words:Release Information ;485 Bus;VGA Interface;LabVIEW</p><p><b>  目 錄</b></p><p><b>  引言5</b></p><p>  1 方案選擇與論證

12、5</p><p>  1.1 系統(tǒng)總體設(shè)計5</p><p>  1.2 顯示方案6</p><p>  1.2.1 可選顯示方案6</p><p>  1.2.2 FPGA選型7</p><p>  1.2.3 更新顯存方式7</p><p>  1.2.4 顯存選型8</

13、p><p>  1.2.5 RGB三基色生成方案8</p><p>  1.3 微處理器方案8</p><p>  1.4 通信總線方案9</p><p>  1.5 存儲方案10</p><p>  1.6 上位機開發(fā)軟件選擇10</p><p><b>  2 硬件設(shè)計10

14、</b></p><p>  2.1 硬件框架10</p><p>  2.3 STM32數(shù)據(jù)處理電路13</p><p>  2.3.1 STM32最小系統(tǒng)13</p><p>  2.3.2 485收發(fā)電路14</p><p>  2.3.3 W25Q64 FLASH存儲電路15</p&

15、gt;<p>  2.3.4 Micro SD卡存儲電路15</p><p>  2.3.5 靜態(tài)隨機存儲器(SRAM)接口16</p><p>  2.4 FPGA模塊17</p><p>  2.4.1 FPGA核心電路17</p><p>  2.4.2 靜態(tài)隨機存儲器(SRAM)19</p>&l

16、t;p>  2.4.3 VGA接口與電阻網(wǎng)絡(luò)20</p><p>  2.4.4 電阻網(wǎng)絡(luò)電阻值的計算21</p><p><b>  3 軟件設(shè)計22</b></p><p>  3.1 LABVIEW上位機程序22</p><p>  3.1.1 串口收發(fā)模塊23</p><p&g

17、t;  3.1.2 串口數(shù)據(jù)傳輸模塊23</p><p>  3.1.3 字庫燒錄模塊24</p><p>  3.1.4 文字發(fā)布模塊26</p><p>  3.1.5 圖片發(fā)布模塊28</p><p>  3.2 STM32程序28</p><p>  3.2.1 485串口協(xié)議28</p>

18、;<p>  3.2.2 FLASH存儲模塊程序30</p><p>  3.2.3 Micro SD函數(shù)32</p><p>  3.2.4 字庫與圖片36</p><p>  3.2.5 寫SRAM函數(shù)37</p><p>  3.3 FPGA模塊程序39</p><p>  3.3.1 讀

19、SRAM程序39</p><p>  3.3.2 VGA時序40</p><p>  3.3.3 輸出RGB56543</p><p>  4 調(diào)試與驗證過程43</p><p>  4.1 調(diào)試所需設(shè)備43</p><p>  4.2 單獨調(diào)試LABVIEW43</p><p> 

20、 4.3 單獨調(diào)試VGA與FPGA44</p><p>  4.4 調(diào)試STM3244</p><p>  4.4.1 STM32與LABVIEW44</p><p>  4.4.2 STM32與FLASH存儲器44</p><p>  4.4.3 STM32與Micro SD卡44</p><p>  4.

21、4.4 STM32與FPGA與SRAM44</p><p>  4.5 驗證結(jié)果45</p><p><b>  5 結(jié)論51</b></p><p><b>  謝 辭52</b></p><p><b>  參考文獻53</b></p><p

22、><b>  附 錄54</b></p><p><b>  引言</b></p><p>  傳統(tǒng)的信息發(fā)布媒介有:紙質(zhì)宣傳單、黑板報與靜態(tài)電子公告板等。這些信息發(fā)布方法具有浪費資源、有損形象、信息更新遲滯、傳播效率低和不方便管理等缺點。因此誕生了數(shù)字化信息發(fā)布系統(tǒng)。</p><p>  數(shù)字化信息發(fā)布系統(tǒng)可用

23、于即時發(fā)布水、電、燃氣、暖氣、天氣預(yù)報、新聞、物業(yè)通知、緊急信息、突發(fā)事件、社區(qū)宣傳和贊助商廣告等內(nèi)容,可應(yīng)用于小區(qū)、校園、工廠、車站、機場等公共場所,應(yīng)用前景廣闊。</p><p>  針對住宅小區(qū),目前市場上尖端的小區(qū)信息發(fā)布系統(tǒng),由服務(wù)器通過互聯(lián)網(wǎng)、GPRS、CDMA等網(wǎng)絡(luò)控制多個多媒體終端;支持多種視音頻編碼標準和圖文格式,如: MPEG1/2/3/4、 WMV 、WMA、Real 、Flash、JPEG

24、、BMP、GIF、TIFF、Word、Excel、PDF、PPT等;可以顯示文字、圖片、聲音和視頻等多媒體信息;支持視頻、圖片、文字的混合排版,支持視頻、圖片、文字位置的隨意調(diào)整。</p><p>  前沿技術(shù)制造的系統(tǒng)比較大型,固然功能齊全,但是成本較高,維護也相對復(fù)雜。而本設(shè)計將節(jié)約成本、縮小體積、簡化功能,實現(xiàn)文字和圖片的即時發(fā)布。</p><p><b>  1 方案選擇

25、與論證</b></p><p>  本設(shè)計要實現(xiàn)的目標:將文字和圖片信息進行遠程、動態(tài)發(fā)布。著重考慮降低成本和簡化設(shè)備的維護難度,最終采用LabVIEW、RS485總線、STM32微處理器、FPGA等技術(shù)實現(xiàn)小區(qū)信息發(fā)布。</p><p>  1.1 系統(tǒng)總體設(shè)計</p><p>  LabVIEW上位機模塊:采用LabVIEW編寫上位機程序,實現(xiàn)串口的

26、數(shù)據(jù)收發(fā)、數(shù)據(jù)幀校驗等功能。</p><p>  USB轉(zhuǎn)485模塊:采用1片CH340G芯片和2片MAX485芯片實現(xiàn)USB轉(zhuǎn)4線485的功能。</p><p>  STM32數(shù)據(jù)處理模塊:使用2片SP3485與STM32的UART5口進行連接,實現(xiàn)與上位機進行串口通信。STM32的SPI3接口與Micro SD卡連接,實現(xiàn)將上位機發(fā)送的字庫、數(shù)字、文字和圖片等信息存入卡中,供后續(xù)調(diào)用。

27、STM32將待顯示的點陣信息寫入SRAM(靜態(tài)隨機存儲器),供FPGA讀取。</p><p>  FPGA顯示模塊:使用FPGA芯片讀取SRAM、控制RGB電阻網(wǎng)絡(luò)將數(shù)字量轉(zhuǎn)換成0~0.714V的RGB電壓量,在VGA時序中準確插入RGB信號,將SRAM的內(nèi)容顯示到顯示器上。</p><p>  方案結(jié)構(gòu)如圖1.1所示:</p><p><b>  1.2

28、 顯示方案</b></p><p>  1.2.1 可選顯示方案</p><p>  可選顯示方案有很多,在眾多顯示方案中,最后采用VGA接口顯示器作為顯示終端。</p><p>  在嵌入式領(lǐng)域較為常用的是TFT顯示屏。此類顯示屏,顯示效果好,具有觸摸功能,但是尺寸和分辨率相對較小,接口不通用,不適合用于顯示住宅小區(qū)信息。</p><

29、;p>  廣場、汽車站、火車站和金融機構(gòu)等地,大多采用大型LED點陣顯示器。此類顯示器面積非常大,可達數(shù)十平方米,亮度大,色彩鮮艷。但是,它的價格昂貴、功耗大,控制復(fù)雜,不符合節(jié)約成本、縮小體積的設(shè)計初衷。</p><p>  生活中,最常見的顯示方案是和臺式機配套的VGA接口的液晶顯示器,此類顯示器的分辨率從800x600到1920x1080甚至更高,可選性高,通用性強。其使用的VGA(視頻圖形陣列)接口

30、具有屏幕大、臨場感強、可同時控制多個顯示器的優(yōu)點。VGA的視頻傳輸過程是最短的,所以VGA接口擁有許多的優(yōu)點,如無串擾無電路合成分離損耗等[1]。</p><p>  但是,VGA接口的工業(yè)標準對接口物理層的各種信號時序做了嚴格的要求,對于普通的單片機,采用一般的I/O口模擬信號時序的方法在速度上是無法滿足VGA接口的高速時序的要求的,而FPGA是一種可編程的硬件電路實現(xiàn),具有高集成度、高速度、高可靠性的特點,能

31、夠?qū)崿F(xiàn)各種高速復(fù)雜的時序信號[2]。</p><p>  采用FPGA技術(shù),既得到高分辨率又可以不使用計算機設(shè)備顯示圖像[3]。此外,F(xiàn)PGA還有并行執(zhí)行的特點,能避免屏幕抖動,顯示效果非常穩(wěn)定。</p><p>  采用FPGA作為VGA的驅(qū)動芯片,在國外也應(yīng)用普遍。以下是外國學者對FPGA優(yōu)點的總結(jié):FPGA具有高時鐘頻率、高處理速度、并行處理、代碼移植性好、低成本、知識產(chǎn)權(quán)受保護等優(yōu)

32、點[4]。</p><p>  1.2.2 FPGA選型</p><p>  FPGA有兩大生產(chǎn)廠商:Xilinx和Altera。在數(shù)電課程中,曾經(jīng)接觸過Altera和其EDA工具QUARTUS,所以對Altera比較熟悉,這是選用Altera FPGA的主要原因。</p><p>  選用Altera公司Cyclone4系列的EP4CE6E22C8N作為控制芯片。

33、在EDA軟件QUARTUS中可以看到這款FPGA的相關(guān)參數(shù):</p><p>  Core Voltage(核心電壓)為1.2V,LEs(邏輯單元)數(shù)量為6272,User I/Os(用戶I/O)數(shù)量為92個,Memory Bits(片內(nèi)存儲)276480Bits,embedded multipliers 9-bit element(嵌入9位陳法器)30個,PLL(鎖相環(huán)電路)2個,Global Clocks(全

34、局時鐘)10個。</p><p>  用于讀取SRAM、產(chǎn)生VGA時序和RGB信號,資源是足夠的。</p><p>  1.2.3 更新顯存方式</p><p>  顯示器的刷新率為60Hz時,F(xiàn)PGA會遍歷顯存60次,F(xiàn)PGA在遍歷顯存的同時,只有更新顯存中的數(shù)據(jù),才能顯示動態(tài)的視頻。每秒更新顯存的次數(shù)稱為FPS(Frames Per Second)即每秒傳輸幀數(shù)

35、。要流暢波播放視頻,F(xiàn)PS最少是25以上。</p><p>  在讀取顯存同時,更新顯存的方法有以下幾種:</p><p> ?、伲翰捎秒p口RAM。此類存儲器,具有兩套完全獨立的數(shù)據(jù)線、地址線和讀寫控制線,允許兩個獨立的系統(tǒng)同時對該存儲器進行隨機性的訪問。因為數(shù)據(jù)共享,所以存在訪問仲裁控制。這種方法使用的器件較多,功耗大,成本高,故不采用。</p><p>  ②:

36、采用兩組SRAM,組成乒乓結(jié)構(gòu)。乒乓結(jié)構(gòu)是指,A組SRAM和B組SRAM輪流充當“被讀”和“被寫”的角色。當FPGA讀取A組數(shù)據(jù)進行顯示時,STM32向B組寫入數(shù)據(jù)(STM32必須在FPGA讀取B組時,完成對B組的更新);然后,F(xiàn)PGA讀取B組數(shù)據(jù)進行顯示,STM32向A組寫入數(shù)據(jù);如此循環(huán),就能保證顯示與顯存更新的同步進行。</p><p>  這種方法能實現(xiàn)顯示數(shù)據(jù)無縫更新,是一種不錯的方案。然而,這需要復(fù)雜

37、的控制總線,采用兩組SRAM也會提高成本,故在本設(shè)計中暫時不采用此方案,以后設(shè)計可顯示視頻的VGA接口時,可能會采用此方案。</p><p> ?、郏翰捎肍PGA和SDRAM構(gòu)造雙口SRAM。這種方法需要用到SDRAM,而SDRAM的時序控制相當復(fù)雜。以后能熟練操作SDRAM時,或許會采用這個成本低、性能也不錯的方案。</p><p>  ④:采用一片SRAM,在VGA時序的場消隱期間更新

38、SRAM。這個方案在這幾個方案中,最容易實現(xiàn)。雖然更新速度慢,但是在本設(shè)計中是可以接受的。</p><p>  1.2.4 顯存選型</p><p>  最終采用IS61WV102416BLL作為顯存。</p><p>  可作為顯存的存儲器有兩種類型:</p><p>  一是SDRAM(Synchronous Dynamic Random

39、 Access Memory),即同步動態(tài)隨機存儲器。內(nèi)部指令以同步信號為基準,需要不停地刷新存儲單元才能保持數(shù)據(jù)。</p><p>  二是SRAM(Static Random Access Memory),即靜態(tài)隨機存儲器。它具有靜態(tài)存取功能,不需要刷新電路就能保存數(shù)據(jù)。</p><p>  SDRAM和SRAM各有所長,可總結(jié)為:SDRAM容量大體積小、價格低、但是操作復(fù)雜、速度較S

40、RAM慢;SRAM容量小體積大、價格高、但是操作簡單、速度快。</p><p>  考慮到難易程度和讀寫速度,最終采用了SRAM作為顯存。</p><p>  設(shè)計時采用的顯示器分辨率是1024x768,刷新率為60Hz,VGA信號頻率為65MHz,使用RGB565來表示像素顏色。1024x768的分辨率要求存儲器至少有768KB的存儲空間,65MHz頻率要求顯存具有優(yōu)于(1/65MHz)

41、=15ns的讀寫速度,RGB565要求存儲器的存儲單元最好是16位。</p><p>  IS61WV102416BLL具有1024K個位寬為16位的存儲單元,讀寫速度為10ns,完全滿足設(shè)計要求。</p><p>  1.2.5 RGB三基色生成方案</p><p>  在標準VGA協(xié)議中RGB三基色電壓為0V~0.714V,是模擬量。而無論是單片機還是FPGA,

42、其I/O口輸出的都是數(shù)字量,所以需要一種將數(shù)字量轉(zhuǎn)換成模擬量的措施。</p><p>  可采用專用的視頻DAC芯片,例如ADV7123,GM7123等芯片。這類DAC專門為VGA接口打造,自帶3個分離的10位數(shù)據(jù)輸入端口,由信號SYNC和BLANK分別控制同步和消隱功能。分辨率最大支持為1600×1200,刷新率為100Hz。芯片很強大,性能也很好,在實際應(yīng)用在首選此方案。</p>&l

43、t;p>  然而,使用這類芯片,會讓VGA接口蒙上一層面紗,不利于理解,而且這類芯片價格也不便宜,故最終決定,采用電阻網(wǎng)絡(luò)將數(shù)字量轉(zhuǎn)換成模擬量的方案。</p><p>  1.3 微處理器方案</p><p>  本設(shè)計采用STM32F103ZET6作為微處理器。</p><p>  MCS51單片機的管腳數(shù)量、處理速度,片內(nèi)資源、自帶功能等都不能滿足本系統(tǒng)的

44、要求,故未采用MCS51單片機作為微處理器。</p><p>  STM32F103系列屬于ARM Cortex-M3內(nèi)核,增強型32位微處理器,該系列有規(guī)格不同的多個型號,引腳數(shù)量從64個到144個,F(xiàn)LASH容量從16KB到1MB,SRAM容量從6KB到96KB。</p><p>  本系統(tǒng)選用的STM32F103ZET6具有144個引腳,512KB FLASH和64KB SRAM的資

45、源。片內(nèi)外設(shè)有3個SPI/I2S,2個I2C,5個USART,1個USB2.0全速接口,1個CAN總線接口,3個12位16通道ADC,2個12位DAC,資源非常豐富。其時鐘頻率可由自帶的PLL鎖相環(huán)電路對晶振倍頻,最高可達72MHz,速度是MCS51單片機的72倍,基本可以滿足顯示靜態(tài)圖片的要求。</p><p>  在確定采用FPGA作為VGA時序的控制芯片之后,對FPGA有了新的認識,發(fā)現(xiàn)完全可以用FPGA實

46、現(xiàn)UART、SPI等功能,用狀態(tài)機來更新SRAM也比使用STM32通過外部中斷的方式更新SRAM快速,F(xiàn)PGA內(nèi)部也有足夠的存儲空間。采用FPGA獨立工作的方案,甚至能實現(xiàn)更加優(yōu)秀的顯示效果。</p><p>  但是初學FPGA,暫時不能實現(xiàn)以上難度較高的功能。若采用STM32+FPGA的方案,STM32負責寫SRAM,F(xiàn)PGA負責讀SRAM,則思路清晰,易于實現(xiàn)。采用單片機結(jié)合FPGA的方案完成畢業(yè)設(shè)計,是對

47、單片機知識的總結(jié),也是對FPGA知識的初步嘗試。故采用STM32+FPGA的方案。</p><p>  1.4 通信總線方案</p><p>  本設(shè)計采用2片MAX485和2片SP3485搭建全雙工串口通信電路。雖然一般在遠程自動工控環(huán)境中,采取的是半雙工通信,但是有些場合還要求設(shè)備節(jié)點能及時響應(yīng)主機的命令,需要采取全雙工的串行數(shù)據(jù)通信。[5]</p><p> 

48、 電腦與單片機常見的通信方式有:</p><p> ?、伲菏褂肬SB轉(zhuǎn)UART(異步收發(fā)傳輸器)芯片。USB端的TXD、RXD分別與單片機端的RXD、TXD相連,USB地線和單片機地線相連。這種通信方式最簡單,成本最低,短距離時通信速率快,為全雙工。學習串口、調(diào)試串口時通常采用這種接法。但是UART之間直接相連,導(dǎo)致了這種接法在長距離通信時,信號衰減嚴重,不適合用于長距離通信。</p><p&

49、gt; ?、冢菏褂肬SB轉(zhuǎn)UART,UART轉(zhuǎn)RS232芯片,如MAX232。此類芯片可以將TTL電平(0V~5V)轉(zhuǎn)換成RS232電平(+15V~-15V)。但是,RS232C 最大通信距離僅為15m, 同時RS232C 是點對點(即只用一對收、發(fā)設(shè)備)的通信, 因此PC 機無法直接對多個下位機進行遠離通訊和管理。[6]不滿足小區(qū)信息發(fā)布系統(tǒng)的要求。</p><p>  ③:使用USB轉(zhuǎn)UART,UART轉(zhuǎn)48

50、5芯片,如MAX485。這類芯片能把TTL電平轉(zhuǎn)換成差分電壓信號。芯片的A端和B端為差分信號端,當A引腳的電平高于B時,代表數(shù)據(jù)1;當A的電平低于B端時,代表數(shù)據(jù)0。差分方式傳輸數(shù)據(jù),能把通信距離延長至幾十米至上千米。</p><p>  RS485標準抗干擾能力強,傳輸速率高,傳送距離遠.采用雙絞線,不用MODEM的情況下,在100kbit/s的速率時,可傳送的距離為1.2km,若速率降到9600bit/s,則

51、傳送距離可達15km.[7]</p><p>  RS485總線以其構(gòu)造簡單,造價低廉,可選芯片多,便于維護等特點在許多工業(yè)控制的系統(tǒng)中得到廣泛的應(yīng)用。[8]因此,本設(shè)計采用此方案。</p><p>  單片MAX485只能實現(xiàn)半雙工,故采用兩片MAX485芯片,一片負責接收,一片負責發(fā)送,實現(xiàn)全雙工通信。</p><p><b>  1.5 存儲方案&l

52、t;/b></p><p>  本系統(tǒng)采用Micro SD卡作為主要存儲。</p><p>  在單片機設(shè)計中,常用的存儲芯片有EEPROM類的AT24Cxx系列,F(xiàn)LASH類的W25Qxx系列。然而,本系統(tǒng)字庫總大小可達78MB以上,加上圖片的存儲區(qū),這兩個系列的存儲器已經(jīng)無法滿足設(shè)計要求。</p><p>  Micro SD卡,廣泛應(yīng)用于手機、平板、相機

53、等數(shù)碼產(chǎn)品中。其容量以GB為單位,有4GB、8GB到64GB。Micro SD卡,可以支持SPI協(xié)議。STM32自帶SPI接口,操作Micro SD卡高效、簡便。</p><p>  1.6 上位機開發(fā)軟件選擇</p><p>  上位機一般指的是PC機也就是電腦,下位機指的是單片機。在電腦上,每一個軟件都可以稱為一臺儀器,所以這里的上位機指的運行在電腦上的一個軟件,這個軟件利用電腦的硬件

54、資源,可實現(xiàn)多種多樣的功能。</p><p>  上位機開發(fā)軟件有很多,有VC、VB、DELPHI、.NET、LABVIEW、C++Builder等。在大學課程中,接觸過VC和LabVIEW。拿這兩款開發(fā)軟件做比較,容易發(fā)現(xiàn)使用LabVIEW制作上位機比使用VC更加方便、美觀。</p><p>  LabVIEW是一種基于圖形編程語言的開發(fā)環(huán)境。它與傳統(tǒng)編程語言有著諸多相似之處,如相似的數(shù)

55、據(jù)類型、數(shù)據(jù)流控制結(jié)構(gòu)、程序調(diào)試工具等,但二者最大的區(qū)別在于:傳統(tǒng)編程語言是用文本語言編程,而LabVIEW用圖形語言(即各種圖標、圖形符號、連線等)編程。[9]程序框圖使用圖形方式編寫代碼,使用函數(shù)選板中的VI 和函數(shù)控制前面板上的對象。[10]</p><p>  使用圖形符號編程,程序更加直觀。LabVIEW具有豐富的控件,只需調(diào)用這些控件就能實現(xiàn)復(fù)雜的功能??丶奈恢每梢噪S意安排、大小可隨意調(diào)整,使得La

56、bVIEW的界面更加靈活、美觀和個性化。</p><p><b>  2 硬件設(shè)計</b></p><p><b>  2.1 硬件框架</b></p><p><b>  一共有四塊電路板。</b></p><p>  第一塊:USB轉(zhuǎn)485,包含USB轉(zhuǎn)UART芯片、12M

57、Hz晶振、2片MAX485芯片。負責接收STM32發(fā)出的數(shù)據(jù)并將數(shù)據(jù)傳輸給上位機,和向STM32發(fā)送數(shù)據(jù)。</p><p>  第二塊:STM32模塊,包含STM32F103ZET6微處理器、晶振、3.3V穩(wěn)壓電源電路、ISP(在線系統(tǒng)編程)下載電路、SRAM接口、Micro SD接口、FLASH存儲器、按鍵。負責接收上位機發(fā)送的數(shù)據(jù)、進行數(shù)據(jù)分析和存儲、更新顯存。</p><p>  第

58、三塊:Micro SD轉(zhuǎn)接板。負責連接Micro SD卡和STM32。</p><p>  第四塊:FPGA模塊,包含EP4CE6E22C8N FPGA芯片、EPCS4SI8N程序存儲芯片、50MHz有源晶振、1.2V,2.5V,3.3V穩(wěn)壓電路、JTAG接口、IS61WV102416BLL靜態(tài)隨機存儲器、復(fù)位按鍵、VGA電阻網(wǎng)絡(luò)。負責讀取顯存,產(chǎn)生VGA時序和RGB信號,并在場消隱期間向STM32發(fā)送可寫顯存的

59、信號。</p><p>  硬件框架圖如圖2.1所示:</p><p><b>  框圖連線簡介:</b></p><p>  ①:SD轉(zhuǎn)接板接入STM32上的SD接口。</p><p> ?、冢弘娔X端485芯片與STM32板載485芯片通過4根信號線相連。</p><p> ?、郏篠TM32向S

60、RAM(顯存)寫入數(shù)據(jù)。</p><p> ?、埽篎PGA在場消隱期間產(chǎn)生低電平,通知STM32可以向SRAM寫入數(shù)據(jù)。</p><p>  ⑤:FPGA從SRAM讀取數(shù)據(jù)。</p><p>  2.2 USB轉(zhuǎn)485模塊</p><p>  首先,通過CH340G芯片,將USB信號轉(zhuǎn)換為UART的RXD、TXD的TTL信號。兩片MAX485

61、,負責接收的為R,負責發(fā)送的為T。則:</p><p>  R的DE、RE引腳接地,設(shè)置為接收模式。RO端接RXD,DI端懸空。</p><p>  T的DE、RE引腳由4.7K電阻上拉到VCC,設(shè)置為發(fā)送模式。DI端接TXD,RO端懸空。</p><p>  搭建好的全雙工485電路如下圖所示:</p><p>  2.3 STM32數(shù)據(jù)處

62、理電路</p><p>  2.3.1 STM32最小系統(tǒng)</p><p>  讓STM32芯片正常工作,需要3.3V穩(wěn)壓電源電路、晶振電路、程序下載電路、復(fù)位電路。</p><p>  3.3V穩(wěn)壓芯片采用AMS1117 3.3。其內(nèi)部集成過熱、過流保護電路,固定輸出3.3V電壓,具有1%的精度,最大輸出800mA電流,采用SOT-223貼片封裝,體積小,非常適合

63、作為3.3V數(shù)字IC的穩(wěn)壓芯片。</p><p>  主晶振采用8MHz 49s型無源晶振,晶振兩端接22pF電容到GND,為STM32提供精準的時鐘。</p><p>  RTC時鐘采用32.768KHz無源晶振,晶振兩端接22pF電容到GND,若時鐘走的較快,稍微加大電容,反之稍微減小電容。其頻率32.768KHz即32768Hz,即2的15次方,經(jīng)單片機內(nèi)部分頻器進行15次2分頻后,

64、可生成精確的1Hz方波,即周期為1秒的脈沖,這個脈沖信號,讓計數(shù)器每秒加1。</p><p>  關(guān)于程序下載電路,未采用JTAG接口,因為JTAG接口占用IO口,還需要額外購買仿真器,性價比較低。所以,本設(shè)計采用串口的方式下載程序。</p><p>  CH340G是一種USB總線的轉(zhuǎn)接芯片,可實現(xiàn)USB轉(zhuǎn)串口、USB轉(zhuǎn)IrDA紅外和USB轉(zhuǎn)打印口等功能。</p><

65、p>  使用3.3V電源時,將V3引腳連接至3.3V電源;使用5V電源時,將V3引腳外接0.01uF電容到GND。在STM32模塊中,采用3.3V的接線方式。</p><p><b>  相關(guān)電路圖如下:</b></p><p>  2.3.2 485收發(fā)電路</p><p>  為了不引人5V電壓到STM32電路板中,采用SP3485這

66、款3.3V的485芯片。其封裝和接法和MAX485完全相同,官方數(shù)據(jù)手冊稱其最大支持10Mbps的通信速率,完全滿足設(shè)計要求。為了直觀的觀察數(shù)據(jù)的收發(fā)情況,在RXD和TXD引腳都接入了LED指示燈。</p><p>  2.3.3 W25Q64 FLASH存儲電路</p><p>  在嵌入式應(yīng)用上廣泛用于字庫的存儲。嵌入式平臺大多采用分辨率較低的液晶屏,不需要大字號字庫,而本設(shè)計使用10

67、24x768分辨率的顯示器,最大需要56x56p像素的字號,一個GBK字庫有9,384,480個字節(jié),已經(jīng)超出了W25Q64的存儲范圍。</p><p>  所以,最后采用Micro SD卡作為主存儲器,W25Q64作為備用存儲器。</p><p>  2.3.4 Micro SD卡存儲電路</p><p>  Micro SD卡支持兩種工作模式,SD模式和SPI模

68、式。</p><p>  兩種模式下,引腳對應(yīng)的功能:</p><p>  SD模式:1-DATA2,2-DATA3,3-CMD,4-VDD,5-CLK,6-VSS,7-DATA0,8-DATA1</p><p>  SPI模式:1-保留,2-CS,3-DI,4-VDD,5-SCLK,6-VSS,7-DO,8-保留</p><p><b

69、>  SPI模式的選擇:</b></p><p>  Micro SD復(fù)位過程中,CS為低電平,使用SPI模式,否則使用SD模式。</p><p>  本系統(tǒng)采用SPI模式,與STM32的SPI3相連。Micro SD的接口電路比較簡單,每個引腳上拉47K的電阻即可。</p><p>  設(shè)計電路如下圖所示:</p><p>

70、;  2.3.5 靜態(tài)隨機存儲器(SRAM)接口</p><p>  SRAM芯片焊接在FPGA板子上,STM32上只有SRAM的接口。STM32與FPGA之間利用兩排排針相連。設(shè)計時,STM32和FPGA采用同一個模板,排針的位置和板子的大小完全一致。當STM32插入FPGA時,STM32與SRAM聯(lián)通。</p><p>  STM32自帶FSMC接口,該接口專門用于控制外置SRAM,然

71、而,在本設(shè)計中未采用此接口。一是,該接口對應(yīng)的引腳分布不夠好,不利于布線;二是,SRAM的操作原本非常簡單,而采用FSMC后將會把問題復(fù)雜化。</p><p>  安排IO口時,數(shù)據(jù)總線使用同1組IO口,地址總線使用2組IO口,這樣能稍微加快對SRAM的操作速度。</p><p>  STM32和FPGA都直接連接SRAM,兩者之間必須要有一根線進行溝通,協(xié)商這一時刻由誰接管SRAM的控制

72、權(quán),否則會造成總線沖突,更嚴重地,會導(dǎo)致STM32與FPGA的管腳的電平一高一低,電流過大,損壞芯片。下圖中的READING引腳即為FPGA與STM32的“通信引腳”。</p><p>  2.4 FPGA模塊</p><p>  2.4.1 FPGA核心電路</p><p>  讓FPGA芯片正常工作,需外接以下幾個外設(shè):</p><p>

73、 ?、伲弘娫?。EP4CE6E22C8N需要3個電壓,1.2V內(nèi)核電壓,2.5V PLL電壓,3.3V I/O口電壓。3個電壓的穩(wěn)壓芯片都采用AMS1117系列,±1.5%的初始誤差,1.3V的壓差,SOT-233的封裝,這幾個參數(shù)決定著AMS1117系列穩(wěn)壓芯片適合為FPGA提供線性穩(wěn)壓電源。</p><p> ?、冢篔TAG接口、專用配置存儲器(EPCS4SI8N)</p><p&

74、gt;  將FPGA的模式配置成AS+JTAG模式。調(diào)試時,用JTAG燒寫程序,確認程序無誤后,用QUARTUS生成JIC文件,由JTAG接口將JIC文件燒錄到配置存儲器中。上電后,F(xiàn)PGA自動從配置存儲器讀取程序,加載到內(nèi)部SRAM中。</p><p><b> ?、郏壕д耠娐?lt;/b></p><p>  雖然FPGA不加晶振也能工作,但是沒有晶振的FPGA只能實現(xiàn)

75、邏輯電路,也就是實現(xiàn)類似于與門、非門的功能;只有加上晶振,F(xiàn)PGA才能實現(xiàn)時序功能,才能實現(xiàn)狀態(tài)機、產(chǎn)生控制芯片的時序信號、定時、計數(shù)等功能。</p><p>  本系統(tǒng)采用50MHz的有源晶振,F(xiàn)PGA內(nèi)部的PLL可將其分頻、倍頻至一定范圍內(nèi)的任意頻率。</p><p>  2.4.2 靜態(tài)隨機存儲器(SRAM)</p><p>  采用IS61WV102416B

76、LL SRAM作為顯存。</p><p>  這款SRAM的接法很簡單,除去地址線和數(shù)據(jù)線,只需將WE_N讀寫控制線接入單片機或者FPGA即可。CE,OE,UB,LB引腳可以直接接地。其中UB和LB引腳接高電平時分別屏蔽16位數(shù)據(jù)字節(jié)的高8位和低8位,而在本設(shè)計中,需要完全讀寫16位數(shù)據(jù),故直接將UB和LB接地。SRAM引腳圖如下所示:</p><p>  2.4.3 VGA接口與電阻網(wǎng)絡(luò)

77、</p><p>  如上表所示,在這15個引腳中,只需控制其中的5個即可實現(xiàn)VGA顯示。</p><p>  這5個引腳為:1 紅基色 red,2 綠基色 green,3 藍基色 blue,13 行同步,14 場同步。</p><p>  標準VGA協(xié)議中規(guī)定,RGB三基色電壓范圍:0V~0.714V,0V代表該顏色亮度為0,0.714V代表該顏色最亮。三基色源端

78、和終端匹配電阻均為75歐姆。75歐姆的匹配電阻集成在VGA傳輸線上的兩頭,不需要也不可以自己在電路板上制作。</p><p>  本系統(tǒng)采用電阻網(wǎng)絡(luò),將控制RGB的數(shù)字信號轉(zhuǎn)換成對應(yīng)的電壓信號。紅基色R和藍基色B使用5個引腳控制,綠基色G使用6個引腳控制,構(gòu)成RGB565的彩色模式。以二進制的形式展開,其順序為:</p><p>  R4_R3_R2_R1_R0_G5_G4_G3_G2_G

79、1_G0_B4_B3_B2_B1_B0。</p><p>  2.4.4 電阻網(wǎng)絡(luò)電阻值的計算</p><p>  上圖是產(chǎn)生綠基色VGA電壓的等效圖。IO5~IO0分別對應(yīng)G5~G0,數(shù)值大者為高位。</p><p>  當6個IO口都輸出3.3V,即G5=G4=G3=G2=G1=G0=1時,代表綠色亮度最大,則V_VGA應(yīng)該為最大值0.714V。R5,R4,R3

80、,R2,R1,R0為并聯(lián)關(guān)系,設(shè)并聯(lián)后的電阻為Rx,根據(jù)電阻分壓定理,得:75/(Rx+75) = 0.714/3.3,解得Rx≈272歐姆,總電導(dǎo)Sx=1/Rx=1/272西門子。</p><p>  設(shè)R5,R4,R3,R2,R1,R0的電導(dǎo)分別為S5,S4,S3,S2,S1,S0,為了實現(xiàn)將Sx分成2^6=64份,并且考慮到R0為控制信號的最低位,所以把R0的電阻值設(shè)為最大,其電導(dǎo)值最小,則有以下關(guān)系:&l

81、t;/p><p> ?、匐娮桕P(guān)系:32R5=16R4=8R3=4R2=2R1=R0,</p><p> ?、陔妼?dǎo)關(guān)系:S5=2*S4=4*S3=8*S2=16*S1=32*S0,</p><p>  求并聯(lián)電阻的電導(dǎo)值:Sx=S5+S4+S3+S2+S1+S0,得:</p><p>  Sx=32*S0+16*S0+8*S0+4*S0+2*S0+

82、S0,即Sx=63*S0。</p><p>  上面已經(jīng)計算出總電導(dǎo)Sx = 1/272,</p><p>  則S0=Sx/63=1/272/63=1/17136(西門子),R0=1/S0=17136(歐姆)。</p><p>  根據(jù)①:32R5=16R4=8R3=4R2=2R1=R0,可算出:</p><p>  R1=R0/2=856

83、8,</p><p>  R2=R0/4=4284,</p><p>  R3=R0/8=2142,</p><p>  R4=R0/16=1071,</p><p>  R5=R0/32=535.5。</p><p>  以上為綠基色電阻值的確定方法,紅基色與藍基色的電阻值確定方法與之相同。</p>&

84、lt;p>  考慮到市場上電阻具有標稱值,查閱標稱值表,最終確定電阻取值為:</p><p><b>  綠基色電阻值:</b></p><p>  R0 = 8.2K + 8.2K</p><p><b>  R1 = 8.2K</b></p><p><b>  R2 = 3.9

85、K</b></p><p><b>  R3 = 2K</b></p><p><b>  R4 = 1K</b></p><p><b>  R5 = 510R</b></p><p>  紅、藍基色的電阻取值為:</p><p><

86、b>  R0 = 8.2K</b></p><p><b>  R1 = 3.9K</b></p><p><b>  R2 = 2K</b></p><p><b>  R3 = 1K</b></p><p><b>  R4 = 510R<

87、/b></p><p>  這樣取值會造成色彩稍微失準,不過在一般場合下是可接受的。</p><p>  以上計算方法未考慮到當FPGA引腳為輸出0時,與該引腳連接的電阻會與75歐姆的匹配電阻形成并聯(lián)關(guān)系,但是考慮到最小電阻為510歐姆,是75歐姆匹配電阻的6.8倍,故對匹配電阻的影響不大。</p><p><b>  原理圖如下:</b>

88、;</p><p><b>  3 軟件設(shè)計</b></p><p>  3.1 LABVIEW上位機程序</p><p>  主要使用到LabVIEW的串口功能。在編寫LabVIEW上位機時,一步一步地實現(xiàn)需要的功能。</p><p>  3.1.1 串口收發(fā)模塊</p><p>  主要函數(shù)在

89、“儀器I/O” -> “串口”和“VISA”選板中。首先,在程序框圖界面調(diào)用“VISA配置串口”函數(shù),為VISA資源名稱、波特率、數(shù)據(jù)比特等創(chuàng)建輸入控件(移到接線端,單擊右鍵,選創(chuàng)建輸入控件)。在VISA選拔中,有VISA讀取和VISA寫入函數(shù),分別實現(xiàn)串口數(shù)據(jù)的讀取和發(fā)送。</p><p>  將以上三個函數(shù)連接好,即可實現(xiàn)串口的基本收發(fā)功能。程序框圖如下圖示:</p><p> 

90、 3.1.2 串口數(shù)據(jù)傳輸模塊</p><p>  通信協(xié)議:以數(shù)據(jù)幀作為基本單元。</p><p><b>  幀格式:</b></p><p>  從機地址 幀功能 幀序列 幀長度 幀數(shù)據(jù) 校驗值</p><p>  1Byte 1Byte 4Byte 2Byte

91、 由幀長度控制 1Byte</p><p>  <=65535Byte</p><p>  用1個字節(jié)標記從機地址,理論上能控制256個節(jié)點,考慮到MAX485的驅(qū)動能力,其最多可驅(qū)動32個負載,故用1個字節(jié)表示從機地址即可。</p><p>  幀功能字節(jié)用于區(qū)分數(shù)據(jù)幀的功能。例如:0x00用于加載背景,0x01用于傳輸文字數(shù)據(jù),0x02用于傳輸圖

92、片數(shù)據(jù)等。</p><p>  幀序列由4個字節(jié)表示,配合幀長度的2個字節(jié),共48位寬,可連續(xù)傳輸256TB字節(jié)的數(shù)據(jù),已經(jīng)超前現(xiàn)實非常多。</p><p>  幀數(shù)據(jù)是本幀的有效數(shù)據(jù),其大小由幀長度字節(jié)決定,最大為65KB。燒寫字庫時,幀長度選用512字節(jié),是Micro SD卡一個扇區(qū)的大小,方便數(shù)據(jù)存取。</p><p>  校驗值放在數(shù)據(jù)幀最后面,可采用異或校

93、驗、和校驗、CRC校驗等多種校驗方式。本系統(tǒng)采用和校驗方式,因為LabVIEW中對數(shù)組求和非常簡便,只有一條語句。經(jīng)驗證,在460800波特率下,采用和校驗燒錄的字庫未發(fā)現(xiàn)問題。</p><p>  判斷校驗是否成功的方法:將數(shù)據(jù)塊的所有字節(jié)求和后再與接收的校驗字節(jié)相加并丟棄進位, 若結(jié)果為0則表明數(shù)據(jù)塊傳送正確, 否則出錯。[11]</p><p>  LabVIEW要實現(xiàn)將這幾個數(shù)據(jù)打

94、包成一個數(shù)據(jù)幀?;舅悸肥牵?lt;/p><p>  ①:用“平化至字符串”函數(shù)把從機地址、幀功能、幀序列、幀長度等數(shù)據(jù)轉(zhuǎn)換成字符串,然后利用“連接字符串”函數(shù)將它們與幀數(shù)據(jù)字符串連接成一個新的字符串——“加入頭部”字符串。</p><p> ?、冢簩ⅰ凹尤腩^部”字符串用“字符串至字節(jié)數(shù)組轉(zhuǎn)換”函數(shù)轉(zhuǎn)換成數(shù)組,再用“數(shù)組元素相加”函數(shù)對該數(shù)組求和,得到“校驗和”數(shù)值。</p>&

95、lt;p> ?、郏簩ⅰ靶r灪汀睌?shù)值用“平化至字符串”轉(zhuǎn)換為名為“校驗和字符串”的字符串,最后將“加入頭部”與“校驗和字符串”用“連接字符串”函數(shù)連接,這樣就完成了數(shù)據(jù)幀的打包。</p><p>  LabVIEW發(fā)送完一個數(shù)據(jù)幀后,要等到從機返回正確的校驗值,才發(fā)送下一幀數(shù)據(jù);若從機返回錯誤的校驗值,則LabVIEW繼續(xù)發(fā)送本幀數(shù)據(jù),直到從機返回正確的校驗值,才發(fā)送下一幀數(shù)據(jù);若從機遲遲不返回校驗值,Lab

96、VIEW間隔一定時間重發(fā)本幀數(shù)據(jù)。</p><p>  利用以上協(xié)議,成功向Micro SD卡燒錄了78MB的GBK字庫文件,字庫可正常使用。</p><p>  3.1.3 字庫燒錄模塊</p><p>  基本方法是:讀取字庫文件,存入“文件數(shù)據(jù)”字符串中,然后每次截取512個字節(jié)作為一幀,幀序列從0開始,每發(fā)送成功一幀,幀序列加1,直到發(fā)送完成。發(fā)送成功一個數(shù)

97、據(jù)幀的標志是:接收到從機返回的校驗值。</p><p>  讀取字庫二進制文件。進行讀取字庫的大小、初始化偏移量、初始化進度等操作。</p><p>  3.1.4 文字發(fā)布模塊</p><p><b>  文字信息包括:</b></p><p> ?、伲鹤煮w,②:字號,③:字體顏色,④:背景顏色,⑤:是否啟用背景顏色,

98、⑥:行號,⑦:列號,⑧:行間距,⑨:列間距,⑩:保留1,?:保留2。將以上數(shù)字量封裝成一個字符串,構(gòu)成字符串信息幀。</p><p>  其中在處理③字體顏色和④背景顏色時,需要將RGB24轉(zhuǎn)換成RGB565。在RGB24中,紅綠藍3種顏色均采用8個位表示;在RGB565中,紅綠藍分別用5個位、6個位、5個位表示。轉(zhuǎn)換的基本思路是,把0~255轉(zhuǎn)變?yōu)?~31或者綠色的0~63。</p><p&

99、gt;  紅色的轉(zhuǎn)換式子:R565 = R24*32/256;[向下取整]</p><p>  綠色的轉(zhuǎn)換式子:G565 = G24*64/256;[向下取整]</p><p>  藍色的轉(zhuǎn)換式子:B565 = B24*32/256;[向下取整]</p><p>  紅綠藍三色混合式子:RGB565 = R565*2048+G565*32+B565;</p&g

100、t;<p>  將RGB24顏色模式的數(shù)據(jù)轉(zhuǎn)換成RGB565顏色模式下的數(shù)據(jù):</p><p>  將字體、字號、字體顏色、字體背景色、是否啟用背景色等文字信息封裝成為一個字符串。</p><p>  發(fā)送一幀完整的數(shù)據(jù)幀,包含幀頭、文字信息幀、校驗和。</p><p>  接收從機的返回值,校驗成功后自動關(guān)閉發(fā)布按鍵,停止發(fā)送本幀信息。否則間隔一定時

101、間連續(xù)發(fā)送本幀信息。</p><p>  3.1.5 圖片發(fā)布模塊</p><p><b>  圖片信息包括:</b></p><p> ?、伲浩鹗夹?,②:起始列,③:圖片長度,④:圖片寬度,⑤:圖片存儲位置,⑥:保留1,⑦:保留2,⑧:保留3。</p><p>  將以上信息封裝成一個字符串,構(gòu)成圖片信息幀。</

102、p><p>  圖片的發(fā)布,和字庫的燒錄很相似。即將圖片的點陣代碼存入設(shè)定好的存儲區(qū)域,STM32從某個位置開始加載,將點陣信息寫入SRAM。字庫與圖片的區(qū)別在于,字庫的一個像素點用一位表示,圖片的一個像素點用16位表示。</p><p>  3.2 STM32程序</p><p>  3.2.1 485串口協(xié)議</p><p>  采用STM3

103、2的UART5作為收發(fā)器。難點不在于UART5的配置,而在于數(shù)據(jù)存儲與校驗。</p><p>  所以,只介紹UART5要特別注意的幾點:</p><p> ?、伲洪_機發(fā)送的第一個數(shù)據(jù)丟失問題。STM32狀態(tài)寄存器TC位的清零方式為,先讀USART_SR,然后寫入USART_DR。而發(fā)送第一個數(shù)據(jù)時,只寫USART_DR,未讀取USART_SR,故TC位為1,是發(fā)送完成的標志,所以STM3

104、2不發(fā)送第一個數(shù)據(jù)。解決這個BUG的方法是:在配置串口時,執(zhí)行一次UART5 -> SR = UART5 -> SR;這條語句。</p><p> ?、冢簑hile((UART5 -> SR & (1 << 7)) == 0);//數(shù)據(jù)轉(zhuǎn)移到移位寄存器</p><p>  while((UART5 -> SR & (1 <<

105、6)) == 0);//等待發(fā)送完成</p><p>  以上兩條語句作為等待發(fā)送完成的語句,一般情況下效果幾乎一樣,但是兩者之間確實是有所不同的。因為數(shù)據(jù)已送到移位寄存器不代表發(fā)送完成。</p><p>  在介紹LabVIEW串口數(shù)據(jù)傳輸模塊時,提到了數(shù)據(jù)幀格式為:</p><p>  從機地址 幀功能 幀序列 幀長度 幀數(shù)據(jù) 校

106、驗值</p><p>  1Byte 1Byte 4Byte 2Byte 由幀長度控制 1Byte</p><p>  <=65535Byte</p><p>  其中,幀功能代表本幀數(shù)據(jù)的功能,可以定義為0:發(fā)送文字信息,1:發(fā)送圖片信息,2:更新桌面等;幀序列在傳輸文件時用到,可以作為本幀的存儲地址。</p>

107、<p>  基本思路是:STM32接收并分析上位機發(fā)送的數(shù)據(jù)幀。識別數(shù)據(jù)幀的的從機地址、幀功能、幀序列、幀長度信息,根據(jù)從機地址判斷數(shù)據(jù)是不是發(fā)送給本機,根據(jù)幀功能字節(jié)判斷數(shù)據(jù)幀的功能,根據(jù)幀序列判斷本幀在文件中的位置,根據(jù)幀長度信息判斷校驗位的位置和何時向主機回復(fù)校驗信息。</p><p>  在接收到幀長度信息后,計算幀長度,并將其存入data_lenth全局變量,以此判斷本幀何時結(jié)束。</p

108、><p>  每接收到一個字節(jié),都用初始值為0的sum變量對該字節(jié)進行累加,并存入sum中,當接收到最后一個字節(jié)時(也就是校驗位),將sum與該字節(jié)比較,若相等,則說明數(shù)據(jù)接收無誤。在數(shù)據(jù)校驗成功的前提下,判斷本幀的從機地址是否是本機地址,如果是則對數(shù)據(jù)進行處理,處理完畢后向主機發(fā)送校驗數(shù)據(jù);如果不是,則丟棄數(shù)據(jù)幀。</p><p>  發(fā)送校驗數(shù)據(jù)的方法:</p><p&

109、gt;  接收完一幀數(shù)據(jù),并將數(shù)據(jù)處理完成后,向主機依次回復(fù)【從機地址】、【幀功能】、【幀序列】、【幀長度】、【校驗和】,等待主機發(fā)送下一幀數(shù)據(jù),若主機判斷本機發(fā)送的校驗數(shù)據(jù)正確,則向本機發(fā)送下一幀數(shù)據(jù),若判斷為錯誤,則繼續(xù)發(fā)送本幀數(shù)據(jù)。</p><p><b>  串口協(xié)議流程圖:</b></p><p>  3.2.2 FLASH存儲模塊程序</p>

110、<p>  FLASH存儲器的型號是W25Q64,使用STM32自帶的SPI2接口對其進行操作。</p><p>  主要函數(shù)為:讀寫芯片狀態(tài)寄存器函數(shù),讀flash函數(shù),寫flash頁函數(shù),芯片擦除函數(shù)和擦除扇區(qū)函數(shù)等,其中核心部分為讀寫flash函數(shù)和寫flash頁函數(shù)的編寫。[12]</p><p>  從W25Q64讀取數(shù)據(jù)的步驟:</p><p&g

111、t; ?、伲菏鼓芷骷?,即拉低CS引腳。</p><p> ?、冢喊l(fā)送讀取命令,即利用SPI2向芯片寫入0x03。</p><p> ?、郏喊l(fā)送地址。分三次發(fā)送24位的地址,先高位再低位。</p><p> ?、埽豪肧PI2向其寫入任意數(shù)據(jù),返回的值即為該地址對應(yīng)的值。</p><p>  在拉高CS引腳前,每向其寫入一個字節(jié),W25Q64的

112、地址自動加1,從而實現(xiàn)讀取連續(xù)地址的值。</p><p>  ⑤:拉高CS引腳,結(jié)束讀取操作。</p><p>  向W25Q64寫入數(shù)據(jù)的步驟:</p><p> ?、伲豪虲S引腳,SPI2寫入0x06,拉高CS。功能是,發(fā)送寫允許信號。</p><p> ?、冢豪虲S,SPI2寫入0x02,發(fā)送寫頁命令。</p><

113、;p> ?、郏篠PI2分三次寫入地址,先高位再低位。</p><p> ?、埽篠PI2寫入數(shù)據(jù)。</p><p> ?、荩豪逤S,完成寫入。</p><p> ?、蓿好β禉z測。拉低CS,SPI2寫入0x05,讀取一個字節(jié),拉高CS,判斷第0位,由1變?yōu)?時,跳出循環(huán)。</p><p>  寫入數(shù)據(jù)時,要注意一點:W25Q64不能對為0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論