这篇博文用来记录学习新唐单片机时遇到的问题以及解决的过程和方法。当然也有各种坑。
希望这篇文章有机会能够帮助到遇到到同样问题的朋友。

  1. 可以和STC单片机一样使用串口下载吗?
    答:并非所有新唐单片机都可以ISP串口下载。只有拥有LDROM的型号才有可能可以通过串口进行程序的下载。
  2. 哪些型号支持串口下载呢?
    答:
    标准8051系列

     出厂已带有ISP程序的型号:
         W78E052D,W78E054D,W78E058D,W78E516D
         N78E055A,N78E059A,N78E517A,N78E366A
     以及出厂不带有ISP程序的型号:
         W77E516A,W77E352,W79E(L)632,W79E(L)633
         W79E(L)658,W79E(L)659

    低管脚8051系列

     出厂已带有ISP程序的型号:
         N79E715
     以及出厂不带有ISP程序的型号:
         N76E616,N76E885,N79E81x,N79E84x,N79E85x
         N76E003(博主追加)

    出厂默认不带ISP程序的型号,使用者可以利用第三方通用型烧录器或者ICP-ISP Programmer(nu-link)自行向LDROM内写入ISP程序后即可使用ISP烧写。

  3. 如何使用ICP工具将ISP程序烧入LDROM呢
    官方提供了各种型号单片机的ISP的bin文件,文件位置如下,XXXX为单片机型号
    ...\Nuvoton_8051_ISP-ICP_Programmer_v7.15\(3) Nuvoton Standard ISP Code\ISP_Code_XXXX_...bin
    打开NuMicro ICP Programming Tool
    NuMicro ICP Programming Tool
    连接好Nu-link点继续,点 LDROM 按钮选择ISP用的bin文件,不要选错型号了。
    点继续
    继续点配置值中的设定按钮打开设置,启动选择指定LDROM,LDROM区域选择合适的大小,根据上面bin文件大大小选择够用的大小即可,不要太大了,这个size越大APP区域可用的空间就越小。
    配置值
    其他的不用动,点确定关闭配置窗口回到主窗口。最下方的编程部分选中LDROM和配置区这两个,APROM不需要选。点开始即可将ISP程序烧入LDROM并设置好启动时从LDROM启动,也就是上电时先运行ISP服务程序,监测到串口上有下载信号时进行下载,否则跳转到用户程序,也就是APROM。
  4. ISP程序已经在LDROM内烧录好了,怎样进行ISP串口下载呢?
    答:使用官方提供的ISP烧录软件ISP-ICP Utility即可。
    ISP-ICP Utility
    要注意的是,N76E003并没有被该软件支持。(列表中不能选择)N76E003需要使用另一个官方提供的ISP软件
    Nuvoton NuMicro ISP Programming tool 进行烧录。
  5. 使用ISP软件烧录的时候,跟STC的ISP软件一样,HEX文件或者BIN文件都支持吗?
    答:只支持BIN文件。所以,用Keil生成的HEX文件需要使用第三方程序HEX2BIN转换成BIN文件再进行烧录。否则,烧录本身不会报错,但程序不会正确执行。
  6. 下载的步骤是否跟STC 单片机一样,先软件点击下载然后给模块上电,下载完成后程序自动开始运行?
    答:稍微不太一样。步骤是,先点连接按钮,再给单片机上电或者冷启动,此时软件显示已经连接成功。此时单片机已经进入烧录等待状态(其实就是运行LDROM内的程序,循环等待下载指令状态),只要不断电或者重启,可以任意下载多次而不需要再次冷启动。下载完成以后单片机不会自动重启也不会立刻执行刚下载完的新程序,需要手动冷启动才会执行新程序。
  7. N76E616支持ISP串口下载吗?
    答:支持。但首先要用ICP向LDROM里写入ISP下位机程序。然后使用ISP-ICP Utility7.15选择ISP by COM port,选择APROM然后点UPLOAD,最后重启目标板子即可。
    这里有个大坑一定要注意!!!
    N76E616有两组串口,这个官方提供的ISP程序使用的是UART1(P5.6 TR,P5.7 TX)而不是默认的UART0(P2.1 TR, P2.2 TX)。博主在这里卡了好几天。。。
  8. 为什么N76E003官方BSP中Timer3_Delay10us函数不能正确延时
    在官方提供的Delay.c中的Timer3_Delay10us函数里
    T3CON = 0x07; (128分频)
    需要修改成
    T3CON = 0x02; (4分频)
    才可以正确延时。
    原因是在这之后的重载值用了4分频的宏定义,两者需要匹配。这是官方BSP代码的BUG。
  9. 为什么在Keil中进行debug时总是提示flash download failed
    原因不明,但是可以试着将上电启动对象区域由LDPRG改成APPRG可以解决该问题,一旦成功一次再改回去也不影响。
  10. 为什么在Keil中进行在线仿真时数据不正确,但是非调试状态下运行时却没有问题
    使用N76E003的在线仿真功能时由于仿真接口占用
    P02,P16,P20
    所以要避开这3个引脚。下面是官方说明。
    WX20191006-141727@2x.png
Last modification:November 19, 2023
If you think my article is useful to you, please feel free to appreciate