Mintor技术驿站 https://bbs.21ic.com/?27275 [收藏] [复制] [RSS]

日志

STM32F103与ADE7880接口设计

热度 2已有 3476 次阅读2012-3-27 03:40 |系统分类:电测仪表| STM32, Cortex-M3, ADE7880

0 引言
    亚德诺半导体(ADI)的新一代多功能电能计量芯片ADE7880,能够测量多个电量参数,同时还能够输出实时采样数据和实时功率数据。为了有效管理和充分利用ADE7880,本文选用意法半导体(ST)的STM32F103作为主控制器,通过I2C接口访问ADE7880的内部控制寄存器和测量结果寄存器,通过HSDC接口访问ADC输出寄存器。
1 基于ARM Cortex-M3处理器的STM32F103系列微控制器

    STM32F103系列微控制器是意法半导体(ST)推出的高性能32RISC微控制器。它基于工业标准的ARM Cortex-M3处理器,工作频率可高达72MHz,内嵌最多可达128kBFLASH存储器和最多可达20kBSRAM存储器,片内集成多种外围设备,如通用定时器、PWM定时器、AD转换器、DA转换器、I2C接口、SPI接口、USB接口、USART接口、CAN接口和外部总线接口等。STM32F103系列微控制器因其高性能、低功耗、低成本及易用性而广泛应用于消费类电子、医疗、工业和仪表等领域。
2 多功能电能计量芯片ADE7878
    ADE7880是亚德诺半导体ADI)生产的高精度三相多功能电能计量芯片,内部集成了7路二阶sigma-delta模数转换器(ADC)、数字积分器、电压基准电路和一个完成各种电量参数算法的专用DSP单元。ADE7880支持EN
50470-1, EN 50470-3, IEC 62053-21, IEC 62053-22, and IEC 62053-23
等标准,兼容三相三线/三相四线(星型和三角型)和其它形式的三相系统。
    ADE7880能够测量总(基波+谐波)有功/无功/视在功率、基波有功/无功功率和电流/电压真有效值,1000:1的动态范围内,有功/无功功率误差和电流/电压真有效值误差小于0.1%25摄氏度)。ADE7878还具有电能质量监测功能,如各相电流/电压分次谐波、短时电压跌落、短时过电压、短时过电流、线频率和相角等。
    ADE7880原理框图如图1所示。





1 ADE7880原理框图



3 STM32F103ADE7880接口硬件设计
    ADE7880有三个串行通信接口:SPI接口、I2C接口和HSDC高速数据捕获接口。SPI接口与I2C接口和HSDC接口部分引脚复用,所以ADE7880可以配置为两种通信模式:SPI模式和I2CHSDC联合模式。本文中采用能够高速访问ADC采样数据的I2C+HSDC模式。硬件连接方式如图2所示。STM32F103I2C接口配置为主器件(master),访问ADE7880的控制和状态寄存器,SPI接口配置为从模式,接收ADE7880HSDC接口的数据。



 



2 STM32F103ADE7880接口



4 STM32F103ADE7880接口软件设计
    STM32F103首先需要通过I2C接口对ADE7880进行初始化,然后使能ADE7880的内部DSPHSDC接口。工作流程如如3所示。



 



3 STM32F103ADE7880接口工作流程



STM32F103ADE7880的接口软件由两部组成:作为I2C主器件写ADE7880寄存器程序和作为HSDC从器件接收ADE7880数据程序。I2C接口由GPIO模拟,SPI接口工作于中断模式。ADE7880每个采样周期输出732位数据, STM32F103中断处理程序如下:



long SampleData[7][256];
void SPI2_ISR(void)
{
  static union
  {
    long SpiBufL;
    unsigned char SpiBufB[4];
  }SpiBuf;
  static unsigned long ByteCounter = 3;
  static unsigned long ChannelCounter = 0;
  static unsigned long VectorCounter = 0;
  SpiBuf.SpiBufB[ByteCounter] = SPI2->DR;
  if(ByteCounter)
  {
    ByteCounter--;
  }
  else
  {
    ByteCounter = 3;
    SampleBuf[ChannelCounter][VectorCounter] = SpiBuf.SpiBufL;
    ChannelCounter++;
    if(7 == ChannelCounter)
    {
      ChannelCounter
= 0;
      VectorCounter++;
      if(256 == VectorCounter )
      {
        VectorCounter = 0;
      }
    }
  }
}



5 总结

    STM32F103系列微控制器具有单周期的硬件乘法器和除法器,能够提供较强的数据处理能力,片内集成多种外设,可以方便地实现键盘、显示和通信等功能。采用STM32F103作为ADE7880的主控制器,可以充分利用ADE7880提供的各种电量参数测量功能和采样数据输出功能。本方案能够广泛地应用于电能计量、负荷控制、电力监控或数据采集等。

1

路过

鸡蛋
1

鲜花

握手

雷人

刚表态过的朋友 (2 人)

全部作者的其他最新日志

评论 (0 个评论)