前不久有朋友大概問了這么一個(gè)問題:博主,在復(fù)雜的環(huán)境下,干擾有點(diǎn)大,有必要外接一個(gè)復(fù)位IC嗎?
1 寫在前面
我們都知道在復(fù)雜環(huán)境,比如一些工廠,特別是在有大型機(jī)電設(shè)備的環(huán)境下,我們的電源信號(hào)、通信信號(hào)都有可能受到干擾。
那么,在這種情況下,我們軟件和硬件都有必要做一定預(yù)防處理。
除了需要外接復(fù)位IC,同時(shí),為了系統(tǒng)能穩(wěn)定長(zhǎng)期的工作,我們可能還有必要添加看門狗。
本文就圍繞復(fù)位IC、看門狗展開相關(guān)內(nèi)容的講解。
2
MCU電路為什么要使用復(fù)位芯片?
STM32都有一個(gè)最低工作電壓(比如1.8V),當(dāng)電源電壓跌落到低于MCU所要求的最低值時(shí),MCU工作可能發(fā)生混亂,造成程序跑飛,引起整機(jī)死機(jī)、誤動(dòng)作等現(xiàn)象。
使用復(fù)位IC的原理是通過確定的電壓值(閾值)啟動(dòng)復(fù)位操作,同時(shí)排除瞬間干擾的影響,又有防止MCU在電源啟動(dòng)和關(guān)閉期間的誤操作,保證數(shù)據(jù)安全。
3
看門狗設(shè)計(jì)和復(fù)位
STM32具有IWDG獨(dú)立看門狗、WWDG窗口看門狗兩種類型的看門狗。
獨(dú)立看門狗由專用的低速時(shí)鐘(LSI)驅(qū)動(dòng),即使主時(shí)鐘發(fā)生故障它也仍然有效。而窗口看門狗由從APB1時(shí)鐘分頻后得到的時(shí)鐘驅(qū)動(dòng),通過可配置的時(shí)間窗口來檢測(cè)應(yīng)用程序非正常的過遲或過早的操作。
看門狗復(fù)位就是超過一定時(shí)間沒有喂狗,看門狗就會(huì)發(fā)出一個(gè)復(fù)位信號(hào)。
4
看門狗和復(fù)位IC同時(shí)存在的注意事項(xiàng)
之前有工程師遇到一個(gè)問題:STM32外接了復(fù)位IC,發(fā)現(xiàn)自己的看門狗不起作用,也就是說看門狗不能復(fù)位。
這個(gè)問題可能很少有人遇到過,我這里就先給大家講講原因,避免以后你以后入坑。
想要明白這里面原因,就需要對(duì)復(fù)位電路結(jié)構(gòu)和原理做一定的了解。
1.STM32復(fù)位
1. NRST引腳上的低電平(外部復(fù)位)
2. 窗口看門狗計(jì)數(shù)終止(WWDG復(fù)位)
3. 獨(dú)立看門狗計(jì)數(shù)終止(IWDG復(fù)位)
4. 軟件復(fù)位(SW復(fù)位)
5. 低功耗管理復(fù)位
STM32復(fù)位內(nèi)部結(jié)構(gòu)圖
出現(xiàn)問題的電路圖如下:
如果外界了復(fù)位IC,這里就需要大家認(rèn)真看上面兩圖。
一個(gè)重要的信息:外接復(fù)位IC驅(qū)動(dòng)類型為 CMOS 推拉型驅(qū)動(dòng)。
相信大家看到這里已經(jīng)明白了為什么。其實(shí),解決辦法就是:將電路中0Ω電阻改為 1K 電阻。
本文就講到這里,希望你以后遇到類似問題,不再有犯這種低級(jí)的錯(cuò)誤。
推薦閱讀與復(fù)位相關(guān)的文章:
1.STM32片上外設(shè)時(shí)鐘使能、失能和復(fù)位的區(qū)別
2.STM32復(fù)位類型/來源
3.有一種修飾符能使變量在處理器復(fù)位而不被初始化
4.STM32內(nèi)核復(fù)位與系統(tǒng)復(fù)位區(qū)別及應(yīng)用