本文講述了STM32最小系統及其電路基本原理,在本文中以STM32F103C8T6單片機為例,在下文中以F103簡稱。STM32最小系統是指能夠使STM32正常工作的最基本的電路單元,主要由微控制器、時鐘電路、復位電路、電源電路、下載電路組成。
1、微控制器
STM32其實是對ST(意法半導體)公司生產的32為微控制器的簡稱。STM32更具名稱不同有非常多的版本規格,以STM32F103C8T6為例(命名規則如下圖),它代表的就是ST公司生產的有48或者49個引腳、64kbytes閃存、QFP(方形扁平式)-40封裝、適用溫度范圍在℃-85℃的基礎型主流入門級32位單片機。命名規則圖如圖1所示。
圖1·STM32命名規則
微控制器是一種集成電路,以F103為例,它集成了CPU、GPIO、SPI、UART、IIC等外設,可以滿足市面上絕大多數的電子元器件的控制要求。芯片圖如圖2所示。
圖2·STM32F103C8T6
2、電源電路
本STM32最小系統上的電源電路使用了AMS1117-3.3V模塊,屬于典型的降壓電源電路。將輸入的 5V 電壓進行降壓,最終輸出需要使用的 3.3V 電壓。電源電路如圖3所示。
本電路除了降壓模塊還有三個電容,當電源接入時,其幅值是從0開始的,波動非常大,故加入電容可以起到濾波作用,由電容充放電效應將大波動的直流電轉為小波動的直流電。
圖3·電源電路
3、時鐘電路
STM32最小系統時鐘電路又被稱為“晶振電路”。晶振電路,全稱為晶體震蕩電路,用于產生穩定,準確的頻率信號的電路,它的主要功能是提供精確的時間基準和穩定的系統時鐘。時鐘電路的原理圖如圖4所示。
圖4·時鐘電路
晶振電路一般采用8MHz的高速晶振,也可以是其他的,F103支持的外部高速晶振是4MHz-16MHz,通過倍頻和分頻為單片機提供系統時鐘,為芯片的各個模塊提供運轉動力。圖中的兩個電容為時鐘電路的負載電容,可以讓晶振提供更加穩定的震蕩頻率,它與晶振一起形成一個并聯諧振電路,可以對輸出信號進行微調,同時提供相位補償。一般來說8MHz的晶振通常采用12pF或者20pF的電容作為負載電容。
4、復位電路
STM32有三種復位方式:電源復位、系統復位和后備域復位。在STM32最小系統中,復位電路就是使單片機產生電源復位的電路。電路圖如圖5所示。STM32單片機運行過程中只要NSRT引腳輸入低電平,芯片就會復位。如圖5,芯片上電后,NSRT引腳將保持高電平,當KEY1按下時,VCC將接地,此時NRST將會置為低電平,產生復位。電容C1的作用是在單片機上電時產生上電復位,剛上電時C1會進行充電,NRST將會保持低電平,當C1充滿后NRST將變為高電平。
圖5·復位電路
5、下載電路
程序下載電路包括BOOT電路和程序下載接口。
BOOT電路如圖6所示。在單片機上電或復位后,啟動方式有三種:內部FLASH(主閃存存儲器)啟動、內部SRAM啟動、系統存儲器啟動。
圖6·BOOT電路
單片機可以通過設置BOOT0和BOOT1的引腳電平的高低來設置啟動方式。由STM32芯片參考手冊可知,BOOT0和BOOT1的電平高低和啟動方式的對應關系如下圖圖7所示。
圖7·BOOT啟動模式圖
(1)主閃存存儲器啟動
啟動地址:0x08000000 是 STM32 內置的 Flash,一般我們使用 JTAG 或者 SWD 模式下載程序時,就是下載到里,重啟后也直接從這啟動程序。基本上都是采用這種模式。
(2) 系統存儲器啟動
啟動地址:0x1FFF0000從系統存儲器啟動,這種模式啟動的程序功能是由廠家設置的。一般來說,這種啟動方式用的比較少。系統存儲器是芯片內部一塊特定的區域,STM32在出廠時,由ST在這個區域內部預置了一段BootLoader, 也就是我們常說的ISP程序, 這是一塊ROM,出廠后無法修改。一般來說,我們選用這種啟動模式時,是為了從串口下載程序,因為在廠家提供的BootLoader 中,提供了串口下載程序的固件,可以通過這個BootLoader將程序下載到系統的Flash中。但是這個下載方式需要以下步驟:
<1>將BOOT0設置為1,BOOT1設置為0,然后按下復位鍵,這樣才能從系統存儲器啟動BootLoader
<2>最后在BootLoader的幫助下,通過串口下載程序到Flash中
<3>程序下載完成后,又有需要將BOOT0設置為GND,手動復位,這樣,STM32才可以從Flash中啟動可以看到, 利用串口下載程序還是比較的麻煩,需要跳帽跳來跳去的,非常的不注重用戶體驗。
(3) 內置SRAM啟動
啟動地址:0x20000000 內置SRAM,既然是SRAM,自然也就沒有程序存儲的能力了,這個模式一般用于程序調試。假如我只修改了代碼中一個小小的 地方,然后就需要重新擦除整個Flash,比較的費時,可以考慮從這個模式啟動代碼(也就是STM32的內存中),用于快速的程序調試,等程序調試完成后,在將程序下載到SRAM中。
6、總結
在本文中,我們探討了STM32最小系統的基本組成部分及其電路原理。STM32是最常用的32位微控制器之一,廣泛應用于各種嵌入式系統項目中。了解其最小系統的構成有助于開發者構建可靠的硬件平臺,并為進一步的軟件開發打下堅實的基礎。
關鍵要點回顧
1、微控制器(MCU): 最小系統電路的核心,負責處理數據和運行程序;
2、時鐘電路: 提供MCU運行所需的時鐘信號,通常包括晶體振蕩器和相關的電容;
3、電源電路: 為MCU和其他電路提供穩定的電源。可能包括電壓調節器、濾波電容等;
4、復位電路: 確保MCU在上電或需要時能夠正確地啟動和復位;
5、下載電路: 允許程序員將代碼燒錄到MCU中,并在開發過程中進行調試。這通常包括JTAG、SWD、ISP等接口。
結論
通過本文的學習,我們可以了解到構建一個STM32最小系統所需的關鍵組件和技術細節。這些基礎知識不僅對于初學者非常重要,而且對于經驗豐富的開發者來說也是很好的復習和鞏固機會。掌握了這些核心概念之后,開發者可以更加自信地進行STM32相關的項目開發,無論是簡單的原型制作還是復雜的工業控制系統設計。
展望未來
隨著嵌入式系統技術的發展,STM32的應用領域也在不斷擴展。未來,STM32將繼續發揮其在物聯網(IoT)、自動化控制和其他領域的關鍵作用。因此,掌握STM32最小系統的設計原理和實踐技巧對于從事相關工作的工程師們來說至關重要。
最后的建議
在設計STM32最小系統時,請確保考慮到EMC(電磁兼容性)和熱管理問題,以提高系統的穩定性和可靠性。
實踐是檢驗真理的唯一標準,嘗試自己動手構建一個STM32最小系統,這將幫助你更好地理解和掌握這些概念。持續關注STM32的新版本和更新,以便利用最新的功能和優化。
希望本文能幫助你更好地理解和設計STM32最小系統。祝你在未來的項目中取得成功。感謝您的閱讀!