双核就是任性——LPC54102

关键字 :NXPLPC54102

随着科技的进步,双核逐渐被淘汰已是时间上的问题,四核乃至八核心 CPU 也已不再是什么新奇的事物,不过在微控制器领域,双核却是个十分新颖的东西。很多工程师朋友在开发 MCU 应用系统的时候,若是系统功能复杂、一颗 MCU 芯片无法满足要求,往往会采用多颗 MCU 协同工作,把一些“打杂”的工作交给低端的 MCU 完成,高端的 MCU 则可以放开“手脚”,完成系统主要的任务。不过这样一来,系统研发的复杂性,成本以及可靠性都会受到不同程度的影响,多微控制器方案带来系统的功耗问题也不容小视。对此,恩智浦推出了基于 ARM Cortex-M4和 ARM Cortex-M0+非对称双核架构的 LPC54102 系列微控制器,旨在提供一个低功耗高性能的双核解决方案,用于超低功耗传感器侦听到数据整合、传感器融合或其他传感器数据处理。

笔者有幸拿到了搭载 LPC54102 双核微控制器的 LPCXpresso54102 开发套件。该套件采用的包装与 STM32 Nucleo 系列板卡的外包装材料相同,均为透明塑料外壳。这样的包装虽然降低了成本,但在视觉表现上却一点也不逊色于其他包装,透明材料的使用更加凸显出板卡的精致,使得板卡的芯片资源“一丝不挂”地呈现在大家的眼前。

          

打开包装,取出 LPCXpresso54102 板卡,板卡整体采用墨蓝色阻焊和乳白色丝印,让人眼前一亮,pcb 焊盘的沉金工艺,更是显得高端大气。虽然 LPCXpresso54102 板卡的设计思路与 STM32 Nucleo 板卡大致相似,都是板载仿真器加核心板的结构,但相比于 Nucleo 板卡,LPCXpresso54102 明显大了很多,元器件的布局也紧凑了不少。

          

LPCXpresso54102 板载资源:

1) LPCLINK2 下载仿真器

2) 外部 SWD 接口

3) 功耗监测系统

4) USB 虚拟串口,虚拟 SPI,虚拟 IIC 功能

5) 用户 3 色 LED

6) 唤醒按键,IAP 下载按键

7) 1.8v、3.3v 电源

8) Arduino UNO 接口

9) Pmod™ 接口

10) FTDI UART 接口

 
         

仔细观察会发现,NXP 在这块板卡上的设计花费了不少心思,整体的做工,电路的设计,芯片的使用非常考究。

这块板卡一共有两个 micro usb 接口,使用普通安卓手机充电数据线便可以和计算机相连接。位于上方的接口是专门给 LPC54102 供电的接口,给除 LINK2 仿真器外的部件供电,在不需使用板载调试器时可以连接此接口。心细的话,会发现这个 micro usb 接口右边还有一个 P3 接口、是一个两线的排针,分别是 5V 和 GND,此举也是结合了工程师的需求,留出外部电源的接口。下方的 USB 接口则是 LPCLINK2 仿真器的接口。说道这里,不得不重点了解一下 LPCLINK2 仿真器,NXP 在这款仿真器的设计上,可谓是不惜成本,主控芯片的选择便显现出霸气,LPC4322 双核 MCU 让 LINK2 充满了“暴力”!

 
         

工程师可通过烧录固件,根据自身习惯选择 LINK2 作为 J-Link、CMSIS-DAP 或者 LPCXpresso Redlink 使用。其中 LPCXpresso Redlink 需要与 LPCXpresso 开发环境配合使用,可满足同时调试双核芯片的需求。此外 LINK2 与 ST-LINK 一样,提供了虚拟串口的功能,计算机只要安装好相应的驱动,便可以直接使用虚拟串口来调试了。与 ST-LINK 不同的时,LINK2 额外提供了 LPCSIO bridge 功能,可以用于目标芯片 IIC 与 SPI 的调试。配合板载的功耗测量电路,还可以对目标芯片进行能耗的测量,功能十分强大!

