999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32的通用高速編程器的設計與實現

2016-03-27 09:44:44何晉紅潘桃于婷馬義德蘭州大學信息科學與工程學院蘭州資源環境職業技術學院
數碼世界 2016年7期

何晉紅潘桃于婷馬義德.蘭州大學信息科學與工程學院 .蘭州資源環境職業技術學院

?

基于STM32的通用高速編程器的設計與實現

何晉紅1潘桃2于婷1馬義德1
1.蘭州大學信息科學與工程學院 2.蘭州資源環境職業技術學院

文章設計并實現了一種針對FLASH、EEROM等存儲器進行數據更新的高速通用編程器。該編程器是一個以STM32為核心,能對24、25等系列的存儲器完成數據寫入、讀出等操作的嵌入式系統。系統具備USB連接PC機的聯機操作模式和基于UCGUI的脫機操作模式。它可以控制接口電壓以適用更多的芯片,與當前常見編程器進行性能比較,其具有更好的兼容性、更快的操作速度和更高的數據正確率。

編程器 STM32 嵌入式系統 UCGUI

隨著信息時代的快速前進,物聯網、汽車電子等都有了前所未有的發展,智能家居、可穿戴設備也應運而生。這些數字化、智能化的產品與我們的日常生活已密不可分。而它們的固件升級,程序更新和量產都需要相關人員對其存儲器內的數據進行讀寫操作。然而目前所見存儲器種類繁多,編程接口和時序也不盡相同,這就要求我們設計一個能夠操作常見存儲器的多功能、通用編程器,它不僅要有足夠快的寫入速度,而且需要保證寫入數據的正確性。目前市面上有一些類似的產品,如XTW100、 TL866CS等,然而它們一般都針對某一特定系列的存儲芯片并且讀寫速度比較慢。基于這樣的現狀,這里設計了一個基于ST(意法半導體)公司的STM32F207單片機的編程器。憑借其120MHz的工作頻率、400Kb/S的I2C接口,30Mb/S的SPI接口以及 硬件SD卡接口,該編程器擁有了非常優越的性能。

1 系統原理概述

本文所設計的編程器主要完成24,、25、26、45、95系列存儲芯片的讀寫、擦除等,同時可以用作SD卡讀卡器。它由硬件和軟件兩部分組成。其中硬件部 分以STM32為核心,軟件包括PC機應用程序、USB 驅動程序以及編程器固件。固件程序運行于硬件平臺之上構成 整個系統的核心。它接受來自PC機的數據和指令,并根據指令對連接其上的存儲芯片進行操作。編程器與PC機通信使用USB2.0協議標準。該系統還使用觸摸屏進行人機交互來完成脫機操作。

1.1編程器硬件平臺

硬件平臺是系統重要組成部分,采用STM32F207 Contex-M3[2]芯片作為控制器,含有 供電系統、觸摸屏、SD卡以及電平轉換電路的編程器平臺。

系統電源含兩部分:3.3伏固定電壓與程序可調電源。其中3.3伏為MCU,觸摸屏,SD卡等供電, 而可調電源的輸出電壓受MCU控制。在MCU與 存儲芯片之間接有電平轉換接口芯片SN74LVC8T245,該芯片分A、B兩個端口,A、B 兩端的數字電平可以獨立進行設置。同時這里還使 用了TCA9517,它是I2C接口專用電平轉換芯片。

SD卡上存放編程器的配置數據、脫機操作文件、 脫機讀取的芯片內數據和脫機芯片參數庫。它通過SD卡接口與STM32連接,MCU上移植了嵌入式文件系統FatFs以對SD卡進行基于文件的讀寫操作。

在SD卡根目錄下有data子目錄用來存放脫機操作的數據。名為Chipinfo的文件存放芯片參數庫。Dat文件存放文件命名編號信息。執行讀取操作時,讀出來的數據保存在命名為被操作芯片型號-文件編號.bin的文件內。每次讀取完成后文件編號增一并保存到Dat里面。例如連續讀取兩次EN25Q80芯片就會創建兩個文件,分別為EN25Q80-00006. bin和 EN25Q80-00007.bin。在SD卡根目錄下還有一個文件LCD_CONFIG,它存儲了LCD觸摸屏的配置參數。

系統采用240*320分辨率的LCD作顯示,電阻式觸摸屏作觸控感應。觸摸控制芯片使用 XTP2046。它將模擬電壓值進行數字采樣量化并通過SPI接口將數據傳輸給MCU。LCD界面的開發使用了UCGUI。編程器啟動時會判斷LCD_ CONFIG 文件是否存在,不存在時將會調用校準代碼進行觸摸屏校準并生成該文件。編程器上有一個32Pin的鎖緊座。編程器與待編程存儲器的連接會根據具體芯片選擇使用SPI或I2C接口。

1.2編程器固件程序

