在本教程中,我们将开始探索一个全新的微控制器领域,称为ARM Cortex-M3系列。具体来说,我们将以ARM Cortex-M3架构的单片机为例,探讨其特点、功能和编程。为此,我选择了NXP公司的LPC1768单片机。在这个LPC1768入门指南中,我将讨论LPC1768单片机的规格,它的内部框图,内存映射,并列出一些通用的应用程序。
我为什么选择LPC1768?
在我解释原因之前,让我带您了解一下ARM Cortex-M系列的一些基础知识。它是一组32位的RISCARM处理器由Arm Holdings设计并授权的核心。Cortex-M系列核心是为低成本、低功耗的微控制器设计的,可广泛应用于嵌入式应用中。
在Cortex-M系列中,有Cortex-M0, M3, M4, M7等几个等级。每一种变体都有一些功能或实现上的差异,并且是针对一组特定的应用程序设计的。例如,ARM Cortex-M3的变体有一个3级指令流水线,不支持浮点指令或DSP指令。但是ARM Cortex-M7的变种有6个阶段,并且支持浮点数和DSP指令。
现在让我们关注本系列教程的架构,即ARM Cortex-M3。它是整个ARM Cortex-M系列的第一个系列,主要针对32位微控制器市场。基于ARM Cortex-M3的微处理器集成了许多曾经只在高端微处理器中才有的特性。
ARM Cortex-M3 Core是在著名的ARM-7架构基础上设计开发的。它引入了一些特性,比如不可屏蔽中断、嵌套向量中断、原子位操作和内存保护。这些特点使ARM Cortex-M3 Core成为微控制器市场上非常著名和广泛使用的ARM架构。
半导体制造商以Verilog RTL(即处理器核心)的形式从Arm Holdings获得Arm Cortex-M3的IP许可。然后,他们根据自己的需求修改(或优化)架构,但严格遵循Arm的指导方针(这是主处理器)。此外,他们添加了自己的风格的外设,使一个完整的微控制器单元。
基于ARM Cortex-M3的mcu的主要供应商有:意法半导体、NXP、德州仪器、英飞凌、微芯片(Atmel)、东芝、Analog Devices等。
在ARM Cortex-M3系列教程中,我选择了NXP公司的LP伟德老虎机手机版C1768单片机。尽管它基于ARM Cortex-M3架构,但我觉得它在SFR(特殊函数寄存器)实现、对硬件(开发板和调试器)以及软件(ide和模拟器)的良好支持、良好的文档和编写良好的外围库方面是一个相当简单的设备。
学习LPC1768(或任何ARM设备)的正确方法
了解一个新设备以及像ARM Cortex-M3 MCU这样的复杂设备是一项相当具有挑战性的任务。首先,文档非常糟糕。你首先需要ARM架构参考手册,然后是ARM核心TRM(技术参考手册),然后是ARM核心通用用户指南。这只是ARM这边的。
然后我们有供应商特定的文档,如参考手册,用户指南和数据表。但是阅读所有这些文档包并没有什么帮助。首先,没有人(甚至包括顶级应用程序开发人员)阅读完整的文档(我建议您不要阅读整个文档)。你必须养成只阅读必要部分而忽略其他部分的习惯(在特定的时刻)。
在学习像LPC1768,一个ARM Cortex-M3 MCU这样复杂的设备时也有一个优势。由于ARM Cortex-M3的复杂性,在架构上,包括LPC1768在内的所有ARM Cortex-M3设备都被整齐地组织成几个“功能块”。每个块都有自己的一组寄存器,并与其他块相当独立地工作。
以LPC1768本身为例。它有一个用于产生主系统时钟的时钟生成单元,一个用于接口各种外设的GPIO单元UART用于串行通信的外围设备等等。如果您想了解GPIO,那么您可以严格关注GPIO Unit、它的寄存器以及如何操作它们。
通过这种方式,您可以了解每个外设,在这个过程中,您可以了解这些外设如何相互依赖,它们如何通信(彼此之间以及与主处理器),以及我们如何和谐地使用它们来开发我们的应用程序。
LPC1768规范
NXPs LPC1768是LPC1700系列中基于ARM Cortex-M3的微控制器。CPU频率可达100mhz。主要的处理器核心是Arm Cortex-M3,它基于哈佛架构,有三条总线,分别用于指令、数据和外设。
在外设方面,LPC1768单片机由以下外设组成:512kb Flash、64kb RAM、USB接口、以太网MAC、4个UARTs、2个can、3个I2C接口、SPI、2个SSP控制器、2输入2输出I2S、8路12位分辨率ADC、10位DAC、4个定时器、8路DMA、6路PWM、电机控制PWM、低功耗RTC、正交编码器和70个GPIO引脚。
下面是LPC1768单片机的一个小列表。完整的细节,我建议你查阅资料表。
- ARM Cortex-M3处理器,内置NVIC和微处理器,CPU频率100mhz。
- 用于系统内编程(ISP)和应用内编程(IAP)的片上引导加载程序。
- 512kb片内Flash和64kb片内SRAM。
- 8通道DMA控制器,可用于ADC, DAC,定时器,UART, SSP, I2S。
- 多层AHB矩阵与AHB主(CPU, DMA,以太网和USB)的单独总线互连。所有其他外设的全境通告总线分离。
- 串行接口
- 以太MAC与RMII接口
- 全速USB 2.0控制器
- 四个uart
- 2声道可以控制器
- 2 SSP控制器
- 3 I2C接口
- SPI
- i2
- 其他外围设备
- 70年GPIO管脚
- 8路12位ADC
- 10位DAC
- 4-Timers
- 专用的PWM块
- 电机控制脉宽调制
- 正交编码器接口
- 清债信托公司
- WDT
LPC1768的框图
下图显示了LPC1768单片机的内部框图。从框图中可以看出,ARM Cortex-M3处理器由三种总线组成:I-code总线(指令获取)、D-code总线(数据访问)和System bus(外围设备访问)。
多层AHB矩阵用于连接ARM Cortex-M3的三个总线以及其他总线主控(即DMA、USB和以太网)到其他外设。
LPC1768的Memory Map
LPC1768 MCU,像其他ARM Cortex-M3 MCU一样,包含多个内存区域,用于Flash, RAM, AHB外设和APB外设。由于LPC1768是32位体系结构,因此它有4 GB的地址空间。
下图表示整个4 GB地址空间的整体内存映射。
应用LPC1768
LPC1768单片机是一款基于ARM Cortex-M3的微控制器,功能强大,足以运行相当复杂的嵌入式应用程序。下面列出了该MCU的一些常见应用:
- 电机控制
- 警报/保安系统
- 工业网络
- 照明控制单元
- eMetering设备
- 消费级冷藏和洗涤设备
结论
这是一个简单的LPC1768单片机入门教程。在本教程中,我简要介绍了NXP公司基于ARM Cortex-M3的LPC1768单片机以及一些重要的规格。我建议您下载数据表以及LPC1768的用户手册,因为它们是所有必要信息的首选指南。
在接下来的教程中,我将介绍LPC伟德老虎机手机版1768的一些重要外设,并试图解释如何通过访问相应的寄存器来配置它们。
硬件和软件建议
作为LPC1768入门指南的一部分,我想对用于开发LPC1768应用程序的硬件和软件提出一些建议。
由于所有的LPC1768 MCU都带有UART引导加载程序,任何带有LPC1768 MCU和UART到USB接口的开发板都将是足够的。你不需要高端或昂贵的开发板。
说到软件,我更喜欢使用Keil MDK IDE来编写和调试LPC1768的C代码。为了对LPC1768单片机进行编程,我将使用Flash Magic编程工具,这是专门为带有UART bootloader的NXP微控制器设计的。
如果你感兴趣,你可以买一个ARM微控制器的JTAG调试器。但这是可选的,您可以避开Keil MDK的模拟器特性。