新唐NUC980使用记录:基础说明与资料索引
Posted Naisu Xu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新唐NUC980使用记录:基础说明与资料索引相关的知识,希望对你有一定的参考价值。
文章目录
前言
最初知道 新唐(nuvoton) 是因为别人推荐的国产单片机厂家,不过国产单片机厂家可选择的太多了,也就一直没有用过它们家的单片机。后来在寻找适合入门学习嵌入式Linux的微处理器时候发现了新唐的微处理器。目前它家的微处理器最新的是NUC980系列。
新唐的微处理器在入门学习嵌入式Linux方面有两点优势:
- 数据手册、参考手册、硬件参考设计、BSP包、开发板资料等完全开放;
这是选择一颗芯片最核心的需求,没有这个就得花很多时间趟坑了; - 内置DDR & 焊接方便;
比如现在最常见的NUC980系列的NUC980DK61YC芯片,内置64MB DDR1内存、采用LQFP-128封装、无底部焊盘,使用电烙铁就可以完成焊接,不用使用风枪或是底部开孔灌锡等方式进行焊接;
上面两个条件中,满足第一个条件的一大堆,在此基础上同时要满足第二个条件的就非常少了,至少目前我只找到新唐的。(其实我还想要第三个条件:ARMv7或以上,焊接条件可以放宽点,比如使用QFN封装等。可惜一直没找到。)
NUC980DK61YC便宜的时候零卖三十多一片,现在普遍卖五十多,虽然不算便宜,但也不算贵:
这篇文章将介绍下上手使用NUC980系列需要的一些基础信息,方便回头查询使用。
基础说明
下面是NUC980系列官方的介绍:
NUC980 工业控制物联网系列
NUC980 系列采用 ARM926EJ-S 核心,执行速度高达 300 MHz ,堆迭 64 MB 或 128 MB DDR-II 记忆体于同一封装,提供 64-pin、128-pin 和 216-pin LQFP 封装,大幅减少 PCB 尺寸和降低电磁干扰 ( EMI ) 。丰富的周边功能包含:10 组 UART 介面、双乙太网、4 组 CAN 2.0 B 、8 组 USB Host 、双 SDIO / eMMC 介面、NAND Flash 介面、QSPI NAND 介面、ISO-7816 介面和高速 USB 2.0 Host / Device 等,可以满足客户对弹性设计的需求。
NUC980 提供 AES、SHA、ECC 与 RSA 加密引擎,并符合 - 40 ℃ 至 85 ℃ 工业温度规格,主要应用为工业自动化控制、工业物联网闸道器 ( Gateway ) 、网路印表机设备、电表集中器、智能家居闸道。
下面是NUC980系列芯片框图:
下面是NUC980系列芯片命名规则:
NUC980系列目前市面上最常见的是NUC980DK61YC这个型号。这个型号是LQFP-128封装的,一般来说比较推荐使用这个封装的:LQFP-64封装的外设少一些,并且只支持从SPI Flash启动;LQFP-216封装的可用的IO相比128Pin的多了没几个,可用外设两者几乎一样。
目前官网上可以看到新的有NUC980DK63YC等型号的芯片,猜测可能是内置的DDR变为DDR3了,目前没有看到更多信息。
上电设置
NUC980系列上电时会读取一些IO口上的电平值,将它所存到 SYS_PWRON 寄存器的对应位。 SYS_PWRON 寄存器会影响系统的启动源和一些基础功能配置。下面是相关的一些内容:
IO口 | 描述 | 寄存器对应位 | 默认值 |
---|---|---|---|
USB0_ID | 0 = USB0 act as a USB host 1 = USB0 act as a USB device | USBID (SYS_PWRON[16]) | 1 |
PG[1:0] | 00 = Boot from USB 01 = Boor from SD0/eMMC 10 = Boot from NAND Flash 11 = Boot from SPI Flash | BTSSEL (SYS_PWRON[1:0]) | 11 |
PG.2 | 0 = QSPI0_CLK frequency is 30 MHz 1 = QSPI0_CLK frequency is 50 MHz | QSPI0CKSEL(SYS_PWRON[2]) | 1 |
PG.3 | 0 = After power-on, WDT Disabled 1 = After power-on WDT Enabled | WDTON (SYS_PWRON[3]) | 1 |
PG.4 | 0 = Pin PA[6:2] used as JTAG interface 1 = Pin PG[15:11] used as JTAG interface | JTAGSEL (SYS_PWRON[4]) | 1 |
PG.5 | 0 = UART 0 debug message output ON and pin PF[12:11] used as the UART0 functionality 1 = UART0 debug message output OFF and pin PF[12:11] used as the GPIO functionality | URDBGON (SYS_PWRON[5]) | 1 |
PG[7:6] | 00 = NAND Flash page size is 2KB 01 = NAND Flash page size is 4KB 10 = NAND Flash page size is 8KB 11 = Ignore Power-On Setting | NPAGESEL(SYS_PWRON[7:6]) | 11 |
PG[9:8] | When BTSSEL = 01, Boot from SD/eMMC, the MISCCFG defines the GPC or GPF used as the booting source. 11 = GPC group used as the booting source Others = GPF group used as the booting source When BTSSEL = 10, Boot from NAND Flash, the MISCCFG defines the ECC type. 00 = No ECC 01 = ECC is BCH T12 10 = ECC is BCH T24 11 = Ignore power-on setting When BTSEL = 11, Boot from SPI Flash, the MISCCFG defines the SPI Flash type and data width. 00 = SPI-NAND Flash with 1-bit mode 01 = SPI-NAND Flash with 4-bit mode 10 = SPI-NOR Flash with 4-bit mode 11 = SPI-NOR Flash with 1-bit mode | MISCCFG (SYS_PWRON[9:8]) | 11 |
上面表格中比较重要的一些信息都进行了加粗。此外还有一些需要事项:
- 表格中这些IO口会在上电启动时由芯片自动启用内部上拉,所以默认值都是1;
需要改动的话可以外部接地、或者串个10K电阻接地; - 表格中的IO口可能并没有全部引出到外部引脚,视封装而定;
电路设计
新唐官方有出了几款NUC980的开发板,可以在下面大章节中找到这些开发板的链接。这一章节主要介绍下基础的电路部分。
供电
NUC980需要 3.3V
、 1.8V
、 1.2V
三路电源供电:
复位
NUC980的复位引脚是 nRESET
,低电平复位。官方开发板中主要使用3.3V电源串接100k电阻和1uF电容接到地,电阻和电容中间点作为复位信号。
时钟源
NUC980使用外部 12M
无源晶体作为主系统时钟。除了晶体两端配置负载电容外。两个引脚间还需要接1M电阻。RTC时钟使用 32.768k
晶体,不需要负载电容。
启动设置与启动源
启动设置主要参考前面上电设置章节,与启动源相关的最主要的设置依赖于 PG[1:0]
和 PG[9:8]
,依据组合不同可以产生下面几种情况:
PG[1:0] = 00
USB ISP模式,可以用过 USB0
向板子上的Flash写入数据(烧录固件);
PG[1:0] = 01 & PG[9:8] = 11
通过 SD0
接口上的SD卡或eMMC启动,接口引脚说明如下:
Pin Name | GPIO | Type | Description |
---|---|---|---|
SD0_CLK | PC.6 | O | SD0 clock output pin |
SD0_CMD | PC.5 | I/O | SD0 command/response pin |
SD0_DATA0 | PC.7 | I/O | SD0 data line bit 0 |
SD0_DATA1 | PC.8 | I/O | SD0 data line bit 1 |
SD0_DATA2 | PC.9 | I/O | SD0 data line bit 2 |
SD0_DATA3 | PC.10 | I/O | SD0 data line bit 3 |
SD0_nCD | PC.12 或 PB.8 | I | SD0 card detect input pin |
PG[1:0] = 01 & PG[9:8] = other
通过 SD1
接口上的SD卡或eMMC启动,接口引脚说明如下:
Pin Name | GPIO | Type | Description |
---|---|---|---|
SD1_CLK | PF.1 | O | SD1 clock output pin |
SD1_CMD | PF.0 | I/O | SD1 command/response pin |
SD1_DATA0 | PF.2 | I/O | SD1 data line bit 0 |
SD1_DATA1 | PF.3 | I/O | SD1 data line bit 1 |
SD1_DATA2 | PF.4 | I/O | SD1 data line bit 2 |
SD1_DATA3 | PF.5 | I/O | SD1 data line bit 3 |
SD1_nCD | PF.6 | I | SD1 card detect input pin |
PG[1:0] = 10
使用NAND Flash作为启动源,接口引脚说明如下:
Pin Name | GPIO | Type | Description |
---|---|---|---|
NAND_ALE | PC.3 | O | NAND Flash address latch enable |
NAND_CLE | PC.4 | O | NAND Flash command latch enable |
NAND_DATA0 | PC.8 | I/O | NAND Flash data bus bit 0 |
NAND_DATA1 | PC.9 | I/O | NAND Flash data bus bit 1 |
NAND_DATA2 | PC.10 | I/O | NAND Flash data bus bit 2 |
NAND_DATA3 | PC.11 | I/O | NAND Flash data bus bit 3 |
NAND_DATA4 | PC.12 | I/O | NAND Flash data bus bit 4 |
NAND_DATA5 | PC.13 | I/O | NAND Flash data bus bit 5 |
NAND_DATA6 | PC.14 | I/O | NAND Flash data bus bit 6 |
NAND_DATA7 | PC.15 | I/O | NAND Flash data bus bit 7 |
NAND_RDY0 | PC.7 | I | NAND Flash ready/busy pin |
NAND_nCS0 | PC.1 | O | NAND Flash chip enable input |
NAND_nRE | PC.6 | O | NAND Flash read enable |
NAND_nWE | PC.5 | O | NAND Flash write enable |
NAND_nWP | PC.2 | O | NAND Flash write protect input |
PG[1:0] = 11
使用SPI Flash作为启动源,接口引脚说明如下:
Pin Name | GPIO | Type | Description |
---|---|---|---|
QSPI0_CLK | PD.3 | I/O | Quad SPI0 serial clock pin |
QSPI0_MISO0 | PD.5 | I/O | Quad SPI0 MISO0 (Master In, Slave Out) pin |
QSPI0_MISO1 | PD.7 | I/O | Quad SPI0 MISO1 (Master In, Slave Out) pin |
QSPI0_MOSI0 | PD.4 | I/O | Quad SPI0 MOSI0 (Master Out, Slave In) pin |
QSPI0_MOSI1 | PD.6 | I/O | Quad SPI0 MOSI1 (Master Out, Slave In) pin |
QSPI0_SS0 | PD.2 | I/O | Quad SPI0 slave select 0 pin |
QSPI0_SS1(未用) | PD.0 或 PA.0 | I/O | Quad SPI0 slave select 1 pin |
UART0
NUC980默认可以通过UART0输出调试信息,接口引脚说明如下:
Pin Name | GPIO | Type | Description |
---|---|---|---|
UART0_RXD | PF.11 | I | UART0 data receiver input pin |
UART0_TXD | PF.12 | O | UART0 data transmitter output pin |
USB接口
NUC980可以在USB ISP模式下通过 USB0
向板子上的Flash写入数据,所以 USB0
也是比较重要的,部分引脚如下:
Pin Name | GPIO | Type | Description |
---|---|---|---|
USB0_ID | IU | USB0 Host/Device identification with an internal pull-up 1: Device (default) / 0: Host | |
USB0_DM | A | USB0 differential signal D- | |
USB0_DP | A | USB0 differential signal D+ | |
USB0_REXT | A | USB0 module reference resister (external 12.1K to GND) | |
USB0_VBUSVLD | PE.11 | I | USB0 VBUS valid indication pin |
USB0默认作为Device使用(USB ISP模式下就是作为Device);
REXT引脚需要串联12.1K电阻到地;
VBUSVLD用于作为Device时检查是否接入Host,USB接口上的5V信号通过20k和39k电阻分压后接入该引脚。没有接入Host时此处为0V,接入Host后此处经过分压得到3.3V;
以太网接口
作为Linux而言网络是比较重要的,NUC980有两组 RMII 接口,可以外接PHY芯片实现以太网访问功能,接口引脚说明如下:
RMII0
Pin Name | GPIO | Type | Description |
---|---|---|---|
RMII0_CRSDV | PE.1 | I | RMII0 Carrier Sense/Receive Data input pin |
RMII0_MDC | PE.9 | O | RMII0 PHY Management Clock output pin |
RMII0_MDIO | PE.8 | I/O | RMII0 PHY Management Data pin |
RMII0_REFCLK | PE.4 | I | RMII0 mode clock input pin |
RMII0_RXD0 | PE.3 | I | RMII0 Receive Data bus bit 0 |
RMII0_RXD1 | PE.2 | I | RMII0 Receive Data bus bit 1 |
RMII0_RXERR | PE.0 | I | RMII0 Receive Data Error input pin |
RMII0_TXD0 | PE.7 | O | RMII0 Transmit Data bus bit 0 |
RMII0_TXD1 | PE.6 | O | RMII0 Transmit Data bus bit 1 |
RMII0_TXEN | PE.5 | O | RMII0 Transmit Enable output pin |
RMII1
Pin Name | GPIO | Type | Description |
---|---|---|---|
RMII1_CRSDV | PF.1 | I | RMII1 Carrier Sense/Receive Data input pin |
RMII1_MDC | PF.9 | O | RMII1 PHY Management Clock output pin |
RMII1_MDIO | PF.8 | I/O | RMII1 PHY Management Data pin |
RMII1_REFCLK | PF.4 | I | RMII1 mode clock input pin |
RMII1_RXD0 | PF.3 | I | RMII1 Receive Data bus bit 0 |
RMII1_RXD1 | PF.2 | I | RMII1 Receive Data bus bit 1 |
RMII1_RXERR | PF.0 | I | RMII1 Receive Data Error input pin |
RMII1_TXD0 | PF.7 | O | RMII1 Transmit Data bus bit 0 |
RMII1_TXD1 | PF.6 | O | RMII1 Transmit Data bus bit 1 |
RMII1_TXEN | PF.5 | O | RMII1 Transmit Enable output pin |
资料索引
NUC980系列应估计是在NUC970的基础上阉割优化而来的,所以资料中有一些名称还是沿用了NUC970。
- NUC980工业控制物联网系列总页面
https://www.nuvoton.com.cn/products/microprocessors/arm9-mpus/nuc980-industrial-control-iot-series/ - NUC980系列开发板
https://www.nuvoton.com.cn/products/iot-solution/iot-platform/numaker-iiot-nuc980/
https://www.nuvoton.com.cn/products/iot-solution/iot-platform/numaker-server-nuc980/
https://www.nuvoton.com.cn/products/iot-solution/iot-platform/numaker-rtu-nuc980/ - 开发板软件支持包 (BSP)
NUC980_Linux-4.4_BSP_v1.03.000(包含代码、文档、工具)
https://www.nuvoton.com.cn/resource-download.jsp?tp_GUID=SW1820200909165814
NUC980_Non-OS_BSP_v1.03.000(包含代码、文档、启动程序、工具)
https://www.nuvoton.com.cn/resource-download.jsp?tp_GUID=SW1820200914164955 - Linux开发环境
Linux开发环境VMware虚拟机
https://www.nuvoton.com/resource-download.jsp?tp_GUID=SW1320200406183205
Linux开发环境VMware虚拟机用户手册
https://www.nuvoton.com.cn/resource-download.jsp?tp_GUID=UG1320200721114334 - GitHub OpenNuvoton主页与部分NUC980相关项目
https://github.com/OpenNuvoton
https://github.com/OpenNuvoton/NUC970_U-Boot_v2016.11
https://github.com/OpenNuvoton/NUC980-linux-4.4.y
https://github.com/OpenNuvoton/NUC980_Linux_Applications
https://github.com/OpenNuvoton/NUC980_NuWriter_CMD
以上是关于新唐NUC980使用记录:基础说明与资料索引的主要内容,如果未能解决你的问题,请参考以下文章
新唐NUC980使用记录:向内核添加USB无线网卡驱动(基于RTL8188EUS)
新唐NUC980使用记录:U-Boot & Linux 编译与烧录(基于SD1位置SD卡)