Skip to content

Commit 3947301

Browse files
authored
Update spi_att7053.cc
1 parent 432c36f commit 3947301

File tree

1 file changed

+44
-47
lines changed

1 file changed

+44
-47
lines changed

arc_design_contest/2021/HUST_SmartMeter/src/spi_att7053.cc

Lines changed: 44 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -60,39 +60,41 @@ int32_t ATT7053_init(ATT7053_DEF_PTR dev, uint32_t freq)
6060
}
6161

6262

63-
uint32_t Read_Reg(ATT7053_DEF_PTR dev,uint8_t cmd) {
64-
uint32_t data = 0;
65-
uint8_t tmp[3] = {0};
66-
DEV_SPI_TRANSFER cmd_xfer;
63+
uint32_t Read_Reg(ATT7053_DEF_PTR dev,uint8_t cmd)
64+
{
65+
uint32_t data = 0;
66+
uint8_t tmp[3] = {0};
67+
DEV_SPI_TRANSFER cmd_xfer;
6768

68-
DEV_SPI_XFER_SET_TXBUF(&cmd_xfer, &cmd, 0, 1);
69-
DEV_SPI_XFER_SET_RXBUF(&cmd_xfer, tmp, 1, 3);
70-
DEV_SPI_XFER_SET_NEXT(&cmd_xfer, NULL);
69+
DEV_SPI_XFER_SET_TXBUF(&cmd_xfer, &cmd, 0, 1);
70+
DEV_SPI_XFER_SET_RXBUF(&cmd_xfer, tmp, 1, 3);
71+
DEV_SPI_XFER_SET_NEXT(&cmd_xfer, NULL);
7172

72-
spi_send_cmd(dev, &cmd_xfer);
73+
spi_send_cmd(dev, &cmd_xfer);
7374

74-
data |= (uint32_t)(tmp[0]) << 16;
75-
data |= (uint32_t)(tmp[1]) << 8;
76-
data |= (uint32_t)(tmp[2]);
75+
data |= (uint32_t)(tmp[0]) << 16;
76+
data |= (uint32_t)(tmp[1]) << 8;
77+
data |= (uint32_t)(tmp[2]);
7778

78-
return data;
79+
return data;
7980
}
8081

81-
void Write_Reg(ATT7053_DEF_PTR dev,uint8_t cmd, uint32_t data) {
82-
uint8_t tmp[4];
83-
DEV_SPI_TRANSFER cmd_xfer;
82+
void Write_Reg(ATT7053_DEF_PTR dev,uint8_t cmd, uint32_t data)
83+
{
84+
uint8_t tmp[4];
85+
DEV_SPI_TRANSFER cmd_xfer;
8486

85-
tmp[0] = cmd | 0x80;
86-
tmp[1] = (data >> 16) & 255;
87-
tmp[2] = (data >> 8) & 255;
88-
tmp[3] = (uint8_t)data;
87+
tmp[0] = cmd | 0x80;
88+
tmp[1] = (data >> 16) & 255;
89+
tmp[2] = (data >> 8) & 255;
90+
tmp[3] = (uint8_t)data;
8991

90-
// spi_init(ATT7053_SPI_INDEX, SPI_WORK_MODE_1, SPI_FF_STANDARD, 8, 0);
91-
DEV_SPI_XFER_SET_TXBUF(&cmd_xfer, tmp, 0, 4);
92-
DEV_SPI_XFER_SET_RXBUF(&cmd_xfer, NULL, 0, 0);
93-
DEV_SPI_XFER_SET_NEXT(&cmd_xfer, NULL);
92+
// spi_init(ATT7053_SPI_INDEX, SPI_WORK_MODE_1, SPI_FF_STANDARD, 8, 0);
93+
DEV_SPI_XFER_SET_TXBUF(&cmd_xfer, tmp, 0, 4);
94+
DEV_SPI_XFER_SET_RXBUF(&cmd_xfer, NULL, 0, 0);
95+
DEV_SPI_XFER_SET_NEXT(&cmd_xfer, NULL);
9496

95-
spi_send_cmd(dev, &cmd_xfer);
97+
spi_send_cmd(dev, &cmd_xfer);
9698
}
9799

98100

@@ -121,36 +123,31 @@ void msleep(uint32_t ms)
121123

122124

123125

124-
void EMU_Init(ATT7053_DEF_PTR dev) {
125-
Write_Reg(dev,Soft_Reset_Register, 0x55); msleep(50); //软件复位
126-
EMBARC_PRINTF(" SRSTREG = 0x%x\r\n", Read_Reg(dev,Soft_Reset_Register));
126+
void EMU_Init(ATT7053_DEF_PTR dev)
127+
{
128+
Write_Reg(dev,Soft_Reset_Register, 0x55); msleep(50); //软件复位
129+
EMBARC_PRINTF(" SRSTREG = 0x%x\r\n", Read_Reg(dev,Soft_Reset_Register));
127130
////////////////////////////////////////////////////////////////////////////////////////////////////////
128-
// 0xA6: 写保护打开,只能操作 50H 到 71H 的校表参数寄存器,不可操作 40H 到 45H的校表参数寄存器
129-
Write_Reg(dev,Written_Protect_Register, 0xA6);usleep(50);
130-
Write_Reg(dev,ADC_Channel_Gain_Register, 0x00);usleep(50);
131-
EMBARC_PRINTF("电流1有效值校正中...\r\n");
132-
msleep(1000);
133-
int IRM=0;
131+
// 0xA6: 写保护打开,只能操作 50H 到 71H 的校表参数寄存器,不可操作 40H 到 45H的校表参数寄存器
132+
Write_Reg(dev,Written_Protect_Register, 0xA6);usleep(50);
133+
Write_Reg(dev,ADC_Channel_Gain_Register, 0x00);usleep(50);
134+
EMBARC_PRINTF("电流1有效值校正中...\r\n");
135+
msleep(1000);
136+
int IRM=0;
134137
for(int i=0;i<100;i++){
135138
IRM += Read_Reg(dev,0x06);
136139
msleep(50);
137140
}
138141
float avg_IRM = (float)IRM / 100;
139142
Write_Reg(dev,I1_RMS_Offset,(uint32_t)(avg_IRM*avg_IRM/(1<<15))); //电流通道1有效值校正
140143
EMBARC_PRINTF("电流1校正I1RMSOFFSET:0x%x\n",Read_Reg(dev,0x69));
141-
EMBARC_PRINTF("电流1有效值校正完成!!!\r\n");
142-
143-
// Write_Reg(dev,ADC_Channel_Gain_Register,0x002);usleep(50);
144-
// EMBARC_PRINTF("电压有效值校正中...\n\r");
145-
// int volrms=Read_Reg(dev,Voltage_Rms_Register);
146-
// Write_Reg(dev,URMS_Offset,(uint32_t)(volrms*volrms/(1<<15)));
147-
// EMBARC_PRINTF("电压有效值校正完成!!!\r\n");
144+
EMBARC_PRINTF("电流1有效值校正完成!!!\r\n");
148145
/////////////////////////////////////////////////////////////////////////////////////////////////////////
149-
// 0xBC: 写保护打开,只能操作 40H 到 45H 的校表参数寄存器,不可操作 50H 到 71H的校表参数寄存器
150-
Write_Reg(dev,Written_Protect_Register, 0xBC);usleep(50);
151-
Write_Reg(dev,EMUCFG, 0x10);usleep(50);
152-
Write_Reg(dev,Frequency_Configure_Register, 0x8B); usleep(50);
153-
Write_Reg(dev,IO_Configuration_Register, 0x00); usleep(50);
154-
Write_Reg(dev,EMU_Interrupt_Enable_Register, 0x04); usleep(50);
155-
Write_Reg(dev,Written_Protect_Register, 0x00); usleep(50);
146+
// 0xBC: 写保护打开,只能操作 40H 到 45H 的校表参数寄存器,不可操作 50H 到 71H的校表参数寄存器
147+
Write_Reg(dev,Written_Protect_Register, 0xBC);usleep(50);
148+
Write_Reg(dev,EMUCFG, 0x10);usleep(50);
149+
Write_Reg(dev,Frequency_Configure_Register, 0x8B); usleep(50);
150+
Write_Reg(dev,IO_Configuration_Register, 0x00); usleep(50);
151+
Write_Reg(dev,EMU_Interrupt_Enable_Register, 0x04); usleep(50);
152+
Write_Reg(dev,Written_Protect_Register, 0x00); usleep(50);
156153
}

0 commit comments

Comments
 (0)