Adventure 项目(3)
Bronn
今天是星期五,本来挺好的周末,小朱却有些“惆怅”。新一季的美剧下个月1号开播,等待了一年之后,这季剧集又开始了。可是,“决定是容易的,等待是困难的”,每周一集的剧集中间的漫长等待是让人期望又纠结的。
一日十年
2 天前,也就是星期三,小朱完成了 MIX 的第五版设计,交给厂里的研发主任 John Blankenbake 看过以后,开始小批量制作原型了。
Adventure 在深圳的电子设备组装厂(SZE)距离市区颇远,但交通却很便利。每天,这里都 24 小时的运转,设计、制造着各种电子设备。小朱年初刚刚到这里的时候,还什么都不知道,连自己怎么进的研发中心也都感觉困惑,“大概,看我没什么经验,愿意吃苦干活吧?”他也只能这样自嘲。
刚刚到 SZE 的时候,主任 John 安排小朱参与智能车项目,虽然事后看来,那应该叫做“智障车”项目才对,但对小朱来说,1个月的时间,他还能做什么呢,关键,他是新手啊!
小车项目采用 C51 单片机作为核心控制器。这种单片机最早是 Intel 在 1980 年为嵌入式系统开发的可编程控制集成电路 8051(改成 CMOS 工艺后,在 80 和 51 中间加上了 C)。C51 的上一代前辈,是 Intel 为 PC 机键盘开发的控制芯片 8048,用来将按键转换成电脑处理器可以识别的串行电信号的。
USSR KM1816BE48,8048 EPROM 版的克隆产品,多么美丽的集成电路啊!
虽然 Intel 在 2007 年已经停产了 80C51,但是其兼容集成电路到今天仍然非常流行,作为低成本的控制器方案广受欢迎。John 决定采用这款控制器的原因还在于,由于 1980 年以来的不断积累,80C51 的周边外部设备非常丰富、有巨量的开发资源可供学习,对于小朱这样的新手来说,作为起点是很合适的。
丰富的外部设备(时钟、继电器开关、数字语音等等,数不胜数)
但是 80C51 系列简陋的编辑器、相对低下的性能(通常 12MHz 时钟,增强型的可以到 22MHz,每个指令平均要 12 个时钟周期)、薄弱的 IO 口能力、缺乏有效的软件加密、性能能耗比低等问题的存在,使得后继的新产品一个一个都超过了它。
就在“智障车”项目暂停后的 1 周后,MIX 项目启动了。
MIX 项目集成了多种功能(比如 USB 通讯),这就是项目名称 MIX 的由来。这次,SZE 采用了 ATMEL 的 AVR 微控制器。AVR 微控制器是 1996 年研发完成(但其实是从 Norwegian Institute of Technology 买来的,是由在 Norwegian Institute of Technology 学习的2名学生设计的,AVR 名称的由来就是2人的名字首字母A、V 加上 RISC,虽然 ATMEL 官方并不承认这种说法)。
小巧可爱的 ATMega8,我认为是 Mega 系列里面最具性价比的一款了
本来,在对 80C51 系列略有熟悉的时候,让小朱切换开发的硬件平台,是一件让人不舒服的事情。放弃熟悉的 Keil、串口下载器等工具,去熟悉新的工具。小朱开始,也的确是带着这样的情绪开始 MIX 项目的。
AVR 系列微控制器的设置比 51 系列复杂(虽然对比后面的 ARM 来说,其实也不算什么了)。更加增大了小朱的不满。当然,他是不会直接说出来的。说好的有 JTAG 调试,但是实际上价格都很贵,便宜的那种用开放工具又连接不上,唉!
然而,很快一切就发生了变化,原因就是因为 ATMEL 为 AVR 提供了一个强大的开发IDE:AVR Studio 6.0。AVR Studio 是基于微软 Visual Studio 扩展的,专用于 ATMEL 公司 AVR 和 ARM 系列微处理器的开发。相比 Keil,那是天上地下。最有用的,是可以直接提示所含库或者头文件的变量、函数定义,可以直观的看到对变量是读还是写(在变量名上用不同的背景颜色区分开来)。自带软件调试功能,可以看到各个寄存器的变化情况。
有了 AVR Studio 6.0,离开 51 也就没有那么痛苦了,而且,很快的,那些原本看似复杂的设置,渐渐也变成了习惯,甚至让小朱对自己正在做什么更加的清楚,不像以前用 51 那样模糊了。
MIX 项目现在仍然在进行中,因为涉及的功能实在太多,很多设备还在等待工厂、供应商的生产和供货才能继续下去,所以,在小朱到 SZE 4个月后,难得的出现了空闲等待的时间。
实验状态的 MIX USB 通讯功能,直接用 AVR 模拟 USB 设备。现在就处于等待工厂供货来移植测试的阶段。感谢 v-usb 项目,让 USB 不再神秘,让我们自己也可以设计 USB 设备!
为了不浪费时间,小朱决定还是自学点儿什么东西。看到网上 ARM 比较热门,就弄了一片 STM32F103BRT6 的 ARM Cortex-M3 芯片捣鼓捣鼓。虽然主任 John 要求他这段时间整理工作文档,并上传到 Adventure 的内部 SharePoint 文档库里面,但这些白天上班就可以做,他打算利用晚上的时间回去自学 STM32。
如果说 80C50、AVR 是 8位的微控制器,那么 ARM 就是 32位的了。能有更大的内存和数据处理速度。目前手机里面的控制器很多就是 ARM 的(可能此时叫做“微处理器”更合适了吧,因为他的运算处理能力已经很强了,尤其是带有 FPU 的 Cortex-M4 系列)。ARM 是英国剑桥一家芯片设计公司,但是它不制造芯片,而是向 Intel、ST 这样的公司出售他的设计。
ST 2007 年6月份正式发布了基于 ARM Cortex-M3 核心的 STM32 系列微处理器,差不多是 AVR 之后 10 年。
有了 80C51 和 AVR 的经验,小朱从一开始就没打算和以前一样在网上购买学习板来学习。小朱打算这次直接自己动手从零开始做个 STM32 的最小系统。要知道,网上最便宜的基于 STM32 的最小系统学习板也得 100 元上下,而一个 STM32 芯片也就 15 元左右。况且,STM32 支持串口下载程序,正好将以前学习 80C51 和 AVR 时的串口下载板用上。
STM32 最小系统
于是,从周三开始,每天晚上,小朱回到家中,就花1~2个小时研究并制作 STM32 学习板,这样一直到周五晚上,一共用了 4~5 个小时的时间,终于,STM32 最小系统制作完成,并且可以烧录程序了。
“呵呵,太好了!”小朱高兴极了,仿佛又一扇大门向他敞开了。
但是,短暂的兴奋之后,一阵失落袭来。虽然芯片升级了,但是,外部设备却没有,键盘还是键盘、串口还是串口、LCD 还是 LCD。协议不变,你只不过,换了个芯片,做一样的事情。又或者,应该换个角度看待这个问题,是因为我们对应用这些技术的要求高了,所以会升级。就如乐高积木,还是那些小方块(虽然进口的比国产仿制的要精细n多倍),但是,人的创意可以变换出更多新的玩意儿出来。
美剧要等着,一周只能看一集。可是过去这些电子技术,就在这短短4个月的时间里一一展现在小朱眼前,直到最近的 STM32 微控制器,只是 3 个晚上的短短 5 个小时就已经可以入门。“真是一日十年啊!”小朱叹着,关了电脑站起身来,打算去好好洗个澡,去迎接又一个周末。