引言
从20世纪90年代初至今,国内低压电力载波集中抄表产品已经有了近20年的历史。低压电力载波通信的物理层通信能力也已经开发近极限,而产品的通信性能依然不理想。大量的现场实践表明,在一个配电变压器范围内,单单依靠电力载波点与点的通信能力,要实现网络内电表数据的实时或准实时抄收几乎不可能;但另一方面,低压电力配电网络的无处不在使得电力载波通信产品的市场前景一直非常光明。近20年来,市场上的大部分电力载波集抄产品主要围绕国外芯片技术开发,但这些芯片技术有共同的局限:它们在设计之初更多是基于室内短距离点对点的数据通信应用考虑,因而对于远程集中抄表应用勉为其难。低压电力载波抄表产品在国内近20年的发展历程表明,单单具有物理层通信能力的电力载波芯片技术不能很好满足市场需求。电力载波芯片需要从网络通信管理的角度重新设计。本文所要介绍的RISE3201电力载波芯片就是一款既具有出色的电力线载波物理层通信能力,又集成固化了EIA709.1协议栈(俗称“LonTalk协议”)和系统自动路由算法模块的片上系统(SoC)解决方案技术芯片。
1 RISE3201 的主要特点
① 内嵌双8 位10MIPS@80MHz的高速MCU,根据功能分为COMM控制器和APP控制器(简称“COMM”和“APP”),指令系统与8051兼容,每个CPU各有256个内部数据寄存器。
② 片内集成10 KB SRAM 用于应用数据和载波网络数据的缓冲。
③ 17根地址线,8根数据线,存储器接口可扩展128 KB外部Flash和128 KB 外部SRAM。
④ 双内核CPU 具有6 个16 位定时器、6 个外部中断。
⑤ 2个独立软件可配置全双工多功能UART 口,1 个SPI 口、1 个I2C串口通信口。
⑥ 24个软件可配置的多功能通用I/O口,对于单相电度表设计,其中19个口可供APP使用。
⑦ 内置RTC 实时时钟上电、停电计时功能,内置PLL锁相环倍频电路。
⑧ 符合ANSI/EIA 709.1、EIA 709.2、EN500651的电力线收发模块。
⑨ 采用BPSK调制解调技术,电力线数据通信波特率可达5.5 kbps。
⑩ EIA709.1协议的协议栈和系统自动路由算法模块已经被嵌入并固化到RISE3201 芯片COMM 微处理器中,与载波网络管理相关的所有事务都交由协议栈来完成,从而极大地方便了用户开发系统的应用程序。
工业级标准SoC(System on Chip)设计,工作温度范围为-40℃~+85℃; 采用0.25 μm超大规模数/模混合CMOS 制造工艺,128引脚LQFP封装(14 mm×14 mm×1.4 mm)。
2 RISE3201的硬件结构
2.1 引脚定义
RISE3201芯片128引脚根据功能来分,可分为以下几部分: 电源及时钟引脚、载波收/发模块引脚、数据线地址线控制线引脚、通用GPIO 接口、外部中断输入引脚以及芯片调试测试接口。
具体引脚定义详见参考文献[1],这里不再赘述。
2.2 CPU
如前所述,RISE3201片内嵌入了两个增强型8051微控制器,根据功能定义为COMM和APP。其中,COMM用于协议栈及载波通信管理,就用户产品应用设计而言,只有APP及厂商许可的相关资源才可使用。
2.3 芯片存储结构
与8051控制器类似,RISE3201的存储器分为程序存储器和数据存储器。芯片本身没有集成Flash存储器,但提供了3根片选线、8根数据线和17根地址线(可访问128 KB单片存储器内容)。用户应用设计需要外挂存储器。
2.3.1 程序存储器
程序存储器空间地址分配映像如图1所示。
图1 程序存储器结构
(1) 片上程序存储器
RISE3201为每个处理器设计了2 KB片上高速程序存储器SRAM,它们占据程序存储器空间的高2 KB地址,即地址0x0F800~0x0FFFF作为COMM片上高速程序存储器SRAM,地址0x1F800~0x1FFFF作为APP片上高速程序存储器SRAM,如图1所示。
(2) 片外程序存储器
COMM和APP分别能外挂空间高达64 KB的程序存储器。其中,COMM占用0x0000~0x0FFFF的地址空间;APP占用0x10000~0x1FFFF的地址空间。如前所述,高2 KB空间作为程序存储器片内SRAM地址,因此每个CPU实际可访问的片外存储器是62 KB,如图1所示。
(3) 程序空间的访问控制
除17根地址线8根数据线外,RISE3201提供了专门的程序存储器读写使能控制线(即WE_N、OE_N)和片选控制线CE0_N。
(4) MCU与外挂程序存储器访问速度的匹配
高速MCU与外挂低速Flash存储器速度上的匹配可根据需要设置延时等待寄存器,具体见寄存器定义。一般而言,芯片厂商已经设置,用户不用涉及。
2.3.2 数据存储器
根据指令访问方式的不同,RISE3201数据存储器分为内部数据存储器和外部数据存储器。
(1) 内部数据存储器
RISE3201与8051兼容。芯片内部APP和COMM各有256 个独立RAM 单元,具体分配如图2所示。其中,高128字节RAM单元空间(0x80~0xFF)与特殊功能寄存器地址重合。
图2 内部RAM结构
(2) 外部数据存储器
外部数据存储器以MOVX指令访问。这部分存储器按物理位置分为片上、片外两部分。
(1) 片上外部存储器
RISE3201片上共有10 KB数据存储器SRAM。地址空间0x000000~0x0027FF作为COMM和APP处理器数据暂存区,由4部分硬件数据缓冲区组成,分别是Rx Buffer、Tx Buffer、COMM Data Buffer以及Mail Box。具体分配及功能定义如下:
Rx Buffer、Tx Buffer 各占1 KB。
COMM Data Buffer 为COMM 通用数据缓冲区。
Mail Box又称“邮件盒”或“消息盒”,主要用于RISE3201 芯片内COMM 与APP 之间数据交换缓冲,起透明传输的作用。COMM 端底层软件负责网络管理事务,APP 端负责用户应用开发;Mail Box 数据传输功能由芯片厂商提供的底层库函数来实现,APP 与COMM 之间的透明传输只需要调用API 接口函数。
(2) 片外外部存储器
如前所述,RISE3201 芯片有3根外部片选控制线(CE0_N、CE1_N、CE2_N),17根地址线和8根数据线,芯片实际可访问的存储空间是384 KB。CE0_N用作片外程序空间访问控制,芯片设计时,把数据存储器地址空间0x20000~0x3FFFF作为程序存储器同步映射空间,以数据存储方式读写该段空间单元的同时,也在访问程序空间0x000000~0x01FFFF;而CE1_N、CE2_N则作为片外SRAM数据空间访问选择控制线。因此:
① 处理器以数据方式访问地址0x020000~0x03FFFF时CE0_N 有效。有一点特别要注意:以数据存储器的方式写地址范围为0x20000~0x2FFFF、0x30000~0x3FFFF存储器时将刷新放在Flash中的COMM、APP处理器程序代码。禁止对0x20000~0x2FFFF单元进行数据写操作。
② 处理器以数据方式访问地址0xFE0000~0xFFFFFF时CE1_N 有效。
③ 处理器以数据方式访问地址0xFC0000~0xFDFFFF时CE2_N 有效。
图3是外部数据存储器寻址空间映像图。
图3 外部数据存储结构
2.4 GPIO口
RISE3201共有24个GPIO端口,其中22个可复用。根据处理器的不同分两部分:COMM可编程I/O口和APP可编程I/O口。在实际应用中,安全起见,凡是RISE3201芯片定义为COMM控制的I/O口,用户最好都不要使用。
COMM控制的I/O口共有10根,包括电力线载波模块占用I/O口、UART串口以及I2C口。电力线载波模块占用I/O口分别用于相位及相位选择控制、过零检测信号输入、发送使能控制等。APP控制的I/O端口共有14根,除去用于UART串口通信外,用户可自由定义。
2.5 复位电路及时钟电路
RISE3201的复位同8051一样,也是由外部复位电路实现。复位电平低有效。RISE3201的时钟电路包括系统时钟和内部实时时钟。
2.6 中断
RISE3201 的中断资源非常丰富,有15 个可选逻辑硬件配置中断源,包括6 个外部中断以及I2C、SPI、TX、RX 中断等。内部定时器以及串行通信口为8051核结构本身中断,这两部分中断功能寄存器配置可参看用户手册。
3 RISE3201软件原理结构
3.1 RISE3201程序组成
RISE3201的指令系统与8051完全兼容。软件分为2部分:COMM中运行的厂商程序和APP中运行的用户程序。芯片厂商提供的代码包括两部分:一部分是COMM中运行的需要烧录到片外程序存储器的HEX格式代码,载波通信功能、EIA709协议栈和自动路由算法由低层COMM程序实现;另一部分是用户应用开发需要用到的与通信有关的功能库函数,这部分库函数需要与用户的程序结合起来编译。
3.2 系统复位后程序的运行
上电复位后,COMM程序首先运行,对外围硬件以及其他资源复位。COMM程序复位功能完成(即APP复位)后,用户必须首先调用APIIni() 函数,然后调用API函数GPIOalterFunc(unsigned char P3reg)有效才能实现对IO端口的用户初始化。COMM与APP通过Mail Box交换数据,见图4。COMM接收处理来自电力网的数据并通过邮件盒传给APP;同样,APP有任何需要处理发送的信息都通过邮件盒传给COMM。为了保证电力载波数据不丢失,APP必须在60 ms内至少查看邮件盒1次。APP查看邮件盒功能的实现是通过调用API函数 ReadMailboxPack(unsigned char *RecBuffer)来实现。
图4 COMM与APP之间的数据交换
3.3 API库函数简介
厂商提供的API库函数主要分为3部分。
3.3.1 载波集中器库函数
本库函数只适用于载波集中器设计。集中器是构建整个集抄系统的基础核心,按功能分为载波网络管理函数与透明传输函数。前者包括系统初始化和自适应时网络管理的阈值的设置、集中器设备号及工作相位的设置、信道测试、载波网络内节点终端的增加删除寻找,以及网络地址的配置、系统节点自适应的启动停止、查看邮件盒(即APP读取电力网络数据)、网络状态及节点终端表信息状态查询、节点网络信息的洪泛清零等;后者分为单点透明传输和广播透明传输。具体函数功能见参考文献[3]。
3.3.2 载波电表库函数
本库函数只适用于载波电表设计,按功能分为载波网络管理函数与透明传输函数。前者包括载波终端设备号的设置、载波终端网络地址的读取以及清零、查看邮件盒、进行载波信道测试、网络状态查询等;后者则是把RISE3201当作简单的电力载波调制解调芯片使用。具体函数功能见参考文献[3]。
3.3.3 公共库函数
公共库函数对于载波集中器和载波电表的设计都适用。包括:
① I/O端口功能定义接口函数GPIOalterFunc(unsigned char P3reg),用户调用此函数实现对APP用I/O端口的功能定义。
② API初始化函数APIIni()。该函数初始化Mail Box和Timer0,用户程序必须在硬件上电复位后首先调用,否则APP调用API其他函数功能无效。
③ Timer0定时器功能函数,提供1 ms时基的中断。
④ 看门狗功能函数,包括初始化及实现喂狗功能。
详细的API函数功能请参阅参考文献[3]。
4 RISE3201在载波电表上的设计应用
4.1 载波电表硬件设计
基于RISE3201的载波电表硬件原理结构如图5所示。其中,2.5 V为RISE3201内核提供电源,3.3 V为RISE3201芯片I/O端口以及系统其他部分供电,载波模块工作电压为16 V。系统用了2片E2PROM :一片用于载波网络通信协议栈及自动路由的开销,由COMM控制,掉电时存放载波通信网络相关数据;另一片由用户应用程序(即APP)控制,用于存放与电表相关的参数。电表具体设计可见参考文献[2]。
图5 基于RISE3201的载波电表硬件原理结构框图
4.2 载波电表软件流程
图6 载波电表软件流程
如前所述,与载波通信相关的所有功能,APP都必须通过调用API函数来实现;同样,要接收来自电力网的数据,APP只能通过主动查看Mail Box得到。因此,用户APP程序功能设计比较简单。流程如图6所示。
结语
近年来,电力载波芯片市场除了只具有点对点通信功能的大部分属国外厂家的芯片外,国内还有一些具有一定载波网络通信处理功能的芯片(如东软EAST系列);但RISE3201是国内真正实用的,且与LonTalk协议兼容的低成本SoC解决方案电力载波芯片。目前,基于RISE3201构建的低压电力载波抄表系统产品正在进行现场试验运行。实践表明,同等线况条件下,基于RISE3201构建的低压电力载波抄表系统产品比其他芯片技术的产品表现得更卓越。笔者相信,RISE3201芯片的推出一定会为低压电力载波抄表市场带来新一轮产品技术升级的热潮。