• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      STM32系列單片機(jī)脫機(jī)批量燒錄器的設(shè)計(jì)與實(shí)現(xiàn)

      2015-12-06 06:30:54徐岳清
      關(guān)鍵詞:脫機(jī)低電平高電平

      徐岳清

      (無(wú)錫機(jī)電高等職業(yè)技術(shù)學(xué)校,江蘇 無(wú)錫214000)

      0 引言

      STM32系列單片機(jī)專為要求高性能、低成本和低功耗的應(yīng)用設(shè)計(jì),按照內(nèi)核架構(gòu)分別有Cortex-M0、Cortex-M3和Cortex-M4 3種,雖內(nèi)核不同,但是全系列均支持片內(nèi)ISP(in-system programmable,系統(tǒng)在線可編程)下載編程模式,并且采用同一種通信協(xié)議,因此均可以通過(guò)USART接口實(shí)現(xiàn)ISP編程。

      在批量生產(chǎn)中,STM32常見的燒錄方式基本為3種方式。其一為預(yù)燒錄,在貼片前,使用批量燒錄器對(duì)芯片進(jìn)行統(tǒng)一燒錄;其二為聯(lián)機(jī)燒錄,即在貼片完成后使用JLINK或者STlink和PC機(jī),使用相應(yīng)的燒錄軟件通過(guò)芯片的SW接口進(jìn)行燒錄或者通過(guò)串口進(jìn)行ISP燒錄;其三為脫機(jī)燒錄,在貼片完成后使用單個(gè)SW接口脫機(jī)燒錄器進(jìn)行程序燒錄。第1種方法燒錄速度最快,但是需要拆包裝燒錄,燒錄完成后還要再重新包裝,操作比較煩瑣;第2種方式燒錄速度一般,采用SW接口稍快,但是需要占用2個(gè)IO口,如果采用ISP方式,則由于ST官方提供的Flash Loader Demonstrator軟件操作步驟較多,導(dǎo)致燒錄速度和效率最低[1];第3種較快,但是由于SW脫機(jī)燒錄器只支持一個(gè)SW燒錄口,因此只能一次燒錄一片。

      鑒于上述幾種方式的優(yōu)缺點(diǎn),本設(shè)計(jì)采用STM32F302RBT6單片機(jī),設(shè)計(jì)了脫機(jī)ISP燒錄工具。STM32F3系列基于 Cortex-M4內(nèi)核,帶有DSP和FPU指令,性價(jià)比與STM32F1系列相比更好,STM32F302RBT6單片機(jī)采用TQFP64封裝,具有1個(gè)USB接口,2個(gè)SPI接口、3個(gè)USART接口和2個(gè)UART口,USART口支持同步模式,本設(shè)計(jì)全部按照異步模式即UART模式使用,因此可以實(shí)現(xiàn)通過(guò)5路UART同時(shí)燒錄5片STM32系列單片機(jī)。

      1 ISP下載協(xié)議分析

      STM32系列單片機(jī)通常支持3種啟動(dòng)模式,在上電時(shí)通過(guò)BOOT0和BOOT1管腳電平區(qū)分。當(dāng)BOOT0為低電平時(shí),從用戶閃存啟動(dòng),這是正常啟動(dòng)模式;當(dāng)BOOT0為高電平時(shí),如果BOOT1為低,則從系統(tǒng)存儲(chǔ)器啟動(dòng),芯片出廠時(shí)在這個(gè)區(qū)域放置了bootloader,即自舉程序也叫內(nèi)嵌啟動(dòng)代碼,該程序出廠后無(wú)法修改,可用于通過(guò)USART、USB或者其他方式把應(yīng)用程序燒錄到用戶閃存;當(dāng)BOOT0為高電平時(shí),如果BOOT1為高時(shí),從芯片內(nèi)置RAM啟動(dòng)。在STM32F0系列中,僅由BOOT0一個(gè)管腳用于選擇下載模式,當(dāng)BOOT0為低電平時(shí),從用戶閃存啟動(dòng);當(dāng)BOOT0為高電平時(shí),從系統(tǒng)存儲(chǔ)器啟動(dòng),即啟動(dòng)自舉程序。

      通過(guò)設(shè)置BOOT0=1,BOOT0=0在 MCU啟動(dòng)時(shí)就可以進(jìn)入自舉模式,自舉程序?qū)呙鑅SARTx-Rx引腳,等待接收0x7F數(shù)據(jù)幀,該數(shù)據(jù)幀的持續(xù)時(shí)間經(jīng)過(guò)SysTick的測(cè)量和相關(guān)計(jì)算,可以得出當(dāng)前數(shù)據(jù)幀的波特率,從而MCU自動(dòng)配置通信波特率,實(shí)現(xiàn)波特率自適應(yīng),支持的波特率范圍為1 200~115 200。然后發(fā)送確認(rèn)字節(jié)(0x79)返回主機(jī),表示STM32已準(zhǔn)備好接收命令。自舉程序流程框圖如圖1所示。

      圖1 使用USART的STM32自舉程序流程框圖

      STM32單片機(jī)自舉程序支持的命令中常用的見表1,主控端的每條命令都是按照一個(gè)字節(jié)命令和一個(gè)字節(jié)命令補(bǔ)碼方式發(fā)送,每個(gè)通信數(shù)據(jù)包結(jié)尾均包含一個(gè)字節(jié)校驗(yàn),校驗(yàn)值為前面所有字節(jié)的異或運(yùn)算結(jié)果,實(shí)現(xiàn)通信數(shù)據(jù)包的有效性驗(yàn)證。器件在每個(gè)數(shù)據(jù)包被接受后使用ACK(0x79)應(yīng)答,被丟棄后使用 NACK(0x1F)應(yīng)答。因此主機(jī)在發(fā)生完一條命令或者數(shù)據(jù)包后,通過(guò)接收到的應(yīng)答命令,就可以判斷器件是否正常接收。

      表1 USART bootloader命令[3]

      由于STM32是32位機(jī),因此對(duì)器件的數(shù)據(jù)寫入操作必須按照32位對(duì)齊方式寫入數(shù)據(jù),不足位使用0xFF補(bǔ)齊,寫入數(shù)據(jù)必須為4字節(jié)的倍數(shù),最大數(shù)據(jù)塊的長(zhǎng)度為256字節(jié)。為了提高寫入的速度,本設(shè)計(jì)選用256字節(jié)作為數(shù)據(jù)塊長(zhǎng)度。

      2 編程器系統(tǒng)設(shè)計(jì)

      2.1 系統(tǒng)方案設(shè)計(jì)

      通過(guò)前面的分析可以得知,控制一個(gè)STM32器件的啟動(dòng)模式,需要控制BOOT0、BOOT1和電源的上電順序,為了減少人工操作,實(shí)現(xiàn)全自動(dòng)化編程,需要使用MOS管控制3個(gè)信號(hào)的電平,如圖2所示,其中 USART1_BOOT0,USART1_BOOT1和USART1_VCC為單片機(jī)IO口,采用NMOS管控制,高電平導(dǎo)通,低電平截止,右側(cè)與USART1一起組成一組下載控制口,所使用的上電控制順序?yàn)椋篣SART1_BOOT0高電平,USART1_BOOT1低電平,USART1_VCC高電平啟動(dòng)引導(dǎo)程序并完成ISP下載,下載完成后USART1_VCC設(shè)置為低電平,然后再設(shè)置USART1_BOOT0為低電平,USART1_BOOT1低電平,USART1_VCC高電平啟動(dòng)應(yīng)用程序。

      圖2 MOS管控制組電路圖

      由于串口不可以一對(duì)多組網(wǎng)通信,因此,每個(gè)器件均需獨(dú)立的串口進(jìn)行通信。本設(shè)計(jì)的硬件結(jié)構(gòu)如圖3所示。

      本設(shè)計(jì)使用點(diǎn)陣顯示屏作為人機(jī)顯示接口,用于顯示燒錄文件名稱、被燒錄器件的芯片型號(hào)、可燒錄器件數(shù)量以及燒錄狀態(tài)等信息。顯示屏全部采用中文化菜單和提示信息,支持中英文混合顯示。同時(shí)采用5個(gè)獨(dú)立的三色LED,用于提示燒錄的進(jìn)程,對(duì)應(yīng)的燒錄口燒錄過(guò)程中顯示黃色,燒錄成功時(shí)顯示綠色,燒錄失敗時(shí)顯示紅色,同時(shí)使用蜂鳴器在燒錄結(jié)束時(shí)進(jìn)行鳴叫提示,從而可以增加操作的直觀性和易用性。

      按鍵可以用來(lái)啟動(dòng)燒錄,設(shè)置燒錄參數(shù),包含是否啟用讀保護(hù)、是否限制燒錄次數(shù)、是否啟用保密功能、是否自動(dòng)設(shè)定硬件序列號(hào)以及設(shè)置序列號(hào)的起始編碼以及遞增規(guī)則,當(dāng)啟用硬件序列號(hào)自動(dòng)燒錄功能時(shí),在芯片內(nèi)部flash指定地址寫入唯一編碼和硬件序列號(hào)。

      圖3 燒錄器結(jié)構(gòu)框圖

      SPI Flash用于存儲(chǔ)待燒錄二進(jìn)制bin文件,可以存儲(chǔ)多個(gè)二進(jìn)制bin文件,燒錄時(shí)通過(guò)按鍵選擇其中一個(gè)進(jìn)行燒錄。燒錄器通過(guò)USB口與PC機(jī)通信,連接PC機(jī)時(shí),燒錄器通過(guò)內(nèi)置軟件和對(duì)應(yīng)的PC機(jī)驅(qū)動(dòng),把USB虛擬成一個(gè)串口,PC機(jī)上的專用軟件通過(guò)該虛擬串口,可以完成程序下載、燒錄參數(shù)設(shè)置等功能。系統(tǒng)供電可以使用5V直流電源適配器,也可以通過(guò)USB口的5V電源供電。

      2.2 軟件算法處理流程

      本設(shè)計(jì)的軟件流程如圖4所示,系統(tǒng)上電后,首先進(jìn)行初始化,然后等待USB口消息和按鍵消息,通過(guò)USB口上位機(jī)可把待下載的二進(jìn)制文件下載到下載器板載的SPI Flash存儲(chǔ)器上,同時(shí)設(shè)置待下載文件對(duì)應(yīng)下載配置參數(shù),包含起始地址、可下載最大次數(shù)、是否啟用讀保護(hù)等參數(shù)。每個(gè)下載文件和對(duì)應(yīng)的配置參數(shù)均單獨(dú)保存,使用按鍵選擇對(duì)應(yīng)的下載文件后,與之相關(guān)的配置參數(shù)也自動(dòng)調(diào)取并顯示。如果需要更改待下載參數(shù),也可以通過(guò)按鍵修改并保存。燒錄器選擇好下載文件和下載配置參數(shù)后,即可以啟動(dòng)一鍵下載。一鍵下載啟動(dòng)后,每個(gè)下載端口對(duì)應(yīng)的MOS開關(guān)組同時(shí)打開,然后5路串口依次發(fā)送版本讀取命令0x01,得到應(yīng)答后,該端口置為有效,否則置為無(wú)效,顯示屏上對(duì)應(yīng)組號(hào)顯示“未發(fā)現(xiàn)可燒錄芯片!”。對(duì)于有效的端口,LED亮黃燈,然后依次發(fā)送芯片ID讀取命令,獲取待下載芯片的ID并在液晶屏顯示,然后根據(jù)待下載文件大小和起始地址,擦除待占用的芯片內(nèi)部flash,擦除完成后,從SPI Flash讀取下載文件內(nèi)容,并依次寫入有效端口連接的芯片。下載完成后,自動(dòng)進(jìn)行讀取校驗(yàn)功能,即把已下載的程序全部讀取出來(lái)并和待下載文件比較,如果比較結(jié)果正確無(wú)誤,說(shuō)明下載已成功,此時(shí)LED亮綠燈,蜂鳴器響1聲;如果校驗(yàn)出錯(cuò),說(shuō)明下載失敗,此時(shí)LED亮紅燈,蜂鳴器連響2聲。無(wú)論下載失敗還是成功,下載結(jié)束后,均判斷是否關(guān)機(jī),如果不關(guān)機(jī),則自動(dòng)回到等待USB響應(yīng)和按鍵響應(yīng)。

      圖4 軟件功能流程圖

      3 編程器性能測(cè)試

      為了提高燒錄速度,STM32F302RBT6單片機(jī)的5個(gè)串口均使用中斷發(fā)送和接收,SPI Flash啟用DMA讀取,從而SPI Flash讀寫和5個(gè)串口的接收均可以并行執(zhí)行。即首先啟用SPI Flash DMA讀取,待DMA讀取256字節(jié)完成時(shí),再啟用5個(gè)串口中斷發(fā)送,然后在串口發(fā)送的同時(shí)再次啟用SPI Flash DMA讀取,待DMA讀取256字節(jié)完成時(shí),判斷串口發(fā)送中斷標(biāo)志是否置位,如果中斷標(biāo)志有效則啟用再次啟動(dòng)串口中斷發(fā)送,否則等待串口發(fā)送完成中斷,從而可以大大提高并行處理性能,提高系統(tǒng)效率。

      為了驗(yàn)證本設(shè)計(jì)的高效率特點(diǎn),特意選用市面上常用的3種下載方式進(jìn)行對(duì)比測(cè)試,即J-link,ST-link,脫機(jī)SW燒錄器,這3種燒錄器的共同點(diǎn)是全部采用SWD接口,需要在硬件電路設(shè)計(jì)時(shí)預(yù)留燒錄口才能使用。本設(shè)計(jì)采用USART接口,不占用系統(tǒng)IO口資源,程序下載完成后可以用于通信口。本測(cè)試使用50k二進(jìn)制bin文件分別進(jìn)行擦除、編程和校驗(yàn)測(cè)試測(cè)試,測(cè)試數(shù)據(jù)見表1。其中J-Link和ST-Link均采用PC機(jī)做主機(jī),和PC的整體響應(yīng)速度相關(guān),由于J-Link比ST-Link的速度高,因此在時(shí)間上用時(shí)較短。SWD脫機(jī)燒錄器,由于響應(yīng)較快,因此用時(shí)最少。本設(shè)計(jì)一次性燒錄5片,平均每片只需3.86s。

      從數(shù)據(jù)可以看出,由于本設(shè)計(jì)采用的STM32 F302RBT6具有靈活的DMA處理和多串口中斷處理機(jī)制,通過(guò)中斷觸發(fā)和DMA操作,大大提高了系統(tǒng)的并行處理速度,從而實(shí)現(xiàn)編程5片比編程1片僅僅多用時(shí)3.4s,同時(shí)該MCU采用支持DSP和FPU指令,在提示并行下載速度的同時(shí),確保了液晶屏得以流暢刷新顯示。使用本文設(shè)計(jì)的編程器,如果算上裝夾時(shí)間,最快在30s內(nèi)就可以燒錄5片單片機(jī),可以大大提高生產(chǎn)效率。

      表2 燒錄器時(shí)間參數(shù)

      4 結(jié)語(yǔ)

      該燒錄器支持STM32全系列單片機(jī),可以實(shí)現(xiàn)一對(duì)五脫機(jī)編程,一鍵下載和加密保護(hù)功能在大大提高了生產(chǎn)效率同時(shí)也提高了程序安全性。其燒錄方便,操作簡(jiǎn)單,可以滿足生產(chǎn)線批量燒寫需求,并且只需使用USART接口,燒錄完成后,USART可以被應(yīng)用程序再次使用,不浪費(fèi)任何單片機(jī)資源。本方案在解決原廠提供的燒錄軟件不足的同時(shí),也為推廣高性價(jià)比的STM32系列單片機(jī)提供了便利。

      [1]陳晨,董為云.基于STM32的 USB通信程序設(shè)計(jì)[J].電子技術(shù)與軟件工程,2014(1):266.

      [2]鄧國(guó)榮.基于STM32SPI接口的M25P80FALSH的驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)電信息,2013(6):144-145.

      [3]ST.USART protocol used in the STM32bootloader[EB/OL].[2014-06-27].http://www.stmcu.org/document/download/index/id-208524.

      [4]ST.STM32F301x6/8and STM32F318x8advanced ARM-based 32-bit MCUs[EB/OL].[2014-06-23].http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00094064.

      猜你喜歡
      脫機(jī)低電平高電平
      數(shù)字電路中“邏輯非”的用法辨析
      一種基于FPGA的PWM防錯(cuò)輸出控制電路
      鐵道車輛高/低電平信號(hào)智能發(fā)生器設(shè)計(jì)
      淺快呼吸指數(shù)相關(guān)指標(biāo)預(yù)測(cè)脫機(jī)結(jié)局的價(jià)值分析
      TS-03C全固態(tài)PDM中波發(fā)射機(jī)開關(guān)機(jī)控制電路原理及故障分析
      科技傳播(2019年15期)2019-08-22 08:07:44
      改良程序化脫機(jī)在老年患者呼吸機(jī)撤離中的應(yīng)用
      中心靜脈血氧飽和度監(jiān)測(cè)在機(jī)械通氣患者脫機(jī)過(guò)程中的意義※
      2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車型低電平參考電壓總線電路圖
      DM 50KW中波廣播發(fā)射機(jī)欠推動(dòng)故障分析
      PDM 1kW中波廣播發(fā)射機(jī)保護(hù)電路分析
      土默特右旗| 互助| 永泰县| 永春县| 吴桥县| 镇坪县| 宁化县| 阿拉尔市| 临沂市| 固阳县| 浦县| 巴里| 甘谷县| 布拖县| 盘锦市| 旺苍县| 鄂托克旗| 米易县| 紫云| 客服| 聊城市| 定结县| 阿拉善盟| 文成县| 恩施市| 长丰县| 惠安县| 五台县| 荃湾区| 永丰县| 鹤庆县| 余江县| 建水县| 巨鹿县| 崇义县| 丰台区| 枞阳县| 西华县| 平昌县| 嘉义县| 汾西县|