离职了,赋闲在家,偶尔找找工作,倒也自在。
一日,在篮球场邂逅了一哥们,因以前交流过,知道我是做计算机行当的,所以非要我帮忙。
他是土木系的学生,老师给他一个课题作为毕业设计,其中一个仪器没有开发出来,直接导致他的毕业问题岌岌可危。
这个仪器之前是让别人帮忙开发的,3个月的时间,仅完成70%,而他毕业答辩时间只有20天,所以如果我要接着做,我的开发时间只有15天。
因为硬件设计是别人做的,所以自己的把握也不太大,毕竟接着别人的硬件做,首先就要抄板,理解设计意图。起始,不太想做,后来一再恳请,我只能答应说先看看电路版。
拆开外壳,查看电路板。幸运,2层板,而且芯片的字都没被磨掉。上网查了所有IC的datasheet,基本明白了设计意图。心里有底了,才敢答应人家,敢做。
总结一下,这个工作的几个难点。
1.需要自己抄板
2核心mcu以前从没用过
3需要上位机软件配合
4时间紧
所以,要初步规划一下开发时间表。
1天抄板,4天mcu学习,10天开发和调试
因为是2层板,所以抄起来不是很困难。这个阶段的主要工具就是万用表,然后用protel记录下来,最后整理一下。最终的完整的电路图就呈现在眼前了。
mcu是 stm32 系列。网上有丰富的文档,而且多数都是模块化的程序组件。这边的工作就是借个JTAG,把各个部分的组件拿过来,先部分测试,最后联合测试。
由于一切控制过程都是由上位机调节的,所以通信协议是2者之间最重要的部分。由于时间紧,手里也没有现成的总线协议代码,就自己定义了一套通信协议。首先测试通信协议的完整性和可用性。然后是针对不同功能添加代码。
下位机的某些驱动是令人恼火的地方。某些芯片并不走标准的协议,而是自己给出一套时序,那么就必须用IO去模拟时序,完成驱动。
最终的开发还算顺利,感觉这是一个实实在在的挑战自己的过程。在公司学到的经验也会自然的流露出来,比如前期调研,风险控制,时间规划等等。我有一个目标,任何的一个项目,在7天之内出demo。这就必须要求,模块化所有的功能,包括硬件功能模块化,和软件驱动模块化,最终实现积木式的开发模型。开发者最终关心的不是模块的具体实现,而是总控的核心流程。