最近做stm32項目,糾結過其啟動方式。
看到篇不錯的文章,轉載一下。原文格式不太好,內容也有很多奇怪的地方(尤其是第二篇,就先認為原文是原創(chuàng),只是作者的思路我不懂吧),都一一刪改。想看原文的朋友鏈接如下:
http://www.ithao123.cn/content-3065243.html Duanxx的STM32學習: 啟動模式,BOOT0和BOOT1詳解
http://bluefish.blog.51cto.com/214870/1239098 上拉電阻與下拉電阻的作用
所謂啟動,一般來說就是指我們下好程序后,重啟芯片時,SYSCLK的第4個上升沿,BOOT引腳的值將被鎖存。用戶可以通過設置BOOT1和BOOT0引腳的狀態(tài),來選擇在復位后的啟動模式。
Main Flash memory是STM32內置的Flash,一般我們使用JTAG或者SWD模式下載程序時,就是下載到這個里面,重啟后也直接從這啟動程序。
System memory從系統(tǒng)存儲器啟動,這種模式啟動的程序功能是由廠家設置的。一般來說,這種啟動方式用的比較少。系統(tǒng)存儲器是芯片內部一塊特定的區(qū)域,STM32在出廠時,由ST在這個區(qū)域內部預置了一段BootLoader,也就是我們常說的ISP程序,這是一塊ROM,出廠后無法修改。
一般來說,我們選用這種啟動模式時,是為了從串口下載程序,因為在廠家提供的BootLoader中,提供了串口下載程序的固件,可以通過這個BootLoader將程序下載到系統(tǒng)的Flash中。但是這個下載方式需要以下步驟:
Step1:將BOOT0設置為1,BOOT1設置為0,然后按下復位鍵,這樣才能從系統(tǒng)存儲器啟動BootLoader
Step2:最后在BootLoader的幫助下,通過串口下載程序到Flash中
Step3:程序下載完成后,又有需要將BOOT0設置為GND,手動復位,這樣,STM32才可以從Flash中啟動
可以看到,利用串口下載程序還是比較的麻煩,需要跳帽跳來跳去的,非常的不注重用戶體驗。
Embedded SRAM 內置SRAM,既然是SRAM,自然也就沒有程序存儲的能力了,這個模式一般用于程序調試。
假如我只修改了代碼中一個小小的地方,然后就需要重新擦除整個Flash,比較的費時,可以考慮從這個模式啟動代碼(也就是STM32的內存中),用于快速的程序調試,等程序調試完成后,在將程序下載到SRAM中。
因此,比較常見的選擇方式是BOOT0接地,當然啦,如果自己畫stm32系統(tǒng)板的話,最好也要留下其他兩個啟動方式。對于大型程序使用SRAM進行調試還是很有必要的。
下面講一下上拉電阻與下拉電阻的區(qū)別:
上拉電阻就是把不確定的信號通過一個電阻鉗位在高電平,此電阻還起到限流的作用。同理,下拉電阻是把不確定的信號鉗位在低電平。上拉電阻是指器件的輸入電流,而下拉指的是輸出電流。
那么在什么時候使用上、下拉電阻呢?
1、當TTL電路驅動CMOS電路時,如果TTL電路輸出的高電平低于CMOS電路的最低高電平(一般為3.5V),這時就需要在TTL的輸出端接上拉電阻,以提高輸出高電平的值。
2、OC門電路必須加上拉電阻,以提高輸出的搞電平值。
3、為加大輸出引腳的驅動能力,有的單片機管腳上也常使用上拉電阻。
4、在CMOS芯片上,為了防止靜電造成損壞,不用的管腳不能懸空,一般接上拉電阻降低輸入阻抗,提供泄荷通路。
5、芯片的管腳加上拉電阻來提高輸出電平,從而提高芯片輸入信號的噪聲容限,增強抗干擾能力。
6、提高總線的抗電磁干擾能力。管腳懸空就比較容易接受外界的電磁干擾。
7、長線傳輸中電阻不匹配容易引起反射波干擾,加上下拉電阻是電阻匹配,有效的抑制反射波干擾。
另外,上拉電阻阻值的選擇原則包括:
1、從節(jié)約功耗及芯片的灌電流能力考慮應當足夠大;電阻大,電流小。
2、從確保足夠的驅動電流考慮應當足夠??;電阻小,電流大。
3、對于高速電路,過大的上拉電阻可能邊沿變平緩。
綜合考慮以上三點,通常在1k到10k之間選取。對下拉電阻也有類似道理
作為輸入接VCC等于1,接GND=0。
如果按鍵短路(按下)電阻為零,按鍵按下,Out=0,當按鍵斷開,Out=?顯然當Out懸空輸出VCC,這可以用儀表測量。這個VCC就是靠R1“上拉”產(chǎn)生的,顧名思義,R1就是上拉電阻。上拉電阻的大小,取決于輸出接負載的需要,通常邏輯電路對高電平輸出阻抗很大,要求輸出電流很小,在上拉電阻上壓降可以忽略,當然上拉電阻不能太大,否則就不能忽略了。
實際電路還有這種結構
這里的R1也是上拉電阻。
單片機P0口輸出結構一部分電路類似下圖,實際可能用的是場效應管。
當Q1,Q2分別導通,可以對外輸出0和1,當Q1,Q2都不導通時?要想輸出1,咋辦?外接上拉電阻!
為什么要使用拉電阻:
一般作單鍵觸發(fā)使用時,如果IC本身沒有內接電阻,為了使單鍵維持在不被觸發(fā)的狀態(tài)或是觸發(fā)后回到原狀態(tài),必須在IC外部另接一電阻。
這里不再詳細說明
數(shù)字電路有三種狀態(tài):高電平、低電平、和高阻狀態(tài),有些應用場合不希望出現(xiàn)高阻狀態(tài),可以通過上拉電阻或下拉電阻的方式使處于穩(wěn)定狀態(tài),具體視設計要求而定!一般說的是I/O端口,有的可以設置,有的不可以設置,有的是內置,有的是需要外接,I/O端口的輸出類似與一個三極管的C,當C接通過一個電阻和電源連接在一起的時候,該電阻成為上C拉電阻,也就是說,如果該端口正常時為高電平,C通過一個電阻和地連接在一起的時候,該電阻稱為下拉電阻,使該端口平時為低電平。
上拉電阻是用來解決總線驅動能力不足時提供電流的。一般說法是拉電流,下拉電阻是用來吸收電流的,也就是灌電流。
上海意泓電子科技有限責任公司 版權所有 未經(jīng)授權禁止復制或鏡像
CopyRight 2020-2025 www.toastedesign.com All rights reserved 滬ICP備2021005866號