查看: 9926|回复: 10

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

[复制链接]
  • TA的每日心情
    擦汗
    2024-11-7 09:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    35

    主题

    83

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1263
    最后登录
    2025-8-26
    发表于 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 天

    连续签到: 1 天

    [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 天

    连续签到: 1 天

    [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]
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-7 09:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    35

    主题

    83

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

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

    不用sdk,是preinstalled mcu
    下载sdk也可以
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-7 09:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    35

    主题

    83

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1263
    最后登录
    2025-8-26
     楼主| 发表于 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 天

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

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

    使用道具 举报

  • TA的每日心情

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

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

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

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

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

    使用道具 举报

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

    连续签到: 1 天

    [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
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-7 09:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    35

    主题

    83

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

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

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

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-31 06:44 , Processed in 0.118531 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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