LPC800的前世今生大揭秘

描述


1
前言

在此之前,NXP已经推出了基于Cortex-M0内核的LPC1100(2009年),代号“吸血鱼”(亚马逊河中的一种小鱼,据称能进入在河中洗澡的人体内),意为小而极具攻击性。
LPC800的开发代号“哪吒”,意为小而勇敢。为什么要在LPC1100推出3年之后,又推出LPC800系列?“哪吒”的背后,有什么鲜为人知的故事?

2LPC800哪吒的诞生


“哪吒”项目的策划始于2009年初,LPC1100刚刚发布不久,LPC团队就提出了一个大胆的想法:能否让32位MCU跟8位单片机一样简单易用?很快,团队列出了几条“简单易用”的准则:

  • 能否象8位单片机一样启动?

  • GPIO操作能否更加迅速?

  • 外设能否更加小巧、灵活?

  • 封装要小;

  • PCB布线要简单;

  • 要满足中国客户希望串口多的需求;

  • 。。。


Rob Cosaro是LPC的首席架构师(现在他是NXP Fellow,去年曾经来深圳给工信部开过讲座,是位名副其实的技术“网红”),他提出了各种创新的点子,让LPC800的思路愈发清晰了:

  • 外设要去除“大而全”,变得灵活、轻便。为此,重新设计了UART、I2C、SPI等外设IP;

  • 针对不同应用可以有不同类型的Timer。为此,设计了SCT和MRT;

  • 支持8位单片机小封装。LPC800支持TSSOP20/16小封装,甚至还为“发烧友”准备了DIP8封装;

  • 特别地,LPC800提供了独一无二的开关矩阵(SWM)模块,能够将数字外设功能映射到任意一个GPIO引脚上,从而大大简化了PCB设计,成了硬件工程师的最爱;

  • 另外,内部Flash改至32位宽,工艺从0.18um改至0.14um,减少芯片面积的同时也极大地改善了芯片的功耗;

  • 一开始选择了Cortex-M0内核,后来切换到Cortex-M0+。

随着芯片规划的不断完善,对IP和芯片的设计提出了各种新的要求。宝剑锋从磨砺出,从“哪吒”项目提出到第一颗LPC800问世,花了整整三年。想起神话故事中的哪吒三太子,其母怀胎三年方才生产,不生则已,一生惊人。LPC中国团队给项目取名“哪吒”,寓意LPC800也像哪吒一样,经历了出生的磨难,却变得更加骁勇善战,在32位替代8位的战场上,方兴未艾。LPC800能够象哪吒一样大闹中国MCU之海。

接着,设计的任务交给了当时由我领导的LPC中国设计团队。在2009年的某一天,当我踏入时任LPC MCU产品线总经理的Geoff Lees(没错,就是现在NXP MICR业务部的老大)的办公室时,就被墙上的白板吸引住了--上面写满了LPC800的规划思路。Geoff告诉我,LPC800必须按照中国市场的需求来定义和设计,这令我激动万分。

后来,每次去美国,LPC团队都会在那块白板上不断改进我们的设计。在之后的一年多里,那面白板就没有被擦掉过。

3LPC800的发展历程


LPC800系列的发展经历了三个阶段:

  •  2012年11月,NXP发布了业界第一颗基于Cortex-M0+的LPC81x,支持16K Flash,并于次年7月正式量产;

  •  2014年10月,LPC82x正式量产,支持32K Flash;

  •  2016年8月,推出了经过简化的LPC83x;

  •  2016年12月,与Freescale合并后的NXP正式宣布了新的LPC800路线图,计划于2017年相继推出支持64K Flash的LPC84x和精简设计的LPC80x。


如上所述,新的LPC800路线图预示着这个精悍的产品线,将会迎来一个爆发式的成长,为了更好地推广这一既是新产品又是传统产品系列,2017年领导布置了一个任务,让我来写一个“LPC800Cookbook”。

领到这个任务之后,就开始琢磨这是个什么样的“文档”呢。首先,从字面上讲Cookbook就是食谱、菜谱,查下字典Cookbook还有烹饪手册的意思。真正翻看一份(本)食谱可以看到,内容是从食材、配料、刀工、厨具、火候等,一步步引领着如何做出一道菜来。

此时联想起在这么多年的实际工作中,处理和解答过的很多问题,除一部分是因为没有好好看文档之外,很大部分是因为更深层次的问题,不少人把在MCU上写程序作为一个单纯的软件问题,而没有详细了解在程序代码背后,硬件是如何工作的,软件和硬件是如何相互配合一起工作的。

4内容介绍


基于这样一个思考,我决定从MCU及其各基础模块出发,从解析各部分的内部构造和配置原理出发,再结合具体的代码演示例程,展示LPC800各部分的用法。这实际上也是我多年工作中,在理解使用一款新产品时所用的基本思路,因此希望能把这种思维方式提供给读者,引领读者不但知其一而且知其二,能够把每一行代码与底层的硬件配置结合在一起考虑,做到举一反三,这样以后可以用同样的方法,在用到其它陌生的MCU时,能够快速地熟悉上手,迅速地掌握其精髓。

在本书内容的编排上,引入了一些新的特色。

对于例程代码,尝试突破传统的行注释,使用了PPT中对话气泡的方式更加方便灵活地注解代码,展现行与行和程序块之间的逻辑关系。对于一些不易理解的模块,例如SWM、DMA、SCT等,都配有模拟的内部构造图,再结合对应的寄存器位,让读者可以更深入系统地理解这些模块的功能和用法,当理解了这些原理之后,即使以后忘记了它们的用法,只需回头看看这些构造图就可以很快地找到原来的感觉。