说到功耗测量部分,NXP 也为工程师朋友考虑了很多,单单测量的方法、这块板卡就提供了多达 3 种的选择。

         

除了采用电压表测量 P2 两端电压,测出 8.2 欧姆分压电阻两端电压,或者用电流表接入 JP4 测负载回路的电流两种方法之外,还提供了软件测量的方法:采用高精度电流检测放大器 MAX9634 加 12bit 精密模数转换器 ADC122S021 的方案,配合LINK2来完成。此方案的设计思路也是非常值得工程师朋友的借鉴。

正所谓细节决定成败,在很多不起眼的细节,板子在设计时都为我们考虑到了,例如,在功率测量上,由于板卡本身自带了一颗三色 LED,与 LPC54102 有着物理上的连接,由于这颗 LED 的存在,可能会对LPC54102 功耗的测量产生一定的影响,板子在设计的时候也额外给这颗 LED 的阳极做了点处理,加上了一个跳线,以便在做功耗测量分析的时候,可以把 LED 断开。

        

由于 LPC54102 支持单电源 1.62v~3.6v 供电,为了保护 MCU 接口安全,在板子的设计上可以看到大量的双电源转换收发器。

 

          

         

该板卡在 LINK2 的设计上花费了不少心血,在细节方面 NXP 的设计人员也是不敢怠慢。由于 LINK2 的 micro usb 接口在使用的时候经常需要插拔,极易受到由用户或空气放电造成的 ESD 影响,所以在硬件的设计上也采用了静电保护二极管 PRTR5V0U2X 的方案来缓解这一问题。

不过,相对于硬件电路设计的精思熟虑,在丝印的设计上,这块板子却是不太如人意。

 
         

首先,在板子的背面,有一个二维码的丝印,但笔者通过扫码,想进一步获取信息的时候发现,二维码是一个网址,但登录后竟然是 404 界面,真让人摸不着头脑。

 
         

其次,在引脚的丝印上,并不能准确看出引脚所对应的引脚号,在设计的时候,需要查找相关的硬件手册,才能获取到信息。这不免是个遗憾。

LPCXpresso54102 板卡搭载的 LPC54102J512BD64 是一款基于 ARM Cortex-M4F 及 ARM Cortex-M0+ 的双核微控制器,专门设计用于解决感测应用中,关于空间和功率的限制的问题,从简单的超低功耗传感器侦听到数据整合、传感器融合或其他传感器数据处理以及外部通信。工程师可根据项目需求,在 Cortex-M4F 和 Cortex-M0+ 大小核心的之间选择、配合,以实现系统的设计功能。前者可以更快速地完成数学密集型算法,如传感器融合,同时省电,而后者可以实现高能效,适用于传感器数据收集、整合和外部通信。

 
        

LPC54102J512BD64 特性:

1) 双核:ARM Cortex-M4F 和 ARM Cortex-M0+ 最大频率 100 MHz

2) 单电源 1.62 V 至 3.6 V 供电

3) 二个 SPI 控制器

4) 三个 I²C 总线接口

5) 四个 USART 串口

6) 五个 32 位通用定时器/计数器

7) 一个 16/32 位多用途状态可配置定时器 SCTimer/PWM

8) 一个 24 位、四通道多速率定时器 MRT

9) 一个重复中断定时器 RIT

10) 32 位实时时钟 RTC

11) 12bit 12 通道 ADC

12) 唯一的设备 ID

13) 512 Kb Flash 以及 104 kB SRAM

上电体验

接下来给板子上电,连接计算机与板子 LINK2 的 micro usb 接口,板子上电便运行出厂的 demo,没错,只能是闪灯例程了,3 色 LED 红、绿色交替闪烁。不得不吐槽,绿色 LED 简直亮瞎眼啊。就连手机拍个照片都因为 LED 高亮度而无法准确对焦,只能怪我咯!

 
         

软件驱动安装:

