STM32F103RCT6:
STM32F103RCT6是一種嵌入式-微控制器的集成電路(IC),32位 Cortex-M3內(nèi)核處理器,速度是72MHz,程序存儲器容量是256KB,程序存儲器類型是FLASH,RAM容量是48K,封裝LQFP64。
STM32單片機命名規(guī)則:
STM32單片機最小系統(tǒng):
所謂單片機最小系統(tǒng),就是讓單片機能夠正常運行,最少且必須的器件所組成的系統(tǒng)。
單片機最小系統(tǒng)上電之后,單片機可以正常復(fù)位,下載程序,除此之外沒有其他任何功能。
在最小系統(tǒng)保證正確的基礎(chǔ)上,可以依次添加其他功能模塊或器件,使之單片機具有實際功能。
STM32單片機最小系統(tǒng)包括一個復(fù)位電路和一個時鐘電路。如下圖1所示。
圖中復(fù)位電路使用的是上電復(fù)位電路,STM32單片機NRST引腳輸入低電平,則發(fā)生復(fù)位。
圖1 STM32F103單片機最小系統(tǒng)
電源引腳:
VDD是單片機的數(shù)字電源正極,VSS是數(shù)字電源負(fù)極,共有5個VDD引腳,5個VSS引腳。VDDA是單片機的模擬電源正極,負(fù)責(zé)給內(nèi)部的ADC、DAC模塊供電,VSSA是模擬電源負(fù)極。
還有一個電源引腳,就是VBAT,BAT就是Battery(電池),這個引腳用來連接電池的正極的。STM32帶RTC功能(實時時鐘),所以有VBAT引腳。
原理圖上預(yù)留了一個CR1220紐扣鋰電池,當(dāng)主電源供電存在的情況下,由系統(tǒng)中的VCC3.3給VBAT供電;
當(dāng)主電源斷電之后,由CR1220紐扣電池給STM32自帶的RTC模塊供電,從而能夠保證實時時鐘模塊在主電源掉電的情況下還能夠正常工作。
但是這樣設(shè)計的話,這里有一個矛盾需要解決。如果VBAT引腳直接與VCC3.3和CR1220連接的話,會存在下面問題:
1、當(dāng)電池電壓高于3.3V,電池就會輸出電流到AMS1117,使得芯片發(fā)燙,還會很快消耗電池電量。
2、如果電池電壓低于3.3V,AMS1117產(chǎn)生的3.3V,就會給電池充電,而這種CR1220電池是不能夠充電的。
為了解決上面問題,我們將VBAT引腳的供電電路設(shè)計如下:
D1防止電池的電流流向AMS1117,D2防止AMS1117產(chǎn)生的3.3V流向電池。
之所以這樣設(shè)計,用的就是“二極管的單向?qū)ㄐ浴薄?/span>
正常產(chǎn)品設(shè)計的時候,每個電源引腳旁邊,最好放置一個0.1uF的電容濾波,用來濾除電源的噪聲雜波。
復(fù)位引腳NRST
復(fù)位就是重啟。STM32復(fù)位引腳是低電平復(fù)位,正常工作狀態(tài),復(fù)位引腳是高電平。
單片機的置位和復(fù)位,其目的都是為了把電路初始化到一個確定狀態(tài)。
復(fù)位時在單片機內(nèi)部單片機是將存儲設(shè)備和一些寄存器裝入生產(chǎn)廠商預(yù)設(shè)的一個值。一般來說,單片機復(fù)位電路的作用是把一個狀態(tài)機初始化到一個空的狀態(tài)。
單片機實現(xiàn)上電復(fù)位的原理:
當(dāng)復(fù)位電平(低電平)持續(xù)兩個機器周期以上時復(fù)位有效,系統(tǒng)上電后由于電容的充電,會保持一段時間的低電平來使單片機復(fù)位。
剛上電,電容兩端電壓為0,即低電平復(fù)位,RC電路有個充電曲線(即電容兩端電壓變化曲線),單片機識別外部電平有一個連接電壓,保證rc電路電容電壓充到單片機臨界電壓的時間在兩個機器周期以上就能滿足單片機復(fù)位條件;
當(dāng)3.3V電源加到VCC3.3時,RC電路導(dǎo)通,NRST與地的電位差為電容與地的電位差。NRST與地的電位差只有電容充電完畢后才會達(dá)到3.3V,所以在電容的充電過程中,給芯片引腳的信號都是低電平。根據(jù)RC電路充電方程式V(t)=U+A*e-(t/RC),只要合理的選擇好R跟C的值就可以保證充電時間大于芯片復(fù)位所要求的時間。我們一般R選擇10K電阻,C選擇0.1uF電容。
晶振引腳
STM
32有兩組晶振,一組用來給單片機提供主時鐘(5:OSC_IN,6:OSC_OUT),主時鐘晶振使用8MHz的晶振(為了程序內(nèi)部倍頻方便,一般選用8MHz的晶振)。
一組用來給RTC提供時鐘(3:OSC32_IN,4:OSC32_OUT),RTC時鐘晶振,需要連接32.768K的晶振,關(guān)于為什么要用32.768KHz,大家可以去百度了解一下哈。
實際應(yīng)用中,如果不用RTC功能的話,RTC的晶振不必連接。
STM32的時鐘電路又分為內(nèi)時鐘和外時鐘兩種模式。
外部時鐘是在OSC_IN和OSC_OUT之間加上一個晶振,單片機內(nèi)部振蕩器便能產(chǎn)生自激震蕩,產(chǎn)生時鐘信號,在晶振的兩側(cè)加上20~30pF的瓷片電容起到了微調(diào)時鐘頻率的作用,讓頻率更加穩(wěn)定。
內(nèi)部時鐘是STM32內(nèi)部有時鐘產(chǎn)生,所以如果不用外部晶振的話,也可以不用連接,內(nèi)部時鐘是用芯片內(nèi)部振蕩電路,精度不高,溫漂也較大,不需要外部振蕩器件。
BOOT引腳
STM32有兩個BOOT引腳,分別是BOOT0和BOOT1,這兩個引腳的高低電平,決定了單片機的啟動方式和運行方式。
第一種(BOOT1=X,BOOT0=0)啟動方式是最常用的用戶FLASH啟動。
默認(rèn)啟動方式
。
第二種(BOOT1=0,BOOT0=1)啟動方式是系統(tǒng)存儲器啟動方式。STM32中自帶的BootLoader( 就是通常說的ISP程序)就是在這種啟動方式中,如果出現(xiàn)程序硬件錯誤的話可以切換BOOT0=1到該模式下重新燒寫Flash即可恢復(fù)正常。BootLoader所在區(qū)域的內(nèi)容在芯片出廠后沒有人能夠修改或擦除,即它是一個ROM區(qū)。
第三種(BOOT1=1,BOOT0=1)啟動方式是STM32內(nèi)嵌的SRAM啟動。該模式用于調(diào)試。
上面就是最小系統(tǒng)的全部內(nèi)容,當(dāng)然只有上面的部分還不行,一般最小系統(tǒng)還包括下面幾部分:
電源電路:
因為STM32單片機一般都是3.3V供電,而生活中一般常見的都是5V電源(電腦的USB口,手機充電器,移動電源...),所以一般使用AMS1117-3.3V 穩(wěn)壓電源芯片將5V降壓為3.3V,該芯片的封裝一般為SOT223。
下載電路:
當(dāng)然除了上面幾部分以為,還需要一個下載電路,STM32的下載方式有如下幾種:
(1)串口下載:使用串口下載需要單片機內(nèi)有相應(yīng)的程序的支持,而系統(tǒng)存儲器中就放了這么一段程序,由ST 在生產(chǎn)線上寫入,用于通過可用的串行接口對閃存存儲器進行重新編程。(在系統(tǒng)存儲器啟動模式下下載,因為在廠家提供的BootLoader中,提供了串口下載程序的固件,可以通過這個BootLoader將程序下載到系統(tǒng)的Flash中。程序燒錄在FLASH)。
注意:使用此種方式需要BOOT0=1,即需要有外部電路支持才可以實現(xiàn)串口下載。
推薦使用SWD模式下載,SWD模式只需要三個引腳(GND、SWCLK、SWDIO)即可實現(xiàn)程序的下載功能。
從今天開始本微信公眾號正式開通了,各位有什么想要了解的軟硬件知識,各種模塊,后臺留言給我,咱們一起玩轉(zhuǎn)哈。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!