思路理清了,内容的呈现方式也就清晰了。首先这篇“文章”会是一本书的方式,就是您现在看到的这本书:

在书里面会先从介绍LPC800各个系列的基本概况入手(第1章),比较子系列间的区别,并特意抽出一些特色功能进行说明。然后将逐一展示各子系列的基本系统框图(第2章),从这里可以解读出很多有用甚至关键的信息;很多有经验的工程师可以从一款产品的系统框图,很快建立起一些关于这款产品的定位、性能级别、操作灵活性等基本概念,并对是否适合自己需求的一个基本判断。

第3章介绍了Arm为Cortex-M处理器配套的嵌套式中断控制器(NVIC), 这里解答了常见的中断优先级和中断嵌套的概念,并设计了一个演示例程以进一步体会优先级与嵌套的流程;这章里还以示意图的形式,直观地讲解了NVIC的几个特色的功能,让读者可以深入体会它的优势。当然第3章还介绍了NVIC的使用方法和可以调用的函数。

第4章是本书所有例程和配套项目文件的基本介绍,并给出了书中所有例程与项目文件的对照关系,读者在动手实验时,可以随时翻看这里,找到对应的项目代码并运行体会。

第5-8章关于LPC800的一些核心的基础部件,包括负责时钟配置、外设模块复位、低功耗配置及外部引脚中断等部分的系统配置模块(SYSCON),负责把内部功能信号与外部引脚对接的开关矩阵(SWM),设置外部引脚特性的输入输出引脚配置(IOCON),以及最基本的输入输出控制器(GPIO)等。所有使用LPC800的用户都要首先接触到这些模块,所有的开发项目都会用到这些模块。

第9-13章涉及引脚中断和引脚组合逻辑、直接存储器访问(DMA)、UART、SPI和I2C,这部分都是绝大部分MCU都会有模块和基本的通信接口。特色的引脚组合逻辑或称模式匹配引擎,能够根据多个引脚的组合逻辑运算结果,产生相应的中断,与传统的一个信号触发中断的方式相比,可以显著优化对于复杂外部逻辑的相应速度。

第14-17章分别介绍了一些基本的定时器,包括状态可编程定时器(SCT)、窗口型看门狗定时器(WWDT)、多速率定时器(MRT)和系统嘀嗒时钟(SysTick)。尤其是对SCT的介绍,试图从基础原理上,全面地分析了SCT的用法,并通过多个例程展示了SCT编程及其强大的能力。

最后第18章介绍了12位ADC(模拟数字转换器)及其使用,通过例程不但展示了ADC的基本用法,还展示了实际项目中经常会用到与DMA配合使用的方法。

5参考资料


均可在nxp.com/lpc800下载:

LPC8N04数据手册:LPC8N04 32-bit Arm Cortex-M0+ microcontroller

LPC8N04用户手册:LPC8N04 User manual

LPC802数据手册:LPC802 Data Sheet

LPC802用户手册:LPC802 User manual

LPC804数据手册:LPC804 Data Sheet

LPC804用户手册:LPC804 User manual

LPC81x数据手册:LPC81xM 32-bit ARM Cortex-M0+ microcontroller; up to 16 kB flashand 4 kB SRAM

LPC83x数据手册:LPC83x 32-bit ARM Cortex-M0+ microcontroller; up to 32 KB flashand 4 KB SRAM; 12-bit ADC

LPC81x用户手册:LPC81x User manual

LPC83x用户手册:LPC83x User manual

LPC82x数据手册:LPC82x 32-bit ARM Cortex-M0+ microcontroller; up to 32 kB flashand 8 kB SRAM; 12-bit ADC; comparator

LPC82x用户手册:LPC82x User manual

LPC84x数据手册:LPC84x 32-bit Arm Cortex-M0+ MCU - Data Sheet

LPC84x用户手册:LPC84x User manual

应用笔记AN11538 SCTimer/PWMcookbook

LPC86x数据手册:LPC86x 32-bit Arm Cortex-M0+ MCU - Data Sheet

LPC86x用户手册:LPC86x User manual

本书所有代码均基于LPC824 ExampleCode Bundle IAR中的例程所开发。

有兴趣的读者也可以登录www.nxpic.org论坛,与广大工程师们进行技术交流,分享相关的知识和经验,以求共同提高。也可以从NXP公司网站http://www.nxp.com/lpc800上获得更多资料。

6致谢

前后大约花了两年时间才断断续续地写完了所有内容,在本书的写作和校验过程中得到了很多同事的帮助,尤其要感谢周荣正、王朋朋、蒋文卫的大力支持,还有张扬、张启鹏、谢愉、牛晓东、武元伟等同事为保证内容的准确性,在百忙之中进行了试读和实验验证,在此表示衷心的感谢,你们的帮助让我对整体内容的正确性有了更多的信心。

接下来的数周里,我将按内容概况逐步更新,由于本人的经验和水平有限,书中的错误和不妥之处在所难免,恳请广大读者批评指正。



END



更多恩智浦AI-IoT市场和产品信息,邀您同时关注“NXP客栈”微信公众号

恩智浦



NXP客栈


恩智浦致力于打造安全的连接和基础设施解决方案,为智慧生活保驾护航。





长按二维码,关注我们


恩智浦MCU加油站


这是由恩智浦官方运营的公众号,着重为您推荐恩智浦MCU的产品信息、开发技巧、教程文档、培训课程等内容。

恩智浦

长按二维码,关注我们


原文标题:LPC800的前世今生大揭秘

文章出处:【微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分