记一次在STM32开发踩过得坑(ADC采集、电流大小的影响)

**写在开头,本人本科对单片机还是比较熟悉的,8/16/32的单片机都玩过(寄存器的配置,库函数的调用),最近接了个很小的项目,以为1~2天就搞完了,结果弄了好几天,因此将该问题记录下来,大家以后碰到可以参考。

**

项目中:一个功能是通过STM32103ZET6的串口(UART1)与一个数字传感器进行通信获取数据,第二个功能通过12位ADC单通道采集模拟传感器数据,最终将二者数据进行屏显,并通过键盘进行阈值大小设置,声光报警功能。

坑1:ADC采集问题

我当时写的代码在我的一个开发板(芯片:STM32VET6)上是可以正常ADC采集数据的,当时通过串口将数据发至串口助手上打印查看,发现是OK的,(这里提一下,为了防止摸黑调试,串口助手是个好东西,)结果下载到我的STM32103ZET6最小系统板上就不对,串口助手打印一直为高电平(3.29V),我开始以为是芯片不兼容的问题(管脚定义错误这种问题我排除了,换个ADC通道采集的问题试过我也排除了),于是我找了份STM32103ZET6采集程序在ZE上还是不行,但在VE开发板上却可以,这就排除芯片不兼容问题,剩下肯定是硬件上的问题没跑了。(一步步将问题排查缩小)。由于身边还有块32的板子,我就直接拿了过来用,结果发现还是采集不了(我有3块STM32板子,1个是VE的开发板,2个是ZE的最小系统板),我纳闷了,难道是2块板子都有问题,这种问题出现的概率应该不大啊,试了一下午也没找出问题,最后我试了两块ZE板子上其他功能GPIO口,都好着,我排除两块板子的问题,可是为什么我那个VE的开发板能采集,为什么这两块就是不行,是硬件问题可是硬件到底哪里有问题?我想到了VE的开发板人家为了稳定在做的时候肯定把好多电路都已经设计上去了,而我的核心板很小,为了简化肯定哪里电路没有连接之类的(我核心板只有芯片,管脚,晶振),是不是就是ADC那里漏了,于是我找手册,发现基准电压,Vref+管脚接3.3V,Vref-接地(什么VDDA我没管),然后我用万用表一测,果然我的核心板Vref+管脚没有拉高,Vref-没有拉低,当我焊上使其连接时,好了,一切的问题搞定,其实我是先焊上Vref+接到3.3V,可以正常采集了(我开始用的湿度传感器做测试,输出在3V左右),但我的传感器输出只有10mv,采集出来还是0v,最后将Vref-接地问题才得以解决。(建议大家以后买核心板做ADC采集时,一定要先看板子上Vref和3.3V之间的跳帽有没有插上,或者测量其电压是否为高电平)。

坑2:电流问题,USB线与电流不匹配

我的供电方式通过USB线给单片机,从单片机的电压管脚引出给(2个传感器,显示屏),USB线我用的带磁环的线,一切工作正常。当我交付时,我不太想给我的USB线,所以淘宝买了根0.5米不带磁环的线,可问题就来了,单片机工作不正常问题,导致屏显输出问题,采集问题,按键按下失败问题,旁边人说是不是电路哪里虚焊了,我认为肯定是电流和线不匹配导致的问题,电流输出2A,影响单片机正常工作会导致后面这一系列问题,回来把线换了,结果一切正常,终于交付了。

至此,所有问题都解决了,有快一年半没有玩单片机了,这次的问题也是让我找了好久,所以当大家遇到问题时,先不要急,冷静分析下自己的问题有可能出现在哪里,利用手上工具尝试并排除,缩小问题范围,实在解决不了, 上各大论坛都找找解决方案。

你可能感兴趣的:(单片机)