ATT7053AU 是一颗带 SPI 的单相多功能计量芯片(EMU) 。
芯片的工作范围是 3.0 ~ 3.6V。使用晶振为 5.5296MHz。
1.att7053电路图
2.att7053 PCB图
3.做好的成品板
4.LPC1114单片机与ATT7053采用SPI通信方式,下面采用软件模拟SPI时序
5.SPI读程序
uint32_t SPI_Read(uint8_t address) { int8_t i; uint32_t temp_data; temp_data = 0; SCK_L; Delay(1); CS_H; Delay(2); CS_L; Delay(5); SCK_H; Delay(1); MOSI_L; Delay(1); SCK_L; Delay(1); for(i=6; i>=0; i--) { SCK_H; Delay(1); if((address & (0x01<>i) MOSI_H; else MOSI_L; Delay(1); SCK_L; Delay(1); } Delay(2); SCK_H; Delay(1); SCK_L; if(MISO_H) temp_data=temp_data|1; Delay(1); for(i=0; i<23; i++) { SCK_H; Delay(1); SCK_L; if(MISO_H)miso_val=1; else miso_val=0; temp_data = (temp_data<<1) | miso_val; Delay(1); } CS_H; return temp_data; }
6. SPI写程序
void SPI_Write(uint8_t address, uint32_t write_data) { int8_t i; uint32_t temp_data; temp_data = 1; SCK_L; Delay(100); CS_H; Delay(50); CS_L; Delay(100); SCK_H; Delay(10); MOSI_H; Delay(10); SCK_L; Delay(10); for(i=6; i>=0; i--) { SCK_H; Delay(10); if((address & (0x01<>i) { MOSI_H; } else MOSI_L; Delay(10); SCK_L; Delay(10); } Delay(40); for(i=23; i>=0; i--) { SCK_H; Delay(10); if((write_data & (temp_data<>i) { MOSI_H; } else MOSI_L; Delay(10); SCK_L; Delay(10); } CS_H; }
7.att7053初始化工作
初始化工作需要打开寄存器写保护和写入电流通道的增益,如下:
SPI_Write(0x32, 0x00a6); //打开写保护 SPI_Write(0x59, 0x000c); //写入电流通道增益
8.读取电压值
v_rms=SPI_Read(0x08);
9.读取电流值
i_rms=SPI_Read(0x06);
10.读取功率值
p_rms = SPI_Read(0x0a);
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』