|  |  |  | @ -53,7 +53,7 @@ | 
		
	
		
			
				|  |  |  |  | #include "RS485_debug.h" | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* Private define ------------------------------------------------------------*/ | 
		
	
		
			
				|  |  |  |  | #define DAU_WAVE_WAIT_MAX 3                     // DAU 波形等待次数
 | 
		
	
		
			
				|  |  |  |  | #define DAU_WAVE_WAIT_MAX 4                     // DAU 波形等待次数
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* 全局状态寄存器地址 -------------------------------- */ | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_GSCR       0x0000          // 全局状态寄存器 - 软件特征寄存器
 | 
		
	
	
		
			
				
					|  |  |  | @ -94,6 +94,7 @@ | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_GCFTR      0x0203          // 全局控制寄存器 - 故障触发录波控制寄存器
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_GCRTR      0x0204          // 全局控制寄存器 - 寄存器触发录波控制寄存器
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_GCUR       0x0205          // 全局控制寄存器 - UTC 配置寄存器
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_GCFTTR     0x0207          // 全局控制寄存器 - 故障电流触发阈值寄存器
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_GSUDR      0x0e00          // 全局控制寄存器 - 固件升级数据寄存器
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -121,6 +122,12 @@ | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_PMSR       0x0300          // 通道状态寄存器 - 缺陷电流通道周波原始采样值的平均值寄存器
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_PPWR       0x03b0          // 通道状态寄存器 - 通道录波数据寄存器
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_PORT_BASE  0x1000          // 通道配置寄存器基地址
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_PORT_DEFECT_BASE   0x0     // 通道配置寄存器 - 缺陷电流通道零点原始值寄存器
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_PORT_FAULT_BASE    0x1     // 通道配置寄存器 - 故障电流通道零点原始值寄存器
 | 
		
	
		
			
				|  |  |  |  | #define DAU_REG_ADDR_PORT_DEFECT_ADJ    0xC     // 通道配置寄存器 - 缺陷电流通道校准系数 a 寄存器
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | #define DAU_ID 0x0702                         // DAU 软件识别码
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* Private typedef -----------------------------------------------------------*/ | 
		
	
	
		
			
				
					|  |  |  | @ -164,6 +171,7 @@ int8_t _dau_spi_rw; | 
		
	
		
			
				|  |  |  |  | uint16_t _dau_spi_addr; | 
		
	
		
			
				|  |  |  |  | uint16_t _dau_spi_len; | 
		
	
		
			
				|  |  |  |  | int8_t g_is_adj_status = 0;     // 1:采集 2:采集完成
 | 
		
	
		
			
				|  |  |  |  | uint8_t is_OK = FALSE; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* Private function prototypes -----------------------------------------------*/ | 
		
	
		
			
				|  |  |  |  | /* Internal functions --------------------------------------------------------*/ | 
		
	
	
		
			
				
					|  |  |  | @ -324,7 +332,7 @@ static void _dau_data_save(void) | 
		
	
		
			
				|  |  |  |  |     fd_data.vsc = ADC_ctrl.ADCi_vsc; | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         fd_data.defect[i] = dau_ctrl.reg_port_state.MAX[i]; | 
		
	
		
			
				|  |  |  |  |         fd_data.defect[i] = dau_ctrl.reg_port_state.DMAX[i]; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
	
		
			
				
					|  |  |  | @ -345,7 +353,7 @@ int32_t _dau_update(void) | 
		
	
		
			
				|  |  |  |  |     uint16_t cnt = 0; | 
		
	
		
			
				|  |  |  |  |     uint16_t page_cnt = 0; | 
		
	
		
			
				|  |  |  |  |     //uint32_t app_len = wl_ctrl.app_len;
 | 
		
	
		
			
				|  |  |  |  |     uint32_t app_len = 476549; | 
		
	
		
			
				|  |  |  |  |     uint32_t app_len = 900879; | 
		
	
		
			
				|  |  |  |  |     uint32_t len = 0; | 
		
	
		
			
				|  |  |  |  |     uint32_t addr = TFTP_APP_ADDRESS; | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
	
		
			
				
					|  |  |  | @ -383,9 +391,9 @@ int32_t _dau_update(void) | 
		
	
		
			
				|  |  |  |  |         cnt = 0; | 
		
	
		
			
				|  |  |  |  |         while(1) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             osDelay(200); | 
		
	
		
			
				|  |  |  |  |             osDelay(100); | 
		
	
		
			
				|  |  |  |  |             cnt++; | 
		
	
		
			
				|  |  |  |  |             if (cnt > 3) | 
		
	
		
			
				|  |  |  |  |             if (cnt > 6) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 DBG(DBG_M_DAU, "DAU update timeout\r\n"); | 
		
	
		
			
				|  |  |  |  |                 return HAL_TIMEOUT; | 
		
	
	
		
			
				
					|  |  |  | @ -425,6 +433,7 @@ int32_t _dau_update(void) | 
		
	
		
			
				|  |  |  |  | void _dau_utc(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2]; | 
		
	
		
			
				|  |  |  |  |     uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* dau 主循环大概 250ms 运行一次, 在第 3 次循环 (500 ~ 750ms) 对时, 此时 GPS 对时一定是可用的 */ | 
		
	
		
			
				|  |  |  |  |     if (50000000 < dau_ctrl.reg_global.GNR && dau_ctrl.reg_global.GNR <= 75000000 | 
		
	
	
		
			
				
					|  |  |  | @ -435,6 +444,13 @@ void _dau_utc(void) | 
		
	
		
			
				|  |  |  |  |         _dau_reg_write(DAU_REG_ADDR_GCUR, sizeof(uint32_t)); | 
		
	
		
			
				|  |  |  |  |         vty_print("Change\r\n"); | 
		
	
		
			
				|  |  |  |  |         vty_print("%d %d %d %d\r\n", dau_ctrl.reg_global.GUR, dau_ctrl.reg_global.GNR, dau_ctrl.is_utc_valid, dau_ctrl.utc); | 
		
	
		
			
				|  |  |  |  |         *temp = 0x234; | 
		
	
		
			
				|  |  |  |  |         _dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t)); | 
		
	
		
			
				|  |  |  |  |         *temp = 1; | 
		
	
		
			
				|  |  |  |  |         _dau_reg_write(0xf, sizeof(uint16_t)); | 
		
	
		
			
				|  |  |  |  |         osDelay(3000); | 
		
	
		
			
				|  |  |  |  |         *temp = 0; | 
		
	
		
			
				|  |  |  |  |         _dau_reg_write(0xf, sizeof(uint16_t)); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -459,7 +475,7 @@ int32_t _dau_wave_col_start(void) | 
		
	
		
			
				|  |  |  |  |             DBG(DBG_M_DAU, "DAU wave err\r\n", rv); | 
		
	
		
			
				|  |  |  |  |             return HAL_TIMEOUT; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         osDelay(3000); | 
		
	
		
			
				|  |  |  |  |         osDelay(1000); | 
		
	
		
			
				|  |  |  |  |          | 
		
	
		
			
				|  |  |  |  |         E_RETURN(_dau_reg_read_global_state()); | 
		
	
		
			
				|  |  |  |  |         if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_COMPLETE_Msk) >> DAU_GRTR_COMPLETE_Pos) | 
		
	
	
		
			
				
					|  |  |  | @ -479,11 +495,11 @@ int32_t _dau_wave_col_start(void) | 
		
	
		
			
				|  |  |  |  |    return: HAL_xxx */ | 
		
	
		
			
				|  |  |  |  | int32_t _dau_wave_col_fault(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |     uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
		
			
				|  |  |  |  |     uint32_t addr = 0; | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 读取触发电流值 */ | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_reg_read_port_state()); | 
		
	
	
		
			
				
					|  |  |  | @ -493,7 +509,7 @@ int32_t _dau_wave_col_fault(void) | 
		
	
		
			
				|  |  |  |  |     /* 读取故障数据 */ | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_FAULT_CNT; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.fault_trig[i] = dau_ctrl.reg_port_state.FAULT[i]; | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.fault_trig[i] = dau_ctrl.reg_port_state.FMAX[i]; | 
		
	
		
			
				|  |  |  |  |      | 
		
	
		
			
				|  |  |  |  |         /* 请求读取故障波形 */ | 
		
	
		
			
				|  |  |  |  |         *reg = DAU_GCFTR_FAULT_WAVE_Msk | (i << DAU_GCFTR_PORT_Pos); | 
		
	
	
		
			
				
					|  |  |  | @ -508,7 +524,7 @@ int32_t _dau_wave_col_fault(void) | 
		
	
		
			
				|  |  |  |  |                 DBG(DBG_M_DAU, "DAU fault wave err\r\n"); | 
		
	
		
			
				|  |  |  |  |                 return HAL_TIMEOUT; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             osDelay(10); | 
		
	
		
			
				|  |  |  |  |             osDelay(5); | 
		
	
		
			
				|  |  |  |  |              | 
		
	
		
			
				|  |  |  |  |             E_RETURN(_dau_reg_read_global_state()); | 
		
	
		
			
				|  |  |  |  |             if ((dau_ctrl.reg_global.GFTR & DAU_GFTR_FAULT_WAVE_Msk) >> DAU_GFTR_FAULT_WAVE_Pos) | 
		
	
	
		
			
				
					|  |  |  | @ -516,19 +532,23 @@ int32_t _dau_wave_col_fault(void) | 
		
	
		
			
				|  |  |  |  |                 break; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |             vty_print("#D8 %d\r\n", j); | 
		
	
		
			
				|  |  |  |  |             j++; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |      | 
		
	
		
			
				|  |  |  |  |         for(j = 0; j < DAU_PKT_FAULT_CNT; j++) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             E_RETURN(_dau_reg_read(DAU_REG_ADDR_PFWR + i, DAU_PKT_FAULT_BYTE_CNT)); | 
		
	
		
			
				|  |  |  |  |             vty_print("%d %d\r\n", i, j); | 
		
	
		
			
				|  |  |  |  |             E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_FAULT_BYTE_CNT)); | 
		
	
		
			
				|  |  |  |  |             E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_FAULT_BYTE_CNT)); | 
		
	
		
			
				|  |  |  |  |             addr += DAU_PKT_FAULT_BYTE_CNT; | 
		
	
		
			
				|  |  |  |  |             osDelay(200); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         vty_print("FA%d\r\n", i); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |      | 
		
	
		
			
				|  |  |  |  |     return HAL_OK; | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
		
			
				|  |  |  |  |     uint32_t addr = 0; | 
		
	
	
		
			
				
					|  |  |  | @ -550,6 +570,7 @@ int32_t _dau_wave_col_fault(void) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     vty_print("#D2 %x\r\n", addr); | 
		
	
		
			
				|  |  |  |  |     return rv; | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: 缺陷波形采集
 | 
		
	
	
		
			
				
					|  |  |  | @ -568,8 +589,8 @@ int32_t _dau_wave_col_defect(void) | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_reg_read_port_state()); | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.MAX[i]; | 
		
	
		
			
				|  |  |  |  |         if (dau_ctrl.reg_port_state.MAX[i] > dev_config.defect_threshold) | 
		
	
		
			
				|  |  |  |  |         dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.DMAX[i]; | 
		
	
		
			
				|  |  |  |  |         if (dau_ctrl.reg_port_state.DMAX[i] > dev_config.defect_threshold) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             is_exceed = TRUE; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
	
		
			
				
					|  |  |  | @ -749,7 +770,7 @@ int32_t _dau_wave_col_power(DAU_SOURCE_E source) | 
		
	
		
			
				|  |  |  |  |         for(j = 0; j < DAU_PKT_POWER_CNT; j++) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_POWER_BYTE_CNT)); | 
		
	
		
			
				|  |  |  |  |             osDelay(200); | 
		
	
		
			
				|  |  |  |  |             //osDelay(200);
 | 
		
	
		
			
				|  |  |  |  |             memcpy(power, &dau_ctrl.buf_dau_rx[2], DAU_PKT_POWER_BYTE_CNT); | 
		
	
		
			
				|  |  |  |  |             power += DAU_PKT_POWER_BYTE_CNT >> 1; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
	
		
			
				
					|  |  |  | @ -802,12 +823,13 @@ void _dau_power_calculate(DAU_SOURCE_E source) | 
		
	
		
			
				|  |  |  |  |         /* 遍历通道所有值, 求和, 并计算出最大值和最小值. */ | 
		
	
		
			
				|  |  |  |  |         for(i = 0; i < DAU_POWER_DATE_LEN; i++) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             square_sum += val[ch][i] * val[ch][i]; | 
		
	
		
			
				|  |  |  |  |             mean_sum += val[ch][i]; | 
		
	
		
			
				|  |  |  |  |             square_sum += (val[ch][i] - 0x167) * (val[ch][i] - 0x167); | 
		
	
		
			
				|  |  |  |  |             mean_sum += val[ch][i] - 0x167; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 根据数据查找数据落在哪个分段点上. */ | 
		
	
		
			
				|  |  |  |  |         temp = (double)sqrt(square_sum / DAU_POWER_DATE_LEN) - abs(mean_sum / DAU_POWER_DATE_LEN); | 
		
	
		
			
				|  |  |  |  |         vty_print("#DP%d %f\r\n", ch, temp); | 
		
	
		
			
				|  |  |  |  |         for(adj = 0; adj < DAU_POWER_ADJ_CNT - 1; adj++) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             if (temp <= dev_config.ADC_base[ch][adj]) | 
		
	
	
		
			
				
					|  |  |  | @ -930,9 +952,9 @@ HAL_StatusTypeDef _dau_base_auto(uint8_t ch_bitmap, uint8_t index) | 
		
	
		
			
				|  |  |  |  |    return: HAL_xxx */ | 
		
	
		
			
				|  |  |  |  | int32_t _dau_wave_col_trigger_by_fault(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint32_t addr = 0; | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 上次触发没有完成直接退出 */ | 
		
	
		
			
				|  |  |  |  |     if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP)) | 
		
	
	
		
			
				
					|  |  |  | @ -963,10 +985,10 @@ int32_t _dau_wave_col_trigger_by_fault(void) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 置标志位 */ | 
		
	
		
			
				|  |  |  |  |     MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP); | 
		
	
		
			
				|  |  |  |  |          | 
		
	
		
			
				|  |  |  |  |     is_OK = TRUE; | 
		
	
		
			
				|  |  |  |  |     return HAL_OK; | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |     static uint8_t temp = FALSE; | 
		
	
		
			
				|  |  |  |  |     if (temp) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
	
		
			
				
					|  |  |  | @ -1001,6 +1023,7 @@ int32_t _dau_wave_col_trigger_by_fault(void) | 
		
	
		
			
				|  |  |  |  |     MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP); | 
		
	
		
			
				|  |  |  |  |          | 
		
	
		
			
				|  |  |  |  |     return rv; | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: 寄存器触发波形采集
 | 
		
	
	
		
			
				
					|  |  |  | @ -1012,21 +1035,22 @@ int32_t _dau_wave_col_trigger_by_reg(void) | 
		
	
		
			
				|  |  |  |  |     int32_t rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 上次触发没有完成直接退出 */ | 
		
	
		
			
				|  |  |  |  |     if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP)) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return HAL_OK; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     //if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
 | 
		
	
		
			
				|  |  |  |  |     //{
 | 
		
	
		
			
				|  |  |  |  |     //    return HAL_OK;
 | 
		
	
		
			
				|  |  |  |  |     //}
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 定时开始采集 */ | 
		
	
		
			
				|  |  |  |  |     tick = HAL_GetTick(); | 
		
	
		
			
				|  |  |  |  |     if ((tick - dau_ctrl.col_time) < (dev_config.collect_interval * 60000) | 
		
	
		
			
				|  |  |  |  |         && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE)) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return HAL_OK; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     //tick = HAL_GetTick();
 | 
		
	
		
			
				|  |  |  |  |     //if ((tick - dau_ctrl.col_time) < (dev_config.collect_interval * 60000)
 | 
		
	
		
			
				|  |  |  |  |     //    && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
 | 
		
	
		
			
				|  |  |  |  |     //{
 | 
		
	
		
			
				|  |  |  |  |     //    return HAL_OK;
 | 
		
	
		
			
				|  |  |  |  |     //}
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_wave_col_start()); | 
		
	
		
			
				|  |  |  |  |     //E_RETURN(_dau_wave_col_defect());
 | 
		
	
		
			
				|  |  |  |  |     //common_watchdog_set(COM_WDG_DAU);
 | 
		
	
		
			
				|  |  |  |  |     E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG)); | 
		
	
		
			
				|  |  |  |  |     _dau_power_calculate(DAU_SOURCE_REG); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -1044,6 +1068,9 @@ int32_t _dau_wave_col_trigger_by_reg(void) | 
		
	
		
			
				|  |  |  |  | static void _dau_init(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     char version[DEV_COMPILE_TIME_LEN] = {0}; | 
		
	
		
			
				|  |  |  |  |     uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; | 
		
	
		
			
				|  |  |  |  |     uint16_t addr = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     dau_ctrl.spi = &hspi1; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -1076,8 +1103,11 @@ 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(1000); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     osDelay(10000); | 
		
	
		
			
				|  |  |  |  |     common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |     osDelay(10000); | 
		
	
		
			
				|  |  |  |  |     common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |      | 
		
	
		
			
				|  |  |  |  |     /* 读取 FPGA 版本信息 */ | 
		
	
		
			
				|  |  |  |  |     if (HAL_OK == _dau_reg_read_global_state()) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
	
		
			
				
					|  |  |  | @ -1088,6 +1118,28 @@ static void _dau_init(void) | 
		
	
		
			
				|  |  |  |  |             common_sys_set(COM_SYS_SAVE_INFO, 0); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 配置校准系数 */ | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_DEFECT_MAX - 1; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         addr =  (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE; | 
		
	
		
			
				|  |  |  |  |         //*temp = dev_config.defect_base[i];
 | 
		
	
		
			
				|  |  |  |  |         *temp = 0x0000; | 
		
	
		
			
				|  |  |  |  |         _dau_reg_write(addr, sizeof(uint16_t)); | 
		
	
		
			
				|  |  |  |  |          | 
		
	
		
			
				|  |  |  |  |         addr =  (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ; | 
		
	
		
			
				|  |  |  |  |         //*temp = dev_config.ADC_adj[i][0];
 | 
		
	
		
			
				|  |  |  |  |         *temp = 3276; | 
		
	
		
			
				|  |  |  |  |         _dau_reg_write(addr, sizeof(uint16_t)); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < DAU_PORT_FAULT_MAX - 1; i++) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         addr =  (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_BASE; | 
		
	
		
			
				|  |  |  |  |         //*temp = dev_config.fault_base[i];
 | 
		
	
		
			
				|  |  |  |  |         *temp = 0x0000; | 
		
	
		
			
				|  |  |  |  |         _dau_reg_write(addr, sizeof(uint16_t)); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* description: DAU 主任务循环
 | 
		
	
	
		
			
				
					|  |  |  | @ -1095,8 +1147,8 @@ static void _dau_init(void) | 
		
	
		
			
				|  |  |  |  |    return: */ | 
		
	
		
			
				|  |  |  |  | static void _dau_start(void *argument) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     //uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
 | 
		
	
		
			
				|  |  |  |  |     uint16_t *buf = NULL; | 
		
	
		
			
				|  |  |  |  |     uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]); | 
		
	
		
			
				|  |  |  |  |     //uint16_t *buf = NULL;
 | 
		
	
		
			
				|  |  |  |  |     uint32_t addr = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
	
		
			
				
					|  |  |  | @ -1108,7 +1160,7 @@ static void _dau_start(void *argument) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     for (;;) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         osDelay(5000); | 
		
	
		
			
				|  |  |  |  |         osDelay(1250); | 
		
	
		
			
				|  |  |  |  |         common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 读取全局状态寄存器 */ | 
		
	
	
		
			
				
					|  |  |  | @ -1138,20 +1190,22 @@ static void _dau_start(void *argument) | 
		
	
		
			
				|  |  |  |  |         //_dau_wave_col_trigger_by_fault();
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 循环工频缺陷电流采集 */ | 
		
	
		
			
				|  |  |  |  |         //_dau_wave_col_trigger_by_reg();
 | 
		
	
		
			
				|  |  |  |  |         _dau_wave_col_trigger_by_reg(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | if (1){ | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |         addr = dau_ctrl.addr_reg; | 
		
	
		
			
				|  |  |  |  |         for(i = 0; i < 3; 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++) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |                 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) | 
		
	
		
			
				|  |  |  |  |                     { | 
		
	
	
		
			
				
					|  |  |  | @ -1169,37 +1223,88 @@ static void _dau_start(void *argument) | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |         for(i = 0; i < DAU_PORT_POWER_CNT; i++) | 
		
	
		
			
				|  |  |  |  |         //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++) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |                 for(k = 0; k < 512;) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     vty_print("%-04x ", buf[k++]); | 
		
	
		
			
				|  |  |  |  |                     if(0 == k % 32) | 
		
	
		
			
				|  |  |  |  |                     if(0 == (j*512+k ) % 40) | 
		
	
		
			
				|  |  |  |  |                     { | 
		
	
		
			
				|  |  |  |  |                         osDelay(100); | 
		
	
		
			
				|  |  |  |  |                         vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |                     } | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |                 if(k % 32 != 0) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     osDelay(100); | 
		
	
		
			
				|  |  |  |  |                     vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |                 buf += 512; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             vty_print("\r\n"); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |                 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++) | 
		
	
		
			
				|  |  |  |  |                     { | 
		
	
		
			
				|  |  |  |  |                         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 | 
		
	
		
			
				|  |  |  |  |                 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 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | #if 0 | 
		
	
		
			
				|  |  |  |  |         while(1) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             osDelay(500); | 
		
	
		
			
				|  |  |  |  |             common_watchdog_set(COM_WDG_DAU); | 
		
	
		
			
				|  |  |  |  |             //_dau_reg_read_port_state();
 | 
		
	
		
			
				|  |  |  |  |             //vty_print("%d\r\n", dau_ctrl.reg_port_state.DAVR[0]);
 | 
		
	
		
			
				|  |  |  |  | #if 1 | 
		
	
		
			
				|  |  |  |  |             if (1 == _dau_spi_rw) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 _dau_spi_rw = 0; | 
		
	
	
		
			
				
					|  |  |  | @ -1212,7 +1317,10 @@ static void _dau_start(void *argument) | 
		
	
		
			
				|  |  |  |  |                 _dau_spi_rw = 0; | 
		
	
		
			
				|  |  |  |  |                 _dau_reg_write(_dau_spi_addr, 2); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | #endif | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | 
 |