STM32單片機最小系統詳解

2021-02-18 嵌入式從0到1

STM32F103RCT6:

STM32F103RCT6是一種嵌入式-微控制器的集成電路(IC),32位 Cortex-M3內核處理器,速度是72MHz,程序存儲器容量是256KB,程序存儲器類型是FLASH,RAM容量是48K,封裝LQFP64。

STM32單片機命名規則:

STM32單片機最小系統:

所謂單片機最小系統,就是讓單片機能夠正常運行,最少且必須的器件所組成的系統。單片機最小系統上電之後,單片機可以正常復位,下載程序,除此之外沒有其他任何功能。在最小系統保證正確的基礎上,可以依次添加其他功能模塊或器件,使之單片機具有實際功能。STM32單片機最小系統包括一個復位電路和一個時鐘電路。如下圖1所示。圖中復位電路使用的是上電復位電路,STM32單片機NRST引腳輸入低電平,則發生復位。

圖1  STM32F103單片機最小系統

電源引腳:

VDD是單片機的數字電源正極,VSS是數字電源負極,共有5個VDD引腳,5個VSS引腳。VDDA是單片機的模擬電源正極,負責給內部的ADC、DAC模塊供電,VSSA是模擬電源負極。還有一個電源引腳,就是VBAT,BAT就是Battery(電池),這個引腳用來連接電池的正極的。STM32帶RTC功能(實時時鐘),所以有VBAT引腳。原理圖上預留了一個CR1220紐扣鋰電池,當主電源供電存在的情況下,由系統中的VCC3.3給VBAT供電;當主電源斷電之後,由CR1220紐扣電池給STM32自帶的RTC模塊供電,從而能夠保證實時時鐘模塊在主電源掉電的情況下還能夠正常工作。但是這樣設計的話,這裡有一個矛盾需要解決。如果VBAT引腳直接與VCC3.3和CR1220連接的話,會存在下面問題:1、當電池電壓高於3.3V,電池就會輸出電流到AMS1117,使得晶片發燙,還會很快消耗電池電量。2、如果電池電壓低於3.3V,AMS1117產生的3.3V,就會給電池充電,而這種CR1220電池是不能夠充電的。為了解決上面問題,我們將VBAT引腳的供電電路設計如下:

D1防止電池的電流流向AMS1117,D2防止AMS1117產生的3.3V流向電池。正常產品設計的時候,每個電源引腳旁邊,最好放置一個0.1uF的電容濾波,用來濾除電源的噪聲雜波。

復位引腳NRST

復位就是重啟。STM32復位引腳是低電平復位,正常工作狀態,復位引腳是高電平。

單片機的置位和復位,其目的都是為了把電路初始化到一個確定狀態。復位時在單片機內部單片機是將存儲設備和一些寄存器裝入生產廠商預設的一個值。一般來說,單片機復位電路的作用是把一個狀態機初始化到一個空的狀態。

     單片機實現上電復位的原理:

當復位電平(低電平)持續兩個機器周期以上時復位有效,系統上電後由於電容的充電,會保持一段時間的低電平來使單片機復位。剛上電,電容兩端電壓為0,即低電平復位,RC電路有個充電曲線(即電容兩端電壓變化曲線),單片機識別外部電平有一個連接電壓,保證rc電路電容電壓充到單片機臨界電壓的時間在兩個機器周期以上就能滿足單片機復位條件;當3.3V電源加到VCC3.3時,RC電路導通,NRST與地的電位差為電容與地的電位差。NRST與地的電位差只有電容充電完畢後才會達到3.3V,所以在電容的充電過程中,給晶片引腳的信號都是低電平。根據RC電路充電方程式V(t)=U+A*e-(t/RC),只要合理的選擇好R跟C的值就可以保證充電時間大於晶片復位所要求的時間。我們一般R選擇10K電阻,C選擇0.1uF電容。

晶振引腳

STM32有兩組晶振,一組用來給單片機提供主時鐘(5:OSC_IN,6:OSC_OUT),主時鐘晶振使用8MHz的晶振(為了程序內部倍頻方便,一般選用8MHz的晶振)。一組用來給RTC提供時鐘(3:OSC32_IN,4:OSC32_OUT),RTC時鐘晶振,需要連接32.768K的晶振,關於為什麼要用32.768KHz,大家可以去百度了解一下哈。實際應用中,如果不用RTC功能的話,RTC的晶振不必連接。STM32的時鐘電路又分為內時鐘和外時鐘兩種模式。外部時鐘是在OSC_IN和OSC_OUT之間加上一個晶振,單片機內部振蕩器便能產生自激震蕩,產生時鐘信號,在晶振的兩側加上20~30pF的瓷片電容起到了微調時鐘頻率的作用,讓頻率更加穩定。內部時鐘是STM32內部有時鐘產生,所以如果不用外部晶振的話,也可以不用連接,內部時鐘是用晶片內部振蕩電路,精度不高,溫漂也較大,不需要外部振蕩器件。

BOOT引腳

STM32有兩個BOOT引腳,分別是BOOT0和BOOT1,這兩個引腳的高低電平,決定了單片機的啟動方式和運行方式。

