經(jīng)常看到很多51單片機(jī)和STM32的開(kāi)發(fā)板上都會(huì)設(shè)計(jì)有“復(fù)位電路”
如下圖常見(jiàn)的:
圖1
圖2
以上圖1和圖2是51和32系統(tǒng)中最常用的復(fù)位電路,思考問(wèn)題如下:
(1)就這幾個(gè)器件,怎么實(shí)現(xiàn)復(fù)位的?按鍵的作用是啥?
(2)圖中的電阻電容大小怎么來(lái)的?
在大學(xué)時(shí),核桃第一次見(jiàn)到復(fù)位電路的時(shí)候:
先記住一點(diǎn):圖1是51單片機(jī)上用的復(fù)位電路(高電平復(fù)位),圖2是STM32上用的復(fù)位電路(低電平復(fù)位)。
那都是復(fù)位電路,為什么不一樣?
我們先看51單片機(jī)和STM32的手冊(cè),如下圖3和圖4所示:
圖3
圖4
從圖3和圖4很明顯可以看出,STC89C51單片機(jī)是高電平復(fù)位的,STM32是低電平復(fù)位的,至于時(shí)間我們后面再算,我們暫時(shí)先不看,我們先處理第一個(gè)問(wèn)題。
一:這幾個(gè)器件怎么實(shí)現(xiàn)復(fù)位的
(1)STC89C51
(2)STM32
二:電阻電容的大小怎么選?
由圖1和圖2可以看出其實(shí)復(fù)位電路就是RC充放電電路
根據(jù)RC的時(shí)間常數(shù):
τ=RC (τ發(fā)音tao第四聲)
RC電路的充電放電公式如下:
其中Vt表示t時(shí)刻電容上的電壓
V0為電容初始狀態(tài)的電壓值
V1為電容充滿電的電壓值或者放完的電壓值
E 為電源電壓;
當(dāng)t= 1RC時(shí),電容電壓=0.63V1;
當(dāng)t= 2RC時(shí),電容電壓=0.86V1;
當(dāng)t= 3RC時(shí),電容電壓=0.90V1;
當(dāng)t= 4RC時(shí),電容電壓=0.98V1;
當(dāng)t= 5RC時(shí),電容電壓=0.99V1;
經(jīng)過(guò)3~5個(gè)RC后,充電過(guò)程基本結(jié)束。
在充電時(shí),電源電壓E通過(guò)電阻R向C進(jìn)行充電(電容的初始值V0=0,V1=E)則可得到充電公式:
在放電時(shí),初始值電壓為E通過(guò)R進(jìn)行放電,此時(shí)V0=E,V1=0。則可得到放電公式:
51單片機(jī)復(fù)位條件:RST高電平持續(xù)24個(gè)時(shí)鐘加10us,約為12us(按照單片機(jī)的晶振頻率12MHZ來(lái)計(jì)算的話一個(gè)時(shí)鐘為1/12us,24個(gè)時(shí)鐘就是2us),看51單片機(jī)的手冊(cè)也可知,如下圖3:
51單片機(jī)復(fù)位電壓:大于3V,那也就是說(shuō)上電瞬間RST的電壓大于3V,且繼續(xù)時(shí)間大于12us就行,那這個(gè)12us就是RC電路需要的充放電時(shí)間
我們根據(jù)圖1可知RST電壓等于電阻R1的電壓VR,而VR我們需要3V以上才能保證單片機(jī)正常復(fù)位,所以我們只需要求C1的電壓被充電到超過(guò)2V的這段時(shí)間即可,說(shuō)白了就是VR(RST的電壓)從5V降到3V以下而且滿足時(shí)間12us即可。
圖1
我們用圖1中的C1=10uF,R1=10K,來(lái)計(jì)算一下:
RC=10uF*10K=0.1s 我們套用公式:T=RCln(V1/V1-Vt)
V1=5V,Vt=2V。RC=0.1s 可以得到:
T=0.1ln(5/5-2)=51ms 遠(yuǎn)遠(yuǎn)超過(guò)12us 滿足單片機(jī)復(fù)位條件。
所以電阻R=10K,電容C=10uF,是完全滿足51單片機(jī)復(fù)位條件的,也可以從手冊(cè)中看出這個(gè)取值是沒(méi)有問(wèn)題的,如下圖所示:
好了,學(xué)會(huì)計(jì)算51單片機(jī)的復(fù)位電路電阻電容的取值,相信小伙伴們對(duì)于STM32的復(fù)位電路的取值也是能計(jì)算出來(lái)的,在此就不在重復(fù)計(jì)算過(guò)程了,小伙們可以嘗試計(jì)算一下。
最后,再看另一個(gè)復(fù)位電路,如下:
上圖中加上D1的作用是什么呢?這個(gè)就留給小伙伴們思考了,知道原因的小伙伴可以評(píng)論區(qū)聊聊
好了,今天就先寫(xiě)到這吧!