本帖最后由 技术范儿 于 2016-9-26 17:09 编辑
LPC800系列传统8051的终结者
最然ARM芯片已占据了MCU的大部分领地,但是由于其上手的难易程度和成本等方面要比传统的8051单片机付出的代价要大得多,有的行业朋友可能会认为传统的8051单片机已逐步退出市场,其实通过拆解大部分产品发现的确看不到传统的AT89X51的身影,取而代之的是国产的STC系列的51内核的单片机芯片,其较传统的芯片相比从用户需求方面讲只是多了几个串口和定时器。2-3个串口是工控行业的必备需求,这个仅仅是个标准配置。最近几年行业里的热点是低功耗,显然8051内核的单片机由于自身架构问题无法满足应用在电池供电的场合。
下面我们的主角登场:LPC800系列:基于ARM® Cortex®-M0+内核的低成本微控制器(MCU)
LPC800系列为基本微控制器应用提供了一系列低功耗、节省空间、低引脚数的选项。超高效、30 MHz ARM Cortex-M0+内核提供了具有确定性的实时性能。各种多功能定时、连接和模拟外设都装配了LPC800系列MCU,处理那些优先考虑低引脚数、小规格或严格的低功耗要求的广泛应用。所有LPC800系列MCU对低端设备是独有的,包括开关矩阵和正在申请专利的SCTimer/PWM,为嵌入式开发人员提供前所未有的设计灵活性。
LPC800系列的配套外设包括高达32 KB的闪存、8 KB的数据存储器、12位的ADC;CRC引擎、最多4个I²C总线接口、三个USART、两个SPI接口、多速率定时器、自动唤醒定时器、状态可配置的定时器、一个比较器、通过一个开关矩阵功能可配置的I/O端口、输入模式匹配引擎和最多29个通用I/O引脚。
LPC800系列MCU非常适用于: l 传感器网关 l NFC、BTLE、Zigbee或WiFi等无线协议的通信接口 l 人机接口(HMI)任务,如触摸、手势和滑屏 l 电池供电设备 l 空间受限的设计 l 简单的协议桥接 l 8/16位替换部件 这是官方对其的定位,可见NXP也是希望其用来代替传统的8051内核的。笔者通过试用LPC824的Demo板和使用LPC812做具体的项目确实体会到了这一系列芯片简单易用的特点,下面我们具体说明一下:
首先看到LPC824开发板的第一眼,实话实说我在心里面骂了几句,这么小的板子够干啥的。。。。。。。但是我看了一下板子的反面,发现其把所有的IO全部引出,并且板子两个排针的的间距有点似曾相识的感觉,然后又仔细的检查了一下引脚在排针的分布情况,我豁然开朗。。没错,他就是传统8051的接口方式,这一点不得不说一下NXP的工程师真的为我们初学者操碎了心。。。。。。。。。。。。现在这样说有可能不太切合实际。
下面技术范儿给大家详细的分析一下,首先我们可以看到核心板正面有两颗芯片,一颗是小壁虎的CP2102芯片,一颗就是我们的主角LPC824芯片,板载了一个复位按键、一个ISP按键和三颗用户LED指示灯,最后是一个SWD下载器的接口。
首先CP2102的芯片是USB转串口家族中比较好用稳定的一款,其自带5V转3.3V,实现一个电源转换的作用。这里说明一下为什么NXP没有设计板载的调试器并不是因为NXP不舍得花钱因为这里面有一个小故事,听技术范儿细细道来:首先LPC824是一款低功耗的MCU上面我们已经说过了,如果我们在调试中使用_WFI指令,程序运行后我们再次用下载器下载程序会提示找不到内核,千万不要跟笔者一样认为芯片已经挂掉了其实不然,只是芯片进入了低功耗模式,内核睡着了。如果我们要让芯片唤醒并且只需要按住ISP按键并复位一下芯片即可,但是采用串口ISP模式下载,可以完全避免这些问题的出现。就是这样一个设计,一方面解决了电源的问题,另一方面解决了现在笔记本电脑没有串口的问题,最重要的是降低了初学者出错的几率。
接下来我综合我使用LPC812的体会客观的说下这个芯片的优缺点。从我的项目需求开始吧,通过UART采集一款仪表的数据,通过GPRS模块发送的服务器后模块休眠,上报时间最低为6小时一次。刚开始采用内部的RC振荡器,但是测试发现内部RC到不到我的要求,于是换做外部晶振,在多位FAE的帮助下解决了外部晶振的问题,官方提供的资料是没有任何问题的由于我的疏忽消耗了FAE团队不少的时间我深表歉意。。。。。。。在设计板子的时候由于时间过于仓促硬件工程师将原规定的串口引脚搞反了如果是其他型号的MCU肯定要割线然后飞线了,但是我们使用的是LPC812不需要这么做,通过软件的方式即可进行功能的交换,没错这就是我认为这个系列的芯片最值得称赞的地方。也就是说引脚矩阵可以将引脚的功能进行灵活的切换,这对于硬件设计工程师来说是一个好消息,可以抢线走的更漂亮儿不必去考虑引脚的作用。
项目的最后一个要求也是让我比较头疼的地方就是6小时唤醒一次,NND你没有看错是6小时。。。于是选用的芯片的最低功耗模式-------深度掉电模式,实测可以到uA级别(测量的3.3V电源,不仅仅是芯片的功耗),于是用SDK跑了一下十分钟、半小时、一小时没问题,晚上测试了一下六小时,问题来了,六小时出现了飘动。于是想到了板子上面的NXP的PCF8563实时时钟芯片,经过查阅资料和与社区的高手大大们讨论最终敲定,采用RTC唤醒,即用PCF8563的闹铃中断产生六小时的唤醒信号去唤醒MCU,测试了两天效果比较满意。这里说明一下:芯片所支持的低功耗模式中,除了深度掉电模式其余模式下载芯片睡眠后可以通过ISP和复位引脚相结合的方式去唤醒MCU,但是再深度掉电模式下只能通过WakeUp引脚去唤醒MCU,这点请各位初学者在设计应用的时候特别的重视一下!芯片的硬件IIC没有使用,为了保证程序的通用性直接采用模拟的方式,记得LPC1788的IIC是很好用的顾不做评测,SPI模块临时没用用到待具体测试后追加评论,12bit精度的ADC对于这款五元左右的MCU来说是个不错的配置,剩余的PWM和定时器等具体测试后给出相关测试数据。
最后总体来说一下,侧重点为LPC812,LPC824是LPC812的升级产品。LPC812做到了比传统的8051更高的配置和更低的价格,对于应用电子来说是值得我们选用的方案;其SSOP20的封装方式,内置了3个UART接口,支持波特率、数据长度以及奇偶校验的设置;一片5RMB的价格对于我这种吹毛求疵的人来说却是是一个比较不错的选择;强大的IO矩阵可以将功能映射到任意IO,让你摆脱飞线的烦恼;多种低功耗模式灵活配置,最大程度的降低应用的功耗。支持低功耗模式的内置看门狗,保证系统的安全运行。但是事实就是这样缺点和优点总是并存的,而且是非常强烈的相对关系。上面已经提到了两个缺点我同时说明了我的解决方法,请各位参考。
总体来说LPC800系列芯片真正做到了8位机的价格32位的性能,性价比是非常高的,另外有非常好用的SDK和众多的技术支持可以方便入门和做应用。称它为8位机的终结者是很实事求是的一种说法!不知道各位看官心动了吗?心动不如行动,关注NXP官方社区上千套LPC824开发板拿到你手软!还在等什么,抓紧行动吧!
拿到LPC824开发板可以将手头吃灰的51开发板利用起来,直接将8051的片子扣下来放上LPC824的核心板,就是一套崭新的LPC824的开发板了,一般人我不告诉他!另外诸位初学者遇到问题可以随时找我解决,可以在社区发帖或者直接在群@我。好了,拿到板子的宝宝们记得分享你们的学习经验呦~
|