APP下载

适用于智能电能表嵌入式安全控制模块的SPI接口设计

2021-02-25海南电网公司屯昌供电局北京智芯微电子科技有限公司金学明南岳松赵军伟

电力设备管理 2021年1期
关键词:智能卡低功耗校验

海南电网公司屯昌供电局 高 红 北京智芯微电子科技有限公司 金学明 张 谦 南岳松 赵军伟 杜 鹃 贺 朋

安全架构包括主控芯片MCU、智能卡、安全模块ESAM、终端设备、计量芯片五个组件。安全信息的逻辑通路有三条(图1虚线路径):计量芯片与ESAM 间的通路、智能卡与ESAM 间的通路、终端设备与ESAM 间的通路,三条逻辑通路由四个物理接口实现:计量芯片与MCU 间的接口1、终端设备与MCU 间的接口2、智能卡与MCU 间的接口3、ESAM 与MCU 间的接口4。接口1的主要类型是I2C、UART、SPI 等通用接口;接口2的主要类型是RS485接口、电力线载波、EPON、3G 公网等;接口3的类型是ISO7816、ISO14443等标准的智能卡接口;接口4基本都是ISO7816接口。

接口4存在于所有的三条逻辑通路中,它的性能决定了智能电能表安全信息交互的整体性能。ISO7816接口是针对智能卡的标准,之所以存在于ESAM 是因为早期的ESAM 与智能卡是一种芯片的两种不同封装形式,因此接口3与接口4选用相同的接口。随着智能电网的发展,智能卡与ESAM在功能与接口方面的差异越来越大,必须要开发专门的与智能卡不兼容的ESAM 芯片。如果继续在ESAM 上使用ISO7816接口将会存在着协议冗余、硬件代价大、接口不通用、速率过低的缺陷。

图1 智能电能表安全架构

ISO7816的最高速率可以达到5MHz,但实际中稳定的速率是5MHz/372,而SPI 的稳定速度可达到20MHz,因此可选用SPI 作为ESAM 的接口。SPI 接口相对于ISO7816接口具有通用、高速、硬件代价小的优点[1],但它作为一种物理接口,为了能应用于ESAM 需根据应用场景开发协议层,本文描述了一种定制的SPI 接口,可以满足上述需求。

1 协议层定义

1.1 工作模式

SPI 接口有四种工作模式[2],我们选用其中两种,其CPOL/CPHA、MSB 驱动、其余bit 驱动、采样位置分别为:CPOL=0、CPHA=1,SCK 升沿,SCK 升沿,SCK 降沿;CPOL=1、CPHA=1,SCK降沿,SCK 降沿,SCK 升沿。弃选两种分别为:CPOL=0、CPHA=0,SSN 降沿,SCK 降沿,SCK升沿;CPOL=1、CPHA=0,SSN 降沿,SCK 升沿,SCK 降沿。入选两种模式优势有:传输速度快。弃选两种模式的每个字节的MSB 都需要片选信号驱动,因此每个字节间都需要存在一定宽度的片选信号,这降低了传输速度;有利于实现低功耗;传输效率高。可使用片选信号作为传输结束标志,因此不需要帧长信息,可以提高传输效率,同时也有利于提高从设备的接收速度;有利于硬件实现。弃选两种模式的驱动源不固定,MSB 的驱动源与其它bit 不同,不利于硬件实现。

1.2 帧格式

SPI 是一个全双工的接口,收发同时进行,从功耗与实际应用场景出发,我们仅实现半双工的通讯[3],一次完整的交互过程被定义为一个下行帧+一个上行帧。SPI 设备分为主设备与从设备,智能电能表中主控MCU 为主设备,ESAM 为从设备。

下行帧。定义为主设备发送给从设备的字节序列,由0xE2、指令域、数据域、校验域组成,各部分定义如下:0xE2。下行帧头、用于从设备帧同步,单字节;指令。主设备发送给从设备的指令,固定长度;数据。主设备发送给从设备的数据、可以没有,可变长度;校验。帧头、指令域、数据域的校验,固定长度。帧头选用0xE2可起到降低帧头检错概率的目的,当0xE2发生偏移后,无论后续字节是什么数据都不会错误的检测到0xE2。

上行帧。定义为从设备发送给主设备的字节序列,由0xE2、响应域、数据域、校验域组成,各部分定义如下:0xE2。上行帧头、用于主设备帧同步。单字节;响应。从设备发送给主设备的响应分为三种类型(成功,表示从设备收到正确指令并成功生成上行数据;校验错,表示从设备收到的帧校验错误;指令错,表示从设备收到错误或非法指令),固定长度;数据。从设备发送给主设备的数据、可以没有,可变长度;校验。帧头、指令域、数据域的校验,固定长度。

1.3 低功耗模式

