經(jīng)常使用STM32開發(fā)的工程師對于它的開發(fā)環(huán)境的最小系統(tǒng)是必須要有所了解的,特別是硬件工程師在設(shè)計硬件的時候?qū)@個最小系統(tǒng)就要更加的深入了解了,如果最小系統(tǒng)的搭建都有問題,那以后的使用很難避免不出現(xiàn)問題。
話不多說,進入正題說說STM32的最小系統(tǒng)的基本組成!
1、STM32最小系統(tǒng)硬件組成包括哪些?
STM32的最小系統(tǒng)的硬件組成主要有:電源電路、復(fù)位電路、時鐘電路、調(diào)試接口電路、啟動電路。
電源 : 一般是3.3V輸入作為STM32芯片的工作電壓,實際中很多采用LDO將5V轉(zhuǎn)換為3.3V進行供電,另外電路上還要加多個0.01uf去耦電容對輸入電壓進行濾波,穩(wěn)定輸入電壓。
復(fù)位:STM32中有三種復(fù)位方式,分別為:上電復(fù)位、手動復(fù)位、程序自動復(fù)位。 上電復(fù)位是指芯片根據(jù)外部搭建的復(fù)位電路,在上電的時候進行的復(fù)位; 手動復(fù)位是指通過外部的復(fù)位電路自己手動進行復(fù)位; 程序復(fù)位是在軟件中通過代碼對STM32芯片進行的復(fù)位。
2、復(fù)位電路
STM32單片機的復(fù)位電路的作用是在進行復(fù)位的時候,讓單片機的程序計數(shù)器回到0000H這個地址,從而讓程序從開始處重新執(zhí)行。
復(fù)位操作還會將一些寄存器、存儲單元的值重新設(shè)置為初始的設(shè)定值,讓單片機重新開始執(zhí)行。
STM32單片機的三種復(fù)位方式的區(qū)別:
1)上電復(fù)位:是在單片機上電啟動的時候進行復(fù)位的,不需要人為干預(yù),自動完成復(fù)位;
2)手動復(fù)位:通過外部的復(fù)位電路手動進行復(fù)位,比如按鈕、開關(guān)之類的;
3)程序復(fù)位:通過程序內(nèi)部的程序進行復(fù)位,一般有內(nèi)核復(fù)位函數(shù)、看門狗復(fù)位等的軟件復(fù)位方式。
(1)上電復(fù)位:
上電復(fù)位是需要通過外部的電容實現(xiàn)的。
在上圖的電路中,上電復(fù)位電路由VCC、C1、R2組成。
假設(shè)單片機在RESET端輸入高電平時進行復(fù)位,那么上電復(fù)位的原理為:在上電瞬間,C1電容的充電電流很大,電容相當(dāng)于短路,RESET出現(xiàn)短暫的高電平,這個高電平會對單片機進行復(fù)位。 當(dāng)C1電容兩端的電壓達到VCC時,電容C1充滿電就相當(dāng)于斷路,RESET端變?yōu)榈碗娖?,單片機開始運行。 由此,即實現(xiàn)了自動上電復(fù)位。
有一個問題是需要注意的:自動復(fù)位電路中,RESET端的高電平持續(xù)的時間要維持在一定的時間才能完成復(fù)位,這個時間一般要求1ms左右。
高電平持續(xù)時間由上電復(fù)位電路中的電阻和電容共同決定,計算公式如下:
t = 1.1RC(電平持續(xù)時間的計算公式)
在上圖中,高電平的持續(xù)時間為:t = 1.110K0.1uF = 1.1ms,需求的高電平復(fù)位信號持續(xù)時間大于1ms,可以實現(xiàn)復(fù)位操作。
(2)硬件復(fù)位:
硬件復(fù)位還是可以參照圖:
按鍵S5按下時,RESET端為高電平,從而對單片機進行復(fù)位,松開按鍵S5單片機正常運行。
3、時鐘(晶振)電路
3.1、時鐘電路介紹
一個簡單的時鐘電路如下:
時鐘電路的組成班闊: 晶振+起振電容 +反饋電阻(MΩ級)
晶振:一般選擇8MHZ 方便倍頻。 常見的晶振有:
有源:更穩(wěn)定 成本更高 需要接電源供電 不需要外圍電路 3腳單線輸出
無源:精度基本夠 方便靈活 便宜
這兩者最大的區(qū)別:是否需要單獨供電。
無源晶振不需要供電,但是需要外接起振電容; 有源晶振是需要提供工作電壓的。
(1)晶振兩端的電容的作用:
1、使晶振兩端的等效電容等于或接近于負載電容;
2、起到一定的濾波的作用,濾除晶振波形中的高頻雜波;
該起振電容的大小一般選擇10~40pF,當(dāng)然根據(jù)不同的單片機使用手冊可以具體查閱,如果手冊上沒有說明,一般選擇20pF、30pF即可,這是個經(jīng)驗值。
調(diào)整電容可微調(diào)振蕩頻率:
一般情況下,增大電容會使振蕩頻率下降,而減小電容會使振蕩頻率升高;
()反饋電阻: 1M 負反饋同時也起到限流的作用。
晶振電路主要分析如下:
1、連接晶振的芯片端內(nèi)部是一個線性運算放大器,將輸入進行反向180度輸出,晶振處的負載電容電阻組成的網(wǎng)絡(luò)提供另外180度的相移; 整個環(huán)路的相移360度,滿足振蕩的相位條件;
2、 晶振輸入輸出連接的電阻作用是產(chǎn)生負反饋,保證放大器工作在高增益的線性區(qū),一般在M歐級;
3、 限流的作用,防止反向器輸出對晶振過驅(qū)動,損壞晶振,有的晶振不需要是因為把這個電阻已經(jīng)集成到了晶振里面。
3.2、時鐘電路應(yīng)用
STM32的時鐘樹:
三種不同的時鐘源可被用來驅(qū)動系統(tǒng)時鐘(SYSCLK):
1)HSI振蕩器時鐘
2)HSE振蕩器時鐘
3)PLL時鐘
這些設(shè)備有以下2種二級時鐘源:
1)40kHz低速內(nèi)部RC,可以用于驅(qū)動獨立看門狗和通過程序選擇驅(qū)動RTC。 RTC用于從停機/待機模式下自動喚醒系統(tǒng)。
2)32.768kHz低速外部晶體也可用來通過程序選擇驅(qū)動RTC(RTCCLK)。
當(dāng)不被使用時,任一個時鐘源都可被獨立地啟動或關(guān)閉,由此優(yōu)化系統(tǒng)功耗。
3.2.1、STM32的3個內(nèi)部時鐘
HSI時鐘:
HSI時鐘信號由內(nèi)部8MHz的RC振蕩器產(chǎn)生,可直接作為系統(tǒng)時鐘或在2分頻后作為PLL輸入。 HSI RC振蕩器能夠在不需要任何外部器件的條件下提供系統(tǒng)時鐘。 它的啟動時間比HSE晶體振蕩器短。 然而,即使在校準(zhǔn)之后它的時鐘頻率精度仍較差。 當(dāng)HSI被用于作為PLL時鐘的輸入時,系統(tǒng)時鐘能得到的最大頻率是64MHz 。
LSI時鐘: LSI RC擔(dān)當(dāng)一個低功耗時鐘源的角色,它可以在停機和待機模式下保持運行,為獨立看門狗和自動喚醒單元提供時鐘。 LSI時鐘頻率大約40kHz(在30kHz和60kHz之間)。
PLL時鐘: 內(nèi)部PLL可以用來倍頻HSI RC的輸出時鐘或HSE晶體輸出時鐘。
3.2.2、兩個外部時鐘
HSE時鐘: 高速外部時鐘信號(HSE)由以下兩種時鐘源產(chǎn)生:
1)HSE外部晶體/陶瓷諧振器
2)HSE用戶外部時鐘
為減少時鐘輸出的失真和縮短啟動穩(wěn)定時間,晶體/陶瓷諧振器和負載電容器必須盡可能地靠近振蕩器引腳。 負載電容值必須根據(jù)所選擇的振蕩器來調(diào)整。
LSE時鐘: LSE晶體是一個32.768kHz的低速外部晶體或陶瓷諧振器。 它為實時時鐘或者其他定時功能提供一個低功耗且精確的時鐘源。
4、啟動(BOOT)電路
STM32芯片的啟動方式是可以選擇的,方式的選擇通過啟動模式選擇端口(BOOT)進行選擇,有BOOT(B1)和BOOT2(B2)兩種選擇,啟動模式的選擇方式如下圖所示:
STM32三種啟動模式對應(yīng)的存儲介質(zhì)均是芯片內(nèi)置的,它們是:
1)用戶閃存 = 芯片內(nèi)置的Flash。
2)SRAM = 芯片內(nèi)置的RAM區(qū),就是內(nèi)存啦。
3)系統(tǒng)存儲器 = 芯片內(nèi)部一塊特定的區(qū)域,芯片出廠時在這個區(qū)域預(yù)置了一段Bootloader,就是通常說的ISP程序。 這個區(qū)域的內(nèi)容在芯片出廠后沒有人能夠修改或擦除,即它是一個ROM區(qū),它是使用USART1作為通信口。
5、調(diào)試、下載電路
STM32有兩種調(diào)試接口,JTAG為5針, SWD為2線串行(一共四線),下載電路除了前面兩種還有串口下載、ISP下載。
比如常用的JTAG程序下載、調(diào)試電路:
評論