热度 2||
0 引言
亚德诺半导体(ADI)的新一代多功能电能计量芯片ADE7880,能够测量多个电量参数,同时还能够输出实时采样数据和实时功率数据。为了有效管理和充分利用ADE7880,本文选用意法半导体(ST)的STM32F103作为主控制器,通过I2C接口访问ADE7880的内部控制寄存器和测量结果寄存器,通过HSDC接口访问ADC输出寄存器。
1 基于ARM Cortex-M3处理器的STM32F103系列微控制器
图1 ADE7880原理框图
3 STM32F103与ADE7880接口硬件设计
ADE7880有三个串行通信接口:SPI接口、I2C接口和HSDC高速数据捕获接口。SPI接口与I2C接口和HSDC接口部分引脚复用,所以ADE7880可以配置为两种通信模式:SPI模式和I2C与HSDC联合模式。本文中采用能够高速访问ADC采样数据的I2C+HSDC模式。硬件连接方式如图2所示。STM32F103的I2C接口配置为主器件(master),访问ADE7880的控制和状态寄存器,SPI接口配置为从模式,接收ADE7880的HSDC接口的数据。
图2 STM32F103与ADE7880接口
4 STM32F103与ADE7880接口软件设计
STM32F103首先需要通过I2C接口对ADE7880进行初始化,然后使能ADE7880的内部DSP和HSDC接口。工作流程如如3所示。
图3 STM32F103与ADE7880接口工作流程
STM32F103与ADE7880的接口软件由两部组成:作为I2C主器件写ADE7880寄存器程序和作为HSDC从器件接收ADE7880数据程序。I2C接口由GPIO模拟,SPI接口工作于中断模式。ADE7880每个采样周期输出7个32位数据, 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 总结