固件程序主要完成PC機控制指令的解析和執行, 同時響應觸摸輸入。固件程序解析執行PC機指令然后返回執行結果 和數據。PC機應用通過USB接口連接編程器并結合固件程序對存儲芯片進行操作,同時操作SD卡上的編程數據和脫機芯片庫等。固件程序含有大量的代碼,編程器會根據待操作芯片進行適配選擇。固件程序還提供了脫機操作的功能。在脫機的情況下固件程序會通過用戶的交互輸入執行操作,并將結果反饋顯示給用戶。脫機操作的實現依賴于觸摸屏交互和SD卡上的芯片庫以及文件系統。

1.3PC機軟件系統

PC機程序開發使用MFC類庫。借助PC機優越的運算性能,聯機的情況下比脫機操作具有更快的速度,而且在聯機的情況下還可以對編程文件進行可視化編輯。PC機軟件提供的操作包括:文件加載、芯片選擇、芯片自動識別、編程、擦除、讀取、向數據庫中添加芯片以及對SD卡的操作。在程序中動態地建立ODBC數據源,并將芯片信息存儲進ACCESS數據庫中。數據庫里記錄了常用的24,25,26,45,95等系列的芯片,對于一些未收錄的,用戶可以自己將芯片信息添加進數據庫,編程器會根據芯片的特性自動選擇合適的讀寫時序嘗試操作。PC程序根據待編程的芯片從數據庫中讀取芯片參數。從PC文件系統中讀取Hex或Bin格式文件并進行解碼,然后將指令包和數據傳送給編程器。從存儲芯片讀取數據的時,首先將讀到的數據使用 CListCt r l控件顯示給用戶,用戶可以將該數據保存在PC上指定的位置。PC也通過USB訪問編程器上的SD卡。由于使用了USB接口進行通信,所以這里還需要為編程器開發USB驅動[7]來負責應用層和USB 總線層的數據傳遞。驅動程序還進行數字簽名,以便自動安裝。

2 系統關鍵技術

2.1編程器電源系統及接口電壓轉換

本系統需要兩種電壓。一個3.3V和一個編程可調 的電源。它們都通過對5V輸入電壓進行降壓得到。采用LM1117-3.3穩壓芯片產生3.3V電壓。在其輸入和輸出端分別接入兩個濾波電容,一個容值較大,濾去電源的低頻成分,而另外一個容值較小,對高頻成分呈現較低的阻抗,主要濾除由負載電流變化而引起的高頻成分。

可調電壓用STM32的一路DAC和LM1117-ADJ可調三端穩壓芯片產生。使用DAC的輸出來抬高 ADJ端的電壓,調節DAC的輸出就可以達到調節輸 出電壓的目的。

從DAC到LM1117的ADJ端使用運放LM358做了電壓跟隨。因為LM1117工作的時候ADJ端會有微弱的電流流出,而DAC輸出阻抗較大,該電流如果直接流經DAC的輸出端,對ADJ端的電勢會有影響。

設計中還將兩個110歐姆串聯,然后接到其輸出端,從兩個電阻的中間取得電壓接至STM32的ADC上面,STM32對此電壓進行實時監測,防止電壓設置不當造成器件損壞。

2.2控制指令格式

由于數據較大,本編程器使用USB批量傳輸方式。編程器配置了兩個USB端點,一個控制端點,用來進行USB的枚舉等,另外一個批量端點,用來批量傳輸數據。

2.2.1命令包結構

在USB枚舉完成以后,PC機會根據用戶所選擇 的操作構建一個命令塊包,然后發給編程器。命令塊包的結構總共有30個字節。

dSignature字段是控制命令包標志,為字符串 USBC。

dTag是命令包標簽,由PC機程序隨機生成。當編程器完成該命令返回狀態的時候,需要在狀態包的dTag字段中填入對應命令的dTag。

dDataLength指定在數據階段需要傳輸的數據長度。

fVol是待操作芯片電壓信息,是一個浮點數。編程器根據fVol設置接口電壓。部分指令的fVol域無效。

bFlags最高位(D7)表示數據方向,0表示輸出,1表示輸入。

bCBLength表示后面CB的長度。

CB是需要執行的命令和命令對應的參數。12字節數據不一定完全使用,有效長度由bCBLength指定。

2.2.2狀態包結構

編程器執行完操作后會返回執行結果給PC。dSignature為狀態包標志。字符串USBS。dTag為狀態包標簽,其值為命令封包中的dTag。

bStatue標識命令執行結果,0x00表示成功, 0x01表示失敗。

2.2.3編程器命令結構

命令包含存儲芯片操作命令和SD卡操作命令。接口類型分為兩類:0x01表示SPI,0x02表示 I2C;芯片類型使用24、25等作為區分。接口速率占 一個字節,I2C以K為單位,SPI以Mb/s為單位。

2.3芯片參數庫設計

為支持多種芯片,設計了芯片參數庫。在芯片操作時需要獲取數據庫中的芯片信息。下面給出數據表中所有字段及說明。

Chip Index:芯片的索引編號。

ManuID:廠商ID,主要用來芯片的自動識別。Chip ID:芯片ID號。用來芯片的自動識別。RomSize:芯片的存儲容量,以字節為單位。PageSize:存儲器的頁大小。芯片編程采用頁編程方式,有利于編程速度的提高。

