|
@@ -428,6 +428,107 @@ void Init_HLW8110(void)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void re_check_write_reg_success(void)
|
|
|
|
|
+{
|
|
|
|
|
+ Uart_Read_HLW8110_Reg(REG_SYSCON_ADDR,2);
|
|
|
|
|
+ DelayNms(10);
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
|
|
+ {
|
|
|
|
|
+ U16_Check_SysconReg_Data = (u8_RxBuf[0]<<8) + (u8_RxBuf[1]);
|
|
|
|
|
+// printf("写入的SysconReg寄存器:%lx\n " ,U16_Check_SysconReg_Data);
|
|
|
|
|
+ if(U16_Check_SysconReg_Data == 0x0a04)
|
|
|
|
|
+ {
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ B_Read_Error = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+// printf("SysconReg寄存器读取出错\r\n");
|
|
|
|
|
+ B_Read_Error = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Uart_Read_HLW8110_Reg(REG_EMUCON_ADDR,2);
|
|
|
|
|
+ DelayNms(10);
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
|
|
+ {
|
|
|
|
|
+ U16_Check_EmuconReg_Data = (u8_RxBuf[0]<<8) + (u8_RxBuf[1]);
|
|
|
|
|
+// printf("写入的EmuconReg寄存器:%lx\n " ,U16_Check_EmuconReg_Data);
|
|
|
|
|
+
|
|
|
|
|
+ if(U16_Check_EmuconReg_Data == 0x0001)
|
|
|
|
|
+ {
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ B_Read_Error = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+// printf("EmuconReg寄存器读取出错\r\n");
|
|
|
|
|
+ B_Read_Error = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Uart_Read_HLW8110_Reg(REG_EMUCON2_ADDR,2);
|
|
|
|
|
+ DelayNms(10);
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
|
|
+ {
|
|
|
|
|
+ U16_Check_Emucon2Reg_Data = (u8_RxBuf[0]<<8) + (u8_RxBuf[1]);
|
|
|
|
|
+// printf("写入的Emucon2Reg寄存器寄存器:%lx\n " ,U16_Check_Emucon2Reg_Data);
|
|
|
|
|
+ if(U16_Check_Emucon2Reg_Data == 0x0065)
|
|
|
|
|
+ {
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ B_Read_Error = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+// printf("Emucon2Reg寄存器读取出错\r\n");
|
|
|
|
|
+ B_Read_Error = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void reinit_hlw8110()
|
|
|
|
|
+{
|
|
|
|
|
+ for(int i = 0 ; i < 50 ;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ Uart_HLW8110_WriteREG_EN();
|
|
|
|
|
+ DelayNms(10);
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ Uart_HLW8110_Set_Channel_A();
|
|
|
|
|
+ DelayNms(10);
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ Uart_Write_HLW8110_Reg(REG_SYSCON_ADDR,2,0x0a04);
|
|
|
|
|
+ DelayNms(10);
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ Uart_Write_HLW8110_Reg(REG_EMUCON_ADDR,2,0x0001);
|
|
|
|
|
+ DelayNms(10);
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ Uart_Write_HLW8110_Reg(REG_EMUCON2_ADDR,2,0x0065);
|
|
|
|
|
+ DelayNms(10);
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ Uart_HLW8110_WriteREG_DIS();
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ re_check_write_reg_success();
|
|
|
|
|
+ if(B_Read_Error)
|
|
|
|
|
+ {
|
|
|
|
|
+ eMBPoll();
|
|
|
|
|
+ DelayNms(100);
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
uint8_t Check_WriteReg_Sucess_Addr(uint8_t addr,uint8_t readlen, uint16_t value)
|
|
uint8_t Check_WriteReg_Sucess_Addr(uint8_t addr,uint8_t readlen, uint16_t value)
|
|
|
{
|
|
{
|