查看: 6760|回复: 10

[MCUXpresso] 【LPC54114双核任务一】自己探路MCUXpressoIDE初探

[复制链接]

该用户从未签到

25

主题

64

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1025
最后登录
2024-3-31
发表于 2017-6-22 12:14:50 | 显示全部楼层 |阅读模式
本帖最后由 北方. 于 2017-6-22 15:22 编辑

1. LPC54114开发板收到了,确实不错,如图。
1901158721.jpg
在包装盒清楚地说明了产品的性能和支持的外设,都不用再找datasheet了。
1138673151.jpg
1524655107.jpg

2. 芯片性能
2.1 LPC5410x是基于ARM Cortex-M4的微控制器,适用于嵌入式应用。这些器件包括可选的ARM Cortex-M0 +协处理器、104 kB的片上SRAM、高达512 kB的片上闪存、五个通用定时器、一个具有PWM功能的状态可配置定时器(SCTimer/PWM)、一个RTC/报警定时器、一个24位多速率定时器(MRT)、重复中断定时器(RIT)、窗口看门狗定时器(WWDT)、四个USART、两个SPI、三个带有高速从模式的超快速模式I2C总线接口和一个12位5.0 Msamples/s ADC。Cortex-M0+协处理器可提供高达100 MHz的性能,具有简单指令集和缩减的代码大小。在LPC5410x中, Cortex-M0协处理器硬件乘法器是作为32周期的迭代乘法器来实现的。
不过需要区别的是有两种封装LPC54114J256BD64和LPC54114J256UK49两种封装,这里的是BD64的封装。
2.2 双核说明
~ARM Cortex-M4内核(r0p1版)
ARM Cortex-M4处理器,运行频率高达100 MHz,使用与Cortex-M相同的时钟,浮点运算单元(FPU)和存储器保护单元(MPU)。ARM Cortex-M4内置可嵌套向量中断控制器(NVIC)。非屏蔽中断(NMI)输入,有多种源可供选择。串行线调试,具有8个断点和4个观察点。包含串行线输出,用于增强调试功能。系统节拍定时器。
~ARM Cortx-M0+内核(r0p1版)
ARM Cortex-M0+处理器,运行频率可高达100 MHz,ARM Cortex-M0+内置可嵌套中断向量控制器(NVIC)。非屏蔽中断(NMI)输入,有多种源可供选择。串行线调试,具有四个中断点和两个观察点。系统节拍定时器。
2.3 芯片资源
~ 片上存储器:
最高512 KB片上可编程闪存,带闪存加速器和256字节页面擦除和写入功能。总共104 kB的SRAM包括:高达96 kB的连续主SRAM。额外的8 kB SRAM。支持ROM API,闪存在应用编程(IAP)和在系统编程(ISP)。功率控制API。
~串行接口:
四个USART接口,采用同步模式和32 kHz模式,用于从深度睡眠和掉电模式中唤醒。USART从系统FIFO获得FIFO支持,并共享一个小数波特率发生器。两个SPI接口,每个具有四个从选择和灵活的数据配置。SPI具有来自系统FIFO的FIFO支持。从器件功能可将器件从深度睡眠和掉电模式中唤醒。三个I2C总线接口,支持快速模式和超快速模式,数据速率高达1 Mbit/s,采用多地址识别和监控模式。每个I2C总线接口还支持从器件高速模式(3.4 Mbit/s)。从器件功能可将器件从深度睡眠和掉电模式中唤醒。
~数字外设:
DMA控制器,具有22个通道和20个可编程触发器,能够访问所有存储器和支持DMA的外设。高达50个通用输入/输出(GPIO)针脚。大部分GPIO具有可配置的上拉/下拉电阻,可编程开漏模式,以及输入逆变器。通用IO寄存器位于AHB上,以支持快速存取。DMA支持通用IO端口。最多可以选择8个通用IO (引脚中断)作为边沿敏感(上升沿或下降沿或两者)中断请求或电平敏感(低电平有效或高电平有效)中断请求。此外,可以选择多达8个通用IO使用模式匹配引擎模块来促进布尔表达式和中断生成。两组GPIO中断(GINT)支持基于输入状态逻辑(AND/OR)组合的中断。CRC引擎。
~定时器:
5个32位标准通用定时器/计数器,其中4个支持多达4个采集输入和4个比较输出、PWM模式和外部计数输入。可选择特定的定时器事件,以生成DMA请求。第5个定时器没有外部引脚连接,可用于内部定时操作。一个具有8个输入(6个外部输入和2个内部输入)和8个输出功能(包括采集和匹配)的状态可配置定时器/PWM (SCT/PWM)。输入和输出可引至或引自外部引脚,内部引至或引自所选外设。在内部,SCT支持10个采集/匹配,13个事件和13个状态。32位实时时钟(RTC),以1 S分辨率在始终开启的电源域内运行。RTC中的定时器可用于唤醒所有低功耗模式(包括深度节电模式),具有1 ms分辨率。多通道多速率24位定时器(MRT),用于在最多4种可编程固定速率下重复生成中断。窗口化看门狗定时器(WWDT)。超低功耗微节拍定时器,通过看门狗振荡器运行,可用于将器件从低功耗模式中唤醒。重复中断定时器(RIT),适合调试时间戳和通用应用。
~时钟生成:
12 MHz内置RC振荡器。高达25 MHz的外部时钟输入时钟频率。内部低功耗看门狗振荡器(WDOSC),标称频率为500 kHz。32 kHz低功耗RTC振荡器。系统PLL允许CPU以最大CPU速率运行。可通过内部RC振荡器、外部时钟输入CLKIN或RTC振荡器运行。时钟输出功能,可监控内部时钟。用于测量片上和片下时钟信号频率的频率测量单元。
2.4 更多信息
双处理器内核:ARM Cortex-M4和ARM Cortex-M0+。M0+内核的工作频率与M4内核相同。两个内核均可达到最高100 MHz的运行频率。模拟外设:12位12通道模数转换器(ADC),支持5.0 Msamples/s。该ADC支持两个独立的转换序列。单电源(1.62 V至3.6 V)。上电复位(POR)。带独立阈值的掉电检测(BOD),用于中断和强制复位。支持JTAG边界扫描。可用作芯片识别的唯一设备序列号(128位)。工作温度范围为-40 °C至105 °C。提供3.288 x 3.288 mm WLCSP49封装和LQFP64封装。


