應用原理;
STM32F103系列單片機在使用串口進行編程的時候利用的是芯片自身的自舉程序實現(xiàn)的。
當Boot0 = 1,Boot1 = 0的時候開始執(zhí)行自舉程序,當開始執(zhí)行自舉程序的時候單片機的外設將按照如下圖進行操作。此時USART的通信速率是自適應的(此處建議波特率<=115200)。同時開啟看門狗,可以使用串口一進行數(shù)據(jù)交互。
如下圖所示,為自舉程序運行后的流程圖,通過檢測開始幀0x7f判斷是否開始數(shù)據(jù)傳輸,當開始的時候通過關斷所有的中斷源,之后配置串口,之后開始進入循環(huán)接收代碼。
在某些單片機的上具有雙內存區(qū)的情況,這種情況是可以在運行的軟件中直接設置BFB2的標志位進行運行代碼的切換的。但是這次使用的STM32F103RCT6并不具備這些功能。
下表展示了在115200波特率下使用自動波特率的情況下的波特率誤差的范圍,若程序出現(xiàn)不能正常下載的情況下,可以通過降低波特率來解決該問題。
在知道芯片的引導程序進入模式后,通過串口芯片自動配置BOOT0引腳和復位單片機即可實現(xiàn)自動化的程序升級。
在升級上使用CH340G芯片將USB轉換為串口,同時通過RTS引腳和DTR引腳控制NRST/BOOT0引腳實現(xiàn)程序升級。使用FlyMCU軟件對程序進行升級。在CH340芯片上RTS引腳默認為高電平,DTR引腳默認不輸出為高阻狀態(tài)。
其中一種方式如下圖所示,芯片使用5V供電,通過三極管進行電平轉換實現(xiàn)自動程序升級。
另一種是如下圖所示,使用3,3v供電,將RTS\DTR引腳直接連接到單片機的NRST/BOOT0引腳上。
如下圖所示,在FlyMcu軟件上通過選擇RTS低電平復位、DTR高電平進BootLoader進行程序編寫即可。