项目说明:
这是一个应用在智能马桶上,实现脚踢翻盖、翻圈、关盖冲水的激光脚感模块。主控使用的是国产芯源CW32L010。ARM® Cortex®-M0+ 32 位低功耗微控制器,64K字节FLASH,4K字节RAM,最高主频48MHz。资源还是蛮丰富的,而且价格比较美丽。
遇到的问题:
刚开始的打样调试的时候,一开始功能是OK的,TOF考虑兼容性和layout方便,使用了模拟IIC方式的方式,协议已经调试OK,呼吸投影的效果也调试测试OK了,已经到了最后的代码测试了,可是问题出现了,主要表现为:
1、程序跑着跑着突然没反应了;
2、有时候突然自己复位了。
一开始以为是程序问题,于是烧录了之前的调试代码,只有激光和提示灯的代码,工作一切正常,没有任何问题。奇怪了,于是又在这个程序上添加了呼吸指引灯的代码(电流比较大,约40+mA), 这个时候问题又出现了。
没有头绪,于是打开调试测试,发现是进入硬件异常中断了,因为改中断内未作处理导致程序异常。

至此,问题找到了,但是还是不知道为什么会导致程序报硬件错误,于是先给硬件错误中断添加了处理函数,然后去做些测试,打印串口日志。
折腾了一个下午,还是没有找到问题根源。无奈,只能先下班了,准备第二天再搞。回去的路上还在想为什么?突然联想到,好像每次报错的都是在执行了特定代码后出现:
1、在delay函数内;
2、初始化呼吸灯代码之后;
再考虑之前调试过程中好像是没问题,是后面出现的,难道是硬件哪里出问题了,回家后打开电脑,打开CW32L010看来看去,好像很简单,不应该硬件还有问题呀。
突然看到了Vcore,芯片第五脚:

规格书中这样描述的:

难道是这个问题,看来看去,跟硬件有关,供电、RST 、boot引脚等这些都检查过了,好像除了这个核心供电没有注意到外,其他的都没问题了,感觉就是它的问题了。第二天验证下吧!
第二天一早,去到公司后,第一时间拿起板子,分析了起来:板子上实际焊接的是100nF的电容,用万用表测量未发现短路,电容外观也未见明显异常。那就先换一个电容试一下吧!我的乖乖,烙铁一上去,电容直接裂成两半了,替换个104pF的电容上去,就正常了。
这次遇到的问题就这样,总算是解决了!算是个小问题,但是分析这个异常前后花了我差不多一整天的时间。
以上就是近期开发中,遇到比较印象深刻的问题。开发产品就是这样,明明挺简单的一个东西,可是有时候就是这样一个小问题,却拦住了你很久:
1、有时候是因为陷入了死胡同,自己的思维转不出来,我的经验是,如果找问题一直找不到原因,不如先放一放,也许脑子突然就开窍了,如果有同事或伙伴可以交流的可以和对方说一说,也许一下子就豁然开朗了。
2、开发中苦难总是难免的,很多时候经常还是一些低级的错误,这个时候耐心就显得极为重要,分析问题、定位问题、解决问题,在处理这些异常的过程中,自己也能快速成长。

422

被折叠的 条评论
为什么被折叠?



