1.本工具參考意法半導體應用手冊AN2060“STM32F101xx and STM32F103xx system memory boot mode”制作,STM32 ISP的啟動方式以及相關命令在該手冊中都有詳細說明;
2.本工具使用了HotComm串口組件的初級版本,最終解釋權歸hotpower所有;
3.使用本工具不需要手動復位操作或手動調節boot1和boot0的狀態,因此需要對電路進行相應改造:《若要進入STM32 ISP狀態,必須使 boot0 = 1 boot1 = 0,并使系統重新復位》
本工具在Embest和力源的開發板上進行了測試,改造過程以這兩塊板為例,我們使用串口的DTR信號來操作STM32芯片的復位,使用RTS信號完成對boot0的操作(boot1始終置低電平?。挥捎贒TR/RTS是232電平,即-15V~+15V, 一般在+-10V左右,所以需要對電平進行轉換,可以使用max3232之類的芯片或者直接用二極管加電阻的方法;
以下是hotpower在21ic論壇里的一些說明,這里引用一下:
仔細分析STM32ISP的數據流向,可以找到很規律的關系。
不外乎你攻我守,你守我攻。
但如果攻守失衡,必然帶來死機的結果~~~
現在做到的是如何解脫死機(死鎖)???---只有Reset!!!
現在看到自動ISP的好處和威力了吧---不怕死,就怕死了救不活!!!
自動ISP電路很簡單,俺和小朋友先在EK...忘了板名和廠家了~~~就是那個199的~~~
LPCARM采用DTR->Reset,RTS->ISP. 所以俺就抄襲這個習俗吧~~~但愿NXP的大鼻子別告俺~~~
由于DTR/RTS是232電平,即-15V~+15V, 一般在+-10V左右。
一般采用ST3232芯片實現232/TTL電平轉換,也可用二極管、三極管
但要注意電平的鉗位及限流問題。
ST3232內部有2入2出。
而作為主機,信號方向有3出1入.
即TX(STM32的RXD),DTR(RST),RTS(BOOT0)為輸出信號, RX(STM32的TXD)為輸入信號.
RS232芯片一般只連接RXD/TXD這2個信號,故還剩1入1出未用.
將DTR接入RS232電平轉換芯片,那么STM32的RST就得到了正常的電平控制。
考慮硬件存在線與問題,故:RS232的TTL輸出加一只二極管D1到RST.
再考慮Boot0的連接問題:
由于RTS是232的+-10V,那么肯定不能直接和Boot0連接。
由于Boot0我們可以把它結果100K電阻(廠家標注)上拉至VCC.(STM32的運行狀態)
所以我們只需在Boot0上施加低電平即可設定ISP模式.
故可用二極管D2單向取-10V即可,考慮STM32不能承受負電壓,故可在接二極管D3到地GND(VSS)
來將RTS鉗位在-0.7V.
由于D3的鉗位導致了RTS信號過流,故必須用串接10K左右的電阻R1來限流。
到此自動ISP硬件電路的改造過程以付出D1,D2,D3和R1的“代價”輕松搞定~~~
若搞產品可繼續:在Boot0端再串接二極管D4來消除D3鉗位造成的負壓-0.7V.
在Boot0,RST上各接102(或103,104)電容防止信號誤觸發.
一般DTR/RTS未接PC時都為-10V左右,所以拔掉也不能影響STM32的正常工作.
由于RS232內部實際為反向器,故:
DTR = -10V時RS232輸出高電平到RST,即STM32正常運行狀態.
RTS = -10V時經過二極管的單向導電特性,Boot0為0進入ISP狀態.
但是注意: 如果PC未介入,RTS上不會有電壓信號,故Boot0依然為1
所以RTS的工作重點只是如何拉低Boot0上的電壓!!!
若無PC談何拉低Boot0???
所以PC脫機后該電路也不會影響STM32的原工作狀態的~~~
相反PC ISP完成后(假使還在ISP狀態)再脫機,STM32會自動回到運行狀態~~~
這-----就是自動ISP的"真諦"所在~~~”
<-------------------------------------分割線--------------------------------------------->
4.關于本工具的使用:
基本沒有太多要說的,打開本軟件并連接好板子后,點擊“連接設備”即可,程序會自動完成對芯片相關信息的讀取,如果線路有問題則會報錯。串口調試軟件的使用和其他同類工具相似,這里就不多啰嗦了。
我是在板子上留VCC、RX、TX、GND四針插口,通過RS232適配器與電腦連接,所以板子上MAX232的芯片和DB9的插座都省了,移到RS232適配器上了,我做了幾個適配器,發現ISP成功與否似乎與ISP程序與適配器硬件的搭配關系極大,我這幾個適配器在與AVR芯片通訊是都沒有一點問題,但是用在STM32的ISP上表現就各不一樣了,同樣的條件下,可能A適配器能很好的在力源的ISP程序下工作,卻不能在ST的ISP程序下工作,而B適配器能很好的在ST的ISP程序下工作,卻不能在力源的ISP程序下工作,把萬利和MXCHIP板子上的232適配器信號引出來用結果也相似,能否與ISP程序配合好用似乎是在擲骰子一樣找不出規律,還有ISP時選擇通訊波特率也有關系,我的一個適配器在ST的ISP程序下用57600時怎么也連不上,用115200后就很好用了,另外ISP與軟(USB轉的)硬COM口、芯片本身似乎關系都不大。
您的評論需要經過審核才能顯示
有用
有用
有用