第一種(BOOT1=X,BOOT0=0)啟動方式是最常用的用戶FLASH啟動。默認啟動方式。第二種(BOOT1=0,BOOT0=1)啟動方式是系統存儲器啟動方式。STM32中自帶的BootLoader( 就是通常說的ISP程序)就是在這種啟動方式中,如果出現程序硬體錯誤的話可以切換BOOT0=1到該模式下重新燒寫Flash即可恢復正常。BootLoader所在區域的內容在晶片出廠後沒有人能夠修改或擦除,即它是一個ROM區。第三種(BOOT1=1,BOOT0=1)啟動方式是STM32內嵌的SRAM啟動。該模式用於調試。

上面就是最小系統的全部內容,當然只有上面的部分還不行,一般最小系統還包括下面幾部分:

 

電源電路:

因為STM32單片機一般都是3.3V供電,而生活中一般常見的都是5V電源(電腦的USB口,手機充電器,移動電源...),所以一般使用AMS1117-3.3V 穩壓電源晶片將5V降壓為3.3V,該晶片的封裝一般為SOT223。

下載電路:

當然除了上面幾部分以為,還需要一個下載電路,STM32的下載方式有如下幾種:(1)串口下載:使用串口下載需要單片機內有相應的程序的支持,而系統存儲器中就放了這麼一段程序,由ST 在生產線上寫入,用於通過可用的串行接口對快閃記憶體存儲器進行重新編程。(在系統存儲器啟動模式下下載,因為在廠家提供的BootLoader中,提供了串口下載程序的固件,可以通過這個BootLoader將程序下載到系統的Flash中。程序燒錄在FLASH)。注意:使用此種方式需要BOOT0=1,即需要有外部電路支持才可以實現串口下載。推薦使用SWD模式下載,SWD模式只需要三個引腳(GND、SWCLK、SWDIO)即可實現程序的下載功能。

各位有什麼想要了解的軟硬體知識,各種模塊,可以留言給我,咱們一起玩轉哈。

