声明:由于下述内容不起眼但很重要,所以别的人肯定是不会写出来告诉你的啦。 很多经验都是从错误中总结出来的,所以没有实践,哪会犯错,没有犯错,哪来经验。 我曾经设计了一个基于STM32的工控板,引出了JTAG调试接口,当我把板子上的电源部分和STM32最小系统部分先焊好以后,先试一下JLINK V8能否顺利下载程序,结果插上JLINK V8以后,JLINK的灯变成了红色。正常的时候是绿色。所以我知道这里肯定有问题了。 JLINK灯变红,据我以前的经验,一般就是复位引脚有问题。所以我用万用表量了一下复位引脚的电压,结果是0V。 我们看复位电路,正常情况下,复位以后,复位引脚应该是高电平(3.3V)才对。 我首先怀疑电容C11是不是焊的短路了,因为贴片电阻相对直插电阻来说还是很小的,以前也有直接焊短路的时候。拿万用表量了一下,结果没有短路。 然后怀疑复位引脚是不是在焊接过程中,直接连了地了?用万用表量了一下,没有接地。这个错误又排除了。 不是以上两个焊接电路引起的问题,我就开始想,这个电路和以前设计的STM32电路有什么区别,这个电路和以前的STM32电路的区别就是,这个电路的VDDA引脚和VREF+引脚没有直接和VDD3.3V相连,而是连接了一个参考电压芯片。用的参考电压芯片是LM4040A30芯片,这是一个3.0V的参考电压,连接电路如下: 用万用表量了一下,结果那个3.0V的地方是1.76V,远远低于3.0V,所以我再一次打开了LM4040A30芯片的datasheet,找到了如下一段话。 这段话的意思就是要选择合适的电阻Rs,不要让Iz大于15mA,否则就会烧坏它。也就是穿过LM4040的电流不能大于15mA,我算了一下我现在用5.1K电阻的话,穿过LM4040的电流应该是连1个mA都不到,所以我怀疑是不是这个限流电阻用的太大了,使得电压基准芯片工作不正常了。 那就倒算一下吧,假设现在LM4040A30正常,输出3.0V,那么Rs的电阻值就应该是(3.3V-3.0V)/15mA=20欧姆,也就是说,只要电阻大于20欧姆就可以保证LM4040不被烧坏,手头正好有100欧的电阻,所以我如果用100欧的电阻的话,穿过LM4040的电流就是(3.3V-3.0V)/100欧=3mA。发生在100电阻上的功率大概就是0.3V乘以0.003安,不到1mW,所以用0805封装的电阻足够了,保证不会烧电阻。 所以我把原来的5.1K换成了100欧,再次量了一下基准电压,变成3.00V了,这时候,插上JLINK V8,灯也绿了,可以正常下载程序了。 为什么基准电压VDDA和VREF+在1.75V时单片机不正常? 看了一下STM32单片机的参考手册,手册上指出,VDDA引脚和VREF+引脚的电源电压范围应该是2.4~3.6V,所以当VDDA引脚电压不足时,单片机无法工作。 另外注意:我的电路中,把VDDA和VREF+连接到了一起,接到了3.0V基准电压了。建议,以后再做STM32电路的时候,把VDDA和其他的VDD连接,只把VREF+和基准电压芯片连接。 这就是做STM32电路板的一点经验,希望对你有帮助。 看的不过瘾,点击下载本文的pdf版本,保存到你的电脑吧: 分享一点STM32硬件设计经验
|