3. 在了解了芯片之后选择开发工具IDE,按照说明首选KEIL和IAR,不过,更应该走一下新路,所以就用MCUXpressoIDE了。新版的MCUXpressoIDE其实集成了LPC54114,所以可以快速启动开发,不用安装SDK,这也是选择MCUXpressoIDE的原因之一了。
3.1 下载安装MCUXpressoIDE并启动,
1.JPG
选择LPC54114
2.JPG
3.JPG
然后就可以编译,并下载到内存点灯了。
4.JPG
3.2 主要代码是
  1. <font size="4"><font size="3">int main(void)
  2. {
  3.     uint32_t port_state = 0;

  4.     /* Define the init structure for the output LED pin*/
  5.     gpio_pin_config_t led_config = {
  6.         kGPIO_DigitalOutput, 0,
  7.     };

  8.     /* Board pin, clock, debug console init */
  9.     /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
  10.     CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
  11.     /* enable clock for GPIO*/
  12.     CLOCK_EnableClock(kCLOCK_Gpio0);
  13.     CLOCK_EnableClock(kCLOCK_Gpio1);

  14.     BOARD_InitPins();
  15.     BOARD_BootClockFROHF48M();
  16.     BOARD_InitDebugConsole();

  17.     /* Print a note to terminal. */
  18.     PRINTF("\r\n GPIO Driver example\r\n");
  19.     PRINTF("\r\n The LED is taking turns to shine.\r\n");

  20.     /* Init output LED GPIO. */
  21.     GPIO_PinInit(GPIO, APP_BOARD_TEST_GPIO_PORT1, APP_BOARD_TEST_LED1_PIN, &led_config);
  22.     GPIO_WritePinOutput(GPIO, APP_BOARD_TEST_GPIO_PORT1, APP_BOARD_TEST_LED1_PIN, 1);

  23.     GPIO_PinInit(GPIO, APP_BOARD_TEST_GPIO_PORT2, APP_BOARD_TEST_LED2_PIN, &led_config);
  24.     GPIO_WritePinOutput(GPIO, APP_BOARD_TEST_GPIO_PORT2, APP_BOARD_TEST_LED2_PIN, 1);

  25.     GPIO_PinInit(GPIO, APP_BOARD_TEST_GPIO_PORT3, APP_BOARD_TEST_LED3_PIN, &led_config);
  26.     GPIO_WritePinOutput(GPIO, APP_BOARD_TEST_GPIO_PORT3, APP_BOARD_TEST_LED3_PIN, 1);

  27.     GPIO_ClearPinsOutput(GPIO, 1, 1 << APP_BOARD_TEST_LED1_PIN | 1 << APP_BOARD_TEST_LED3_PIN);
  28.     GPIO_SetPinsOutput(GPIO, 1, 1 << APP_BOARD_TEST_LED1_PIN | 1 << APP_BOARD_TEST_LED3_PIN);

  29.     GPIO_ClearPinsOutput(GPIO, 1, 1 << APP_BOARD_TEST_LED3_PIN);
  30.     GPIO_SetPinsOutput(GPIO, 1, 1 << APP_BOARD_TEST_LED3_PIN);

  31.     GPIO_TogglePinsOutput(GPIO, 1, 1 << APP_BOARD_TEST_LED1_PIN | 1 << APP_BOARD_TEST_LED3_PIN);
  32.     GPIO_TogglePinsOutput(GPIO, 1, 1 << APP_BOARD_TEST_LED1_PIN | 1 << APP_BOARD_TEST_LED3_PIN);

  33.     GPIO_TogglePinsOutput(GPIO, 1, 1 << APP_BOARD_TEST_LED1_PIN);
  34.     GPIO_TogglePinsOutput(GPIO, 1, 1 << APP_BOARD_TEST_LED1_PIN);

  35.     GPIO_TogglePinsOutput(GPIO, APP_BOARD_TEST_GPIO_PORT2, 1 << APP_BOARD_TEST_LED2_PIN);
  36.     GPIO_TogglePinsOutput(GPIO, APP_BOARD_TEST_GPIO_PORT2, 1 << APP_BOARD_TEST_LED2_PIN);

  37.     /* Port masking */
  38.     GPIO_SetPortMask(GPIO, APP_BOARD_TEST_GPIO_PORT2, 0x0000ffff);
  39.     GPIO_WriteMPort(GPIO, APP_BOARD_TEST_GPIO_PORT2, 0xffffffff);
  40.     port_state = GPIO_ReadPinsInput(GPIO, 0);
  41.     PRINTF("\r\n Standard port read: %x\r\n", port_state);
  42.     port_state = GPIO_ReadMPort(GPIO, 0);
  43.     PRINTF("\r\n Masked port read: %x\r\n", port_state);

  44.     while (1)
  45.     {
  46.         port_state = GPIO_ReadPinsInput(GPIO, 0);
  47.         PRINTF("\r\n Port state: %x\r\n", port_state);
  48.         if (!(port_state & (1 << APP_SW1_PIN)))
  49.         {
  50.             GPIO_TogglePinsOutput(GPIO, APP_BOARD_TEST_GPIO_PORT2, 1u << APP_BOARD_TEST_LED2_PIN);
  51.         }

  52.         if (!GPIO_ReadPinInput(GPIO, APP_SW1_PORT, APP_SW2_PIN))
  53.         {
  54.             GPIO_TogglePinsOutput(GPIO, APP_BOARD_TEST_GPIO_PORT1, 1u << APP_BOARD_TEST_LED1_PIN);
  55.         }
  56.         delay();
  57.     }
  58. }</font></font>
