《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于SPI双机通信的弧光保护系统
基于SPI双机通信的弧光保护系统
2015年微型机与应用第2期
涂永飞,王名传
(中国能源建设集团镇江华东电力设备制造厂,江苏 镇江 212017)
摘要: 针对弧光保护系统的实际需要,设计了一种基于SPI的双机通信系统。简要阐述了该系统的设计思路,并给出了具体的实现方法。实验表明,采用该方法能够满足实际工程中的需求,对于其他SPI的应用也有很好的借鉴价值。
Abstract:
Key words :

  摘  要: 针对弧光保护系统的实际需要,设计了一种基于SPI的双机通信系统。简要阐述了该系统的设计思路,并给出了具体的实现方法。实验表明,采用该方法能够满足实际工程中的需求,对于其他SPI的应用也有很好的借鉴价值。

  关键词: 弧光保护;SPI;LPC1788;协议

0 引言

  在一些重要的用户变电站和发电厂的厂用电系统中[1],弧光短路是中、低压开关柜内部最严重的故障,由于电弧电阻的原因,短路电流往往达不到速断整定值而不能快速动作切断故障,造成严重的后果。据统计资料表明,近年来,每年每1 000台开关柜就有7台遭到损坏,故障率为0.7%,农村配电网的概率更高,达1.2%。有的甚至发展成“火烧连营”的事故,这些配电网事故处理不当甚至会扩大发展为输电网事故,造成重大的经济损失。2010年,云南电网下发了《关于在中低压开关柜加装电弧光保护的通知》,要求在所有的35 kV和10 kV开关柜中加装电弧光保护,目前南方电网已在逐渐推广。

  中国能源建设集团华东电力设备制造厂研制的ZHG-1A型智能弧光保护系统采用紫外光弧光检测和过电流检测双判据原理,具有保护动作速度快、可靠性高等特点。它是一个模块化系统,包括主控单元、电流单元、弧光单元,系统构成示意图如图1所示。

001.jpg

1 弧光保护系统主控系统通信结构原理与设计

  主控单元是电弧光保护系统的核心部件,负责输入量的采集、测量、计算及逻辑判断,实现系统的各项保护逻辑、与站内监控系统通信等功能。主控系统采用DSP+双ARM结构,其中一块ARM(A片)采用NXP公司的LPC178x芯片负责与站内系统通信,另一块ARM(B片)同样采用LPC178x芯片负责液晶显示与DSP通信。在与站内监控系统通信时,A片ARM要把相关数据通过B片ARM传递给DSP,为此两块ARM之间要进行通信。主控系统通信结构如图2所示。

002.jpg

2 SPI通信设计与实现

  2.1 SPI硬件实现

  LPC178x/177x系列的SSP是一个同步串行端口(SSP)控制器[2],可控制SPI、4线SSI或Microwire总线的操作。SSP可以与总线上的多个主机或从机交互。但在一次给定的数据传输过程中,总线上只能有一个主机与一个从机进行通信。数据传输原则上是全双工模式,4~16位数据的帧由主机发送到从机或由从机发送到主机。SSP控制器共用以下4个管脚:

  (1)SCK:串行时钟管脚,用来同步数据传输的时钟信号。它由主机驱动,从机接收。无论主机往从机写数据还是从从机读数据,它的时钟信号都是由主机的SCK管脚产生,从机不产生时钟信号。

  (2)SSEL:帧同步/从机选择管脚,当作主机时此管脚可作为普通的I/O使用;当作从机时此管脚不可用作普通I/O口,只作为SSP的从机选择。主机其他的普通I/O管脚也可与从机的SSEL管脚相连,用作从机的片选。

  (3)MISO:主机输入从机输出。MISO信号使串行数据从从机传输到主机。

  (4)MOSI:MOSI信号使串行数据从主机传输到从机。

  另外,本系统在两片ARM之间预留了两根联络线,以便通信不稳定时便于调整。

  2.2 SPI软件实现

  在双机通信过程中,主机发送采用查询方式,从机接收采用中断方式。主机发送数据的同时也在接收数据,从机接收数据的同时也在发送数据。通过配置SSP寄存器,选择SPI模式、设置数据长度和通信速率。由于设置从机接收到第4个数据时FIFO产生一次接收中断,因此,主机每次发送一组40个数据,从机只取前37个数据为有效数据,后3个数据接收但作为假数据不用;主机接收的前4个数据也为假数据不用,后36个数据为有效数据。当一组数据接收完成时,调用数据处理函数进行处理。主机SPI流程图如图3所示。

