查看: 812|回复: 0

[原创] LPC4330 - 1- 想说点个RGB灯也不是那么容易

[复制链接]
  • TA的每日心情
    慵懒
    2024-1-21 12:18
  • 签到天数: 1081 天

    [LV.10]以坛为家III

    16

    主题

    1903

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5085
    最后登录
    2024-5-8
    发表于 2023-2-26 16:46:27 | 显示全部楼层 |阅读模式
    本帖最后由 SensorYoung 于 2023-2-26 18:53 编辑

    一、板卡主要资源介绍
    首先感谢NXP论坛以及管管寄送的LPC4330板子,先上图,有图好说话。
    board-1.png     board-2.png

    配置非常的强大,可以参考另一位大佬分享在NXP论坛的帖子:
    -1- 最爱的双核MCU之LPCXpresso board for LPC4330
    -2- LPCXpresso 4300 Board上手

    二、下载调试环境
    下载使用的是LPC_LINK2,相关的介绍如下:LPC_Link 属于 CMSIS-DAP 调试器,LPC_Link 是 NXP 公司的产品,主要应用在 NXP LPC 系列 MCU(根据别人的设计验证,LPC_Link 在 stm32 上面也可以正常工作),CMSIS-DAP 是 USB 调试器设备单元的一种固件实现。运行在主机电脑上的调试软件,通过 USB 接口的调试器设备,最终能够调试运行在目标 MCU 上的应用软件。CMSIS-DAP 调试设备通过 JTAG 或者 SWD 连接到目标设备。ARM Cortex 处理器提供了 CoreSight Debug 和 Trace 单元。CMSIS-DAP 调试器能够支持那些包含一个或者多个 ARM 内核的处理器。
    1lpclink______.png


    根据手册UM10946-om13084_88.pdf上的描述:默认情况下,LPCXpresso4330使用板载的调试探针(LINK2,通过板载的LPC4322烧录固件来实现)来调试板载Target MCU即LPC4330。
    gs.png

    首先下载好LPCXpresso IDE,第一次板卡上电之前,要把JP6的跳线帽接上。这样可以强制LPC4322进入DFU模式,并自动刷入调试固件。用LPCXpresso烧录的LPC-LINK2 CMSIS-DAP V5.173。
    LPC_LINK2 CMSIS-DAP V5.173.png
    固件可以通过在NXP官网下载最新版本的LPCScrypt工具,这是一个基于命令行的小工具。在scripts文件夹打开命令行窗口。
    lpc-scrypt-1.png     lpc-scrypt.png

    更新后的固件版本:
    LPC_LINK2 CMSIS-DAP V5.361.png

    至此,烧录到LPC4322内部Flash上的调试固件已经更新好,之后就可以拔掉跳线帽,重新上电。不过这个跳线帽需要安装到JP5的位置了。
    JP6.png
    LPC4330没有片内Flash,使用的外部扩展了8MB的Flash即:8Mb Macronix Quad SPI flash (MX25L8035EM2I-10G) 。所以JP5必须接上才能从片外Flash启动。
    ISP SPIFI.png
    三、编写烧录用户程序
    LPC4330的外设库可以方便的从NXP官网下载,我这里使用的是lpcopen_3_02_lpcxpresso_xplorer4330。导入到IDE后,要首先编译如下两个项目,然后在去编译自己的项目。
    board-chip.png

    RGB小灯电路图:
    rgb led.png
    代码比较简单,延迟利用了Systick来实现。
    1. **
    2. * @brief        Handle interrupt from SysTick timer
    3. * @return        Nothing
    4. */
    5. static volatile uint32_t tick_ct = 0;
    6. void SysTick_Handler(void)
    7. {
    8.         tick_ct += 1;
    9. }

    10. void Delay_ms(uint32_t N_ms){
    11.         uint32_t start_cnt = tick_ct;
    12.         while((tick_ct - start_cnt) <= N_ms){
    13.                 ;
    14.         }
    15. }

    16. /**
    17. * @brief        main routine for blinky example
    18. * @return        Function should not exit.
    19. */
    20. int main(void)
    21. {

    22.         SystemCoreClockUpdate();
    23.         Board_Init();

    24.         /* Enable and setup SysTick Timer at a periodic rate */
    25.         SysTick_Config(SystemCoreClock / TICKRATE_HZ);

    26.         /*  LED red as output */
    27.         Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, 3, 7);
    28.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 3, 7, (bool) TRUE );

    29.         /* LED green as output */
    30.         Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, 0, 7);
    31.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 0, 7, (bool) TRUE );

    32.         /* LED blue as output */
    33.         Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, 3, 5);
    34.         Chip_GPIO_SetPinState(LPC_GPIO_PORT, 3, 5, (bool) TRUE );

    35.         while (1) {
    36.                 //__WFI();
    37.                 Chip_GPIO_SetPinOutLow(LPC_GPIO_PORT, 3, 7);
    38.                 Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 0, 7);
    39.                 Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 3, 5);
    40.                 Delay_ms(5000);

    41.                 Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 3, 7);
    42.                 Chip_GPIO_SetPinOutLow(LPC_GPIO_PORT, 0, 7);
    43.                 Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 3, 5);
    44.                 Delay_ms(5000);

    45.                 Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 3, 7);
    46.                 Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 0, 7);
    47.                 Chip_GPIO_SetPinOutLow(LPC_GPIO_PORT, 3, 5);
    48.                 Delay_ms(5000);
    49.         }
    50. }
    复制代码

    闪烁吧,RGB:
    Snipaste_2023-02-26_16-29-42.png

    使用MCUXpresso,程序可以正常烧录。
    mcuxpresso flash program ok.png
    不过第一次下载的是LPCXpresso,但是烧录总是出现问题,如下图。这个问题小弟搞不明白,请大佬食用。
    ERROR-LPCXpresso.png

    参考文档:
    Universal LPC_Link Debugger 的设计原理
    Freelink LPC4322JET100 based Debug Circuit on NXP i.MX RT1064-EVK Board
    Debug Firmware Switching for the LPC4322
    What is Redlink? https://community.nxp.com/t5/LPC ... -Redlink/m-p/475446














    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-8 16:04 , Processed in 0.124528 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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