接下来给 LINK2 仿真器安装驱动。在 NXP 官网可以下载到 lpc_driver_setup.exe,整个安装的过程没有什么特别需要注意的地方,双击便完成了安装。接下来还需安装 LPCScrypt_installer_1.6.0_652.exe,安装的过程同样简单,一直点击下一步即可,若遇到安装驱动,则选择安装。LPCScrypt 是个脚本软件,可以为 LPCLINK2 刷新固件。我们可以看到安装目录里的 Drive 文件夹,里面包含了 LINK2 的虚拟串口(Vcom)驱动和 LPCSIO 驱动。若是第一次安装驱动不成功,则需要在设备管理器中手动安装驱动。

打开设备管理器,在其他设备中可以看到 Vcom 的设备,带有黄色感叹号表示没有正确安装。

 
       

点击右键,更新驱动程序,在随后弹出来的窗口中,选择“浏览计算机以查找驱动程序”。

 
        

随后选择 LPCScrypt 安装目录下 Drive 文件夹,并勾选“包括子文件夹”前的方框。

 
        

然后点击下一步,等待驱动正确安装即可。

接着,在设备管理器,人体学输入设备列表中,可以找到“USB 输入设备”,同样的步骤更新驱动软件。等待驱动全部正确安装完成之后,不出意外,可以在设备管理器中找到以下三个设备。

 
        


LPCXpresso 安装:

为了进一步体验板卡自带的功耗监测,接下来需要安装 LPCXpresso 软件,该软件最新的版本是 8.0,可以在 NXP 官网找到 LPCXpresso_8.0.0_526.exe。软件的安装过程只需一直点击“下一步”,若是弹出安装驱动的请求,点击“安装”即可。安装完成后,还需要注册许可证,注册免费版本后软件将会从 8k 的代码限制提升到 256k,对于一般的设计应该是绰绰有余了。

 
       



根据提示,下一步开始为 LPCXpresso 注册,点击菜单栏“help->Activate->Create serial number and register”

 
       

在随后的窗口中,我们勾选“Copy serial number to clipboard”,并点击“ok”,把序列号复制到粘贴板。随后,软件内部集成的浏览器会自动打开 NXP 的注册页面,进行软件的注册。若是觉得软件内部集成的浏览器使用起来不方便,我们也可以通过勾选“open in external browser”,在计算机默认的浏览器中打开。


      

在注册软件之前,还需要输入帐号密码登录,或者注册新账号登录。

 
        

登录之后,可以发现,序列号已经自动为我们填写好了,接下来只需点击“register LPCXpresso”即可。

 
       

在随后出现的页面中,复制 key。

 

        

在 LPCXpresso 软件的菜单栏中选择“help->Activate-> Activate(Free Edition)”,并在弹出的 Activate code 中粘贴 Key。

 
         

        

可以看到,注册完成之后,debug 的限制已经提升到 256k。


       

到此,软件的安装和注册全部完成。接下来,我们来体验一下 LPCXpresso 软件配合 54102 板卡功耗监测的功能。


功耗监测体验

首先把 LPCLINK2 设置为 DFU 模式,也就是把 LINK2 的 micro usb 接口上方的JP5跳线短接。并连接计算机,可以看到 D1 亮。

 
         

接下来,打开 LPCXpresso,在快速启动栏找到“Power Measurement Tool”并最大化。

 
         

然后点击“Boot Debug Probe”按钮,下载 Redlink 固件,值得注意的是,该固件是运行在 SRAM 中,掉电消失,所以每次使用的时候都要重新烧写。

 
        

在随后弹出的选择中,选择 CMSIS-DAP 下载即可。

 
          

然后在 LPCXpresso 软件右边 Setting 中点击“start”即可开启功耗监测。

 
        

在上图可以快速得出,此时 LPC54102 的功耗为 13.61ma。

通过硬件电路的分析、NXP 在这块板卡上还预留了电流表的接入点。

       

去掉js6的0欧姆电阻,把电流表接入 JP4 两端,测出电流为 13.64ma,与Power Measurement Tool 工具测出的 13.61ma 相差无几。

 
       