003.jpg

  在SPI通信中,主机向从机发送数据,如何判断数据发送正确及接收完成SPI协议本身并未提供任何规范。在设计中,固定数据发送的个数,定义表1所示的SPI数据帧结构,可以很好地解决这个问题[3]。

004.jpg

  表1中,起始字节表明一帧传输的开始,这里定义为0XFF;标志字节表明此次传输的数据类型,根据特定的应用类型作具体的规定;数据长度表明此次传输的数据长度,用字节数表示;应用服务数据为所要传输的具体应用数据。

  当所有数据接收完成时,根据SPI软件协议,标志字节为0XAA表明此组数据为伪数据,可以不作处理,直接丢弃。当起始字节不是0XFF时,即表示此组数据接收数据有误。在通信中,主机每隔一段时间向从机发送数据,从机根据标志字节判定是控制命令还是运行状态数据[4]。当从机接收的是控制命令时,从机等待主机下一帧数据发送的同时,把相应的数据发给主机。

  下面给出从机的SSP1口初始化和SSP1的收发函数代码。

  (1)SSP1口初始化代码

  void Slave_SSP1Init(void)

  {uint8_t i;

  uint8_t uiDummy=uiDummy=0;

  LPC_SC->PCONP|=(0x1<<10);

  LPC_IOCON->P0_7 &=~0x07;//SSP CLK

  LPC_IOCON->P0_7|=0x02;

  LPC_IOCON->P0_6&=~0x07;

  LPC_IOCON->P0_6|=0x02;

  LPC_IOCON->P0_8&=~0x07;

  LPC_IOCON->P0_8|=0x02;//SSP MISO

  LPC_IOCON->P0_9&=~0x07;

  LPC_IOCON->P0_9|=0x02;//SSP MOSI

  LPC_SSP1->CR0=0x07<<0|//数据长度为8位

  0x00<<4|//帧格式为SPI

  0x00<<6|//CPOL为0

  0x01<<7|//CPHA为1

  0x1D<<8;

  LPC_SSP1->CPSR=0x2;//时钟预分频

  for(i=0;i<8;i++)

  {//清0接收FIFO

  uiDummy=LPC_SSP1->DR;

  }

  //从机模式

  if(LPC_SSP1->CR1&SSPCR1_SSE)

  {LPC_SSP1->CR1&=~SSPCR1_SSE;}

  LPC_SSP1->CR1=SSPCR1_MS;

  LPC_SSP1->CR1|=SSPCR1_SSE;

  LPC_SSP1->IMSC=0x04;

  NVIC_EnableIRQ(SSP1_IRQn);

  NVIC_SetPriority(SSP1_IRQn,4);

  return;

  }

  (2)SSP1收发函数代码

  uint8_t SSP1RWFrames(Chip_SSP_DATA_SETUP_T *xf_setup)

  {

  uint8_t rdat;

  uint8_t i,uiDummy;

  LPC_SSP1->ICR=0x03;while((LPC_SSP1->SR&(SSPSR_RNE))!=SSPSR_RNE);*(xf_setup->rx_data+xf_setup->rx_cnt)=

  LPC_SSP1->DR;

  xf_setup->rx_cnt++;

  while((LPC_SSP1->SR&(SSPSR_TNF|SSPSR_BSY))!=SSPSR_TNF);LPC_SSP1->DR=*(xf_setup->tx_data+xf_setup->tx_cnt);

  xf_setup->tx_cnt++;

  …

  }

3 结论

  本设计中,两个ARM的主频都为100 MHz,使用公共外设PCLK时钟,通过SSP时钟分频器产生SPCLK时钟。在实验中也考虑过其他方案,由于SPI的接收中断处理方式且又要实现主从机收发同时,发现本方案可行。目前测试结果表明,SPI能很好地满足它们之间高速的双向数据传输要求,其最高传输速率可达5 Mb/s,解决了实际应用中的双机如何可靠通信等问题,已成功应用于弧光保护系统,也可用于其他需要双机通信的场合。

参考文献

  [1] 李从飞,陈凡,鲁雅斌,等.DPR360ARC弧光保护系统设计[J].电力系统保护与控制,2010,38(12):125-128.

  [2] NXP.LPC178x/7x用户手册[EB/OL].[2011-07-06].http://www.cn.nxp.com/documents/other/LPC177x-178x_UM_Simp CHN.pdf.

  [3] 王杰,王小鹏,赵国辉.采用SPI接口实现双DSP双向通信和同步[J].微型机与应用,2010,29(24):96-98.

  [4] 高振,罗秋凤.SPI接口与CRC算法在双DSP数据通信中的应用[J].电子产品世界,2011,18(1):46-49.


此内容为AET网站原创,未经授权禁止转载。