VectorName:芯片廠商名稱簡稱,方便用戶選 擇芯片。

InterFace:芯片的編程接口類型。

Vol:編程接口電壓信息。

Speed:芯片編程接口支持的最大讀寫速率。 設置正確的讀寫速率,才能保證讀寫的正確率。 Type:芯片類型。24、25系列等。

在進行操作之前一般會自動識別或者手動選擇 芯片。選定芯片后應用程序會從數據庫獲取芯片的 信息,然后構建命令塊包并發送給編程器。

3 結論

在此將對該編程器的性能參數做一些測試。這里將抽取不同系列、不同廠商的不同容量存儲器進行測試。測試相關數據,包括對編程器來講至關重要的一項指標:寫入數據的正確率。分析結果可以發現,不同的芯片操作速度相差較大,尤其是寫入和擦除的速度。這主要是受芯片自身性能和芯片容量的影響。同時,這里還跟其他的編程器,如XTW100、TL866CS等做了性能對比,發現該編程器跟其他相比速度平均提升了1.5倍左右,而這主要得益于我們MCU良好的處理性能、高效的通信協議以及我們優異的編程算法。而前面所提兩 款編程器只支持24、25系列的部分存儲器,且不具備脫機操作的功能。另外值得一提的是本編程器數據寫入的正確率。由于采用了可靠的通信協議,使得對所有支持的存儲器都達到了百分之百正確寫入的效果。

[1] USB Imp lementer’s Forum. USB Speci f ication Rev2.0. http://www.usb.org,2000.

[2] 喻金錢,喻斌.STM32F系列ARMCor tex-M3核微控制器開發與應用[M].北京:清華大學出版社, 2011.

[3] 王蘭英.基于STM32嵌入式系統的uCGUI移植與實現.四川理工學院學報(自然科學版). 2012年01期.

[4] 動態注冊ODBC數據源的方法[OL]. ht tp://wenku. baidu.com,2013.

[5] (美)帕羅賽斯.MFC Windows程序設計[M].北京:清華大學出版社,2007.

[6] 亓蘭武,周曉.OBJ文件和HEX文件相互轉換原理與實現[J].電子技術應用.1996年07期.

[7] 劉榮.圈圈教你玩USB[M].北京:北京航空航天大學出版社,2009.

主站蜘蛛池模板: 亚洲欧洲日韩综合| 日韩成人在线视频| 国产原创自拍不卡第一页| 91无码网站| 免费精品一区二区h| 香蕉久久国产超碰青草| 欧美精品亚洲二区| 久久久久久久久亚洲精品| 国产精品专区第1页| 园内精品自拍视频在线播放| 狠狠色噜噜狠狠狠狠奇米777| a毛片基地免费大全| 国产成人综合久久精品尤物| 国产精品久久久久久久伊一| 波多野结衣久久精品| 99热这里只有精品免费| 成人午夜久久| h网址在线观看| 大香网伊人久久综合网2020| 日韩午夜片| 欧美中文字幕无线码视频| 亚洲成a人在线观看| 精品亚洲国产成人AV| 国产成a人片在线播放| 午夜少妇精品视频小电影| 少妇人妻无码首页| 精品一區二區久久久久久久網站 | 国产在线麻豆波多野结衣| 久久女人网| 欧美成人午夜视频| 999国内精品久久免费视频| 国产欧美另类| 日韩欧美网址| 91午夜福利在线观看| 夜精品a一区二区三区| 欧美在线综合视频| 国产a网站| 男人天堂伊人网| 国产在线精彩视频二区| 国产午夜福利在线小视频| 国产欧美视频综合二区| 欧美成人区| 亚洲欧美不卡| 麻豆精品在线| 狠狠综合久久| 久久中文字幕av不卡一区二区| 极品尤物av美乳在线观看| 久久综合激情网| 国产视频久久久久| 男女男精品视频| 一本色道久久88| 3344在线观看无码| 大香伊人久久| 中文字幕亚洲综久久2021| 精品国产欧美精品v| 午夜小视频在线| 国产亚洲高清在线精品99| 黄色福利在线| 亚洲精品片911| 日本高清在线看免费观看| 亚洲欧洲日韩综合色天使| 国产精品无码久久久久AV| 国内a级毛片| 亚洲精品大秀视频| 欧美精品1区2区| 国产产在线精品亚洲aavv| 二级特黄绝大片免费视频大片| 日韩av在线直播| 99一级毛片| 奇米精品一区二区三区在线观看| 免费观看男人免费桶女人视频| 国产不卡在线看| 亚洲无码免费黄色网址| 国产福利免费视频| 国产精品毛片一区视频播| 999国内精品久久免费视频| 亚洲天堂日韩av电影| 四虎国产精品永久一区| 国产精品无码一二三视频| 久久精品91麻豆| 人人澡人人爽欧美一区| 欧美日韩亚洲综合在线观看|