@@ -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