本帖最后由 ccfengfw1980 于 2019-3-19 20:35 编辑
21ic论坛中的ST MCU板块组织庆祝STMCU中文论坛12周年的征文活动,想想自己这些年的学习之路,打算用文字记录一下我与ST MCU产品的相识相伴的经历。其实我与MCU的接触始于我的本科阶段,本科是电气工程及其自动化专业。当时的专业技能课中就有一门《单片机原理与接口技术》的课程。在2001年下半年的时候接触这么课程。当时对于那么个小小的黑色方块能有那么多的应用很是惊讶。我现在还能想起当时任课老师说:“只要学好这个单片机出去找工作根本不愁!”那是我第一次接触MCU这个概念,按照老师的说法MCU是电脑的亲戚,尽管长的差异比较大,尽管功能差很多,但是它们是有亲缘关系的。记得那个时候我们接触的是传统的51单片机,当时价格大约十几块钱一片。当时只有参加电子竞赛的同学才能有大量的机会去调试51单片!多个实验中只有2次能够接触到真正的单片机。往往做实验的时候光顾觉得这个实验箱高大上和新奇了,而没有趁机多多练习别的操作。当时的51单片机基本上是ATMEL的89c51需要用专门的烧录器进行程序的烧写。而且当时编程的环境是国产的南京wave,用汇编语言进行程序编写。总觉得汇编指令就是把数据在不同的存储单元里搬来搬去,因为mov指令太多了:)。记得当时遴选参加电子竞赛的同学,很多人都报名觉得当时能参加电子竞赛的同学特厉害,编写出的程序烧到小车里就能自动在黑线贴成的轨道上不停的跑,好厉害!连女同学看你的眼神都充满了崇拜!在学校里我认识了MCU,本以为毕业之后跟它相见的机会不会太多。但是计划没有变化快。 工作之后接触的项目是基于51单片机的气象要素自动采集站,51单片作为主控芯片,风速信息、风向信息、多路地温信息、气温信息、气压信息等各种信息都要送到单片机中处理并且通过总线传输到室内,在电脑界面上显示出来。在工作的时候真的感觉到本科讲过的单片机是多么重要。由于是新人,只能给人打打下手,焊接调试电路板;工作中用的也是ATMEL的51单片机,而且当时负责这个项目的硬件工程师很多人都是半路出家的,用的编程语言是汇编,程序代码长了查找错误修改数据就变得十分不容易。当时我在上网的时候查到可以用c语言编程,c语言编程具有简单明了可读性好等优点,我就纳闷了为什么单位没有人用呢?因此特地请教过我们单位的硬件工程师关于c语言编程的事情,我记得当时我们的工程师抬头看看我说:“c语言编程没人会,都是用汇编编程。”既有对于汇编语言的推崇,又有对于c语言的不屑,可能认为我新来的学生想要露一手或者是眼高手低觉得有些轻视。但是这番话激起了我学习单片机c语言编程的兴趣。当初可能是为了保密的原因吧,调试电路的时候连电路图都不给,只能自己根据器件名称和功能推断连接,然后用万用表测试。程序验证的时候直接给个.hex文件下载。当初根据自己肚子里那点模数电知识把一堆所谓坏了无法使用的报警电路板根据问题的原因进行修复之后,被周围的人惊为能人。后来我认识到在这个单位继续待下去学不到什么,硬件工程师之间因为项目比较少的原因吧彼此像防贼一样。后来下定决心辞职考研提升下自己的能力,很庆幸辞职后一年考上硕士研究生。在读硕士研究生期间也是使用单片机做项目,记得当时刚入学的时候老师问过我会什么单片机,我说用过51单片机,因此在硕士研究生期间用的MCU主要还是增强型51单片机,cypress出品的。在读研究生期间我接触的新东西开阔了我的眼界,在学习c语言编程的时候遇到问题可以找同学和师兄请教,有人或许会说问什么没有向师姐请教?因为当时我们的师姐都是做算法的,没有玩硬件的。当时学习使用c语言进行单片机开发的时候自己买了几本书按照书上的实验内容,自己弄了个最小系统板,按照电路图连接然后一个一个实验的去跑!自己反复看书琢磨,其实学习单片机的最佳捷径就是不断自己实践。
图1.51单片机最小系统DIY版 学生时代的找不到了这是工作后自己做的 但是我的研究生同学用的是TI,MSP430单片机,让我有机会多接触其他的单片机。而且在学校有机会出去参加一些研讨会,当初就参加了ti msp 430day的活动,可惜现在没有了!研讨会上会得到最新的一些信息和单片机demo。我自己后来还弄了一个简单的430单片机开发板,写这个小文的时候我把它翻出来了,图二就是这个单片机最小系统板。从这以后我逐渐喜欢尝试不同厂家的产品,然后进行比对,后来在项目中使用了upsd系列单片机,觉得st旗下的51单片机产品也很不错,和赛普拉斯一样强!这是我第一次与st的mcu产品相接触。
图2.msp430系统板 研究生毕业后通过招考2009年来到高校当老师,给学生们讲授的还是当初我学过的51单片机,但是教材已经变了。仍然参加ti的相关研讨会,大约是2011年左右的时候得到了一块lm3s811的开发板,当时看着lm3s811这板子的产品参数,我觉得这是相当厉害的MCU产品了!后来还有网名青风的网友推出了lm3s811的教程,跟着练习。当时ti刚刚收购群星公司,因此在arm产品线上产品种类非常丰富。但是没有一个好的生态系统,就是产品推出之后缺少各种例程支持。把各种例程跑完之后就把这个开发板放下了,但是cortex内核的印象却深深刻在脑子里。后来2013年年底单位有个项目要用到can通信,当时方案要么选择51单片机外扩的方式,要么选择其他自带接口的芯片处理;在用51单片机+外扩基础上解决了应用之后,我想用cortex的产品尝试一下!但是选什么产品呢?这个时候我要感谢一下万能的淘宝和百度,是你们解决了我的困扰。当时网上流行的产品是ARM9 看到的是友善之臂的产品为代表2410,但是价格太高了,用这个做项目有点高射**打蚊子的感觉,cortex的关键词输入之后出现了野火的产品。板子上有485总线 can总线,而且当时还有与开发板配套的第一版《stm32库开发实战指南》这本书。然后在淘宝上买了野火的stm32开发板,包括摄像头等外设。把所有的程序统统跑一边,按照火哥书上所说的内容通过对标准库的调用确实方便了很多,不用自己去一个一个函数编写,开发的周期缩短很多。通过实验发现当时野火的摄像头程序有个问题,在野火论坛上查到改正的方法。这是我第二次与ST的MCU相接触。
图3.第一版火哥的书
图4.野火M3开发板 通过与ti的产品对比发现,我觉得st的产品第三方支持度非常好。例如当初我选择的野火,他围绕他的开发板把stm32的开发流程,特性,通过一个个详实的例子给读者介绍清楚,和郭天祥的51单片机的那本书比较像!让初学者能够比较容易上手,在试验的过程中积累自己的信心,后来又有正点原子,安富莱等第三方推出对应的开发板并且配套相应的视频,pdf书,例程等等让初次接触的人有个比较详细的参考,按照例程可以一点点的开发出自己产品。此外st的网站活跃度和支持度也比较高,例如与非网、21ic以及st官网等等;有人或许说你这里一顿夸st是为了奖品吗?是也不是,获奖更好。不能获奖也可以记录我与st的心路历程。在这里除了感谢第三方开发平台之外,就要感谢相应STM32的中文论坛,平时我最喜欢的就是逛论坛,不过更多时候是在潜水,因为每个人做东西的方向不同,别人遇到的问题有些是自己没有遇到过的,通过看别人如何分析解决问题对于自己相应能力的提升也很有帮助,尤其是论坛时不时搞些活动,充分调动我的参与性!但是好多时候这些心仪的奖品都十分巧妙的避开了我!谁能告诉我这是为什么? 后来在指导学生课外竞赛的时候我就有意将不同公司的产品引入,例如stc的51增强型MCU,ti的msp430 MCU,飞思卡尔的mc9sdg128 MCU ,st的STM32f103MCU,让我的学生通过这样的方式了解不同公司的产品特性,让我的学生掌握更多单片机开发能力。通过这次写作我把以前好多用过的单片机都翻出来了!上面说了st 的mcu产品的优点,下面说说st仍需努力的方面。
图 5 飞思卡尔单片机最小系统板 与很多国外半导体公司一样中文资料比较少,st公司自己的开发环境没有详细的使用视频或者案例pdf,例如stvp,cubemx,第一次用这些工具的时候真的让人挠头,此外st刚刚收购的touch gfx也是这个样子,当你想用这个产品的时候却缺少对应的领路人告诉你这个工具怎么用。例如cubemx升级之后很多操作方式与原来的cube有了差别,这些全靠第三方去出教程。后来我把这个问题与st公司的fae沟通过,他们的工程师现在也像网红每天都录制一些视频放到网站上让大家学习,但是整个完善的过程还需要很长的时间。 最后总结一下为什么st的mcu能够独树一帜: 第一. 产品质量过关,产品线丰富。目前很多公司都有cortex的产品,但是只有st的产品线最全可选择的余地大,产品针对性强,开发资料丰富由于使用的人比较多可参考的案例就多,再有就是良好的第三方生态系统各种书和手册应用案例详尽,合作伙伴众多,例如现在最火的IOT和云产品里都能看到st的身影。 第二. 第二.所在公司重视,目前只有st是把mcu这块单独拿出来建立网站进行支持。自己重视,加上周围合作伙伴的共同努力st想不火都难! 回顾一下我和st的相伴经历: 我把stm32引入学生技能培训训练中,从最初当做超级单片机来用控制小车,控制电机,到现在进行操作系统移植,触屏设计等。毕业的学生把所学用于对应产品设计,今年年前我的一个毕业生给来电话说,他把公司原来设计方案重新设计,把原来ti的主控芯片替换为stm32f4系列产品。对于学生取得的成绩我由衷的感觉自己的努力没有白费。在去年的时候我开始代表学校向st申请联合实验室,年前传来好消息我们的申请通过了,今后我们将与st共同成长。 |