海南電網(wǎng)公司屯昌供電局 高 紅 北京智芯微電子科技有限公司 金學明 張 謙 南岳松 趙軍偉 杜 鵑 賀 朋
安全架構(gòu)包括主控芯片MCU、智能卡、安全模塊ESAM、終端設備、計量芯片五個組件。安全信息的邏輯通路有三條(圖1虛線路徑):計量芯片與ESAM 間的通路、智能卡與ESAM 間的通路、終端設備與ESAM 間的通路,三條邏輯通路由四個物理接口實現(xiàn):計量芯片與MCU 間的接口1、終端設備與MCU 間的接口2、智能卡與MCU 間的接口3、ESAM 與MCU 間的接口4。接口1的主要類型是I2C、UART、SPI 等通用接口;接口2的主要類型是RS485接口、電力線載波、EPON、3G 公網(wǎng)等;接口3的類型是ISO7816、ISO14443等標準的智能卡接口;接口4基本都是ISO7816接口。
接口4存在于所有的三條邏輯通路中,它的性能決定了智能電能表安全信息交互的整體性能。ISO7816接口是針對智能卡的標準,之所以存在于ESAM 是因為早期的ESAM 與智能卡是一種芯片的兩種不同封裝形式,因此接口3與接口4選用相同的接口。隨著智能電網(wǎng)的發(fā)展,智能卡與ESAM在功能與接口方面的差異越來越大,必須要開發(fā)專門的與智能卡不兼容的ESAM 芯片。如果繼續(xù)在ESAM 上使用ISO7816接口將會存在著協(xié)議冗余、硬件代價大、接口不通用、速率過低的缺陷。
圖1 智能電能表安全架構(gòu)
ISO7816的最高速率可以達到5MHz,但實際中穩(wěn)定的速率是5MHz/372,而SPI 的穩(wěn)定速度可達到20MHz,因此可選用SPI 作為ESAM 的接口。SPI 接口相對于ISO7816接口具有通用、高速、硬件代價小的優(yōu)點[1],但它作為一種物理接口,為了能應用于ESAM 需根據(jù)應用場景開發(fā)協(xié)議層,本文描述了一種定制的SPI 接口,可以滿足上述需求。
SPI 接口有四種工作模式[2],我們選用其中兩種,其CPOL/CPHA、MSB 驅(qū)動、其余bit 驅(qū)動、采樣位置分別為: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 降沿。入選兩種模式優(yōu)勢有:傳輸速度快。棄選兩種模式的每個字節(jié)的MSB 都需要片選信號驅(qū)動,因此每個字節(jié)間都需要存在一定寬度的片選信號,這降低了傳輸速度;有利于實現(xiàn)低功耗;傳輸效率高??墒褂闷x信號作為傳輸結(jié)束標志,因此不需要幀長信息,可以提高傳輸效率,同時也有利于提高從設備的接收速度;有利于硬件實現(xiàn)。棄選兩種模式的驅(qū)動源不固定,MSB 的驅(qū)動源與其它bit 不同,不利于硬件實現(xiàn)。
SPI 是一個全雙工的接口,收發(fā)同時進行,從功耗與實際應用場景出發(fā),我們僅實現(xiàn)半雙工的通訊[3],一次完整的交互過程被定義為一個下行幀+一個上行幀。SPI 設備分為主設備與從設備,智能電能表中主控MCU 為主設備,ESAM 為從設備。
下行幀。定義為主設備發(fā)送給從設備的字節(jié)序列,由0xE2、指令域、數(shù)據(jù)域、校驗域組成,各部分定義如下:0xE2。下行幀頭、用于從設備幀同步,單字節(jié);指令。主設備發(fā)送給從設備的指令,固定長度;數(shù)據(jù)。主設備發(fā)送給從設備的數(shù)據(jù)、可以沒有,可變長度;校驗。幀頭、指令域、數(shù)據(jù)域的校驗,固定長度。幀頭選用0xE2可起到降低幀頭檢錯概率的目的,當0xE2發(fā)生偏移后,無論后續(xù)字節(jié)是什么數(shù)據(jù)都不會錯誤的檢測到0xE2。
上行幀。定義為從設備發(fā)送給主設備的字節(jié)序列,由0xE2、響應域、數(shù)據(jù)域、校驗域組成,各部分定義如下:0xE2。上行幀頭、用于主設備幀同步。單字節(jié);響應。從設備發(fā)送給主設備的響應分為三種類型(成功,表示從設備收到正確指令并成功生成上行數(shù)據(jù);校驗錯,表示從設備收到的幀校驗錯誤;指令錯,表示從設備收到錯誤或非法指令),固定長度;數(shù)據(jù)。從設備發(fā)送給主設備的數(shù)據(jù)、可以沒有,可變長度;校驗。幀頭、指令域、數(shù)據(jù)域的校驗,固定長度。
安全芯片在完成一次接收+處理+發(fā)送的過程后應當進入低功耗模式,此時整個數(shù)字電路和絕大部分模擬電路都將關閉,可極大地降低系統(tǒng)整體功耗。為保證喚醒過程不會導致通訊數(shù)據(jù)的丟失、同時兼容標準的SPI 接口,使用片選信號作為喚醒的標志[4],低功耗模式的實現(xiàn)如圖2。發(fā)送完成后從設備檢測片選信號,當檢測到高電平時表示主設備沒有發(fā)起下一次傳輸,此時可進入低功耗模式。當主設備發(fā)起下一次傳輸時,首先拉低片選信號,等待一定時間Td 后再開始發(fā)送數(shù)據(jù),從設備檢測到片選信號的低電平后開始喚醒過程,Tw 時間后進入接收狀態(tài),要求Td>Tw,保證從設備不會丟失有效數(shù)據(jù)。
圖2 低功耗模式
SPI 通訊過程中可能出現(xiàn)的錯誤類型有5種:1從設備接收超時。從設備在設定時間內(nèi)沒有收到幀頭;2從設備接收錯誤。從設備收到的幀校驗錯誤或接收到的幀非法;3主設備接收超時。主設備在設定時間內(nèi)沒有收到幀頭;4主設備接收錯誤。主設備收到的幀校驗錯誤或接收到的幀非法;5主設備收到錯誤響應。主設備收到的幀響應域不是成功。SPI 接口的所有通訊都是由主設備發(fā)起的,因此錯誤處理只能由主設備發(fā)起,經(jīng)分析上述錯誤類型可進行合并處理:編號1的錯誤必然導致編號3的錯誤;編號2的錯誤必然導致編號3、4、5中的一種;因此只需處理編號3、4、5的錯誤類型,處理策略如下:主設備接收超時或主設備接收錯誤。重發(fā),重發(fā)次數(shù)超過規(guī)定值后上報;主設備收到錯誤響應。根據(jù)具體的錯誤類型進行處理。
使用SCK 作為時鐘。實現(xiàn)SPI 接口有兩種時鐘方案:使用內(nèi)部時鐘作為工作時鐘或直接使用SCK作為工作時鐘。使用內(nèi)部時鐘方案的時序如圖3,其中:Tc 是SCK 時鐘周期的一半;Tdi 是輸入信號的延遲,包括線延時和PAD 延時;Tdo 是輸出信號的延遲,包括線延時和PAD 延時;Ts 是內(nèi)部的同步延時,包括兩拍同步延時和一拍采沿的延時。最好的情況下,假定Tdi+Tdo=Tclk,Tsetup=0,Ts=3Tclk,由Tc-Tdi-Tdo-Ts>Tsetup,可推導出Tc>3Tclk,因此SCK 的理論頻率上限是系統(tǒng)時鐘頻率的1/6,這對于系統(tǒng)頻率不高的安全芯片來說是不可接受的(以現(xiàn)在電表安全芯片通用的8MHz時鐘為例,所支持的最高SCK 僅為1.3MHz)。
圖3 內(nèi)部時鐘方式的時序圖
資源復用。模式1與模式3的區(qū)別僅在于SCK 的極性,所以只需要針對其中一種模式進行實現(xiàn),再根據(jù)模式對SCK 進行極性翻轉(zhuǎn)即可。
接收緩存和發(fā)送緩存。SPI 的接收和發(fā)送采用移位寄存器的方式實現(xiàn)[5],因此需在硬件上增加發(fā)送緩存和接收緩存,這可將軟件的響應時間要求從傳輸1bit 的時間擴展為傳輸1BYTE 的時間,降低軟件需求,提升通訊速率。緩存設置可動態(tài)配置的門限以應對不同的軟件特性:軟件響應慢的情況下設置大門限平攤響應時間保證處理速度,軟件響應快的情況下設置小門限保證響應速度同時可以防止緩存溢出。
片選信號的濾波。為最大程度抗干擾,建議對片選信號進行濾波處理。需注意的是在低功耗模式下系統(tǒng)內(nèi)部沒有時鐘,所以如果選用數(shù)字濾波的話需要確保濾波電路在低功耗模式下被旁路。
從設備的軟件流程如圖4,軟件處理劃分為接收過程、處理過程、發(fā)送過程[6]。接收過程完成的功能如下:系統(tǒng)完成初始化和SPI 接口的配置后根據(jù)片選信號來決定是否需進入低功耗模式;當檢測到片選信號為低時系統(tǒng)通過喚醒過程退出低功耗模式,進入接收loop;在接收loop 中根據(jù)接收緩存的空滿信息按字節(jié)讀取接收緩存中的數(shù)據(jù),當檢測到片選信號為高時退出接收loop 并進行最后一輪緩存的讀取操作,之后進入處理過程。處理過程完成的功能如下:定位接收幀的幀頭;解析下行幀的數(shù)據(jù);根據(jù)不同的下行幀進行處理并生成上行幀;當檢測到片選信號為低時進入發(fā)送過程。發(fā)送過程完成的功能如下:在發(fā)送loop 中根據(jù)發(fā)送緩存的空滿信息將上行幀按字節(jié)寫入發(fā)送緩存,當檢測到片選信號為高時退出發(fā)送loop 并進入接收過程。從軟件流程可以看出,接收loop 與發(fā)送loop 的速度決定了整體收發(fā)的速度,因此建議采用匯編語言進行編寫。
圖4 軟件流程
本文提出了一種適用于智能電能表嵌入式安全控制模塊的SPI 接口,可以滿足智能電網(wǎng)的發(fā)展需求。文中從協(xié)議層、硬件實現(xiàn)、軟件實現(xiàn)等方面描述了實現(xiàn)該接口的關鍵技術(shù)。經(jīng)實際測試,當系統(tǒng)時鐘頻率為8MHz、接收緩存與發(fā)送緩存門限設為4、處理器選用R8051XC2時,SPI 穩(wěn)定通訊速率可以達到12MHz。