NXP 提供此套功耗监测方案,使用起来简单便捷,不用搬弄其他仪器,只需一台计算机便可快速得出功耗,并提供相应的图表数据,大大降低了设计人员的工作量。


双核体验

双核无非是这块板卡最大的亮点,但双核相对与单核芯片,也存在这几个需要解决的问题。第一个问题便是两个内核之间是怎么联系的。对于两个核心之间的通讯,LPC54102 通过 Core-to-core 中断,互斥寄存器,以及一段共享的 RAM 来实现核对核的通讯。接下来一个问题就是,双核的程序编写问题,怎么让两个内核同时工作,完成各自的任务?在这个问题上,NXP 也给出了相关的文档,总结来说,两个核心的工程需要分开分别编译,分别下载到 flash 的不同地址。LPC54102 上电启动后首先引导启动 M4 内核,然后由 M4 内核复位引导启动 M0 内核。

 
       

接下来配合 LPCOPEN 库来体验体验双核的魅力。在官网下载 LPCOpen v3.01,并解压。解压后的 lpc5410x 文件夹便是针对 LPCXpresso54102 的固件库,里面包括了连个核心的外设库,LPCXpresso 板库,以及LPCXpresso54102 例程。

第一步打开 Keil 软件,打开 pack,下载安装 LPC54xxx 的支持包。

然后在 LPC54102\progame\lpc5410x\prj_lpcxpresso_54102\keil 找到以下四个文件夹,分别编译生成 lib_chip_5410x.lib、lib_chip_5410x_m0.lib、lib_board_lpcxpresso_lpc54102.lib以及lib_board_lpcxpresso_54102_m0.lib 四个库文件,之后的工程都是基于这四个库文件。若是没有编译生成这四个文件,在其他例程中编译便会报错。

 
        

打开多核心例程中的 multicore_m0_blinky 文件夹,首先编译 M0 例程,然后设置 debug 页面。在编译器选择“CMSIS-DAP Debugger”,并点击 Setting 进入设置页面。

 
         

在设置页面中,填写 AP=0x01,这样就可以对 M0+ 内核进行控制下载。需要注意的是,需要取消选中 Reset after Connect。

 
        

然后选择 Flash Download,为 LPC54102 选择 Flash 烧写算法。

 
         

最后,在 target 选项卡设置程序烧写的位置,然后把 M0 程序烧写进 FLASH。

 
       

烧写完成后,板卡并没有什么现象,因为 M0 内核并没有启动。

接下来打开 multicore_m4_blinky 文件夹,对 M4 的程序进行编译,工程的设置下载与 M0 工程大致一样,其中不同的是,在编译器选项卡中,设置 ap=0x00,才可以识别 M4 内核,然后选中 Reset after Connect。

 
         

在 target 选项卡中,设置 M4 程序烧写的 Flash 地址。

 
         

烧写完成后,复位启动,可以看到板子 led 红绿交替闪烁,证明双核已经启动。

下面简单分析该例程的双核启动方式,M4 内核的启动与平时单核的启动方式一样,重点是 M0 内核的启动。在 M4 的工程文件 main 函数之中,可以找到以下的程序,这也证实了 M0 内核的启动是由 M4 内核控制完成的。

 
         

小结

LPCXpresso54102 板卡虽然板载资源并不是非常丰富,只有一颗三色 LED 灯以及两个用户按键,但该板卡的硬件设计极具特色,值得推敲学习,特别是板载的电流检测电路,提供了一个典型的参考方案。板载LINK2 仿真器配合 LPC54102 双核 MCU,可满足用户搭建调试原型机的需求,唯一不足的是,双核的调试必须在 NXP 自家的 LPCXpresso 中才能完成,这势必给习惯使用 keil 或者 IAR 等其他编译环境的用户造成一定的不便。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

林 Sir

林 Sir

2021年3月24日
该篇博文貌似是完全抄袭21ic上的吧