單片機最小系統着實讓人着迷
///插播一條:我自己在今年年初錄制了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閑,帶做畢設,帶學生參加省級或以上比賽///
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複位引腳是低電平複位,正常工作狀态,複位引腳是高電平。
單片機的置位和複位,其目的都是為了把電路初始化到一個确定狀态。複位時在單片機内部單片機是将存儲設備和一些寄存器裝入生産廠商預設的一個值。
一般來說,單片機複位電路的作用是把一個狀态機初始化到一個空的狀态。
單片機實現上電複位的原理:
在複位引腳NRST上外接電容和電阻。
當複位電平(低電平)持續兩個機器周期以上時複位有效,系統上電後由于電容的充電,會保持一段時間的低電平來使單片機複位。
剛上電,電容兩端電壓為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啟動。該模式用于調試。
一般我都是将BOOT0和BOOT1接地。
上面就是最小系統的全部内容,當然隻有上面的部分還不行,一般最小系統還包括下面幾部分:
電源電路:
因為STM32單片機一般都是3.3V供電,而生活中一般常見的都是5V電源(電腦的USB口,手機充電器,移動電源...),所以一般使用AMS1117-3.3V穩壓電源芯片将5V降壓為3.3V,該芯片的封裝一般為SOT223。
下載電路:
當然,除了上面幾部分以為,還需要一個下載電路,STM32的下載方式有如下幾種:
(1)串口下載:使用串口下載需要單片機内有相應的程序的支持,而系統存儲器中就放了這麼一段程序,由ST在生産線上寫入,用于通過可用的串行接口對閃存存儲器進行重新編程。(在系統存儲器啟動模式下下載,因為在廠家提供的BootLoader中,提供了串口下載程序的固件,可以通過這個BootLoader将程序下載到系統的Flash中。程序燒錄在FLASH)。
注意:使用此種方式需要BOOT0=1,即需要有外部電路支持才可以實現串口下載。
(2)JLINK或者STLINK下載
一般我們使用JTAG或者SWD模式下載程序。
推薦使用SWD模式下載,SWD模
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!