|  |  |  | @ -592,57 +592,6 @@ int32_t _dau_wave_col_defect(void) | 
		
	
		
			
				|  |  |  |  |     vty_print("#D reg end addr %x\r\n", addr); | 
		
	
		
			
				|  |  |  |  |     MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); | 
		
	
		
			
				|  |  |  |  |     return rv; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t is_exceed = FALSE; | 
		
	
		
			
				|  |  |  |  |     uint32_t addr = 0; | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 比较缺陷波形是否超过阈值 */ | 
		
	
		
			
				|  |  |  |  |     //E_RETURN(_dau_reg_read_port_state());
 | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.reg_defect_max[i] = 100 +i; | 
		
	
		
			
				|  |  |  |  |         if (dau_ctrl.reg_defect_max[i] > dev_config.wave_threshold) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             is_exceed = TRUE; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     /* 没有超过阈值并没有强制录波直接返回 */ | 
		
	
		
			
				|  |  |  |  |     if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE)) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); | 
		
	
		
			
				|  |  |  |  |         return HAL_OK; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 擦除 flash */ | 
		
	
		
			
				|  |  |  |  |     addr = dau_ctrl.addr_reg; | 
		
	
		
			
				|  |  |  |  |     vty_print("#D3 %x\r\n", addr); | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < 2; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         E_RETURN(spi_flash_erase(addr, SPI_CMD_BLOCK64_ERASE)); | 
		
	
		
			
				|  |  |  |  |         addr += SPI_FLASH_BLOCK64_SIZE; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 数据地址应该是被擦除过的地址 (当前地址向前偏移 128k). */ | 
		
	
		
			
				|  |  |  |  |     addr = dau_ctrl.addr_reg; | 
		
	
		
			
				|  |  |  |  |     /* 读取缺陷数据 */ | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         memset(&dau_ctrl.buf_dau_rx[2], i, DAU_PKT_FAULT_BYTE_CNT); | 
		
	
		
			
				|  |  |  |  |         for(j = 0; j < DAU_PKT_DEFECT_CNT; j++) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_DEFECT_BYTE_CNT)); | 
		
	
		
			
				|  |  |  |  |             addr += DAU_PKT_DEFECT_BYTE_CNT; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     vty_print("#D4 %x\r\n", addr); | 
		
	
		
			
				|  |  |  |  |     MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); | 
		
	
		
			
				|  |  |  |  |     return rv; | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: 工频波形采集
 | 
		
	
	
		
			
				
					|  |  |  | @ -1063,10 +1012,6 @@ static void _dau_init(void) | 
		
	
		
			
				|  |  |  |  |     HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_SET); | 
		
	
		
			
				|  |  |  |  |     HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET); | 
		
	
		
			
				|  |  |  |  |     osDelay(2000); | 
		
	
		
			
				|  |  |  |  |     //common_watchdog_set(COM_WDG_DAU);
 | 
		
	
		
			
				|  |  |  |  |     //osDelay(10000);
 | 
		
	
		
			
				|  |  |  |  |     //common_watchdog_set(COM_WDG_DAU);
 | 
		
	
		
			
				|  |  |  |  |     //osDelay(10000);
 | 
		
	
		
			
				|  |  |  |  |      | 
		
	
		
			
				|  |  |  |  |     /* 读取 FPGA 版本信息 */ | 
		
	
		
			
				|  |  |  |  |     if (HAL_OK == _dau_reg_read_global_state()) | 
		
	
	
		
			
				
					|  |  |  | @ -1203,6 +1148,25 @@ int32_t _dau_adj_reg_write_port(uint32_t port) | 
		
	
		
			
				|  |  |  |  |     return rv; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: 缺陷波形采集
 | 
		
	
		
			
				|  |  |  |  |    param: | 
		
	
		
			
				|  |  |  |  |    return: HAL_xxx */ | 
		
	
		
			
				|  |  |  |  | int32_t _dau_adj_wave_col_defect(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 比较缺陷波形是否超过阈值 */ | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_reg_read_port_state()); | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     /* 直接返回 */ | 
		
	
		
			
				|  |  |  |  |     MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); | 
		
	
		
			
				|  |  |  |  |     return HAL_OK; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: 寄存器触发波形采集
 | 
		
	
		
			
				|  |  |  |  |    param: | 
		
	
		
			
				|  |  |  |  |    return: HAL_xxx */ | 
		
	
	
		
			
				
					|  |  |  | @ -1211,73 +1175,12 @@ int32_t _dau_adj_wave_col_trigger_by_reg(void) | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_wave_col_start()); | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_adj_wave_col_defect()); | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG)); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |     uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]); | 
		
	
		
			
				|  |  |  |  |     uint32_t addr = dau_ctrl.addr_reg; | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
		
			
				|  |  |  |  |     uint16_t k = 0;  | 
		
	
		
			
				|  |  |  |  |     //for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
 | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < 1; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |         vty_print("DEFECT %x %d\r\n", addr, i); | 
		
	
		
			
				|  |  |  |  |         for(j = 0; j < DAU_PKT_DEFECT_CNT; j++) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024); | 
		
	
		
			
				|  |  |  |  |             addr += DAU_PKT_DEFECT_BYTE_CNT; | 
		
	
		
			
				|  |  |  |  |             for(k = 0; k < 512;) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |                 vty_print("%04x ", buf[k++]); | 
		
	
		
			
				|  |  |  |  |                 if(0 == k % 32) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     osDelay(100); | 
		
	
		
			
				|  |  |  |  |                     vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             if(k % 32 != 0) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 osDelay(100); | 
		
	
		
			
				|  |  |  |  |                 vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | #if 1 | 
		
	
		
			
				|  |  |  |  |     uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]); | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
		
			
				|  |  |  |  |     uint16_t k = 0;  | 
		
	
		
			
				|  |  |  |  |     //for(i = 5; i < DAU_PORT_POWER_CNT; i++)
 | 
		
	
		
			
				|  |  |  |  |     for(i = 5; i < 6; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |         vty_print("POWER %d\r\n", i); | 
		
	
		
			
				|  |  |  |  |         buf = (uint16_t*)dau_ctrl.reg_power[i]; | 
		
	
		
			
				|  |  |  |  |         for(j = 0; j < DAU_PKT_POWER_CNT; j++) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             for(k = 0; k < 512;) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 vty_print("%-04x ", buf[k++]); | 
		
	
		
			
				|  |  |  |  |                 if(0 == (j*512+k ) % 40) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     osDelay(100); | 
		
	
		
			
				|  |  |  |  |                     vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             buf += 512; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  |     return rv; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: DAU 校准任务循环
 | 
		
	
		
			
				|  |  |  |  |    param: | 
		
	
		
			
				|  |  |  |  |    return: */ | 
		
	
	
		
			
				
					|  |  |  | @ -1335,6 +1238,7 @@ static void _dau_adj_start(void *argument) | 
		
	
		
			
				|  |  |  |  |                 _dau_reg_write_port(i); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             /* 重启 FPGA 触发故障采集 */ | 
		
	
		
			
				|  |  |  |  |             HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_RESET); | 
		
	
		
			
				|  |  |  |  |             HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_RESET); | 
		
	
		
			
				|  |  |  |  |             osDelay(1000); | 
		
	
	
		
			
				
					|  |  |  | @ -1343,8 +1247,7 @@ static void _dau_adj_start(void *argument) | 
		
	
		
			
				|  |  |  |  |             osDelay(2000); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             /* 触发阈值 */ | 
		
	
		
			
				|  |  |  |  |             //*temp = 0x2800;
 | 
		
	
		
			
				|  |  |  |  |             *temp = 0x0; | 
		
	
		
			
				|  |  |  |  |             *temp = 0x2800; | 
		
	
		
			
				|  |  |  |  |             _dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t)); | 
		
	
		
			
				|  |  |  |  |             /* 开启 */ | 
		
	
		
			
				|  |  |  |  |             osDelay(500); | 
		
	
	
		
			
				
					|  |  |  | @ -1377,6 +1280,146 @@ static void _dau_adj_start(void *argument) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: 故障触发波形采集
 | 
		
	
		
			
				|  |  |  |  |    param: | 
		
	
		
			
				|  |  |  |  |    return: HAL_xxx */ | 
		
	
		
			
				|  |  |  |  | int32_t _dau_continue_wave_col_trigger_by_fault(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 没有触发直接退出 */ | 
		
	
		
			
				|  |  |  |  |     if (!((dau_ctrl.reg_global.GFTR & DAU_GFTR_FAULT_Msk) >> DAU_GFTR_FAULT_Pos)) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return HAL_OK; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 采集波形 */ | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_wave_col_fault()); | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT)); | 
		
	
		
			
				|  |  |  |  |     _dau_power_calculate(DAU_SOURCE_FAULT); | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |     uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]); | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
		
			
				|  |  |  |  |     uint16_t k = 0; | 
		
	
		
			
				|  |  |  |  |     uint32_t addr = dau_ctrl.addr_fault; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < 1; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |         vty_print("FAULT %x %d\r\n", addr, i); | 
		
	
		
			
				|  |  |  |  |         for(j = 0; j < DAU_PKT_FAULT_CNT; j++) | 
		
	
		
			
				|  |  |  |  |         //for(j = 0; j < 1; j++)
 | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024); | 
		
	
		
			
				|  |  |  |  |             addr += DAU_PKT_FAULT_BYTE_CNT; | 
		
	
		
			
				|  |  |  |  |             for(k = 0; k < 512;) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |                 vty_print("%04x ", buf[k++]); | 
		
	
		
			
				|  |  |  |  |                 if(0 == k % 32) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     osDelay(100); | 
		
	
		
			
				|  |  |  |  |                     vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             if(k % 32 != 0) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 osDelay(100); | 
		
	
		
			
				|  |  |  |  |                 vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |     uint16_t *buf = NULL; | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
		
			
				|  |  |  |  |     uint16_t k = 0; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_POWER_CNT; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |         vty_print("POWER %d\r\n", i); | 
		
	
		
			
				|  |  |  |  |         buf = (uint16_t*)dau_ctrl.fault_power[i]; | 
		
	
		
			
				|  |  |  |  |         for(j = 0; j < DAU_PKT_POWER_CNT; j++) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             for(k = 0; k < 512;) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 vty_print("%-04x ", buf[k++]); | 
		
	
		
			
				|  |  |  |  |                 if(0 == (j*512+k ) % 40) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     osDelay(100); | 
		
	
		
			
				|  |  |  |  |                     vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             buf += 512; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  |     return HAL_OK; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: DAU 主任务循环
 | 
		
	
		
			
				|  |  |  |  |    param: | 
		
	
		
			
				|  |  |  |  |    return: */ | 
		
	
		
			
				|  |  |  |  | static void _dau_continue_start(void *argument) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 状态初始化 */ | 
		
	
		
			
				|  |  |  |  |     _dau_init(); | 
		
	
		
			
				|  |  |  |  |     vty_print("DAU start...\r\n"); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     for (;;) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |         osDelay(4250); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 读取全局状态寄存器 */ | 
		
	
		
			
				|  |  |  |  |         rv = _dau_reg_read_global_state(); | 
		
	
		
			
				|  |  |  |  |         if (rv != HAL_OK) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             continue; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* utc 对时处理 */ | 
		
	
		
			
				|  |  |  |  |         _dau_utc(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 故障电流采集 */ | 
		
	
		
			
				|  |  |  |  |         _dau_continue_wave_col_trigger_by_fault(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 循环工频缺陷电流采集 */ | 
		
	
		
			
				|  |  |  |  |         _dau_adj_wave_col_trigger_by_reg(); | 
		
	
		
			
				|  |  |  |  |         _dau_power_calculate(DAU_SOURCE_REG); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 处理升级 */ | 
		
	
		
			
				|  |  |  |  |         if (dau_ctrl.update_flag) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update start!\r\n"); | 
		
	
		
			
				|  |  |  |  |             dau_ctrl.update_flag = FALSE; | 
		
	
		
			
				|  |  |  |  |             if (HAL_OK == _dau_update()) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 dau_ctrl.update_rt = DAU_UPD_OK; | 
		
	
		
			
				|  |  |  |  |                 dau_ctrl.update_rt_dbg = DAU_UPD_OK; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             else | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 dau_ctrl.update_rt = DAU_UPD_ERROR; | 
		
	
		
			
				|  |  |  |  |                 dau_ctrl.update_rt_dbg = DAU_UPD_ERROR; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update %s!\r\n", dau_ctrl.update_rt == 1 ? "OK" : "ERROR"); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         if (IS_MONITOR_BIT_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE)) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE); | 
		
	
		
			
				|  |  |  |  |             _dau_reg_write_port(dau_ctrl.reg_data); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: GPS 报文处理 ($GNZDA,235949.012,05,01,1980,,*4F)
 | 
		
	
		
			
				|  |  |  |  |    param: | 
		
	
	
		
			
				
					|  |  |  | @ -1518,20 +1561,22 @@ static void _dau_gps_start(void *argument) | 
		
	
		
			
				|  |  |  |  |    return: */ | 
		
	
		
			
				|  |  |  |  | void dau_init(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     dau_ctrl.dau_handle = osThreadNew(_dau_start, NULL, &dau_attributes); | 
		
	
		
			
				|  |  |  |  |     dau_ctrl.gps_handle = osThreadNew(_dau_gps_start, NULL, &dau_gps_attributes); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: DAU 采集校准任务初始化
 | 
		
	
		
			
				|  |  |  |  |    param: | 
		
	
		
			
				|  |  |  |  |    return: */ | 
		
	
		
			
				|  |  |  |  | void dau_adj_init(void) | 
		
	
		
			
				|  |  |  |  |     if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ)) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.dau_handle = osThreadNew(_dau_adj_start, NULL, &dau_adj_attributes); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     else if(IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY)) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.dau_handle = osThreadNew(_dau_continue_start, NULL, &dau_adj_attributes); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     else | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         /* 初始化 DAU 任务. */ | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.dau_handle = osThreadNew(_dau_start, NULL, &dau_attributes); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     dau_ctrl.gps_handle = osThreadNew(_dau_gps_start, NULL, &dau_gps_attributes); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: spi 接口测试函数
 | 
		
	
		
			
				|  |  |  |  |    param: | 
		
	
		
			
				|  |  |  |  |    return: */ | 
		
	
	
		
			
				
					|  |  |  | 
 |