新唐MCU技术
直播中

李宛蔓

8年用户 1047经验值
私信 关注
[问答]

如何使用NuMicro_ISP_Programming_Tool的UART功能进行ISP更新时如何更改UART端口?

如何使用NuMicro_ISP_Programming_Tool的UART功能进行ISP更新时如何更改UART端口?

回帖(2)

王利

2025-8-18 16:31:57
使用NuMicro_ISP_Programming_Tool的UART功能进行ISP更新时,更改UART端口需要三个步骤。

1. 在targetdev.h中,找到define,将UART端口和中断子例程的名称更改为目标PORT的名称
(对于不同的芯片,中断子程序的名称可能略有不同,请参考中断向量表。
2. 在main.c中找到SYS_Init(),里面有UART的时钟设置,将原来的UART PORT设置改为目标UART PORT设置。
3. 在main.c中,找到SYS_Init();底部有 UART 的 MFP 设置;将 MFP 更改为目标 PORT 的 MFP。
(1) /* 设置 UART0 RXD(PD.0) 和 TXD(PD.1) 的 PD 多功能引脚 */

例如:将 NUC126 ISP 更新的 UART 端口从 UART0 更改为 UART1
步骤 1 更改 PORT 定义 (targetdev.h)
更改前
#define UART_T UART0
#define UART_T_IRQHandler UART02_IRQHandler
#define UART_T_IRQn UART02_IRQn
变化后
#define UART_T UART1
#define UART_T_IRQHandler UART1_IRQHandler
#define UART_T_IRQn UART1_IRQn

步骤2 更改UART PORT(main.c)的时钟设置
更改前
CLK->APBCLK0 |= CLK_APBCLK0_UART0CKEN_Msk;
CLK->CLKSEL1 = (CLK->CLKSEL1 & (~CLK_CLKSEL1_UARTSEL_Msk)) | CLK_CLKSEL1_UARTSEL_HIRC;
CLK->CLKDIV0 = (CLK->CLKDIV0 & (~CLK_CLKDIV0_UARTDIV_Msk)) | CLK_CLKDIV0_UART(1);
变化后
CLK->APBCLK0 |= CLK_APBCLK0_UART1CKEN_Msk;
CLK->CLKSEL1 = (CLK->CLKSEL1 & (~CLK_CLKSEL1_UARTSEL_Msk)) | CLK_CLKSEL1_UARTSEL_HIRC;
CLK->CLKDIV0 = (CLK->CLKDIV0 & (~CLK_CLKDIV0_UARTDIV_Msk)) | CLK_CLKDIV0_UART(1);
PS 不同芯片的 UART 时钟设置可能略有不同。请参阅 BSP 中的示例代码或技术参考手册中的时钟章节。

步骤 3 将 MFP 更改为目标端口 (main.c)
更改前
/* 设置 UART0 RXD(PD.0) 和 TXD(PD.1) 的 PD 多功能引脚 */
SYS->GPD_MFPL = (SYS->GPD_MFPL & (~SYS_GPD_MFPL_PD0MFP_Msk)) | SYS_GPD_MFPL_PD0MFP_UART0_RXD;
SYS->GPD_MFPL = (SYS->GPD_MFPL & (~SYS_GPD_MFPL_PD1MFP_Msk)) | SYS_GPD_MFPL_PD1MFP_UART0_TXD;
变化后
/* 为 UART0 RXD(PE.9) 和 TXD(PE.8) 设置 PD 多功能引脚 */
SYS->GPE_MFPH = (SYS->GPE_MFPH & (~SYS_GPE_MFPH_PE9MFP_Msk)) | SYS_GPE_MFPH_PE9MFP_UART1_RXD;
SYS->GPE_MFPH = (SYS->GPE_MFPH & (~SYS_GPE_MFPH_PE8MFP_Msk)) | SYS_GPE_MFPH_PE8MFP_UART1_TXD;
举报

幽默

2025-8-21 18:24:10

要在 NuMicro ISP Programming Tool 中使用 UART 功能进行 ISP 更新并更改使用的 UART 端口,你需要同时配置硬件(开发板/目标芯片)和软件(ISP 工具)两个方面。以下是详细步骤:


? 核心原理:
NuMicro ISP 编程工具通过 PC 连接的物理 UART 端口(通常是 USB 转串口适配器呈现的 COM 口)与目标芯片的 UART 外设进行通信。更改“UART 端口”本质上是指:



  1. 硬件上: 将你的 USB 转串口适配器(或 PC 自带串口)的 TX、RX 线连接到目标芯片上你希望用于 ISP 的那个特定 UART 外设的 RX、TX 引脚

  2. 软件上: 在 ISP 工具中选择这个 USB 转串口适配器对应的 Windows COM 端口号




? 步骤详解


✅ 1.  硬件连接更改



  • 确定目标 UART 外设: 查看你的单片机(如 NUC121, NUC505, M031, M480 等)数据手册或开发板原理图,找到除了默认 ISP UART(通常是 UART0)之外,你打算使用的其他 UART 接口(如 UART1, UART2, LPUART 等)。记下该 UART 的 TX (Transmit)RX (Receive) 引脚编号。

  • 物理连线:

    • 断开当前连接。

    • 将你的 USB 转串口适配器的 TX 引脚连接到目标芯片新 UART 外设的 RX 引脚。

    • 将你的 USB 转串口适配器的 RX 引脚连接到目标芯片新 UART 外设的 TX 引脚。

    • 务必确保 USB 转串口适配器和目标芯片的 GND (地线) 连接在一起。


  • BOOT 引脚配置 (关键!): 无论使用哪个 UART 外设,芯片要进入 ISP 模式都需要特定的 BOOT 引脚配置(通常是将 BOOT0 引脚拉高,有时还需要结合特定的复位序列)。请查阅你所用具体芯片型号的数据手册中关于“ISP 进入方式”或“Boot Select”的章节。确认芯片在复位时会检测到这个配置并启动内部 ISP Loader。? 更改 UART 引脚本身不会改变进入 ISP 模式的方式,BOOT 引脚配置始终是进入 ISP 的前提。 ISP Loader 启动后,它会根据硬件设计或内部固件逻辑监听特定的 UART 引脚(默认 UART0),但你连接了其他 UART 就需要确保 Loader 能通过你连接的 UART 通信(这通常需要芯片支持或者你修改了相关配置,见第 5 点)。


? 2.  软件配置 (NuMicro ISP Programming Tool)



  • 启动工具: 打开 NuMicro ISP Programming Tool。

  • 选择编程模式: 在主界面顶部选择 “UART” 作为编程模式。

  • 选择 COM 端口:

    • “Port”“COM Port” 下拉菜单中,找到并选择与你刚才连接的 USB 转串口适配器对应的 COM 端口号(例如 COM3, COM4 等)。这就是在软件层面“更改 UART 端口”的操作。

    • 注意: 如果你看不到预期的 COM 端口:

      • 检查 USB 转串口适配器是否已正确插入 PC。

      • 确认适配器的驱动程序是否已安装(可在 Windows 设备管理器的“端口 (COM & LPT)”下查看)。

      • 尝试拔插 USB 线或重启工具/PC。



  • 设置波特率:

    • “Baudrate” 下拉菜单中,选择一个合适的波特率。NuMicro ISP Loader 通常支持自动波特率或使用特定波特率(常见的有 115200, 57600, 38400)。如果连接不稳定,尝试降低波特率。工具一般支持自动同步波特率,保持默认 115200 通常即可。


  • 配置芯片选项 (Optional):

    • “Config” 选项卡(或类似标签页)中:

      • 选择正确的 “Target Project” 或芯片型号。

      • 配置 “Clock Source”(如果 ISP Loader 需要知道外部时钟频率,但很多芯片的 Loader 能自动检测)。

      • 配置 “Watchdog”(通常建议在 ISP 期间禁用)。

      • 配置 “Brown-out Detector”(通常建议启用)。



  • 加载目标文件:“APROM” 选项卡(或 “File” 菜单),点击 “Browse...” 选择你要烧录的 .bin 或 .hex 文件。


? 3.  进入 ISP 模式 & 连接



  • 确保硬件连接正确且牢固。

  • 确保 BOOT 引脚已按数据手册要求配置为 ISP 模式(通常 BOOT0=1)。

  • 给目标芯片重新上电或手动复位: 这是触发芯片检测 BOOT 引脚并启动 ISP Loader 的关键步骤。

    • 如果使用的是开发板上的 ISP 按钮或串口适配器的 DTR/RTS 自动控制复位功能(需要适配器和 ISP 工具支持),点击工具的 “Connect” 按钮即可触发复位和连接。

    • 如果手动操作:

      1. 保持 BOOT0 引脚为高电平。

      2. 按一下目标板上的 “RESET” 按钮。

      3. 立即在 ISP 工具中点击 “Connect” 按钮。⏱️ 复位后几秒钟内,ISP Loader 等待连接超时会退出,所以动作要快。



  • 观察连接状态:

    • 如果连接成功,工具状态栏会显示 “Connected” 或类似信息,“Connect”按钮可能会变成 “Disconnect”。APROM/LDROM/Data Flash 等区域的内容可能会显示出来。

    • 如果连接失败: 请跳到下面的“常见问题排查”部分。



4.  执行编程操作



  • 连接成功后,根据需要勾选要操作的项目(通常是 “APROM”,可能还有 “Config”)。

  • 点击 “Start”“Execute” 按钮开始烧录程序。

  • 等待进度条完成,并查看底部日志窗口确认烧录成功或失败。




常见问题排查 (连接失败时重点检查)



  1. COM 端口错误: 在设备管理器中确认 USB 转串口适配器的 COM 号,并在 ISP 工具中准确选择。

  2. 驱动问题: USB 转串口适配器驱动未安装或损坏。重新安装官方驱动。

  3. 波特率不匹配: 尝试更换波特率(尤其是较低波特率如 57600, 38400),或确保工具和目标芯片 ISP Loader 都支持并尝试了自动波特率。

  4. 接线错误:

    • 交叉错误: 确保是 PC TX -> MCU RX, PC RX -> MCU TX。这是最常见的错误!?

    • 接触不良/断线: 检查杜邦线、焊点是否可靠。

    • GND 未连接: 必须共地!


  5. BOOT 引脚未正确配置: 这是另一个极其常见的失败原因。 严格按数据手册要求设置 BOOT 引脚(通常是 BOOT0=1),并在复位时保持该电平。使用万用表测量确认。

  6. 复位时序问题:

    • 手动复位后点击“Connect”的速度不够快。尝试在按住复位键时点击“Connect”,然后在点击后瞬间释放复位键。

    • 确保使用的串口适配器支持并能正确产生 DTR/RTS 复位信号(如果工具提供该选项)。


  7. 目标芯片供电问题: 确保芯片上电正常,电压符合要求。

  8. 串口被占用: 关闭其他可能占用该 COM 口的程序(如串口调试助手、IDE 等)。

  9. 目标 UART 外设不被 ISP Loader 支持: 这是最关键的一点!NuMicro 芯片的内部固化 ISP Loader (LDROM) 默认通常只监听 UART0 的特定引脚。如果你想使用 UART1、UART2 等其他串口进行 ISP:

    • 查阅芯片手册: 首先确认该型号芯片的 ISP Loader 是否支持通过其他 UART 接口通信。部分较新的芯片型号支持。

    • 使用支持配置的 ISP Loader: 如果芯片支持,在 “Config” 选项卡中寻找 “ISP UART Port Select”“UART Interface” 或类似选项,然后在下拉菜单中选择你连接的那个 UART 外设(如 UART1)。如果没有这个选项,则默认 ISP Loader 很可能只支持 UART0。  ?

    • 更新/定制 LDROM: 如果默认不支持所需 UART,可能需要先用默认 UART0 烧录一个你自己编写的、支持多 UART 的 ISP 程序到 LDROM,以后就可以通过其他 UART 更新了。这属于高级应用。





? 总结关键点



  • 硬件改线: PC USB串口TX -> 目标芯片 新UART RX; PC USB串口RX -> 目标芯片 新UART TX; 连接GND。

  • 软件选口: 在 ISP 工具中选择 USB 串口对应的 COM 端口号

  • 决胜关键: 正确配置 BOOT 引脚 并在复位时保持,触发芯片进入 ISP 模式。

  • 确认支持: 检查芯片数据手册,确认其内部 ISP Loader 支持 你打算使用的 非默认 UART 端口。如果不支持,你需要使用默认 UART0 或采取高级方案(如更新 LDROM)。


遵循以上步骤,你应该能够成功更改 NuMicro ISP Programming Tool 进行 UART ISP 更新时所使用的 UART 端口。?‍?

举报

更多回帖

发帖
×
20
完善资料,
赚取积分