相關焦點

  • ARM、單片機、stm32、51單片機、和開發板的概念、區別及包含關係
    為了滿足消費電子的需求而改進arm7,代號為cortex -m,這樣st或nxp等產家以這個新的核心來加自己的外設就得到了stm32或lpc系列的單片機了。可以清楚得到stm32是基於ARM Cortex-M3內核的,但不屬於ARM。因為ARM公司只提供了處理器,st(意法半導體)還有nxp(恩智浦半導體)廠家以此內核為核心添加外設得到了stm32或lpc系列單片機。
  • 深入分析STM32單片機的RAM和FLASH
    最近在一個問答社區回答了一個問題,關於單片機存儲器的,於是有了想專門寫一篇關於單片機存儲器的想法。
  • STM32單片機的Bootloader詳解(1)
    本質上IAP和單片機內部固化的ISP程序一樣,都是負責幫你把新程序下進單片機的FLASH。那為什麼還需要IAP呢?        舉個例子,ISP的啟動一般需要硬體控制BOOT0,因此對於加USB轉TTL和三極體電容電阻等組成自動下載電路這種燒錢做法一般做產品肯定是不提倡的。
  • 如何在keil中仿真stm32單片機
    一、序言在學習51單片機的時候,經常會使用keil+protues的方式來做一些實驗,這樣的模擬仿真為我們節省了很多硬體和時間成本
  • STM32最小系統板分享
    STM32系列基於專為要求高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex-M3內核,其中STM32F系列有:STM32F103"增強型」系列STM32F101「基本型」系列增強型系列時鐘頻率達到72MHz,是同類產品中性能最高的產品我畫的這個板就是以STM32F103ZET6為核心晶片做的最小系統板;
  • 手把手教學《60天學會stm32單片機培訓班》今日更新知識點260+
    以下200+知識點,僅僅是《60天學會stm32單片機培訓班》眾多知識點中的一小部分,還有一大批知識點我們會持續更新,敬請關注。1.什麼是單片機?有什麼用?都用在我們生活中什麼地方?2.什麼是掩膜單片機?究竟可以做到多小?3.單片機有什麼特點?價格?功耗等等。。。4.單片機由什麼組成?5.什麼是外設?
  • 詳解STM32單片機的堆棧
    學習STM32單
  • STM32單片機輕鬆入門與實踐 — 暢學單片機
    本課程是STM32單片機學習者從入門到深入的一套經典視頻教程,以初學者為對象,從零開始手把手教你學習單片機,循序漸進地基於理論講解並結合實驗項目實戰開發,講解當前最熱門的STM32單片機的C程序設計!
  • STM32 與 Arduino
    stm32duino 對常見的 MCU 做了廣泛的支持,開發板之間的不同大都體現在 MCU 的外圍電路上,去複製同 MCU 的文件夾改動量會小很多。2、讓加入的自定義配置與 Arduino 關聯。下面以 ATMega 單片機(Arduino 原生支持的單片機)為例,說下怎樣在 VSCode 下開發 Arduino(以 Ubuntu 系統為例)。下面的截圖裡看到了 platformio,因為 Sugar 在 Ubuntu 上的 VSCode 下同時裝了 platformio 和 Arduino 兩個組件。但使用的是 Arduino 與 platformio 無關。
  • STM32_IAP詳解(有代碼,有上位機)
    Iap,全名為in applacation programming,即在應用編程,與之相對應的叫做isp,in system programming,在系統編程,兩者的不同是isp需要依靠燒寫器在單片機復位離線的情況下編程,需要人工的幹預,而iap則是用戶自己的程序在運行過程中對User Flash 的部分區域進行燒寫,目的是為了在產品發布後可以方便地通過預留的通信口對產品中的固件程序進行更新升級
  • 預熱 | 萬眾期待的單片機、Linux二合一的STM32MP157開發板亮相
    均支持於100ask_stm32mp157_pro硬體開發平臺,廣泛應用於生活的各種智能場景。百問網STM32mp157開發板GUI演示視頻我們為什麼要做STM32mp157開發板?從教學角度看硬體描述Cortex M4跑單片機、RTOS,用keil開發,跟STM32F103一模一樣Cortex A7*2跑Linux,可以引入SMP的知識,以覆蓋單CPU系統的知識GPU可以實現更炫的GUI效果,可以跑一些AI算法從做產品角度看硬體描述MPU+MCU需要單片機+Linux的場合,用STM32MP157就可以實現GPU可以實現更炫的GUI效果,可以跑一些AI算法性價比高作為多核異構的晶片
  • STM32單片機的Bootloader詳解(2)
    總不能需要編輯個文檔就買一套Word吧,總不能學個單片機花數十萬買MDK和AD授權吧。一定程度上這些也是大多數人需求。這裡關於故意引導用戶習慣養成、低價&盜版擠壓壟斷軟體市場壟斷等等的話題我們就不談了。        那麼如果你不想你做的產品輕輕鬆鬆被人家複製,你就需要花一點功夫了。
  • 單片機最小系統電路解析
    比如我們使用STC89C52RC單片機的時候,我們找到他的手冊的11頁,第二個選項,工作電壓:5.5V-3.4V(5V單片機),這個地方就說明我們這個單片機正常的工作電壓是個範圍值,只要電源VCC在5.5V到3.4V之間都可以正常工作,電壓超過5.5V是絕對不允許的,會燒壞單片機,電壓如果低於3.4V,單片機不會損壞,但是也不能正常工作。
  • 這樣學習STM32單片機,從菜鳥到牛人很簡單!
    我想說,為了學習單片機而去學習單片機的思路不對。你問,如何系統地入門學習stm32呢?
  • STM32單片機和51單片機有何區別?
    (數據存儲-內存)、ROM(程序存儲)、輸入輸出設備(串口、並口等)和中斷系統處於同一晶片的器件。而單片機將這些都集中在了一個晶片上。應用最廣泛的8位單片機,當然也是初學者們最容易上手學習的單片機。最早由Intel推出,由於其典型的結構和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富的指令系統,堪稱為一代「經典」,為以後的其它單片機的發展奠定了基礎。
  • 最簡單DIY基於藍牙、51單片機和舵機的鋼鐵愛國者機關槍控制器
    在上一期免費51單片機和舵機開源項目中:最簡單DIY基於51單片機的舵機控制器,我簡述了舵機的控制原理和分享一個舵機控制的程序當時的源碼還是借鑑了網上一些相關的資源。所以就直接免費了。那麼這次源碼進行了大幅度的升級,用52單片機定時器0輸出兩路PWM波來控制兩個自由度的舵機,用定時器1組成波特率發生器控制串口藍牙,加上鐳射雷射模塊,代碼寫得非常精簡和奇妙,最終研製成功了鋼鐵愛國者機關槍控制器。下面是設備的全家福照。
  • 圖解單片機下載程序電路原理之USB轉串口線、CH340、PL2303、MAX232晶片的使用!
  • 五分鐘淺析STM32的五大嵌入式作業系統
    μC/OS-II能管理64個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和擴展性強等特點。在文件系統的支持方面,由於μC/OS-II是面向中小型嵌入式系統的,即使包含全部功能,編譯後內核也不到10 KB,所以系統本身並沒有提供對文件系統的支持。
  • STM32最小系統板教程第一章|開發板資源介紹
    本講知識點:STM32簡介、板載資源簡介本章主要向大家介紹我們的實驗平臺:TJ-STM32F103-Micro最小系統板這款小開發板是基於嵌入式教學西安天際智聯信息技術有限公司推出的產品,此前我們推出的DragonFly四旋翼飛行器教學平臺受到了高校學生和同行的高度好評。於是我們決定推出這款精簡的最小系統板:TJ-STM32F103-Micro開發板,來幫助更多初學者入門STM32。
  • STM32通過rosserial接入ROS通訊開發
    我的環境介紹:PC:使用的是Ubuntu 16-04 ROS-Kinetic嵌入式端:STM32F071ROS機器人作業系統是用於創建機器人系統的功能強大的平臺,其中包括開發項目所需的一切,從最簡單的軟體組件(稱為「節點」)和數據交換協議到真正的涼亭機器人平臺的仿真環境