分享一點(diǎn)STM32硬件設(shè)計(jì)的經(jīng)驗(yàn)
聲明:由于下述內(nèi)容不起眼但很重要,所以別的人肯定是不會(huì)寫出來(lái)告訴你的啦。
很多經(jīng)驗(yàn)都是從錯(cuò)誤中總結(jié)出來(lái)的,所以沒有實(shí)踐,哪會(huì)犯錯(cuò),沒有犯錯(cuò),哪來(lái)經(jīng)驗(yàn)。
我曾經(jīng)設(shè)計(jì)了一個(gè)基于STM32的工控板,引出了JTAG調(diào)試接口,當(dāng)我把板子上的電源部分和STM32最小系統(tǒng)部分先焊好以后,先試一下JLINK V8能否順利下載程序,結(jié)果插上JLINK V8以后,JLINK的燈變成了紅色。正常的時(shí)候是綠色。所以我知道這里肯定有問(wèn)題了。
JLINK燈變紅,據(jù)我以前的經(jīng)驗(yàn),一般就是復(fù)位引腳有問(wèn)題。所以我用萬(wàn)用表量了一下復(fù)位引腳的電壓,結(jié)果是0V。
我們看復(fù)位電路,正常情況下,復(fù)位以后,復(fù)位引腳應(yīng)該是高電平(3.3V)才對(duì)。
我首先懷疑電容C11是不是焊的短路了,因?yàn)橘N片電阻相對(duì)直插電阻來(lái)說(shuō)還是很小的,以前也有直接焊短路的時(shí)候。拿萬(wàn)用表量了一下,結(jié)果沒有短路。
然后懷疑復(fù)位引腳是不是在焊接過(guò)程中,直接連了地了?用萬(wàn)用表量了一下,沒有接地。這個(gè)錯(cuò)誤又排除了。
不是以上兩個(gè)焊接電路引起的問(wèn)題,我就開始想,這個(gè)電路和以前設(shè)計(jì)的STM32電路有什么區(qū)別,這個(gè)電路和以前的STM32電路的區(qū)別就是,這個(gè)電路的VDDA引腳和VREF+引腳沒有直接和VDD3.3V相連,而是連接了一個(gè)參考電壓芯片。用的參考電壓芯片是LM4040A30芯片,這是一個(gè)3.0V的參考電壓,連接電路如下:
用萬(wàn)用表量了一下,結(jié)果那個(gè)3.0V的地方是1.76V,遠(yuǎn)遠(yuǎn)低于3.0V,所以我再一次打開了LM4040A30芯片的datasheet,找到了如下一段話。
這段話的意思就是要選擇合適的電阻Rs,不要讓Iz大于15mA,否則就會(huì)燒壞它。也就是穿過(guò)LM4040的電流不能大于15mA,我算了一下我現(xiàn)在用5.1K電阻的話,穿過(guò)LM4040的電流應(yīng)該是連1個(gè)mA都不到,所以我懷疑是不是這個(gè)限流電阻用的太大了,使得電壓基準(zhǔn)芯片工作不正常了。
那就倒算一下吧,假設(shè)現(xiàn)在LM4040A30正常,輸出3.0V,那么Rs的電阻值就應(yīng)該是(3.3V-3.0V)/15mA=20歐姆,也就是說(shuō),只要電阻大于20歐姆就可以保證LM4040不被燒壞,手頭正好有100歐的電阻,所以我如果用100歐的電阻的話,穿過(guò)LM4040的電流就是(3.3V-3.0V)/100歐=3mA。發(fā)生在100電阻上的功率大概就是0.3V乘以0.003安,不到1mW,所以用0805封裝的電阻足夠了,保證不會(huì)燒電阻。
所以我把原來(lái)的5.1K換成了100歐,再次量了一下基準(zhǔn)電壓,變成3.00V了,這時(shí)候,插上JLINK V8,燈也綠了,可以正常下載程序了。
為什么基準(zhǔn)電壓VDDA和VREF+在1.75V時(shí)單片機(jī)不正常?
看了一下STM32單片機(jī)的參考手冊(cè),手冊(cè)上指出,VDDA引腳和VREF+引腳的電源電壓范圍應(yīng)該是2.4~3.6V,所以當(dāng)VDDA引腳電壓不足時(shí),單片機(jī)無(wú)法工作。
另外注意:我的電路中,把VDDA和VREF+連接到了一起,接到了3.0V基準(zhǔn)電壓了。建議,以后再做STM32電路的時(shí)候,把VDDA和其他的VDD連接,只把VREF+和基準(zhǔn)電壓芯片連接。
這就是做STM32電路板的一點(diǎn)經(jīng)驗(yàn),希望對(duì)你有幫助。