安全芯片在完成一次接收+处理+发送的过程后应当进入低功耗模式,此时整个数字电路和绝大部分模拟电路都将关闭,可极大地降低系统整体功耗。为保证唤醒过程不会导致通讯数据的丢失、同时兼容标准的SPI 接口,使用片选信号作为唤醒的标志[4],低功耗模式的实现如图2。发送完成后从设备检测片选信号,当检测到高电平时表示主设备没有发起下一次传输,此时可进入低功耗模式。当主设备发起下一次传输时,首先拉低片选信号,等待一定时间Td 后再开始发送数据,从设备检测到片选信号的低电平后开始唤醒过程,Tw 时间后进入接收状态,要求Td>Tw,保证从设备不会丢失有效数据。

图2 低功耗模式

1.4 错误处理

SPI 通讯过程中可能出现的错误类型有5种:1从设备接收超时。从设备在设定时间内没有收到帧头;2从设备接收错误。从设备收到的帧校验错误或接收到的帧非法;3主设备接收超时。主设备在设定时间内没有收到帧头;4主设备接收错误。主设备收到的帧校验错误或接收到的帧非法;5主设备收到错误响应。主设备收到的帧响应域不是成功。SPI 接口的所有通讯都是由主设备发起的,因此错误处理只能由主设备发起,经分析上述错误类型可进行合并处理:编号1的错误必然导致编号3的错误;编号2的错误必然导致编号3、4、5中的一种;因此只需处理编号3、4、5的错误类型,处理策略如下:主设备接收超时或主设备接收错误。重发,重发次数超过规定值后上报;主设备收到错误响应。根据具体的错误类型进行处理。

2 硬件实现关键技术

使用SCK 作为时钟。实现SPI 接口有两种时钟方案:使用内部时钟作为工作时钟或直接使用SCK作为工作时钟。使用内部时钟方案的时序如图3,其中:Tc 是SCK 时钟周期的一半;Tdi 是输入信号的延迟,包括线延时和PAD 延时;Tdo 是输出信号的延迟,包括线延时和PAD 延时;Ts 是内部的同步延时,包括两拍同步延时和一拍采沿的延时。最好的情况下,假定Tdi+Tdo=Tclk,Tsetup=0,Ts=3Tclk,由Tc-Tdi-Tdo-Ts>Tsetup,可推导出Tc>3Tclk,因此SCK 的理论频率上限是系统时钟频率的1/6,这对于系统频率不高的安全芯片来说是不可接受的(以现在电表安全芯片通用的8MHz时钟为例,所支持的最高SCK 仅为1.3MHz)。

图3 内部时钟方式的时序图

资源复用。模式1与模式3的区别仅在于SCK 的极性,所以只需要针对其中一种模式进行实现,再根据模式对SCK 进行极性翻转即可。

接收缓存和发送缓存。SPI 的接收和发送采用移位寄存器的方式实现[5],因此需在硬件上增加发送缓存和接收缓存,这可将软件的响应时间要求从传输1bit 的时间扩展为传输1BYTE 的时间,降低软件需求,提升通讯速率。缓存设置可动态配置的门限以应对不同的软件特性:软件响应慢的情况下设置大门限平摊响应时间保证处理速度,软件响应快的情况下设置小门限保证响应速度同时可以防止缓存溢出。

片选信号的滤波。为最大程度抗干扰,建议对片选信号进行滤波处理。需注意的是在低功耗模式下系统内部没有时钟,所以如果选用数字滤波的话需要确保滤波电路在低功耗模式下被旁路。

3 软件实现

从设备的软件流程如图4,软件处理划分为接收过程、处理过程、发送过程[6]。接收过程完成的功能如下:系统完成初始化和SPI 接口的配置后根据片选信号来决定是否需进入低功耗模式;当检测到片选信号为低时系统通过唤醒过程退出低功耗模式,进入接收loop;在接收loop 中根据接收缓存的空满信息按字节读取接收缓存中的数据,当检测到片选信号为高时退出接收loop 并进行最后一轮缓存的读取操作,之后进入处理过程。处理过程完成的功能如下:定位接收帧的帧头;解析下行帧的数据;根据不同的下行帧进行处理并生成上行帧;当检测到片选信号为低时进入发送过程。发送过程完成的功能如下:在发送loop 中根据发送缓存的空满信息将上行帧按字节写入发送缓存,当检测到片选信号为高时退出发送loop 并进入接收过程。从软件流程可以看出,接收loop 与发送loop 的速度决定了整体收发的速度,因此建议采用汇编语言进行编写。

图4 软件流程

4 结语

本文提出了一种适用于智能电能表嵌入式安全控制模块的SPI 接口,可以满足智能电网的发展需求。文中从协议层、硬件实现、软件实现等方面描述了实现该接口的关键技术。经实际测试,当系统时钟频率为8MHz、接收缓存与发送缓存门限设为4、处理器选用R8051XC2时,SPI 稳定通讯速率可以达到12MHz。

猜你喜欢

智能卡低功耗校验
一种高速低功耗比较器设计
东方磁卡李晓东:进击的智能卡研发巨子
一种用于6LoWPAN的低功耗路由协议
炉温均匀性校验在铸锻企业的应用
基于STC89 单片机的非接触智能卡读写机设计
低功耗技术在驾驶行为管理模块中的应用
结合抓包实例分析校验和的计算
临沂机顶盒智能卡升级方案介绍
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法