小编废话时间
车上,一个小伙一路抱怨:“活是我干,受表扬的却是组长,最后成果又成经理的,不公平!”他旁边的老人微微一笑:“小伙子,看着你的手表,仔细看,是不是先看时针,再看分针,可运转最多的秒针你看都不看一眼?”——你看,生活就是这样,当年轻人还盯着手表思考人生,睿智的老人已趁机偷到他的钱包。
少说话,多干活,辛苦是有的但总会让别人看到自己的成绩。繁忙的工作中,学习是必不可少的,也许一个很不起眼的问题,就会让人“痛不欲生”。那么来看看如下楼主分享的STM32硬件设计经验吧,欢迎大家一起参与来讨论。
声明:由于下述内容不起眼但很重要,所以别的人肯定是不会写出来告诉你的啦。
很多经验都是从错误中总结出来的,所以没有实践,哪会犯错,没有犯错,哪来经验。
我曾经设计了一个基于STM32的工控板,引出了JTAG调试接口,当我把板子上的电源部分和STM32最小系统部分先焊好以后,先试一下JLINKV8能否顺利下载程序,结果插上JLINKV8以后,JLINK的灯变成了红色。正常的时候是绿色。所以我知道这里肯定有问题了。
JLINK灯变红,据我以前的经验,一般就是复位引脚有问题。所以我用万用表量了一下复位引脚的电压,结果是0V。
我们看复位电路,正常情况下,复位以后,复位引脚应该是高电平(3.3V)才对。
我首先怀疑电容C11是不是焊的短路了,因为贴片电阻相对直插电阻来说还是很小的,以前也有直接焊短路的时候。拿万用表量了一下,结果没有短路。
然后怀疑复位引脚是不是在焊接过程中,直接连了地了?用万用表量了一下,没有接地。这个错误又排除了。
不是以上两个焊接电路引起的问题,我就开始想,这个电路和以前设计的STM32电路有什么区别,这个电路和以前的STM32电路的区别就是,这个电路的VDDA引脚和VREF+引脚没有直接和VDD3.3V相连,而是连接了一个参考电压芯片。用的参考电压芯片是LMA30芯片,这是一个3.0V的
参考电压,连接电路如下:
用万用表量了一下,结果那个3.0V的地方是1.76V,远远低于3.0V,所以我再一次打开了LMA30芯片的datasheet,找到了如下一段话。这段话的意思就是要选择合适的电阻Rs,不要让Iz大于15mA,否则就会烧坏它。也就是穿过LM的电流不能大于15mA,我算了一下我现在用5.1K电阻的话,穿过LM的电流应该是连1个mA都不到,所以我怀疑是不是这个限流电阻用的太大了,使得电压基准芯片工作不正常了。
那就倒算一下吧,假设现在LMA30正常,输出3.0V,那么Rs的电阻值就应该是(3.3V-3.0V)/15mA=20欧姆,也就是说,只要电阻大于20欧姆就可以保证LM不被烧坏,手头正好有欧的电阻,所以我如果用欧的电阻的话,穿过LM的电流就是(3.3V-3.0V)/欧=3mA。发生在电阻上的功率大概就是0.3V乘以0.安,不到1mW,所以用封装的电阻足够了,保证不会烧电阻。
所以我把原来的5.1K换成了欧,再次量了一下基准电压,变成3.00V了,这时候,插上JLINKV8,灯也绿了,可以正常下载程序了。
为什么基准电压VDDA和VREF+在1.75V时单片机不正常?
看了一下STM32单片机的参考手册,手册上指出,VDDA引脚和VREF+引脚的电源电压范围应该是2.4~3.6V,所以当VDDA引脚电压不足时,单片机无法工作。
另外注意:我的电路中,把VDDA和VREF+连接到了一起,接到了3.0V基准电压了。建议,以后再做STM32电路的时候,把VDDA和其他的VDD连接,只把VREF+和基准电压芯片连接。
这就是做STM32电路板的一点经验,希望对你有帮助。