如果我们的MCU调试不通过,我们该如何测试?(未完待续)
我们拿到一款MCU,首先在选型的时候对他们都会有一个大概的了解,首先我们知道它多大与的FLASH,多大的RAM,是否与我们的项目适合,资源上是否足够,内频是否足够,运行速率能否达到标准,性能怎么样,比如抗静电干扰,高温,潮湿的环境,寒冷,对芯片本身的影响,还有如何焊接几层板,成本,是否易于开发,这里分为软件和硬件来说明一下:
首先说一下硬件:
一般最小系统+外围模块,几伏供电,供电等级,电压等级(其实这个M0等也会涉及),原理图的设计,元器件的选型,元器件的布局,布线更是一门大学问,甚至有些特殊场合,硬件对性能有非常严格的要求,比如说抗静电干扰,电磁感应等。(后面我会重新补充更新这一块)
静电感应干扰是累积电荷高电压放电的电击现象。干扰表现是非持续性的,但是可以对电子设备造成永久性损害。用静电计可以测到。可以用抗静电措施与接地等方法消除。
电磁感应干扰是混进信号通路的杂波,会使信号波形产生大量毛刺,甚至严重到使波形发生畸变。干扰表现是持续性的,但是通常不会是永久性损害。一般通过电磁屏蔽隔离措施与接地等方法消除。
然后是软件:
软件其实就是配置寄存器,再配置寄存器的过程中需要参考手册,学会看手册,看手册也是一门学问,比如说SPI的配置,首先看他选择了那几个引脚,然后配置成了什么模式,选择了那个时钟源,然后如何与外部器件进行通讯,外部器件的规格,这里有需要看SPIFLASH的型号和它对应的手册,不过好在现在有很多MCU里有库函数,省去了很多麻烦。
那么我们该如何测试呢?
首先要看懂代码,明白他想要做什么,然后看它问题是出在哪?引脚,时钟,模式,寄存器的配置,很多问题都出现在这,因为32位机的资源,寄存器很多,如果没有参考手册,一般什么都做不了,但是既然出现了问题,就要解决问题,好在现在大多数集成开发环境已经具有了调试,仿真的功能,还有示波器,电压表,逻辑分析仪等配合分析解决问题的工具,出现问题切记不要欺骗自己,不要得过且过,我承认换一种方法是达到效果的捷径,但你一定要明白,为什么这么做不可以?为什么?这样你又能多明白一种道理,比如选取晶振为时钟源,但是他不工作,换一个内部时钟,达到了效果,但是我们也要知道,为什么绕过它就行,而使用它就不行呢?是不是因为它坏掉了,或者说它并不能做这个接口的时钟?为了验证我的猜测,我把所有例程都选择晶振为时钟都跑了一遍,发现没有一个能够工作的,然后,基本可以确定它确实是坏掉了,然后进行下一步的测试,用示波器观察它是否起振,结果跟预计的一样,它不起振,确实是坏掉了,还有一种问题,纯粹是软件的问题,这种验证方法,有引脚的可以测引脚,没有引脚的,可以仿真调试,实在不行那就凭借自己强大的大脑去思考,分析验证,一遍一遍的尝试,观察现象,比如一个定时器进不去中断,我们可以用调试,仿真的办法进行验证,然后查看手册,分析原因,查看库函数,调用,结果发现是一个定时器的标志位起了冲突,还有一个串口问题,也是标志位的错误,分析问题前提是弄懂问题,熟悉你手上的东西,还有一个问题是关还没有于库函数的问题,问题已经解决,但我目前还没弄懂,无法解释,明天有时间,我再看看,熟练使用工具,熟悉你手中的MCU,然后用各种验证方法,计算也好,分析也好,替代也好,总之,解决问题,和为什么会出现这种问题,搞懂,你就会少走很多弯路,会有很大的成长。