版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 編號(hào): </p><p><b> 畢業(yè)設(shè)計(jì)說(shuō)明書(shū)</b></p><p> 題 目 : 住宅小區(qū)信息發(fā)布系統(tǒng) </p><p> 院 (系): 電子工程與自動(dòng)化學(xué)院 </p><p> 專 業(yè) : 測(cè)控技術(shù)與儀器 </p&g
2、t;<p> 題目類型: 理論研究 實(shí)驗(yàn)研究 工程設(shè)計(jì) 工程技術(shù)研究 軟件開(kāi)發(fā)</p><p> 2015年5月 20日</p><p><b> 摘 要</b></p><p> 利用LabVIEW、RS485總線、STM32微處理器、FPGA等技術(shù),實(shí)現(xiàn)文字和圖片信息的遠(yuǎn)程、動(dòng)態(tài)發(fā)布。<
3、/p><p> 上位機(jī)程序采用LabVIEW編寫(xiě)。上位機(jī)通過(guò)485總線向STM32發(fā)送待顯示內(nèi)容。STM32將數(shù)據(jù)暫存Micro SD卡中,在VGA場(chǎng)消隱期間,從Micro SD卡中讀取數(shù)據(jù),寫(xiě)入顯存。FPGA讀取顯存數(shù)據(jù),產(chǎn)生VGA信號(hào)。顯示器讀取VGA信號(hào),將文字、圖片顯示出來(lái)。上位機(jī)與STM32之間的通信采用4線485總線。以數(shù)據(jù)幀作為通信的基本單元,采用和校驗(yàn)的校驗(yàn)方法,能在一定程度上保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和
4、完整性。采用GBK字庫(kù),通過(guò)LabVIEW向Micro SD卡燒錄了3種字體、7種字號(hào)。通過(guò)上位機(jī)向STM32發(fā)送GBK編碼,STM32就能根據(jù)編碼,從Micro SD卡中讀取對(duì)應(yīng)的點(diǎn)陣信息,并寫(xiě)入顯存,實(shí)現(xiàn)漢字顯示。ASCII碼的顯示與漢字的顯示方法一致。</p><p> 利用IMG2LCD軟件生成圖片點(diǎn)陣文件,或者由LabVIEW對(duì)圖片進(jìn)行解碼,生成圖片點(diǎn)陣文件。再將圖片點(diǎn)陣文件、圖片的大小位置信息發(fā)送給
5、STM32進(jìn)行處理,實(shí)現(xiàn)圖片顯示。在1024x768分辨率的顯示器上,實(shí)現(xiàn)顯示3種字體、7種字號(hào)的ASCII碼與漢字,實(shí)現(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è)計(jì)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 存儲(chǔ)方案10</p><p> 1.6 上位機(jī)開(kāi)發(fā)軟件選擇10</p><p><b> 2 硬件設(shè)計(jì)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存儲(chǔ)電路15</p&
15、gt;<p> 2.3.4 Micro SD卡存儲(chǔ)電路15</p><p> 2.3.5 靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)接口16</p><p> 2.4 FPGA模塊17</p><p> 2.4.1 FPGA核心電路17</p><p> 2.4.2 靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)19</p>&l
16、t;p> 2.4.3 VGA接口與電阻網(wǎng)絡(luò)20</p><p> 2.4.4 電阻網(wǎng)絡(luò)電阻值的計(jì)算21</p><p><b> 3 軟件設(shè)計(jì)22</b></p><p> 3.1 LABVIEW上位機(jī)程序22</p><p> 3.1.1 串口收發(fā)模塊23</p><p&g
17、t; 3.1.2 串口數(shù)據(jù)傳輸模塊23</p><p> 3.1.3 字庫(kù)燒錄模塊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存儲(chǔ)模塊程序30</p><p> 3.2.3 Micro SD函數(shù)32</p><p> 3.2.4 字庫(kù)與圖片36</p><p> 3.2.5 寫(xiě)SRAM函數(shù)37</p><p> 3.3 FPGA模塊程序39</p><p> 3.3.1 讀
19、SRAM程序39</p><p> 3.3.2 VGA時(shí)序40</p><p> 3.3.3 輸出RGB56543</p><p> 4 調(diào)試與驗(yàn)證過(guò)程43</p><p> 4.1 調(diào)試所需設(shè)備43</p><p> 4.2 單獨(dú)調(diào)試LABVIEW43</p><p>
20、 4.3 單獨(dú)調(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存儲(chǔ)器44</p><p> 4.4.3 STM32與Micro SD卡44</p><p> 4.
21、4.4 STM32與FPGA與SRAM44</p><p> 4.5 驗(yàn)證結(jié)果45</p><p><b> 5 結(jié)論51</b></p><p><b> 謝 辭52</b></p><p><b> 參考文獻(xiàn)53</b></p><p
22、><b> 附 錄54</b></p><p><b> 引言</b></p><p> 傳統(tǒng)的信息發(fā)布媒介有:紙質(zhì)宣傳單、黑板報(bào)與靜態(tài)電子公告板等。這些信息發(fā)布方法具有浪費(fèi)資源、有損形象、信息更新遲滯、傳播效率低和不方便管理等缺點(diǎn)。因此誕生了數(shù)字化信息發(fā)布系統(tǒng)。</p><p> 數(shù)字化信息發(fā)布系統(tǒng)可用
23、于即時(shí)發(fā)布水、電、燃?xì)?、暖氣、天氣預(yù)報(bào)、新聞、物業(yè)通知、緊急信息、突發(fā)事件、社區(qū)宣傳和贊助商廣告等內(nèi)容,可應(yīng)用于小區(qū)、校園、工廠、車站、機(jī)場(chǎng)等公共場(chǎng)所,應(yīng)用前景廣闊。</p><p> 針對(duì)住宅小區(qū),目前市場(chǎng)上尖端的小區(qū)信息發(fā)布系統(tǒng),由服務(wù)器通過(guò)互聯(lián)網(wǎng)、GPRS、CDMA等網(wǎng)絡(luò)控制多個(gè)多媒體終端;支持多種視音頻編碼標(biāo)準(zhǔn)和圖文格式,如: MPEG1/2/3/4、 WMV 、WMA、Real 、Flash、JPEG
24、、BMP、GIF、TIFF、Word、Excel、PDF、PPT等;可以顯示文字、圖片、聲音和視頻等多媒體信息;支持視頻、圖片、文字的混合排版,支持視頻、圖片、文字位置的隨意調(diào)整。</p><p> 前沿技術(shù)制造的系統(tǒng)比較大型,固然功能齊全,但是成本較高,維護(hù)也相對(duì)復(fù)雜。而本設(shè)計(jì)將節(jié)約成本、縮小體積、簡(jiǎn)化功能,實(shí)現(xiàn)文字和圖片的即時(shí)發(fā)布。</p><p><b> 1 方案選擇
25、與論證</b></p><p> 本設(shè)計(jì)要實(shí)現(xiàn)的目標(biāo):將文字和圖片信息進(jìn)行遠(yuǎn)程、動(dòng)態(tài)發(fā)布。著重考慮降低成本和簡(jiǎn)化設(shè)備的維護(hù)難度,最終采用LabVIEW、RS485總線、STM32微處理器、FPGA等技術(shù)實(shí)現(xiàn)小區(qū)信息發(fā)布。</p><p> 1.1 系統(tǒng)總體設(shè)計(jì)</p><p> LabVIEW上位機(jī)模塊:采用LabVIEW編寫(xiě)上位機(jī)程序,實(shí)現(xiàn)串口的
26、數(shù)據(jù)收發(fā)、數(shù)據(jù)幀校驗(yàn)等功能。</p><p> USB轉(zhuǎn)485模塊:采用1片CH340G芯片和2片MAX485芯片實(shí)現(xiàn)USB轉(zhuǎn)4線485的功能。</p><p> STM32數(shù)據(jù)處理模塊:使用2片SP3485與STM32的UART5口進(jìn)行連接,實(shí)現(xiàn)與上位機(jī)進(jìn)行串口通信。STM32的SPI3接口與Micro SD卡連接,實(shí)現(xiàn)將上位機(jī)發(fā)送的字庫(kù)、數(shù)字、文字和圖片等信息存入卡中,供后續(xù)調(diào)用。
27、STM32將待顯示的點(diǎn)陣信息寫(xiě)入SRAM(靜態(tài)隨機(jī)存儲(chǔ)器),供FPGA讀取。</p><p> FPGA顯示模塊:使用FPGA芯片讀取SRAM、控制RGB電阻網(wǎng)絡(luò)將數(shù)字量轉(zhuǎn)換成0~0.714V的RGB電壓量,在VGA時(shí)序中準(zhǔn)確插入RGB信號(hào),將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顯示屏。此類顯示屏,顯示效果好,具有觸摸功能,但是尺寸和分辨率相對(duì)較小,接口不通用,不適合用于顯示住宅小區(qū)信息。</p><
29、;p> 廣場(chǎng)、汽車站、火車站和金融機(jī)構(gòu)等地,大多采用大型LED點(diǎn)陣顯示器。此類顯示器面積非常大,可達(dá)數(shù)十平方米,亮度大,色彩鮮艷。但是,它的價(jià)格昂貴、功耗大,控制復(fù)雜,不符合節(jié)約成本、縮小體積的設(shè)計(jì)初衷。</p><p> 生活中,最常見(jiàn)的顯示方案是和臺(tái)式機(jī)配套的VGA接口的液晶顯示器,此類顯示器的分辨率從800x600到1920x1080甚至更高,可選性高,通用性強(qiáng)。其使用的VGA(視頻圖形陣列)接口
30、具有屏幕大、臨場(chǎng)感強(qiáng)、可同時(shí)控制多個(gè)顯示器的優(yōu)點(diǎn)。VGA的視頻傳輸過(guò)程是最短的,所以VGA接口擁有許多的優(yōu)點(diǎn),如無(wú)串?dāng)_無(wú)電路合成分離損耗等[1]。</p><p> 但是,VGA接口的工業(yè)標(biāo)準(zhǔn)對(duì)接口物理層的各種信號(hào)時(shí)序做了嚴(yán)格的要求,對(duì)于普通的單片機(jī),采用一般的I/O口模擬信號(hào)時(shí)序的方法在速度上是無(wú)法滿足VGA接口的高速時(shí)序的要求的,而FPGA是一種可編程的硬件電路實(shí)現(xiàn),具有高集成度、高速度、高可靠性的特點(diǎn),能
31、夠?qū)崿F(xiàn)各種高速?gòu)?fù)雜的時(shí)序信號(hào)[2]。</p><p> 采用FPGA技術(shù),既得到高分辨率又可以不使用計(jì)算機(jī)設(shè)備顯示圖像[3]。此外,F(xiàn)PGA還有并行執(zhí)行的特點(diǎn),能避免屏幕抖動(dòng),顯示效果非常穩(wěn)定。</p><p> 采用FPGA作為VGA的驅(qū)動(dòng)芯片,在國(guó)外也應(yīng)用普遍。以下是外國(guó)學(xué)者對(duì)FPGA優(yōu)點(diǎn)的總結(jié):FPGA具有高時(shí)鐘頻率、高處理速度、并行處理、代碼移植性好、低成本、知識(shí)產(chǎn)權(quán)受保護(hù)等優(yōu)
32、點(diǎn)[4]。</p><p> 1.2.2 FPGA選型</p><p> FPGA有兩大生產(chǎn)廠商:Xilinx和Altera。在數(shù)電課程中,曾經(jīng)接觸過(guò)Altera和其EDA工具QUARTUS,所以對(duì)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個(gè),Memory Bits(片內(nèi)存儲(chǔ))276480Bits,embedded multipliers 9-bit element(嵌入9位陳法器)30個(gè),PLL(鎖相環(huán)電路)2個(gè),Global Clocks(全
34、局時(shí)鐘)10個(gè)。</p><p> 用于讀取SRAM、產(chǎn)生VGA時(shí)序和RGB信號(hào),資源是足夠的。</p><p> 1.2.3 更新顯存方式</p><p> 顯示器的刷新率為60Hz時(shí),F(xiàn)PGA會(huì)遍歷顯存60次,F(xiàn)PGA在遍歷顯存的同時(shí),只有更新顯存中的數(shù)據(jù),才能顯示動(dòng)態(tài)的視頻。每秒更新顯存的次數(shù)稱為FPS(Frames Per Second)即每秒傳輸幀數(shù)
35、。要流暢波播放視頻,F(xiàn)PS最少是25以上。</p><p> 在讀取顯存同時(shí),更新顯存的方法有以下幾種:</p><p> ?、伲翰捎秒p口RAM。此類存儲(chǔ)器,具有兩套完全獨(dú)立的數(shù)據(jù)線、地址線和讀寫(xiě)控制線,允許兩個(gè)獨(dú)立的系統(tǒng)同時(shí)對(duì)該存儲(chǔ)器進(jìn)行隨機(jī)性的訪問(wèn)。因?yàn)閿?shù)據(jù)共享,所以存在訪問(wèn)仲裁控制。這種方法使用的器件較多,功耗大,成本高,故不采用。</p><p> ?、冢?/p>
36、采用兩組SRAM,組成乒乓結(jié)構(gòu)。乒乓結(jié)構(gòu)是指,A組SRAM和B組SRAM輪流充當(dāng)“被讀”和“被寫(xiě)”的角色。當(dāng)FPGA讀取A組數(shù)據(jù)進(jìn)行顯示時(shí),STM32向B組寫(xiě)入數(shù)據(jù)(STM32必須在FPGA讀取B組時(shí),完成對(duì)B組的更新);然后,F(xiàn)PGA讀取B組數(shù)據(jù)進(jìn)行顯示,STM32向A組寫(xiě)入數(shù)據(jù);如此循環(huán),就能保證顯示與顯存更新的同步進(jìn)行。</p><p> 這種方法能實(shí)現(xiàn)顯示數(shù)據(jù)無(wú)縫更新,是一種不錯(cuò)的方案。然而,這需要復(fù)雜
37、的控制總線,采用兩組SRAM也會(huì)提高成本,故在本設(shè)計(jì)中暫時(shí)不采用此方案,以后設(shè)計(jì)可顯示視頻的VGA接口時(shí),可能會(huì)采用此方案。</p><p> ?、郏翰捎肍PGA和SDRAM構(gòu)造雙口SRAM。這種方法需要用到SDRAM,而SDRAM的時(shí)序控制相當(dāng)復(fù)雜。以后能熟練操作SDRAM時(shí),或許會(huì)采用這個(gè)成本低、性能也不錯(cuò)的方案。</p><p> ④:采用一片SRAM,在VGA時(shí)序的場(chǎng)消隱期間更新
38、SRAM。這個(gè)方案在這幾個(gè)方案中,最容易實(shí)現(xiàn)。雖然更新速度慢,但是在本設(shè)計(jì)中是可以接受的。</p><p> 1.2.4 顯存選型</p><p> 最終采用IS61WV102416BLL作為顯存。</p><p> 可作為顯存的存儲(chǔ)器有兩種類型:</p><p> 一是SDRAM(Synchronous Dynamic Random
39、 Access Memory),即同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器。內(nèi)部指令以同步信號(hào)為基準(zhǔn),需要不停地刷新存儲(chǔ)單元才能保持?jǐn)?shù)據(jù)。</p><p> 二是SRAM(Static Random Access Memory),即靜態(tài)隨機(jī)存儲(chǔ)器。它具有靜態(tài)存取功能,不需要刷新電路就能保存數(shù)據(jù)。</p><p> SDRAM和SRAM各有所長(zhǎng),可總結(jié)為:SDRAM容量大體積小、價(jià)格低、但是操作復(fù)雜、速度較S
40、RAM慢;SRAM容量小體積大、價(jià)格高、但是操作簡(jiǎn)單、速度快。</p><p> 考慮到難易程度和讀寫(xiě)速度,最終采用了SRAM作為顯存。</p><p> 設(shè)計(jì)時(shí)采用的顯示器分辨率是1024x768,刷新率為60Hz,VGA信號(hào)頻率為65MHz,使用RGB565來(lái)表示像素顏色。1024x768的分辨率要求存儲(chǔ)器至少有768KB的存儲(chǔ)空間,65MHz頻率要求顯存具有優(yōu)于(1/65MHz)
41、=15ns的讀寫(xiě)速度,RGB565要求存儲(chǔ)器的存儲(chǔ)單元最好是16位。</p><p> IS61WV102416BLL具有1024K個(gè)位寬為16位的存儲(chǔ)單元,讀寫(xiě)速度為10ns,完全滿足設(shè)計(jì)要求。</p><p> 1.2.5 RGB三基色生成方案</p><p> 在標(biāo)準(zhǔn)VGA協(xié)議中RGB三基色電壓為0V~0.714V,是模擬量。而無(wú)論是單片機(jī)還是FPGA,
42、其I/O口輸出的都是數(shù)字量,所以需要一種將數(shù)字量轉(zhuǎn)換成模擬量的措施。</p><p> 可采用專用的視頻DAC芯片,例如ADV7123,GM7123等芯片。這類DAC專門(mén)為VGA接口打造,自帶3個(gè)分離的10位數(shù)據(jù)輸入端口,由信號(hào)SYNC和BLANK分別控制同步和消隱功能。分辨率最大支持為1600×1200,刷新率為100Hz。芯片很強(qiáng)大,性能也很好,在實(shí)際應(yīng)用在首選此方案。</p>&l
43、t;p> 然而,使用這類芯片,會(huì)讓VGA接口蒙上一層面紗,不利于理解,而且這類芯片價(jià)格也不便宜,故最終決定,采用電阻網(wǎng)絡(luò)將數(shù)字量轉(zhuǎn)換成模擬量的方案。</p><p> 1.3 微處理器方案</p><p> 本設(shè)計(jì)采用STM32F103ZET6作為微處理器。</p><p> MCS51單片機(jī)的管腳數(shù)量、處理速度,片內(nèi)資源、自帶功能等都不能滿足本系統(tǒng)的
44、要求,故未采用MCS51單片機(jī)作為微處理器。</p><p> STM32F103系列屬于ARM Cortex-M3內(nèi)核,增強(qiáng)型32位微處理器,該系列有規(guī)格不同的多個(gè)型號(hào),引腳數(shù)量從64個(gè)到144個(gè),F(xiàn)LASH容量從16KB到1MB,SRAM容量從6KB到96KB。</p><p> 本系統(tǒng)選用的STM32F103ZET6具有144個(gè)引腳,512KB FLASH和64KB SRAM的資
45、源。片內(nèi)外設(shè)有3個(gè)SPI/I2S,2個(gè)I2C,5個(gè)USART,1個(gè)USB2.0全速接口,1個(gè)CAN總線接口,3個(gè)12位16通道ADC,2個(gè)12位DAC,資源非常豐富。其時(shí)鐘頻率可由自帶的PLL鎖相環(huán)電路對(duì)晶振倍頻,最高可達(dá)72MHz,速度是MCS51單片機(jī)的72倍,基本可以滿足顯示靜態(tài)圖片的要求。</p><p> 在確定采用FPGA作為VGA時(shí)序的控制芯片之后,對(duì)FPGA有了新的認(rèn)識(shí),發(fā)現(xiàn)完全可以用FPGA實(shí)
46、現(xiàn)UART、SPI等功能,用狀態(tài)機(jī)來(lái)更新SRAM也比使用STM32通過(guò)外部中斷的方式更新SRAM快速,F(xiàn)PGA內(nèi)部也有足夠的存儲(chǔ)空間。采用FPGA獨(dú)立工作的方案,甚至能實(shí)現(xiàn)更加優(yōu)秀的顯示效果。</p><p> 但是初學(xué)FPGA,暫時(shí)不能實(shí)現(xiàn)以上難度較高的功能。若采用STM32+FPGA的方案,STM32負(fù)責(zé)寫(xiě)SRAM,F(xiàn)PGA負(fù)責(zé)讀SRAM,則思路清晰,易于實(shí)現(xiàn)。采用單片機(jī)結(jié)合FPGA的方案完成畢業(yè)設(shè)計(jì),是對(duì)
47、單片機(jī)知識(shí)的總結(jié),也是對(duì)FPGA知識(shí)的初步嘗試。故采用STM32+FPGA的方案。</p><p> 1.4 通信總線方案</p><p> 本設(shè)計(jì)采用2片MAX485和2片SP3485搭建全雙工串口通信電路。雖然一般在遠(yuǎn)程自動(dòng)工控環(huán)境中,采取的是半雙工通信,但是有些場(chǎng)合還要求設(shè)備節(jié)點(diǎn)能及時(shí)響應(yīng)主機(jī)的命令,需要采取全雙工的串行數(shù)據(jù)通信。[5]</p><p>
48、 電腦與單片機(jī)常見(jiàn)的通信方式有:</p><p> ?、伲菏褂肬SB轉(zhuǎn)UART(異步收發(fā)傳輸器)芯片。USB端的TXD、RXD分別與單片機(jī)端的RXD、TXD相連,USB地線和單片機(jī)地線相連。這種通信方式最簡(jiǎn)單,成本最低,短距離時(shí)通信速率快,為全雙工。學(xué)習(xí)串口、調(diào)試串口時(shí)通常采用這種接法。但是UART之間直接相連,導(dǎo)致了這種接法在長(zhǎng)距離通信時(shí),信號(hào)衰減嚴(yán)重,不適合用于長(zhǎng)距離通信。</p><p&
49、gt; ?、冢菏褂肬SB轉(zhuǎn)UART,UART轉(zhuǎn)RS232芯片,如MAX232。此類芯片可以將TTL電平(0V~5V)轉(zhuǎn)換成RS232電平(+15V~-15V)。但是,RS232C 最大通信距離僅為15m, 同時(shí)RS232C 是點(diǎn)對(duì)點(diǎn)(即只用一對(duì)收、發(fā)設(shè)備)的通信, 因此PC 機(jī)無(wú)法直接對(duì)多個(gè)下位機(jī)進(jìn)行遠(yuǎn)離通訊和管理。[6]不滿足小區(qū)信息發(fā)布系統(tǒng)的要求。</p><p> ③:使用USB轉(zhuǎn)UART,UART轉(zhuǎn)48
50、5芯片,如MAX485。這類芯片能把TTL電平轉(zhuǎn)換成差分電壓信號(hào)。芯片的A端和B端為差分信號(hào)端,當(dāng)A引腳的電平高于B時(shí),代表數(shù)據(jù)1;當(dāng)A的電平低于B端時(shí),代表數(shù)據(jù)0。差分方式傳輸數(shù)據(jù),能把通信距離延長(zhǎng)至幾十米至上千米。</p><p> RS485標(biāo)準(zhǔn)抗干擾能力強(qiáng),傳輸速率高,傳送距離遠(yuǎn).采用雙絞線,不用MODEM的情況下,在100kbit/s的速率時(shí),可傳送的距離為1.2km,若速率降到9600bit/s,則
51、傳送距離可達(dá)15km.[7]</p><p> RS485總線以其構(gòu)造簡(jiǎn)單,造價(jià)低廉,可選芯片多,便于維護(hù)等特點(diǎn)在許多工業(yè)控制的系統(tǒng)中得到廣泛的應(yīng)用。[8]因此,本設(shè)計(jì)采用此方案。</p><p> 單片MAX485只能實(shí)現(xiàn)半雙工,故采用兩片MAX485芯片,一片負(fù)責(zé)接收,一片負(fù)責(zé)發(fā)送,實(shí)現(xiàn)全雙工通信。</p><p><b> 1.5 存儲(chǔ)方案&l
52、t;/b></p><p> 本系統(tǒng)采用Micro SD卡作為主要存儲(chǔ)。</p><p> 在單片機(jī)設(shè)計(jì)中,常用的存儲(chǔ)芯片有EEPROM類的AT24Cxx系列,F(xiàn)LASH類的W25Qxx系列。然而,本系統(tǒng)字庫(kù)總大小可達(dá)78MB以上,加上圖片的存儲(chǔ)區(qū),這兩個(gè)系列的存儲(chǔ)器已經(jīng)無(wú)法滿足設(shè)計(jì)要求。</p><p> Micro SD卡,廣泛應(yīng)用于手機(jī)、平板、相機(jī)
53、等數(shù)碼產(chǎn)品中。其容量以GB為單位,有4GB、8GB到64GB。Micro SD卡,可以支持SPI協(xié)議。STM32自帶SPI接口,操作Micro SD卡高效、簡(jiǎn)便。</p><p> 1.6 上位機(jī)開(kāi)發(fā)軟件選擇</p><p> 上位機(jī)一般指的是PC機(jī)也就是電腦,下位機(jī)指的是單片機(jī)。在電腦上,每一個(gè)軟件都可以稱為一臺(tái)儀器,所以這里的上位機(jī)指的運(yùn)行在電腦上的一個(gè)軟件,這個(gè)軟件利用電腦的硬件
54、資源,可實(shí)現(xiàn)多種多樣的功能。</p><p> 上位機(jī)開(kāi)發(fā)軟件有很多,有VC、VB、DELPHI、.NET、LABVIEW、C++Builder等。在大學(xué)課程中,接觸過(guò)VC和LabVIEW。拿這兩款開(kāi)發(fā)軟件做比較,容易發(fā)現(xiàn)使用LabVIEW制作上位機(jī)比使用VC更加方便、美觀。</p><p> LabVIEW是一種基于圖形編程語(yǔ)言的開(kāi)發(fā)環(huán)境。它與傳統(tǒng)編程語(yǔ)言有著諸多相似之處,如相似的數(shù)
55、據(jù)類型、數(shù)據(jù)流控制結(jié)構(gòu)、程序調(diào)試工具等,但二者最大的區(qū)別在于:傳統(tǒng)編程語(yǔ)言是用文本語(yǔ)言編程,而LabVIEW用圖形語(yǔ)言(即各種圖標(biāo)、圖形符號(hào)、連線等)編程。[9]程序框圖使用圖形方式編寫(xiě)代碼,使用函數(shù)選板中的VI 和函數(shù)控制前面板上的對(duì)象。[10]</p><p> 使用圖形符號(hào)編程,程序更加直觀。LabVIEW具有豐富的控件,只需調(diào)用這些控件就能實(shí)現(xiàn)復(fù)雜的功能??丶奈恢每梢噪S意安排、大小可隨意調(diào)整,使得La
56、bVIEW的界面更加靈活、美觀和個(gè)性化。</p><p><b> 2 硬件設(shè)計(jì)</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芯片。負(fù)責(zé)接收STM32發(fā)出的數(shù)據(jù)并將數(shù)據(jù)傳輸給上位機(jī),和向STM32發(fā)送數(shù)據(jù)。</p><p> 第二塊:STM32模塊,包含STM32F103ZET6微處理器、晶振、3.3V穩(wěn)壓電源電路、ISP(在線系統(tǒng)編程)下載電路、SRAM接口、Micro SD接口、FLASH存儲(chǔ)器、按鍵。負(fù)責(zé)接收上位機(jī)發(fā)送的數(shù)據(jù)、進(jìn)行數(shù)據(jù)分析和存儲(chǔ)、更新顯存。</p><p> 第
58、三塊:Micro SD轉(zhuǎn)接板。負(fù)責(zé)連接Micro SD卡和STM32。</p><p> 第四塊:FPGA模塊,包含EP4CE6E22C8N FPGA芯片、EPCS4SI8N程序存儲(chǔ)芯片、50MHz有源晶振、1.2V,2.5V,3.3V穩(wěn)壓電路、JTAG接口、IS61WV102416BLL靜態(tài)隨機(jī)存儲(chǔ)器、復(fù)位按鍵、VGA電阻網(wǎng)絡(luò)。負(fù)責(zé)讀取顯存,產(chǎn)生VGA時(shí)序和RGB信號(hào),并在場(chǎng)消隱期間向STM32發(fā)送可寫(xiě)顯存的
59、信號(hào)。</p><p> 硬件框架圖如圖2.1所示:</p><p><b> 框圖連線簡(jiǎn)介:</b></p><p> ?、伲篠D轉(zhuǎn)接板接入STM32上的SD接口。</p><p> ?、冢弘娔X端485芯片與STM32板載485芯片通過(guò)4根信號(hào)線相連。</p><p> ?、郏篠TM32向S
60、RAM(顯存)寫(xiě)入數(shù)據(jù)。</p><p> ?、埽篎PGA在場(chǎng)消隱期間產(chǎn)生低電平,通知STM32可以向SRAM寫(xiě)入數(shù)據(jù)。</p><p> ?、荩篎PGA從SRAM讀取數(shù)據(jù)。</p><p> 2.2 USB轉(zhuǎn)485模塊</p><p> 首先,通過(guò)CH340G芯片,將USB信號(hào)轉(zhuǎn)換為UART的RXD、TXD的TTL信號(hào)。兩片MAX485
61、,負(fù)責(zé)接收的為R,負(fù)責(zé)發(fā)送的為T(mén)。則:</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)部集成過(guò)熱、過(guò)流保護(hù)電路,固定輸出3.3V電壓,具有1%的精度,最大輸出800mA電流,采用SOT-223貼片封裝,體積小,非常適合
63、作為3.3V數(shù)字IC的穩(wěn)壓芯片。</p><p> 主晶振采用8MHz 49s型無(wú)源晶振,晶振兩端接22pF電容到GND,為STM32提供精準(zhǔn)的時(shí)鐘。</p><p> RTC時(shí)鐘采用32.768KHz無(wú)源晶振,晶振兩端接22pF電容到GND,若時(shí)鐘走的較快,稍微加大電容,反之稍微減小電容。其頻率32.768KHz即32768Hz,即2的15次方,經(jīng)單片機(jī)內(nèi)部分頻器進(jìn)行15次2分頻后,
64、可生成精確的1Hz方波,即周期為1秒的脈沖,這個(gè)脈沖信號(hào),讓計(jì)數(shù)器每秒加1。</p><p> 關(guān)于程序下載電路,未采用JTAG接口,因?yàn)镴TAG接口占用IO口,還需要額外購(gòu)買(mǎi)仿真器,性價(jià)比較低。所以,本設(shè)計(jì)采用串口的方式下載程序。</p><p> CH340G是一種USB總線的轉(zhuǎn)接芯片,可實(shí)現(xiàn)USB轉(zhuǎn)串口、USB轉(zhuǎn)IrDA紅外和USB轉(zhuǎn)打印口等功能。</p><
65、p> 使用3.3V電源時(shí),將V3引腳連接至3.3V電源;使用5V電源時(shí),將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ù)手冊(cè)稱其最大支持10Mbps的通信速率,完全滿足設(shè)計(jì)要求。為了直觀的觀察數(shù)據(jù)的收發(fā)情況,在RXD和TXD引腳都接入了LED指示燈。</p><p> 2.3.3 W25Q64 FLASH存儲(chǔ)電路</p><p> 在嵌入式應(yīng)用上廣泛用于字庫(kù)的存儲(chǔ)。嵌入式平臺(tái)大多采用分辨率較低的液晶屏,不需要大字號(hào)字庫(kù),而本設(shè)計(jì)使用10
67、24x768分辨率的顯示器,最大需要56x56p像素的字號(hào),一個(gè)GBK字庫(kù)有9,384,480個(gè)字節(jié),已經(jīng)超出了W25Q64的存儲(chǔ)范圍。</p><p> 所以,最后采用Micro SD卡作為主存儲(chǔ)器,W25Q64作為備用存儲(chǔ)器。</p><p> 2.3.4 Micro SD卡存儲(chǔ)電路</p><p> Micro SD卡支持兩種工作模式,SD模式和SPI模
68、式。</p><p> 兩種模式下,引腳對(duì)應(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ù)位過(guò)程中,CS為低電平,使用SPI模式,否則使用SD模式。</p><p> 本系統(tǒng)采用SPI模式,與STM32的SPI3相連。Micro SD的接口電路比較簡(jiǎn)單,每個(gè)引腳上拉47K的電阻即可。</p><p> 設(shè)計(jì)電路如下圖所示:</p><p>
70、; 2.3.5 靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)接口</p><p> SRAM芯片焊接在FPGA板子上,STM32上只有SRAM的接口。STM32與FPGA之間利用兩排排針相連。設(shè)計(jì)時(shí),STM32和FPGA采用同一個(gè)模板,排針的位置和板子的大小完全一致。當(dāng)STM32插入FPGA時(shí),STM32與SRAM聯(lián)通。</p><p> STM32自帶FSMC接口,該接口專門(mén)用于控制外置SRAM,然
71、而,在本設(shè)計(jì)中未采用此接口。一是,該接口對(duì)應(yīng)的引腳分布不夠好,不利于布線;二是,SRAM的操作原本非常簡(jiǎn)單,而采用FSMC后將會(huì)把問(wèn)題復(fù)雜化。</p><p> 安排IO口時(shí),數(shù)據(jù)總線使用同1組IO口,地址總線使用2組IO口,這樣能稍微加快對(duì)SRAM的操作速度。</p><p> STM32和FPGA都直接連接SRAM,兩者之間必須要有一根線進(jìn)行溝通,協(xié)商這一時(shí)刻由誰(shuí)接管SRAM的控制
72、權(quán),否則會(huì)造成總線沖突,更嚴(yán)重地,會(huì)導(dǎo)致STM32與FPGA的管腳的電平一高一低,電流過(guò)大,損壞芯片。下圖中的READING引腳即為FPGA與STM32的“通信引腳”。</p><p> 2.4 FPGA模塊</p><p> 2.4.1 FPGA核心電路</p><p> 讓FPGA芯片正常工作,需外接以下幾個(gè)外設(shè):</p><p>
73、 ?、伲弘娫础P4CE6E22C8N需要3個(gè)電壓,1.2V內(nèi)核電壓,2.5V PLL電壓,3.3V I/O口電壓。3個(gè)電壓的穩(wěn)壓芯片都采用AMS1117系列,±1.5%的初始誤差,1.3V的壓差,SOT-233的封裝,這幾個(gè)參數(shù)決定著AMS1117系列穩(wěn)壓芯片適合為FPGA提供線性穩(wěn)壓電源。</p><p> ?、冢篔TAG接口、專用配置存儲(chǔ)器(EPCS4SI8N)</p><p&
74、gt; 將FPGA的模式配置成AS+JTAG模式。調(diào)試時(shí),用JTAG燒寫(xiě)程序,確認(rèn)程序無(wú)誤后,用QUARTUS生成JIC文件,由JTAG接口將JIC文件燒錄到配置存儲(chǔ)器中。上電后,F(xiàn)PGA自動(dòng)從配置存儲(chǔ)器讀取程序,加載到內(nèi)部SRAM中。</p><p><b> ?、郏壕д耠娐?lt;/b></p><p> 雖然FPGA不加晶振也能工作,但是沒(méi)有晶振的FPGA只能實(shí)現(xiàn)
75、邏輯電路,也就是實(shí)現(xiàn)類似于與門(mén)、非門(mén)的功能;只有加上晶振,F(xiàn)PGA才能實(shí)現(xiàn)時(shí)序功能,才能實(shí)現(xiàn)狀態(tài)機(jī)、產(chǎn)生控制芯片的時(shí)序信號(hào)、定時(shí)、計(jì)數(shù)等功能。</p><p> 本系統(tǒng)采用50MHz的有源晶振,F(xiàn)PGA內(nèi)部的PLL可將其分頻、倍頻至一定范圍內(nèi)的任意頻率。</p><p> 2.4.2 靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)</p><p> 采用IS61WV102416B
76、LL SRAM作為顯存。</p><p> 這款SRAM的接法很簡(jiǎn)單,除去地址線和數(shù)據(jù)線,只需將WE_N讀寫(xiě)控制線接入單片機(jī)或者FPGA即可。CE,OE,UB,LB引腳可以直接接地。其中UB和LB引腳接高電平時(shí)分別屏蔽16位數(shù)據(jù)字節(jié)的高8位和低8位,而在本設(shè)計(jì)中,需要完全讀寫(xiě)16位數(shù)據(jù),故直接將UB和LB接地。SRAM引腳圖如下所示:</p><p> 2.4.3 VGA接口與電阻網(wǎng)絡(luò)
77、</p><p> 如上表所示,在這15個(gè)引腳中,只需控制其中的5個(gè)即可實(shí)現(xiàn)VGA顯示。</p><p> 這5個(gè)引腳為:1 紅基色 red,2 綠基色 green,3 藍(lán)基色 blue,13 行同步,14 場(chǎng)同步。</p><p> 標(biāo)準(zhǔn)VGA協(xié)議中規(guī)定,RGB三基色電壓范圍:0V~0.714V,0V代表該顏色亮度為0,0.714V代表該顏色最亮。三基色源端
78、和終端匹配電阻均為75歐姆。75歐姆的匹配電阻集成在VGA傳輸線上的兩頭,不需要也不可以自己在電路板上制作。</p><p> 本系統(tǒng)采用電阻網(wǎng)絡(luò),將控制RGB的數(shù)字信號(hào)轉(zhuǎn)換成對(duì)應(yīng)的電壓信號(hào)。紅基色R和藍(lán)基色B使用5個(gè)引腳控制,綠基色G使用6個(gè)引腳控制,構(gòu)成RGB565的彩色模式。以二進(jìn)制的形式展開(kāi),其順序?yàn)椋?lt;/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ò)電阻值的計(jì)算</p><p> 上圖是產(chǎn)生綠基色VGA電壓的等效圖。IO5~IO0分別對(duì)應(yīng)G5~G0,數(shù)值大者為高位。</p><p> 當(dāng)6個(gè)IO口都輸出3.3V,即G5=G4=G3=G2=G1=G0=1時(shí),代表綠色亮度最大,則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西門(mén)子。</p><p> 設(shè)R5,R4,R3,R2,R1,R0的電導(dǎo)分別為S5,S4,S3,S2,S1,S0,為了實(shí)現(xiàn)將Sx分成2^6=64份,并且考慮到R0為控制信號(hào)的最低位,所以把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)計(jì)算出總電導(dǎo)Sx = 1/272,</p><p> 則S0=Sx/63=1/272/63=1/17136(西門(mén)子),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> 以上為綠基色電阻值的確定方法,紅基色與藍(lán)基色的電阻值確定方法與之相同。</p>&
84、lt;p> 考慮到市場(chǎng)上電阻具有標(biāo)稱值,查閱標(biāo)稱值表,最終確定電阻取值為:</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> 紅、藍(lán)基色的電阻取值為:</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> 這樣取值會(huì)造成色彩稍微失準(zhǔn),不過(guò)在一般場(chǎng)合下是可接受的。</p><p> 以上計(jì)算方法未考慮到當(dāng)FPGA引腳為輸出0時(shí),與該引腳連接的電阻會(huì)與75歐姆的匹配電阻形成并聯(lián)關(guān)系,但是考慮到最小電阻為510歐姆,是75歐姆匹配電阻的6.8倍,故對(duì)匹配電阻的影響不大。</p><p><b> 原理圖如下:</b>
88、;</p><p><b> 3 軟件設(shè)計(jì)</b></p><p> 3.1 LABVIEW上位機(jī)程序</p><p> 主要使用到LabVIEW的串口功能。在編寫(xiě)LabVIEW上位機(jī)時(shí),一步一步地實(shí)現(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寫(xiě)入函數(shù),分別實(shí)現(xiàn)串口數(shù)據(jù)的讀取和發(fā)送。</p><p> 將以上三個(gè)函數(shù)連接好,即可實(shí)現(xiàn)串口的基本收發(fā)功能。程序框圖如下圖示:</p><p>
90、 3.1.2 串口數(shù)據(jù)傳輸模塊</p><p> 通信協(xié)議:以數(shù)據(jù)幀作為基本單元。</p><p><b> 幀格式:</b></p><p> 從機(jī)地址 幀功能 幀序列 幀長(zhǎng)度 幀數(shù)據(jù) 校驗(yàn)值</p><p> 1Byte 1Byte 4Byte 2Byte
91、 由幀長(zhǎng)度控制 1Byte</p><p> <=65535Byte</p><p> 用1個(gè)字節(jié)標(biāo)記從機(jī)地址,理論上能控制256個(gè)節(jié)點(diǎn),考慮到MAX485的驅(qū)動(dòng)能力,其最多可驅(qū)動(dòng)32個(gè)負(fù)載,故用1個(gè)字節(jié)表示從機(jī)地址即可。</p><p> 幀功能字節(jié)用于區(qū)分?jǐn)?shù)據(jù)幀的功能。例如:0x00用于加載背景,0x01用于傳輸文字?jǐn)?shù)據(jù),0x02用于傳輸圖
92、片數(shù)據(jù)等。</p><p> 幀序列由4個(gè)字節(jié)表示,配合幀長(zhǎng)度的2個(gè)字節(jié),共48位寬,可連續(xù)傳輸256TB字節(jié)的數(shù)據(jù),已經(jīng)超前現(xiàn)實(shí)非常多。</p><p> 幀數(shù)據(jù)是本幀的有效數(shù)據(jù),其大小由幀長(zhǎng)度字節(jié)決定,最大為65KB。燒寫(xiě)字庫(kù)時(shí),幀長(zhǎng)度選用512字節(jié),是Micro SD卡一個(gè)扇區(qū)的大小,方便數(shù)據(jù)存取。</p><p> 校驗(yàn)值放在數(shù)據(jù)幀最后面,可采用異或校
93、驗(yàn)、和校驗(yàn)、CRC校驗(yàn)等多種校驗(yàn)方式。本系統(tǒng)采用和校驗(yàn)方式,因?yàn)長(zhǎng)abVIEW中對(duì)數(shù)組求和非常簡(jiǎn)便,只有一條語(yǔ)句。經(jīng)驗(yàn)證,在460800波特率下,采用和校驗(yàn)燒錄的字庫(kù)未發(fā)現(xiàn)問(wèn)題。</p><p> 判斷校驗(yàn)是否成功的方法:將數(shù)據(jù)塊的所有字節(jié)求和后再與接收的校驗(yàn)字節(jié)相加并丟棄進(jìn)位, 若結(jié)果為0則表明數(shù)據(jù)塊傳送正確, 否則出錯(cuò)。[11]</p><p> LabVIEW要實(shí)現(xiàn)將這幾個(gè)數(shù)據(jù)打
94、包成一個(gè)數(shù)據(jù)幀?;舅悸肥牵?lt;/p><p> ?、伲河谩捌交磷址焙瘮?shù)把從機(jī)地址、幀功能、幀序列、幀長(zhǎng)度等數(shù)據(jù)轉(zhuǎn)換成字符串,然后利用“連接字符串”函數(shù)將它們與幀數(shù)據(jù)字符串連接成一個(gè)新的字符串——“加入頭部”字符串。</p><p> ②:將“加入頭部”字符串用“字符串至字節(jié)數(shù)組轉(zhuǎn)換”函數(shù)轉(zhuǎn)換成數(shù)組,再用“數(shù)組元素相加”函數(shù)對(duì)該數(shù)組求和,得到“校驗(yàn)和”數(shù)值。</p>&
95、lt;p> ?、郏簩ⅰ靶r?yàn)和”數(shù)值用“平化至字符串”轉(zhuǎn)換為名為“校驗(yàn)和字符串”的字符串,最后將“加入頭部”與“校驗(yàn)和字符串”用“連接字符串”函數(shù)連接,這樣就完成了數(shù)據(jù)幀的打包。</p><p> LabVIEW發(fā)送完一個(gè)數(shù)據(jù)幀后,要等到從機(jī)返回正確的校驗(yàn)值,才發(fā)送下一幀數(shù)據(jù);若從機(jī)返回錯(cuò)誤的校驗(yàn)值,則LabVIEW繼續(xù)發(fā)送本幀數(shù)據(jù),直到從機(jī)返回正確的校驗(yàn)值,才發(fā)送下一幀數(shù)據(jù);若從機(jī)遲遲不返回校驗(yàn)值,Lab
96、VIEW間隔一定時(shí)間重發(fā)本幀數(shù)據(jù)。</p><p> 利用以上協(xié)議,成功向Micro SD卡燒錄了78MB的GBK字庫(kù)文件,字庫(kù)可正常使用。</p><p> 3.1.3 字庫(kù)燒錄模塊</p><p> 基本方法是:讀取字庫(kù)文件,存入“文件數(shù)據(jù)”字符串中,然后每次截取512個(gè)字節(jié)作為一幀,幀序列從0開(kāi)始,每發(fā)送成功一幀,幀序列加1,直到發(fā)送完成。發(fā)送成功一個(gè)數(shù)
97、據(jù)幀的標(biāo)志是:接收到從機(jī)返回的校驗(yàn)值。</p><p> 讀取字庫(kù)二進(jìn)制文件。進(jìn)行讀取字庫(kù)的大小、初始化偏移量、初始化進(jìn)度等操作。</p><p> 3.1.4 文字發(fā)布模塊</p><p><b> 文字信息包括:</b></p><p> ?、伲鹤煮w,②:字號(hào),③:字體顏色,④:背景顏色,⑤:是否啟用背景顏色,
98、⑥:行號(hào),⑦:列號(hào),⑧:行間距,⑨:列間距,⑩:保留1,?:保留2。將以上數(shù)字量封裝成一個(gè)字符串,構(gòu)成字符串信息幀。</p><p> 其中在處理③字體顏色和④背景顏色時(shí),需要將RGB24轉(zhuǎn)換成RGB565。在RGB24中,紅綠藍(lán)3種顏色均采用8個(gè)位表示;在RGB565中,紅綠藍(lán)分別用5個(gè)位、6個(gè)位、5個(gè)位表示。轉(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> 藍(lán)色的轉(zhuǎn)換式子:B565 = B24*32/256;[向下取整]</p><p> 紅綠藍(lán)三色混合式子:RGB565 = R565*2048+G565*32+B565;</p&g
100、t;<p> 將RGB24顏色模式的數(shù)據(jù)轉(zhuǎn)換成RGB565顏色模式下的數(shù)據(jù):</p><p> 將字體、字號(hào)、字體顏色、字體背景色、是否啟用背景色等文字信息封裝成為一個(gè)字符串。</p><p> 發(fā)送一幀完整的數(shù)據(jù)幀,包含幀頭、文字信息幀、校驗(yàn)和。</p><p> 接收從機(jī)的返回值,校驗(yàn)成功后自動(dòng)關(guān)閉發(fā)布按鍵,停止發(fā)送本幀信息。否則間隔一定時(shí)
101、間連續(xù)發(fā)送本幀信息。</p><p> 3.1.5 圖片發(fā)布模塊</p><p><b> 圖片信息包括:</b></p><p> ?、伲浩鹗夹?,②:起始列,③:圖片長(zhǎng)度,④:圖片寬度,⑤:圖片存儲(chǔ)位置,⑥:保留1,⑦:保留2,⑧:保留3。</p><p> 將以上信息封裝成一個(gè)字符串,構(gòu)成圖片信息幀。</
102、p><p> 圖片的發(fā)布,和字庫(kù)的燒錄很相似。即將圖片的點(diǎn)陣代碼存入設(shè)定好的存儲(chǔ)區(qū)域,STM32從某個(gè)位置開(kāi)始加載,將點(diǎn)陣信息寫(xiě)入SRAM。字庫(kù)與圖片的區(qū)別在于,字庫(kù)的一個(gè)像素點(diǎn)用一位表示,圖片的一個(gè)像素點(diǎn)用16位表示。</p><p> 3.2 STM32程序</p><p> 3.2.1 485串口協(xié)議</p><p> 采用STM3
103、2的UART5作為收發(fā)器。難點(diǎn)不在于UART5的配置,而在于數(shù)據(jù)存儲(chǔ)與校驗(yàn)。</p><p> 所以,只介紹UART5要特別注意的幾點(diǎn):</p><p> ?、伲洪_(kāi)機(jī)發(fā)送的第一個(gè)數(shù)據(jù)丟失問(wèn)題。STM32狀態(tài)寄存器TC位的清零方式為,先讀USART_SR,然后寫(xiě)入U(xiǎn)SART_DR。而發(fā)送第一個(gè)數(shù)據(jù)時(shí),只寫(xiě)USART_DR,未讀取USART_SR,故TC位為1,是發(fā)送完成的標(biāo)志,所以STM3
104、2不發(fā)送第一個(gè)數(shù)據(jù)。解決這個(gè)BUG的方法是:在配置串口時(shí),執(zhí)行一次UART5 -> SR = UART5 -> SR;這條語(yǔ)句。</p><p> ?、冢簑hile((UART5 -> SR & (1 << 7)) == 0);//數(shù)據(jù)轉(zhuǎn)移到移位寄存器</p><p> while((UART5 -> SR & (1 <<
105、6)) == 0);//等待發(fā)送完成</p><p> 以上兩條語(yǔ)句作為等待發(fā)送完成的語(yǔ)句,一般情況下效果幾乎一樣,但是兩者之間確實(shí)是有所不同的。因?yàn)閿?shù)據(jù)已送到移位寄存器不代表發(fā)送完成。</p><p> 在介紹LabVIEW串口數(shù)據(jù)傳輸模塊時(shí),提到了數(shù)據(jù)幀格式為:</p><p> 從機(jī)地址 幀功能 幀序列 幀長(zhǎng)度 幀數(shù)據(jù) 校
106、驗(yàn)值</p><p> 1Byte 1Byte 4Byte 2Byte 由幀長(zhǎng)度控制 1Byte</p><p> <=65535Byte</p><p> 其中,幀功能代表本幀數(shù)據(jù)的功能,可以定義為0:發(fā)送文字信息,1:發(fā)送圖片信息,2:更新桌面等;幀序列在傳輸文件時(shí)用到,可以作為本幀的存儲(chǔ)地址。</p>
107、<p> 基本思路是:STM32接收并分析上位機(jī)發(fā)送的數(shù)據(jù)幀。識(shí)別數(shù)據(jù)幀的的從機(jī)地址、幀功能、幀序列、幀長(zhǎng)度信息,根據(jù)從機(jī)地址判斷數(shù)據(jù)是不是發(fā)送給本機(jī),根據(jù)幀功能字節(jié)判斷數(shù)據(jù)幀的功能,根據(jù)幀序列判斷本幀在文件中的位置,根據(jù)幀長(zhǎng)度信息判斷校驗(yàn)位的位置和何時(shí)向主機(jī)回復(fù)校驗(yàn)信息。</p><p> 在接收到幀長(zhǎng)度信息后,計(jì)算幀長(zhǎng)度,并將其存入data_lenth全局變量,以此判斷本幀何時(shí)結(jié)束。</p
108、><p> 每接收到一個(gè)字節(jié),都用初始值為0的sum變量對(duì)該字節(jié)進(jìn)行累加,并存入sum中,當(dāng)接收到最后一個(gè)字節(jié)時(shí)(也就是校驗(yàn)位),將sum與該字節(jié)比較,若相等,則說(shuō)明數(shù)據(jù)接收無(wú)誤。在數(shù)據(jù)校驗(yàn)成功的前提下,判斷本幀的從機(jī)地址是否是本機(jī)地址,如果是則對(duì)數(shù)據(jù)進(jìn)行處理,處理完畢后向主機(jī)發(fā)送校驗(yàn)數(shù)據(jù);如果不是,則丟棄數(shù)據(jù)幀。</p><p> 發(fā)送校驗(yàn)數(shù)據(jù)的方法:</p><p&
109、gt; 接收完一幀數(shù)據(jù),并將數(shù)據(jù)處理完成后,向主機(jī)依次回復(fù)【從機(jī)地址】、【幀功能】、【幀序列】、【幀長(zhǎng)度】、【校驗(yàn)和】,等待主機(jī)發(fā)送下一幀數(shù)據(jù),若主機(jī)判斷本機(jī)發(fā)送的校驗(yàn)數(shù)據(jù)正確,則向本機(jī)發(fā)送下一幀數(shù)據(jù),若判斷為錯(cuò)誤,則繼續(xù)發(fā)送本幀數(shù)據(jù)。</p><p><b> 串口協(xié)議流程圖:</b></p><p> 3.2.2 FLASH存儲(chǔ)模塊程序</p>
110、<p> FLASH存儲(chǔ)器的型號(hào)是W25Q64,使用STM32自帶的SPI2接口對(duì)其進(jìn)行操作。</p><p> 主要函數(shù)為:讀寫(xiě)芯片狀態(tài)寄存器函數(shù),讀flash函數(shù),寫(xiě)flash頁(yè)函數(shù),芯片擦除函數(shù)和擦除扇區(qū)函數(shù)等,其中核心部分為讀寫(xiě)flash函數(shù)和寫(xiě)flash頁(yè)函數(shù)的編寫(xiě)。[12]</p><p> 從W25Q64讀取數(shù)據(jù)的步驟:</p><p&g
111、t; ?、伲菏鼓芷骷蠢虲S引腳。</p><p> ?、冢喊l(fā)送讀取命令,即利用SPI2向芯片寫(xiě)入0x03。</p><p> ③:發(fā)送地址。分三次發(fā)送24位的地址,先高位再低位。</p><p> ?、埽豪肧PI2向其寫(xiě)入任意數(shù)據(jù),返回的值即為該地址對(duì)應(yīng)的值。</p><p> 在拉高CS引腳前,每向其寫(xiě)入一個(gè)字節(jié),W25Q64的
112、地址自動(dòng)加1,從而實(shí)現(xiàn)讀取連續(xù)地址的值。</p><p> ?、荩豪逤S引腳,結(jié)束讀取操作。</p><p> 向W25Q64寫(xiě)入數(shù)據(jù)的步驟:</p><p> ?、伲豪虲S引腳,SPI2寫(xiě)入0x06,拉高CS。功能是,發(fā)送寫(xiě)允許信號(hào)。</p><p> ?、冢豪虲S,SPI2寫(xiě)入0x02,發(fā)送寫(xiě)頁(yè)命令。</p><
113、;p> ?、郏篠PI2分三次寫(xiě)入地址,先高位再低位。</p><p> ④:SPI2寫(xiě)入數(shù)據(jù)。</p><p> ⑤:拉高CS,完成寫(xiě)入。</p><p> ?、蓿好β禉z測(cè)。拉低CS,SPI2寫(xiě)入0x05,讀取一個(gè)字節(jié),拉高CS,判斷第0位,由1變?yōu)?時(shí),跳出循環(huán)。</p><p> 寫(xiě)入數(shù)據(jù)時(shí),要注意一點(diǎn):W25Q64不能對(duì)為0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 開(kāi)題報(bào)告---住宅小區(qū)信息發(fā)布系統(tǒng)
- 畢業(yè)設(shè)計(jì)--住宅小區(qū)信息發(fā)布系統(tǒng)
- 住宅小區(qū)配電設(shè)計(jì)論文
- 畢業(yè)論文_住宅小區(qū)變壓配電系統(tǒng)
- 住宅小區(qū)物業(yè)管理信息系統(tǒng)畢業(yè)論文
- 畢業(yè)論文_住宅小區(qū)變壓配電系統(tǒng)
- 住宅小區(qū)電氣設(shè)計(jì)論文
- [jsp畢設(shè)]畢業(yè)生招聘信息的發(fā)布與管理系統(tǒng)(論文+設(shè)計(jì))
- 畢業(yè)論文---住宅小區(qū)變壓配電系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文-住宅小區(qū)物業(yè)管理系統(tǒng)
- 住宅小區(qū)供電系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 某住宅小區(qū)
- 住宅小區(qū)綠化率要求 住宅小區(qū)綠化現(xiàn)狀
- 智能住宅小區(qū)管理系統(tǒng).pdf
- 淺談住宅小區(qū)弱電系統(tǒng)設(shè)計(jì)
- 住宅小區(qū)供電系統(tǒng)設(shè)計(jì)
- 住宅小區(qū)配電設(shè)計(jì)——畢業(yè)論文
- 住宅小區(qū)配電設(shè)計(jì)畢業(yè)論文
- 住宅小區(qū)供配電系統(tǒng)的設(shè)計(jì)——畢業(yè)論文
- 淺析封閉式住宅小區(qū)與街區(qū)制住宅小區(qū)
評(píng)論
0/150
提交評(píng)論