內容包括ISP、IAP、ICP三種燒錄方式的詳細介紹,STM32單片機與宏晶STC單片機燒錄方法,STM32單片機自動ISP的詳細介紹(附電路原理圖)。
目錄:
- 一、燒錄方式簡介
- 二、燒錄方式詳述
- 1、ISP:In System Programming
- 2、IAP:In Applicatin Programming
- 3、ICP:In Circuit Programing
- 三、相關總結
- 1、形象點的描述
- 2、STM32進入BootROM的方式
- 3、STM32自動ISP、RS232通信
- 1)自動ISP硬件電路
- 2)注意事項
一、燒錄方式簡介
單片機的燒錄方式主要可以分為ICP(在電路編程)、IAP(在應用編程)以及ISP(在系統編程)。玩單片機的都應該聽說過IAP、ICP和ISP這幾個詞。
ISP:In System Programing,在系統編程
IAP:In Application Programing,在應用編程
ICP:In Circuit Programing,在電路編程
JTAG(Joint Test Action Group)編程:通過JTAG協議進行編程
SWD(Serial Wire Debug)編程:通過SWD協議進行編程
UART編程:通過UART進行編程
用一張圖形象的表示一下,如下。
圖1.1.1
從圖上看,ISP和ICP是處于最頂層的技術。描述的是一種編程結構,所使用到的協議、通信端口等,不同芯片有不同的定義。
IAP在第二層,是一種編程方式。實現方式是將一段目標芯片可執行的代碼通過某種通信協議下載到芯片RAM中并由芯片執行,由該代碼實現具體操作以達到編程的目的。這種方式需要芯片支持通過某種通信協議。
對芯片的RAM進行讀寫并能控制其CPU。這是在編程結構下的一種編程方式,像AK100Pro、SmartPRO、5000U-Plus等燒錄器,都用到了這種編程方式。
最下面的是硬件通信協議,UART是最早應用在單片機里面的串行通信技術。JTAG和SWD是ARM內核芯片興起之后,逐漸流行起來的,這三種技術描述的是編程過程中硬件層使用的通信協議,是最底層的一些技術規范。
用一個表格來對比這幾種通信協議的特性:
綜合上面所述,只要UART、JTAG、SWD這些硬件通信協議能保證電氣連接的規范性和穩定性,那么ISP、IAP就能對芯片正確地編程。
二、燒錄方式詳述
1、ISP:In System Programming
利用單片機的串行口接到計算機的RS232口,通過專門設計的固件程序來編程內部存儲器。芯片可以在目標板上,不用取出來,設計目標板的時候將接口設計在上面。所以叫"在系統編程",即不用脫離系統。程序升級需要現場解決,但不必拆機器。比如:利用STC-ISP對STC芯片編程,如圖2.1.1,祥見“STC_ISP下載軟件問題匯總與解決”;利用mcuisp或FlyMcu對STM32編程,如圖2.1.2所示。
圖2.1.1
圖2.1.2
2、IAP:In Applicatin Programming
IAP的實現一般需要很少的外部電路輔助實現,由芯片自身(或外圍的芯片)通過一系列操作將代碼寫入。從結構上將Flash存儲器映射為兩個存儲體,當運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之后將控制從一個存儲體轉向另一個。比如STM32微處理器通過SEGGER J-Flash下載程序,祥見“J-Link使用匯總(STM32F103)”。
圖2.2.1
MCU內部都是首先執行一段獨立的Boot代碼(這段Boot代碼一般是出廠預置,或使用編程器燒錄,通常只有1k或4k,SST通常是占用一塊獨立的Block,Philips通常是讓BootROM地址與其他Flash重疊,以達到隱藏的效果),Boot負責控制擦除程序存儲器及給程序存儲器編程的代碼(或是處理器外部提供的執行代碼),然后通過某種與PC計算機的通信方式(如ethernet網口),將用戶指定的某個在PC上編譯完成的MCU可運行的二進制代碼文件編程入MCU內的程序存儲器。
ISP和IAP最大的不同是:由誰來觸發進入BootROM。
ISP有4種觸發方式:
1)由外部硬件電路:如VDD保持高電平,給RST連續3個脈沖;
2)檢測狀態位:如ISPEN,為0時PC指針從0000H開始執行;為1時,通過“引導向量”計算出“ISP代碼”的位置。每次復位后都會檢測該狀態位;
3)中止控制符信號觸發芯片復位:中止控制符信號就是指在異步串行口的接收腳上出現長 達一幀長度的低電平,這里一幀的長度與異步串行口的工作模式有關。
4)直接調用ISP:用戶程序也可以調用,但是很危險。
4種方式的目的相同,即進入ISP子程序。比如Philips出廠的ISP子程序在1E00H-1FFFH,只要能引導PC指針指向1E00H就可以了。進入ISP代碼的目的是進入BootROM。
IAP的觸發簡單一些,沒有外部觸發。通過一些指示位(SST為SC0/SC1、SFCF[1,0];Philips為一段IAP子程序,保存在FF00H~FFFFH地址空間中),達到引導至BootROM的目的。
殊途同歸,ISP、IAP所進入的BootROM里面駐留的Boot代碼,才是最終目標。
3、ICP:In Circuit Programing
1)MCU只要處于上電狀態即可,不必預燒任何代碼進MCU。
2)燒錄范圍涵蓋整顆MCU,包括 APROM、DataFlash、CONFIG、LDROM和 ROMMAP。
3)芯片在LOCK的狀態下,無法只更新某一區塊,只能在erase-ALL之后,更新某一區塊,再逐一燒回其它區塊;
因為ICP的本質就是走串行接口的Writer Mode,芯片被LOCK之后,除了erase-ALL,所有燒錄動作皆會被禁止。
4)因為燒錄純粹是ICP硬件的行為,MCU無法自己更新自己,所以給系統設計者的彈性較小。例如無法藉由ICP去實現IAP的功能。
5)需要其他硬件支持(如NU-LINK等)
6)不嚴格來說,ISP和IAP也屬于在電路編程。
三、相關總結
1、形象點的描述
ISP是把房子拆了再重造一間,但是地基保留,那么在造好之前當然是不能住人。
IAP是在造好的房子里邊進行一些裝修,當然人可以繼續住。
ICP是對房子地基與房子的整體重構。
2、STM32進入BootROM的方式
詳細的說明參閱“STM32單片機1之二、STM32_啟動模式配置說明“。
3、STM32自動ISP、RS232通信
1)自動ISP原理
當燒錄程序時,我們希望BOOT0=1,BOOT1=0。當燒錄完成后希望BOOT0=0,BOOT1=0。這里只需考慮BOOT0的高低。查看STM32的參考手冊,如下圖。
圖3.3.1
綜上所述可以得到:
(1)系統上電,BOOT0需為L,進入模式一。上電復位后,在SYSCLK的第4個上升沿,BOOT引腳的值將被鎖存,進入主閃存存儲器,執行我們燒錄的代碼。
(2)燒錄HEX文件時,BOOT0需為H,進入模式二。系統必須復位一次(系統上電后默認執行代碼,即模式一),讓系統重新鎖存BOOT引腳。系統進入模式二,開始燒錄HEX文件。
(3)程序下載完畢后,若設置了“編程后執行”,系統再次進入模式一,STM32會再次被復位,此時DTR#引腳為高,RTS#引腳為低,STM32復位后,DTR#引腳設置為低,RTS#引腳設置為高,那么Q2和Q3都不導通,此時,STM32重新開始啟動后,檢測到BOOT0為0,在燒錄完成后會有報告:“成功從08000000開始運行”,程序開始正常運行。
圖3.3.2
圖3.3.3的電路可實現自動ISP、串口通信、USB供電三種功能。
圖3.3.3 成熟電路
串口下載軟件可選用FlyMcu或mcuisp,通過串口的DTR和RTS信號來自動配置BOOT0和RESET信號,不需要用戶手動切換它們的狀態,直接串口軟件自動控制,可以方便的實現一鍵程序燒錄,這里我稱之為自動ISP。
CH340G上電后DTR#和RTS#都為高電平,在用FlyMcu燒寫軟件時,軟件下方選擇“DTR的低電平復位,RTS高電平進BootLoader”。
圖3.3.4
CH340G在實際操作時引腳的變化為“DTR#拉高(軟件DTR低電平),RTS#拉低(軟件RTS高電平)”,即軟件設置和實際情況相反。 畫個時序圖,直觀一些。
圖3.3.5
首先,FlyMcu軟件控制DTR輸出低電平,則DTR#引腳輸出高, 然后RTS置高,則RTS#引腳輸出低,這樣Q3導通,BOOT0被拉高,即實現設置BOOT0為1,同時Q2也會導通,STM32的復位腳被拉低,實現復位。
延時100ms后,FlyMcu軟件控制DTR為高電平,則DTR#引腳輸出低電平,RTS維持高電平,則RTS#引腳繼續為低電平,此時STM32的復位引腳,由于Q2不再導通,變為高電平,STM32結束復位,但是BOOT0還是維持為1,從而進入ISP模式,接著FlyMcu就可以開始連接STM32下載代碼,從而實現自動ISP。
2)注意事項
(1)CH340在剛上電,穩定需要幾秒鐘時間,在此期間,DTR引腳會有兩次或三次變低的情況,這樣會引起單片機上電后復位
兩三次,穩定后不會影響程序運行。若不想讓單片機上電復位好幾次,上電的時候把DTR與RESET斷開即可。
(2)PLC通過485線控制變頻器調速,電腦用USB轉串口連接PLC。用CH340的話,變頻器一旦啟動,電腦端和PLC的通訊很容易中斷,用FT232則無此問題。個人認為穩定性:FT232>PL2303>CH340,這也反映在價格上。
(3)國產類STM32單片機,本人測試過北京兆易創新GD32F103VET6、珠海艾派克APM32F103VCT6、重慶雅特力AT32F403AVGT7,使用FlyMcu軟件,mcuisp軟件會產生各種不適。
評論