复制代码

4、对应于程序,还可以用UART进行交互,如下面的hello world程序,会先输出hello world,然后回传你所输入的文本。
主要代码如下:
  1. ******************************************************************************/
  2. /*!
  3. * @brief Main function
  4. */
  5. int main(void)
  6. {
  7.     char ch;

  8.     /* Init board hardware. */
  9.     /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
  10.     CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

  11.     BOARD_InitPins();
  12.     BOARD_BootClockFROHF48M();
  13.     BOARD_InitDebugConsole();

  14.     PRINTF("hello world.\r\n");

  15.     while (1)
  16.     {
  17.         ch = GETCHAR();
  18.         PUTCHAR(ch);
  19.     }
  20. }
复制代码

在putty演示的效果如下:
捕获.JPG



我知道答案 目前已有10人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2017-11-15 10:33
  • 签到天数: 79 天

    [LV.6]常住居民II

    89

    主题

    2169

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    1779
    最后登录
    2020-8-22
    发表于 2017-6-22 14:54:10 | 显示全部楼层
    不错不错!
    签到
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-2-7 18:18
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    13

    主题

    126

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1628
    最后登录
    2021-7-13
    发表于 2017-6-25 12:13:57 | 显示全部楼层
    楼主,MCUXpressoID用的版本是多少呀?我安装的MCUXpressoIDE怎么没有自带SDK?我用的是MCUXpresso IDE v10.0.0 [Build 344] [2017-03-21]
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25

    主题

    64

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1025
    最后登录
    2024-3-31
     楼主| 发表于 2017-6-25 17:14:08 | 显示全部楼层
    pythonworld 发表于 2017-6-25 12:13
    楼主,MCUXpressoID用的版本是多少呀?我安装的MCUXpressoIDE怎么没有自带SDK?我用的是MCUXpresso IDE v10. ...

    不用sdk,是preinstalled mcu
    下载sdk也可以
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25

    主题

    64

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1025
    最后登录
    2024-3-31
     楼主| 发表于 2017-6-25 17:14:30 | 显示全部楼层
    pythonworld 发表于 2017-6-25 12:13
    楼主,MCUXpressoID用的版本是多少呀?我安装的MCUXpressoIDE怎么没有自带SDK?我用的是MCUXpresso IDE v10. ...

    不用sdk,是preinstalled mcu
    下载sdk也可以
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    8089
    最后登录
    2022-5-12
    发表于 2017-6-25 19:34:45 | 显示全部楼层
    楼主 可以发详细点么。 选择完 板子后 ,后面还有好多next,需要选择好多东西的,,不会弄啊,
    好好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    8089
    最后登录
    2022-5-12
    发表于 2017-6-25 19:35:10 | 显示全部楼层
    来个详细的,带领我们小白 一步一步来
    好好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2022-4-4 11:28
  • 签到天数: 351 天

    [LV.8]以坛为家I

    141

    主题

    8054

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5740
    最后登录
    2022-4-4
    发表于 2017-6-25 19:45:15 | 显示全部楼层
    你固件更新了吗,我的更新了,用这个IDE怎么不能下载
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-2-7 18:18
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    13

    主题

    126

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1628
    最后登录
    2021-7-13
    发表于 2017-6-25 21:20:00 | 显示全部楼层
    同问程序怎么下载的我显示的probe信息和你的不一样。
    DAP.PNG
    QQ图片20171219174052_03.gif
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25

    主题

    64

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1025
    最后登录
    2024-3-31
     楼主| 发表于 2017-6-26 09:25:13 | 显示全部楼层
    pythonworld 发表于 2017-6-25 21:20
    同问程序怎么下载的我显示的probe信息和你的不一样。

    应该是发货时的固件不一样,我的没更新,直接显示的是mbed。你问一下后台了。应该是刷下firmware就好了。
    我还尝试用mbed工具编写,但是灯没点亮,就没有发贴了。估计选择好端口,也没有问题,用起来更方便。

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-6 20:52 , Processed in 0.168648 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表