|
|
@ -250,7 +250,8 @@ int32_t _dau_reg_write_port(uint32_t port)
|
|
|
|
|
|
|
|
|
|
|
|
/* 缺陷校准系数 */
|
|
|
|
/* 缺陷校准系数 */
|
|
|
|
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE;
|
|
|
|
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE;
|
|
|
|
*temp = dev_config.defect_base[port];
|
|
|
|
/* 零点值用的是16位的 */
|
|
|
|
|
|
|
|
*temp = dev_config.defect_base[port] << 4;
|
|
|
|
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
|
|
|
|
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
|
|
|
|
|
|
|
|
|
|
|
|
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ;
|
|
|
|
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ;
|
|
|
@ -278,9 +279,12 @@ int32_t _dau_reg_write_cfg(void)
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
/* 触发阈值 */
|
|
|
|
/* 触发阈值 */
|
|
|
|
//*temp = dev_config.fault_threshold * 32768 / dev_config.fault_adj[i];
|
|
|
|
*temp = dev_config.fault_threshold / 3 * 32768 * 16 / dev_config.fault_adj[0];
|
|
|
|
*temp = 0x7fff;
|
|
|
|
|
|
|
|
E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t)));
|
|
|
|
E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t)));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 触发间隔 */
|
|
|
|
|
|
|
|
*temp = dev_config.fault_interval;
|
|
|
|
|
|
|
|
E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCFTIR, sizeof(uint16_t)));
|
|
|
|
|
|
|
|
|
|
|
|
return rv;
|
|
|
|
return rv;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -438,7 +442,7 @@ int32_t _dau_wave_col_start(void)
|
|
|
|
DBG(DBG_M_DAU, "DAU wave err\r\n", rv);
|
|
|
|
DBG(DBG_M_DAU, "DAU wave err\r\n", rv);
|
|
|
|
return HAL_TIMEOUT;
|
|
|
|
return HAL_TIMEOUT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
osDelay(500);
|
|
|
|
osDelay(1000);
|
|
|
|
|
|
|
|
|
|
|
|
E_RETURN(_dau_reg_read_global_state());
|
|
|
|
E_RETURN(_dau_reg_read_global_state());
|
|
|
|
if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_COMPLETE_Msk) >> DAU_GRTR_COMPLETE_Pos)
|
|
|
|
if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_COMPLETE_Msk) >> DAU_GRTR_COMPLETE_Pos)
|
|
|
@ -447,7 +451,7 @@ int32_t _dau_wave_col_start(void)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
i++;
|
|
|
|
i++;
|
|
|
|
vty_print("#D start wait %d\r\n", i);
|
|
|
|
//vty_print("#D start wait %d\r\n", i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return rv;
|
|
|
|
return rv;
|
|
|
@ -462,14 +466,23 @@ int32_t _dau_wave_col_fault(void)
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t j = 0;
|
|
|
|
uint8_t j = 0;
|
|
|
|
uint32_t addr = 0;
|
|
|
|
uint32_t addr = 0;
|
|
|
|
|
|
|
|
int32_t temp = 0;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
dau_ctrl.fault_utc = dau_ctrl.reg_global.GFTUR;
|
|
|
|
dau_ctrl.fault_utc = dau_ctrl.reg_global.GFTUR;
|
|
|
|
dau_ctrl.fault_ns = dau_ctrl.reg_global.GFTNR;
|
|
|
|
dau_ctrl.fault_ns = dau_ctrl.reg_global.GFTNR;
|
|
|
|
vty_print("#D utc %d.%d\r\n", dau_ctrl.fault_utc, dau_ctrl.fault_ns);
|
|
|
|
dau_ctrl.fault_utc_max = dau_ctrl.reg_global.GFMUR;
|
|
|
|
|
|
|
|
dau_ctrl.fault_ns_max = dau_ctrl.reg_global.GFMNR;
|
|
|
|
|
|
|
|
dau_ctrl.PPS_cnt = dau_ctrl.reg_global.GGPCR;
|
|
|
|
|
|
|
|
vty_print("#D utc %d.%d %d %d\r\n", dau_ctrl.fault_utc, dau_ctrl.fault_ns, dau_ctrl.PPS_cnt, dev_config.fault_time_adj);
|
|
|
|
|
|
|
|
dau_ctrl.fault_ns = (uint64_t)dau_ctrl.fault_ns * 100000000 / dau_ctrl.PPS_cnt;
|
|
|
|
|
|
|
|
vty_print(" #D %d ", dau_ctrl.fault_ns);
|
|
|
|
|
|
|
|
dau_ctrl.fault_ns += dev_config.fault_time_adj;
|
|
|
|
|
|
|
|
vty_print("%d\r\n", dau_ctrl.fault_ns);
|
|
|
|
|
|
|
|
|
|
|
|
/* 擦除 flash */
|
|
|
|
/* 擦除 flash */
|
|
|
|
addr = dau_ctrl.addr_fault;
|
|
|
|
addr = dau_ctrl.addr_fault;
|
|
|
|
|
|
|
|
vty_print("#DF reg start addr %x\r\n", addr);
|
|
|
|
for(i = 0; i < 2; i++)
|
|
|
|
for(i = 0; i < 2; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
E_RETURN(spi_flash_erase(addr, SPI_CMD_BLOCK64_ERASE));
|
|
|
|
E_RETURN(spi_flash_erase(addr, SPI_CMD_BLOCK64_ERASE));
|
|
|
@ -484,7 +497,11 @@ int32_t _dau_wave_col_fault(void)
|
|
|
|
/* 读取故障数据 */
|
|
|
|
/* 读取故障数据 */
|
|
|
|
for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
|
|
|
|
for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dau_ctrl.fault_max[i] = dau_ctrl.reg_port_state.FMAX[i];
|
|
|
|
vty_print("#DF %d %d\r\n", i, dau_ctrl.reg_port_state.FMAX[i]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
temp = dau_ctrl.reg_port_state.FMAX[i] - dev_config.fault_base[i];
|
|
|
|
|
|
|
|
dau_ctrl.fault_max[i] = dev_config.fault_adj[i] * temp / 32768 / 16 * 3;
|
|
|
|
|
|
|
|
vty_print(" #DF %d %d %d\r\n", dau_ctrl.fault_max[i], dev_config.fault_adj[i], temp);
|
|
|
|
|
|
|
|
|
|
|
|
/* 请求读取故障波形 */
|
|
|
|
/* 请求读取故障波形 */
|
|
|
|
*reg = DAU_GCFTR_FAULT_WAVE_Msk | (i << DAU_GCFTR_PORT_Pos);
|
|
|
|
*reg = DAU_GCFTR_FAULT_WAVE_Msk | (i << DAU_GCFTR_PORT_Pos);
|
|
|
@ -540,13 +557,14 @@ int32_t _dau_wave_col_defect(void)
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]);
|
|
|
|
dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]);
|
|
|
|
vty_print(" %d", dau_ctrl.reg_defect_max[i]);
|
|
|
|
vty_print(" %d %d ", dau_ctrl.reg_defect_max[i], dau_ctrl.reg_port_state.DAVR[i]);
|
|
|
|
if (dau_ctrl.reg_port_state.DMAX[i] > dev_config.defect_threshold)
|
|
|
|
if (dau_ctrl.reg_defect_max[i] > dev_config.defect_threshold)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
is_exceed = TRUE;
|
|
|
|
is_exceed = TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
vty_print("\r\n");
|
|
|
|
|
|
|
|
|
|
|
|
vty_print(" %d\r\n", is_exceed);
|
|
|
|
/* 没有超过阈值并没有强制录波直接返回 */
|
|
|
|
/* 没有超过阈值并没有强制录波直接返回 */
|
|
|
|
if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
|
|
|
|
if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -811,7 +829,8 @@ int32_t _dau_wave_col_trigger_by_fault(void)
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
flash_log_write(FLASH_LOG_TYPE_WARNING, "Fhault triggering!\r\n");
|
|
|
|
dau_ctrl.fault_port = (dau_ctrl.reg_global.GFTR & DAU_GFTR_PORT_Msk) >> DAU_GFTR_PORT_Pos;
|
|
|
|
|
|
|
|
flash_log_write(FLASH_LOG_TYPE_WARNING, "Fhault triggering port %d!\r\n", dau_ctrl.fault_port);
|
|
|
|
|
|
|
|
|
|
|
|
/* 采集波形 */
|
|
|
|
/* 采集波形 */
|
|
|
|
E_RETURN(_dau_wave_col_fault());
|
|
|
|
E_RETURN(_dau_wave_col_fault());
|
|
|
@ -833,8 +852,8 @@ int32_t _dau_wave_col_trigger_by_fault(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
vty_print("FAULT %x %d\r\n", addr, i);
|
|
|
|
vty_print("FAULT %x %d\r\n", addr, i);
|
|
|
|
for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
|
|
|
|
//for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
|
|
|
|
//for(j = 0; j < 1; j++)
|
|
|
|
for(j = 0; j < 1; j++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
|
|
|
|
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
|
|
|
|
addr += DAU_PKT_FAULT_BYTE_CNT;
|
|
|
|
addr += DAU_PKT_FAULT_BYTE_CNT;
|
|
|
@ -920,24 +939,35 @@ int32_t _dau_wave_col_trigger_by_reg(void)
|
|
|
|
_dau_data_save();
|
|
|
|
_dau_data_save();
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
#if 0
|
|
|
|
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
|
|
|
|
int16_t *buf = (int16_t*)(&dau_ctrl.buf_dau_rx[2]);
|
|
|
|
uint32_t addr = dau_ctrl.addr_reg;
|
|
|
|
uint32_t addr = dau_ctrl.addr_reg;
|
|
|
|
|
|
|
|
uint32_t cnt = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t j = 0;
|
|
|
|
uint8_t j = 0;
|
|
|
|
uint16_t k = 0;
|
|
|
|
uint16_t k = 0;
|
|
|
|
//for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
for(i = 0; i < 1; i++)
|
|
|
|
//for(i = 0; i < 1; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
|
|
|
|
vty_print("DEFECT %x %d\r\n", addr, i);
|
|
|
|
vty_print("DEFECT %x %d\r\n", addr, i);
|
|
|
|
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
|
|
|
|
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
|
|
|
|
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
|
|
|
|
addr += DAU_PKT_DEFECT_BYTE_CNT;
|
|
|
|
addr += DAU_PKT_DEFECT_BYTE_CNT;
|
|
|
|
for(k = 0; k < 512;)
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(k = 0; k < 512; k++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
if (buf[k] > 0)
|
|
|
|
vty_print("%04x ", buf[k++]);
|
|
|
|
{
|
|
|
|
|
|
|
|
cnt++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (j != 0 || k >= 128)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("%04d ", buf[k]);
|
|
|
|
if(0 == k % 32)
|
|
|
|
if(0 == k % 32)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
osDelay(100);
|
|
|
|
osDelay(100);
|
|
|
@ -950,7 +980,8 @@ int32_t _dau_wave_col_trigger_by_reg(void)
|
|
|
|
vty_print("\r\n");
|
|
|
|
vty_print("\r\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
vty_print("\r\n");
|
|
|
|
vty_print("%d\r\n", cnt);
|
|
|
|
|
|
|
|
cnt = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if 0
|
|
|
|
#if 0
|
|
|
@ -1044,14 +1075,12 @@ static void _dau_init(void)
|
|
|
|
_dau_reg_write_port(i);
|
|
|
|
_dau_reg_write_port(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 触发阈值 */
|
|
|
|
/* 故障触发配置 */
|
|
|
|
//*temp = dev_config.fault_threshold * 32768 / dev_config.fault_adj[i];
|
|
|
|
_dau_reg_write_cfg();
|
|
|
|
*temp = 0x7fff;
|
|
|
|
|
|
|
|
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
|
|
|
|
|
|
|
|
osDelay(500);
|
|
|
|
osDelay(500);
|
|
|
|
/* 开启 */
|
|
|
|
/* 开启 */
|
|
|
|
*temp = 1 ;
|
|
|
|
*temp = 1;
|
|
|
|
_dau_reg_write(0xf, sizeof(uint16_t));
|
|
|
|
_dau_reg_write(0x0209, sizeof(uint16_t));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1063,6 +1092,17 @@ static void _dau_start(void *argument)
|
|
|
|
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 等待完成首次 ADC 采样 */
|
|
|
|
|
|
|
|
while(1)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (IS_MONITOR_BIT_SET(system_init_flag, SYS_INIT_ADC))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
osDelay(200);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
osDelay(2000);
|
|
|
|
|
|
|
|
|
|
|
|
/* 状态初始化 */
|
|
|
|
/* 状态初始化 */
|
|
|
|
_dau_init();
|
|
|
|
_dau_init();
|
|
|
|
vty_print("DAU start...\r\n");
|
|
|
|
vty_print("DAU start...\r\n");
|
|
|
@ -1167,15 +1207,66 @@ int32_t _dau_adj_reg_write_port(uint32_t port)
|
|
|
|
return: HAL_xxx */
|
|
|
|
return: HAL_xxx */
|
|
|
|
int32_t _dau_adj_wave_col_defect(void)
|
|
|
|
int32_t _dau_adj_wave_col_defect(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
|
|
|
|
int16_t *data = (int16_t*)&dau_ctrl.buf_dau_rx[2];
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
|
|
|
uint8_t j = 0;
|
|
|
|
|
|
|
|
uint16_t k = 0;
|
|
|
|
|
|
|
|
uint32_t mean = 0;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
/* 比较缺陷波形是否超过阈值 */
|
|
|
|
/* 比较缺陷波形是否超过阈值 */
|
|
|
|
E_RETURN(_dau_reg_read_port_state());
|
|
|
|
E_RETURN(_dau_reg_read_port_state());
|
|
|
|
|
|
|
|
vty_print("#D defect max");
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]);
|
|
|
|
dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]);
|
|
|
|
|
|
|
|
vty_print(" %d", dau_ctrl.reg_defect_max[i]);
|
|
|
|
|
|
|
|
vty_print(" %d ", dau_ctrl.reg_port_state.DAVR[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
vty_print("\r\n");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 读取缺陷数据 */
|
|
|
|
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
/* 请求读取缺陷波形 */
|
|
|
|
|
|
|
|
*reg = DAU_GCRTR_DEFECT_WAVE_Msk | (i << DAU_GCRTR_PORT_Pos);
|
|
|
|
|
|
|
|
E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCRTR, sizeof(uint16_t)));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 等待 DAU 准备缺陷数据 */
|
|
|
|
|
|
|
|
j = 0;
|
|
|
|
|
|
|
|
while(1)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (j >= DAU_WAVE_WAIT_MAX)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
DBG(DBG_M_DAU, "DAU defect wave err\r\n", rv);
|
|
|
|
|
|
|
|
return HAL_TIMEOUT;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
osDelay(5);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E_RETURN(_dau_reg_read_global_state());
|
|
|
|
|
|
|
|
if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_DEFECT_WAVE_Msk) >> DAU_GRTR_DEFECT_WAVE_Pos)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j++;
|
|
|
|
|
|
|
|
vty_print("#D reg d wait %d\r\n", j);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mean = 0;
|
|
|
|
|
|
|
|
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_DEFECT_BYTE_CNT));
|
|
|
|
|
|
|
|
for(k = 0; k < 512; k++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
mean += abs(data[k]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mean = mean / 20480;
|
|
|
|
|
|
|
|
dau_ctrl.reg_defect_max[i] = mean;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 直接返回 */
|
|
|
|
/* 直接返回 */
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
@ -1247,10 +1338,6 @@ static void _dau_adj_start(void *argument)
|
|
|
|
|
|
|
|
|
|
|
|
dev_config.fault_base[i] = dau_ctrl.reg_port_state.FAVR[i];
|
|
|
|
dev_config.fault_base[i] = dau_ctrl.reg_port_state.FAVR[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_dau_reg_write_port(i);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 重启 FPGA 触发故障采集 */
|
|
|
|
/* 重启 FPGA 触发故障采集 */
|
|
|
|
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_RESET);
|
|
|
|
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_RESET);
|
|
|
@ -1260,13 +1347,18 @@ static void _dau_adj_start(void *argument)
|
|
|
|
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET);
|
|
|
|
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET);
|
|
|
|
osDelay(2000);
|
|
|
|
osDelay(2000);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_dau_reg_write_port(i);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 触发阈值 */
|
|
|
|
/* 触发阈值 */
|
|
|
|
*temp = 0x2800;
|
|
|
|
*temp = 0x1000;
|
|
|
|
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
|
|
|
|
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
|
|
|
|
/* 开启 */
|
|
|
|
/* 开启 */
|
|
|
|
osDelay(500);
|
|
|
|
osDelay(500);
|
|
|
|
*temp = 1;
|
|
|
|
*temp = 1;
|
|
|
|
_dau_reg_write(0xf, sizeof(uint16_t));
|
|
|
|
_dau_reg_write(0x0209, sizeof(uint16_t));
|
|
|
|
|
|
|
|
|
|
|
|
dau_adj_state = DAU_ADJ_STATE_NONE;
|
|
|
|
dau_adj_state = DAU_ADJ_STATE_NONE;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1279,10 +1371,10 @@ static void _dau_adj_start(void *argument)
|
|
|
|
/* 读取最大值. */
|
|
|
|
/* 读取最大值. */
|
|
|
|
_dau_reg_read_port_state();
|
|
|
|
_dau_reg_read_port_state();
|
|
|
|
|
|
|
|
|
|
|
|
/* 关闭 */
|
|
|
|
/* 关闭触发 */
|
|
|
|
osDelay(500);
|
|
|
|
osDelay(500);
|
|
|
|
*temp = 0;
|
|
|
|
*temp = 0;
|
|
|
|
_dau_reg_write(0xf, sizeof(uint16_t));
|
|
|
|
_dau_reg_write(0x0209, sizeof(uint16_t));
|
|
|
|
|
|
|
|
|
|
|
|
dau_adj_state = DAU_ADJ_STATE_NONE;
|
|
|
|
dau_adj_state = DAU_ADJ_STATE_NONE;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1294,6 +1386,40 @@ static void _dau_adj_start(void *argument)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* description: 故障波形采集
|
|
|
|
|
|
|
|
param:
|
|
|
|
|
|
|
|
return: HAL_xxx */
|
|
|
|
|
|
|
|
int32_t _dau_continue_wave_col_fault(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
|
|
|
int32_t temp = 0;
|
|
|
|
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dau_ctrl.fault_utc = dau_ctrl.reg_global.GFTUR;
|
|
|
|
|
|
|
|
dau_ctrl.fault_ns = dau_ctrl.reg_global.GFTNR;
|
|
|
|
|
|
|
|
dau_ctrl.fault_utc_max = dau_ctrl.reg_global.GFMUR;
|
|
|
|
|
|
|
|
dau_ctrl.fault_ns_max = dau_ctrl.reg_global.GFMNR;
|
|
|
|
|
|
|
|
dau_ctrl.PPS_cnt = dau_ctrl.reg_global.GGPCR;
|
|
|
|
|
|
|
|
vty_print("#D utc %d.%d %d %d\r\n", dau_ctrl.fault_utc, dau_ctrl.fault_ns, dau_ctrl.PPS_cnt, dev_config.fault_time_adj);
|
|
|
|
|
|
|
|
dau_ctrl.fault_ns = (uint64_t)dau_ctrl.fault_ns * 100000000 / dau_ctrl.PPS_cnt;
|
|
|
|
|
|
|
|
vty_print(" #D %d ", dau_ctrl.fault_ns);
|
|
|
|
|
|
|
|
dau_ctrl.fault_ns += dev_config.fault_time_adj;
|
|
|
|
|
|
|
|
vty_print("%d\r\n", dau_ctrl.fault_ns);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 读取触发电流值 */
|
|
|
|
|
|
|
|
E_RETURN(_dau_reg_read_port_state());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 读取故障数据 */
|
|
|
|
|
|
|
|
for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
temp = dau_ctrl.reg_port_state.FMAX[i] - dev_config.fault_base[i];
|
|
|
|
|
|
|
|
dau_ctrl.fault_max[i] = dev_config.fault_adj[i] * temp / 32768 / 16 * 3;
|
|
|
|
|
|
|
|
vty_print("#DF %d %d %d\r\n", dau_ctrl.fault_max[i], dau_ctrl.reg_port_state.FMAX[i], temp);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* description: 故障触发波形采集
|
|
|
|
/* description: 故障触发波形采集
|
|
|
|
param:
|
|
|
|
param:
|
|
|
|
return: HAL_xxx */
|
|
|
|
return: HAL_xxx */
|
|
|
@ -1308,7 +1434,7 @@ int32_t _dau_continue_wave_col_trigger_by_fault(void)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 采集波形 */
|
|
|
|
/* 采集波形 */
|
|
|
|
E_RETURN(_dau_wave_col_fault());
|
|
|
|
E_RETURN(_dau_continue_wave_col_fault());
|
|
|
|
E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT));
|
|
|
|
E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT));
|
|
|
|
_dau_power_calculate(DAU_SOURCE_FAULT);
|
|
|
|
_dau_power_calculate(DAU_SOURCE_FAULT);
|
|
|
|
|
|
|
|
|
|
|
@ -1320,6 +1446,7 @@ int32_t _dau_continue_wave_col_trigger_by_fault(void)
|
|
|
|
return: */
|
|
|
|
return: */
|
|
|
|
static void _dau_continue_start(void *argument)
|
|
|
|
static void _dau_continue_start(void *argument)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
/* 状态初始化 */
|
|
|
|
/* 状态初始化 */
|
|
|
@ -1371,6 +1498,23 @@ static void _dau_continue_start(void *argument)
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
|
|
|
|
_dau_reg_write_cfg();
|
|
|
|
_dau_reg_write_cfg();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 命令行 FPGA 寄存器读写操作 */
|
|
|
|
|
|
|
|
if (1 == _dau_spi_rw)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
|
|
|
|
|
|
|
|
_dau_spi_rw = 0;
|
|
|
|
|
|
|
|
_dau_reg_read(_dau_spi_addr, _dau_spi_len << 1);
|
|
|
|
|
|
|
|
dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if(2 == _dau_spi_rw)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
|
|
|
|
|
|
|
|
*temp = _dau_spi_len;
|
|
|
|
|
|
|
|
_dau_spi_rw = 0;
|
|
|
|
|
|
|
|
_dau_reg_write(_dau_spi_addr, 2);
|
|
|
|
|
|
|
|
dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1380,6 +1524,7 @@ static void _dau_continue_start(void *argument)
|
|
|
|
static int32_t _dau_gps_process(void)
|
|
|
|
static int32_t _dau_gps_process(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
char *pkt = (char*)dau_ctrl.buf_gps;
|
|
|
|
char *pkt = (char*)dau_ctrl.buf_gps;
|
|
|
|
|
|
|
|
uint8_t GB_cnt = 0;
|
|
|
|
uint8_t n = 0;
|
|
|
|
uint8_t n = 0;
|
|
|
|
uint16_t i = 0;
|
|
|
|
uint16_t i = 0;
|
|
|
|
uint32_t hour = 0;
|
|
|
|
uint32_t hour = 0;
|
|
|
@ -1398,6 +1543,14 @@ static int32_t _dau_gps_process(void)
|
|
|
|
i++;
|
|
|
|
i++;
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 查找对时字符串 "$GNZDA" */
|
|
|
|
|
|
|
|
if (0 == strncmp(&pkt[i], "$GBGSV", 6))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
i++;
|
|
|
|
|
|
|
|
GB_cnt++;
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 查找对时字符串 "$GNZDA" */
|
|
|
|
/* 查找对时字符串 "$GNZDA" */
|
|
|
|
if (strncmp(&pkt[i], "$GNZDA", 6) != 0)
|
|
|
|
if (strncmp(&pkt[i], "$GNZDA", 6) != 0)
|
|
|
@ -1428,6 +1581,7 @@ static int32_t _dau_gps_process(void)
|
|
|
|
|
|
|
|
|
|
|
|
dau_ctrl.utc = mktime(&_dau_tm);
|
|
|
|
dau_ctrl.utc = mktime(&_dau_tm);
|
|
|
|
rtc_time_set(dau_ctrl.utc);
|
|
|
|
rtc_time_set(dau_ctrl.utc);
|
|
|
|
|
|
|
|
dau_ctrl.GB_cnt = GB_cnt;
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1456,6 +1610,17 @@ static void _dau_gps_start(void *argument)
|
|
|
|
uint32_t notify_value = 0xff;
|
|
|
|
uint32_t notify_value = 0xff;
|
|
|
|
uint32_t err_cnt = 5;
|
|
|
|
uint32_t err_cnt = 5;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 等待完成首次 ADC 采样 */
|
|
|
|
|
|
|
|
while(1)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (IS_MONITOR_BIT_SET(system_init_flag, SYS_INIT_ADC))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
osDelay(200);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
osDelay(1000);
|
|
|
|
|
|
|
|
|
|
|
|
/* 状态初始化 */
|
|
|
|
/* 状态初始化 */
|
|
|
|
_dau_gps_init();
|
|
|
|
_dau_gps_init();
|
|
|
|
|
|
|
|
|
|
|
@ -1548,7 +1713,7 @@ void dau_show(void)
|
|
|
|
struct tm *day = NULL;
|
|
|
|
struct tm *day = NULL;
|
|
|
|
uint32_t utc = dau_ctrl.utc;
|
|
|
|
uint32_t utc = dau_ctrl.utc;
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("state: %d\r\n", dau_ctrl.is_utc_ok);
|
|
|
|
vty_print("state: %d GB: %d\r\n", dau_ctrl.is_utc_ok, dau_ctrl.GB_cnt);
|
|
|
|
if (dau_ctrl.is_utc_valid)
|
|
|
|
if (dau_ctrl.is_utc_valid)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
utc += 28800;
|
|
|
|
utc += 28800;
|
|
|
@ -1558,6 +1723,46 @@ void dau_show(void)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("\n");
|
|
|
|
vty_print("\n");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* DAU 全局寄存器. */
|
|
|
|
|
|
|
|
vty_print("Global state reg\r\n");
|
|
|
|
|
|
|
|
vty_print("0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n");
|
|
|
|
|
|
|
|
vty_print("%04x %04x %04x %04x ", dau_ctrl.reg_global.GSCR, dau_ctrl.reg_global.GSVR, dau_ctrl.reg_global.GSR, dau_ctrl.reg_global.GFTR);
|
|
|
|
|
|
|
|
vty_print("%04x %04x ", dau_ctrl.reg_global.GFTUR & 0xffff, (dau_ctrl.reg_global.GFTUR >> 16) & 0xffff);
|
|
|
|
|
|
|
|
vty_print("%04x %04x ", dau_ctrl.reg_global.GFTNR & 0xffff, (dau_ctrl.reg_global.GFTNR >> 16) & 0xffff);
|
|
|
|
|
|
|
|
vty_print("%04x %04x ", dau_ctrl.reg_global.GRTR, dau_ctrl.reg_global.reserve);
|
|
|
|
|
|
|
|
vty_print("%04x %04x ", dau_ctrl.reg_global.GUR & 0xffff, (dau_ctrl.reg_global.GUR >> 16) & 0xffff);
|
|
|
|
|
|
|
|
vty_print("%04x %04x\r\n\n", dau_ctrl.reg_global.GNR & 0xffff, (dau_ctrl.reg_global.GNR >> 16) & 0xffff);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* description: dau 显示接口
|
|
|
|
|
|
|
|
param:
|
|
|
|
|
|
|
|
return: */
|
|
|
|
|
|
|
|
void dau_adj_show(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("Vin: %d\r\n\n", dev_config.vin_adj);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("POWER\r\nCH C CP\r\n");
|
|
|
|
|
|
|
|
for(i = 0; i < DAU_PORT_POWER_CNT - 1; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
vty_print("%-02d %-05d %-05d\r\n", i + 1, dev_config.power_adj[i], dev_config.power_adj_point[i]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
vty_print("\n");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("DEFECT\r\nCH C CP\r\n");
|
|
|
|
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
vty_print("%-02d %-05d %-05d\r\n", i + 1, dev_config.defect_base[i], dev_config.defect_adj[i]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
vty_print("\n");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("FAULT\r\nCH C CP\r\n");
|
|
|
|
|
|
|
|
for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
vty_print("%-02d %-05d %-05d\r\n", i + 1, dev_config.fault_base[i], dev_config.fault_adj[i]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
vty_print("\n");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/
|
|
|
|