|
|
|
@ -125,7 +125,8 @@
|
|
|
|
|
#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_REG_ADDR_PORT_DEFECT_ADJ 0xC // 通道配置寄存器 - 缺陷电流通道校准系数寄存器
|
|
|
|
|
#define DAU_REG_ADDR_PORT_FAULT_ADJ 0x22 // 通道配置寄存器 - 故障电流通道校准系数寄存器
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define DAU_ID 0x0702 // DAU 软件识别码
|
|
|
|
@ -171,7 +172,6 @@ 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 --------------------------------------------------------*/
|
|
|
|
@ -283,11 +283,7 @@ int32_t _dau_reg_read_global_state(void)
|
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
/* 读取全局寄存器 */
|
|
|
|
|
rv = _dau_reg_read(DAU_REG_ADDR_GSCR, sizeof(dau_reg_global_t));
|
|
|
|
|
if (rv != HAL_OK)
|
|
|
|
|
{
|
|
|
|
|
return rv;
|
|
|
|
|
}
|
|
|
|
|
E_RETURN(_dau_reg_read(DAU_REG_ADDR_GSCR, sizeof(dau_reg_global_t)));
|
|
|
|
|
|
|
|
|
|
if (p->GSCR != DAU_ID)
|
|
|
|
|
{
|
|
|
|
@ -308,13 +304,43 @@ int32_t _dau_reg_read_port_state(void)
|
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
/* 读取全局寄存器 */
|
|
|
|
|
rv = _dau_reg_read(DAU_REG_ADDR_PMSR, sizeof(dau_port_state_reg_t));
|
|
|
|
|
if (rv != HAL_OK)
|
|
|
|
|
{
|
|
|
|
|
E_RETURN(_dau_reg_read(DAU_REG_ADDR_PMSR, sizeof(dau_port_state_reg_t)));
|
|
|
|
|
|
|
|
|
|
memcpy(&dau_ctrl.reg_port_state, dau_ctrl.buf_dau_rx + 2, sizeof(dau_port_state_reg_t));
|
|
|
|
|
return rv;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
memcpy(&dau_ctrl.reg_port_state, dau_ctrl.buf_dau_rx + 2, sizeof(dau_port_state_reg_t));
|
|
|
|
|
/* description: DAU 写端口配置寄存器报文发送
|
|
|
|
|
param:
|
|
|
|
|
return: HAL_xxx */
|
|
|
|
|
int32_t _dau_reg_write_port(uint32_t port)
|
|
|
|
|
{
|
|
|
|
|
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
|
uint16_t addr = 0;
|
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
/* 缺陷校准系数 */
|
|
|
|
|
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE;
|
|
|
|
|
//*temp = dev_config.defect_base[i];
|
|
|
|
|
*temp = 32927;
|
|
|
|
|
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
|
|
|
|
|
|
|
|
|
|
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ;
|
|
|
|
|
//*temp = dev_config.defect_adj[i];
|
|
|
|
|
*temp = 52428;
|
|
|
|
|
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
|
|
|
|
|
|
|
|
|
|
/* 故障校准系数 */
|
|
|
|
|
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_BASE;
|
|
|
|
|
//*temp = dev_config.fault_base[i];
|
|
|
|
|
*temp = 34533;
|
|
|
|
|
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
|
|
|
|
|
|
|
|
|
|
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_ADJ;
|
|
|
|
|
//*temp = dev_config.fault_adj[i];
|
|
|
|
|
*temp = 52428;
|
|
|
|
|
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
|
|
|
|
|
|
|
|
|
|
return rv;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -427,6 +453,7 @@ int32_t _dau_update(void)
|
|
|
|
|
return: */
|
|
|
|
|
void _dau_utc(void)
|
|
|
|
|
{
|
|
|
|
|
static uint8_t is_start = FALSE;
|
|
|
|
|
uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
|
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
|
|
|
|
|
@ -437,16 +464,26 @@ void _dau_utc(void)
|
|
|
|
|
{
|
|
|
|
|
*utc = dau_ctrl.utc;
|
|
|
|
|
_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;
|
|
|
|
|
vty_print("#D Change %d %d %d %d\r\n", dau_ctrl.reg_global.GUR, dau_ctrl.reg_global.GNR, dau_ctrl.is_utc_valid, dau_ctrl.utc);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 开启故障定位 */
|
|
|
|
|
#if 0
|
|
|
|
|
if (dau_ctrl.is_utc_valid && FALSE == is_start)
|
|
|
|
|
{
|
|
|
|
|
vty_print("#D Start fault\r\n");
|
|
|
|
|
is_start = TRUE;
|
|
|
|
|
/* 触发阈值 */
|
|
|
|
|
*temp = 0x4000;
|
|
|
|
|
_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));
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* description: 寄存器触发波形采集开始
|
|
|
|
@ -533,13 +570,10 @@ int32_t _dau_wave_col_fault(void)
|
|
|
|
|
|
|
|
|
|
for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
@ -582,20 +616,23 @@ int32_t _dau_wave_col_defect(void)
|
|
|
|
|
|
|
|
|
|
/* 比较缺陷波形是否超过阈值 */
|
|
|
|
|
E_RETURN(_dau_reg_read_port_state());
|
|
|
|
|
vty_print("#D defect max");
|
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
|
{
|
|
|
|
|
dau_ctrl.reg_defect_max[i] = 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]);
|
|
|
|
|
if (dau_ctrl.reg_port_state.DMAX[i] > dev_config.defect_threshold)
|
|
|
|
|
{
|
|
|
|
|
is_exceed = TRUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
vty_print("\r\n");
|
|
|
|
|
/* 没有超过阈值并没有强制录波直接返回 */
|
|
|
|
|
//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;
|
|
|
|
|
//}
|
|
|
|
|
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;
|
|
|
|
@ -799,7 +836,6 @@ void _dau_power_calculate(DAU_SOURCE_E source)
|
|
|
|
|
int16_t (*val)[DAU_POWER_DATE_LEN] = (DAU_SOURCE_FAULT == source) ? dau_ctrl.fault_power : dau_ctrl.reg_power;
|
|
|
|
|
uint32_t *power = (DAU_SOURCE_FAULT == source) ? dau_ctrl.fault_elec : dau_ctrl.reg_elec;
|
|
|
|
|
uint8_t ch = 0;
|
|
|
|
|
uint8_t adj = 0;
|
|
|
|
|
uint16_t i = 0;
|
|
|
|
|
uint64_t square_sum = 0;
|
|
|
|
|
int32_t mean = 0;
|
|
|
|
@ -839,7 +875,7 @@ void _dau_power_calculate(DAU_SOURCE_E source)
|
|
|
|
|
for(ch = 0; ch < DAU_PORT_GROUND_CNT; ch++)
|
|
|
|
|
{
|
|
|
|
|
/* 判断工频录波上传阈值 */
|
|
|
|
|
if (abs_cal_u(power[ch], fd_data.elec[ch]) >= (uint32_t)dev_config.power_threshold * 1000)
|
|
|
|
|
if (abs_cal_u(power[ch], fd_data.elec[ch]) >= (uint32_t)dev_config.power_threshold * 10)
|
|
|
|
|
{
|
|
|
|
|
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_POWER);
|
|
|
|
|
break;
|
|
|
|
@ -858,15 +894,16 @@ void _dau_power_calculate(DAU_SOURCE_E source)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 计算工频录波每个点的电流值 */
|
|
|
|
|
if (DAU_SOURCE_FAULT == source
|
|
|
|
|
|| IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_POWER))
|
|
|
|
|
{
|
|
|
|
|
for(ch = 0; ch < DAU_PORT_POWER_CNT - 4; ch++)
|
|
|
|
|
for(ch = 0; ch < DAU_PORT_POWER_CNT; ch++)
|
|
|
|
|
{
|
|
|
|
|
for(i = 0; i < DAU_POWER_DATE_LEN; i++)
|
|
|
|
|
{
|
|
|
|
|
val[ch][i] = (int64_t)val[ch][i] * 1000 / dev_config.ADC_adj_point[i];
|
|
|
|
|
val[ch][i] = (int32_t)val[ch][i] * 500 / dev_config.ADC_adj_point[ch];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -969,45 +1006,63 @@ 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;
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
static uint8_t temp = FALSE;
|
|
|
|
|
if (temp)
|
|
|
|
|
#if 1
|
|
|
|
|
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
|
|
|
|
|
uint8_t j = 0;
|
|
|
|
|
uint16_t k = 0;
|
|
|
|
|
addr = dau_ctrl.addr_fault;
|
|
|
|
|
|
|
|
|
|
for(i = 0; i < 1; i++)
|
|
|
|
|
{
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
osDelay(30000);
|
|
|
|
|
temp = TRUE;
|
|
|
|
|
|
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
uint32_t addr = 0;
|
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
/* 没有触发直接退出 */
|
|
|
|
|
dau_ctrl.fault_utc = dau_ctrl.utc;
|
|
|
|
|
dau_ctrl.fault_ns = 123456789;
|
|
|
|
|
|
|
|
|
|
/* 擦除 flash */
|
|
|
|
|
addr = dau_ctrl.addr_fault;
|
|
|
|
|
vty_print("#D1 %x\r\n", addr);
|
|
|
|
|
for(i = 0; i < 2; i++)
|
|
|
|
|
}
|
|
|
|
|
if(k % 32 != 0)
|
|
|
|
|
{
|
|
|
|
|
E_RETURN(spi_flash_erase(addr, SPI_CMD_BLOCK64_ERASE));
|
|
|
|
|
addr += SPI_FLASH_BLOCK64_SIZE;
|
|
|
|
|
osDelay(100);
|
|
|
|
|
vty_print("\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
vty_print("\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 采集波形 */
|
|
|
|
|
E_RETURN(_dau_wave_col_fault());
|
|
|
|
|
E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT));
|
|
|
|
|
_dau_power_calculate(DAU_SOURCE_FAULT);
|
|
|
|
|
|
|
|
|
|
/* 置标志位 */
|
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
|
|
|
|
|
|
|
|
|
|
return rv;
|
|
|
|
|
#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
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* description: 寄存器触发波形采集
|
|
|
|
@ -1018,7 +1073,6 @@ int32_t _dau_wave_col_trigger_by_reg(void)
|
|
|
|
|
uint32_t tick = 0;
|
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
/* 上次触发没有完成直接退出 */
|
|
|
|
|
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
|
|
|
|
|
{
|
|
|
|
@ -1032,18 +1086,79 @@ int32_t _dau_wave_col_trigger_by_reg(void)
|
|
|
|
|
{
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
E_RETURN(_dau_wave_col_start());
|
|
|
|
|
E_RETURN(_dau_wave_col_defect());
|
|
|
|
|
//E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG));
|
|
|
|
|
//_dau_power_calculate(DAU_SOURCE_REG);
|
|
|
|
|
E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG));
|
|
|
|
|
_dau_power_calculate(DAU_SOURCE_REG);
|
|
|
|
|
|
|
|
|
|
/* 置标志位, 保存数据 */
|
|
|
|
|
_dau_data_save();
|
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
|
|
|
|
|
dau_ctrl.col_time = tick;
|
|
|
|
|
|
|
|
|
|
#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 0
|
|
|
|
|
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 = 2; i < 3; 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(j = 0; j < 1; 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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1053,8 +1168,6 @@ 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;
|
|
|
|
@ -1088,10 +1201,7 @@ 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);
|
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
|
osDelay(10000);
|
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
|
osDelay(10000);
|
|
|
|
|
osDelay(3000);
|
|
|
|
|
|
|
|
|
|
/* 读取 FPGA 版本信息 */
|
|
|
|
|
if (HAL_OK == _dau_reg_read_global_state())
|
|
|
|
@ -1104,26 +1214,10 @@ static void _dau_init(void)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 配置校准系数 */
|
|
|
|
|
/* 配置校准系数, 缺陷和故障因为都是 3 路, 统一使用一个寄存器组. */
|
|
|
|
|
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 = 34249;
|
|
|
|
|
_dau_reg_write(addr, sizeof(uint16_t));
|
|
|
|
|
|
|
|
|
|
addr = (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ;
|
|
|
|
|
//*temp = dev_config.defect_adj[i];
|
|
|
|
|
*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));
|
|
|
|
|
_dau_reg_write_port(i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1132,12 +1226,6 @@ 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;
|
|
|
|
|
uint32_t addr = 0;
|
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
uint8_t j = 0;
|
|
|
|
|
uint16_t k = 0;
|
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
/* 状态初始化 */
|
|
|
|
@ -1146,8 +1234,7 @@ static void _dau_start(void *argument)
|
|
|
|
|
for (;;)
|
|
|
|
|
{
|
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
|
dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX);
|
|
|
|
|
osDelay(1250);
|
|
|
|
|
osDelay(250);
|
|
|
|
|
|
|
|
|
|
/* 读取全局状态寄存器 */
|
|
|
|
|
rv = _dau_reg_read_global_state();
|
|
|
|
@ -1156,6 +1243,9 @@ static void _dau_start(void *argument)
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* utc 对时处理 */
|
|
|
|
|
_dau_utc();
|
|
|
|
|
|
|
|
|
|
/* 处理升级 */
|
|
|
|
|
if (dau_ctrl.update_flag)
|
|
|
|
|
{
|
|
|
|
@ -1174,143 +1264,33 @@ static void _dau_start(void *argument)
|
|
|
|
|
flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update %s!\r\n", dau_ctrl.update_rt == 1 ? "OK" : "ERROR");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* utc 对时处理 */
|
|
|
|
|
//_dau_utc();
|
|
|
|
|
|
|
|
|
|
/* 故障电流采集 */
|
|
|
|
|
//_dau_wave_col_trigger_by_fault();
|
|
|
|
|
|
|
|
|
|
/* 循环工频缺陷电流采集 */
|
|
|
|
|
_dau_wave_col_trigger_by_reg();
|
|
|
|
|
|
|
|
|
|
if (1){
|
|
|
|
|
#if 1
|
|
|
|
|
addr = dau_ctrl.addr_reg;
|
|
|
|
|
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 0
|
|
|
|
|
//for(i = 5; i < DAU_PORT_POWER_CNT; i++)
|
|
|
|
|
for(i = 1; i < 2; 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(j = 0; j < 1; 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
|
|
|
|
|
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)
|
|
|
|
|
if (IS_MONITOR_BIT_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE))
|
|
|
|
|
{
|
|
|
|
|
osDelay(100);
|
|
|
|
|
vty_print("\r\n");
|
|
|
|
|
_dau_reg_write_port(dau_ctrl.reg_data);
|
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
buf += 512;
|
|
|
|
|
}
|
|
|
|
|
vty_print("\r\n");
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if 1
|
|
|
|
|
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
osDelay(500);
|
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
|
#if 1
|
|
|
|
|
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);
|
|
|
|
|
uint16_t *data = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
|
*data = _dau_spi_len;
|
|
|
|
|
_dau_spi_rw = 0;
|
|
|
|
|
_dau_reg_write(_dau_spi_addr, 2);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|