恩智浦半导体LPC4350是在单芯片上首次实现32位ARM®Cortex™-M0/M4。 M4可以专注于高速数据平面处理,而M0可以处理低速控制任务。通过适当地划分应用软件,设计人员可以利用芯片的异构多核架构来创建能够以节能方式同时处理多个任务的应用程序。目标应用包括电机控制,工业自动化,白色家电,嵌入式音频,RFID阅读器和电源管理。
本文介绍了LPC4350的特性和功能,并包含对LPC4300评估套件的实际操作,介绍如何编写,下载和调试程序。它还突出了该器件独特的状态可配置定时器(SCT)和串行GPIO(SGPIO)接口。
在ARM中运行ARM
双核LPC4350加入了两个代码和工具兼容的ARM处理器,它们共享相同的总线并可以紧密协作。 32位ARM Cortex-M4包含一个带有独立本地指令和数据总线的三级流水线,以及一个用于外设的第三条总线。它还包括一个支持推测分支的内部预取单元。 M4内核支持单周期DSP和SIMD指令,并包含一个集成的硬件浮点处理器。在任何给定的应用中,M4核心都可以进行高速重载。
另一方面,低功耗Cortex-M0内核通常处理非时间关键的监督工作;它被设计为现有8/16位微控制器的低成本32位替代产品。与其兄弟M4一样,M0处理器提供高达204 MHz的性能,但具有简单的指令集和减小的代码尺寸。
图1显示了LPC4350的基本架构。 ARM Cortex-M4包括三条AHB-Lite总线,系统总线,I代码总线和D代码总线。 I代码和D代码核心总线允许来自不同从端口的并发代码和数据访问。多层AHB矩阵将ARM Cortex-M4总线和其他总线主控器连接到外设,使得不同总线主控器可以同时访问矩阵的不同从端口上的外设。这允许在应用程序处理中具有很大的灵活性。
图1:LPC4350框图(由恩智浦提供)。
由于大多数外设中断都连接到两个处理器,因此Cortex-M0内核可以平滑地从M4内核卸载工作。 GPIO寄存器位于共享AHB总线上,以最大限度地减少延迟。这两个内核通过使用共享SRAM作为邮箱相互通信,一个处理器在另一个处理器的嵌套矢量中断控制器(NVIC)中引发中断,以指示它已发送消息。另一个处理器返回优惠以确认收到。
另一个独特的功能是状态可配置定时器(SCT),它可以触发计数器或根据状态变量设置定时器,如限制,暂停或停止条件。 SCT可配置为两个16位计数器或一个32位计数器。您可以使用SCT来更改CPU的时钟速度,以响应核心温度的变化或在一定数量的外部事件之后。 (有关SCT的更多信息,请参阅TechZone文章“控制:恩智浦专利权SCT如何改进电机控制”。)
SPI闪存接口(SPIFI)让Cortex-M4能够以低成本连接,串行闪存与较高引脚数的并行接口相比,性能损失很小。使用SPIFI,M4内核可以通过处理器或DMA通道以高达40 MB/s的日期速率处理整个闪存范围。
评估板功能
LPC4300评估板(图2)围绕LPC4350FET256,551构建,具有65 MB SDRAM,32 MB并行闪存,512 kB SRAM和串行EEPROM。该板包括各种I/O接口,包括CAN,UART,USART,以太网,USB(主机,设备和OTG),HDMI和音频输入和输出。 JTAG还有额外的连接器,外部电源,SIM卡,功率MOSFET和串行端口。如果你想要更多,有扩展头和小面包板区域的焊接空间,更不用说无数的跳线,让你可以控制电路板的众多配置。
图2:LPC4300评估板(由恩智浦提供)。
板上附带的软件分发包含许多在LPC4350开发系统上运行的示例。此外,它还包含一个ARM CMSIS DSP软件库,可让您运用Cortex-M4的浮点DSP功能。
电路板上的一个接头与运行KielμVISION4IDE的KeilULINK2调试器接口,并且板上附带了限制版本的ARM Keil MDK工具包。我用它来编译,下载和运行50多个示例程序。
开始使用这种复杂性的套件并不简单,但它很简单。首先,下载并解压缩示例文件和闪存驱动程序,然后将它们移动到适当的目录中。如果您使用的是Keil MDK,则驱动程序库二进制文件具有多种内置配置,包括构建内部SRAM(最快),SPIFI和Hitex Flash(Hitex板上的外部并行闪存)。按照“入门指南”中的说明设置跳线,连接ULINK2调试器,使用USB电缆连接到PC,即可开始使用。
有史以来设计的每个评估套件似乎都包含一个“眨眼”程序,这一个也不例外。实际上它有两个,一个在RTOS下运行而另一个没有。更有趣的是双核MBX(邮箱)示例,它展示了如何独立控制Cortex-M4和M0内核。
在本例中,Cortex-M4是主设备,Cortex-M0是从设备,每个核心运行一个单独的μVision实例。首先,我双击项目文件(M_Mo_ipc.uvmpw),它启动了μVision。我选择M0作为活动项目(图3),LPC43xx_M0_FLASH作为目标,并重建项目。然后我为M4做了同样的事情。
图3:构建M4和M0项目。
配置ULINK2和flash编程实用程序后,我能够下载并运行该程序。基本上这是另一个“眨眼”程序,虽然是一个复杂的程序,M4控制一个LED而M0控制另一个。我能够逐步完成代码,设置和删除断点,并研究两个核心之间的交互。该练习提供了丰富的信息,代码是更复杂程序的有用框架,其中任何一个程序都将受益于其他一些示例程序,特别是外围驱动程序。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』