|
|
@ -53,7 +53,7 @@
|
|
|
|
#include "RS485_debug.h"
|
|
|
|
#include "RS485_debug.h"
|
|
|
|
|
|
|
|
|
|
|
|
/* Private define ------------------------------------------------------------*/
|
|
|
|
/* Private define ------------------------------------------------------------*/
|
|
|
|
#define DAU_WAVE_WAIT_MAX 3 // DAU 波形等待次数
|
|
|
|
#define DAU_WAVE_WAIT_MAX 4 // DAU 波形等待次数
|
|
|
|
|
|
|
|
|
|
|
|
/* 全局状态寄存器地址 -------------------------------- */
|
|
|
|
/* 全局状态寄存器地址 -------------------------------- */
|
|
|
|
#define DAU_REG_ADDR_GSCR 0x0000 // 全局状态寄存器 - 软件特征寄存器
|
|
|
|
#define DAU_REG_ADDR_GSCR 0x0000 // 全局状态寄存器 - 软件特征寄存器
|
|
|
@ -94,6 +94,7 @@
|
|
|
|
#define DAU_REG_ADDR_GCFTR 0x0203 // 全局控制寄存器 - 故障触发录波控制寄存器
|
|
|
|
#define DAU_REG_ADDR_GCFTR 0x0203 // 全局控制寄存器 - 故障触发录波控制寄存器
|
|
|
|
#define DAU_REG_ADDR_GCRTR 0x0204 // 全局控制寄存器 - 寄存器触发录波控制寄存器
|
|
|
|
#define DAU_REG_ADDR_GCRTR 0x0204 // 全局控制寄存器 - 寄存器触发录波控制寄存器
|
|
|
|
#define DAU_REG_ADDR_GCUR 0x0205 // 全局控制寄存器 - UTC 配置寄存器
|
|
|
|
#define DAU_REG_ADDR_GCUR 0x0205 // 全局控制寄存器 - UTC 配置寄存器
|
|
|
|
|
|
|
|
#define DAU_REG_ADDR_GCFTTR 0x0207 // 全局控制寄存器 - 故障电流触发阈值寄存器
|
|
|
|
#define DAU_REG_ADDR_GSUDR 0x0e00 // 全局控制寄存器 - 固件升级数据寄存器
|
|
|
|
#define DAU_REG_ADDR_GSUDR 0x0e00 // 全局控制寄存器 - 固件升级数据寄存器
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -121,6 +122,12 @@
|
|
|
|
#define DAU_REG_ADDR_PMSR 0x0300 // 通道状态寄存器 - 缺陷电流通道周波原始采样值的平均值寄存器
|
|
|
|
#define DAU_REG_ADDR_PMSR 0x0300 // 通道状态寄存器 - 缺陷电流通道周波原始采样值的平均值寄存器
|
|
|
|
#define DAU_REG_ADDR_PPWR 0x03b0 // 通道状态寄存器 - 通道录波数据寄存器
|
|
|
|
#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 软件识别码
|
|
|
|
#define DAU_ID 0x0702 // DAU 软件识别码
|
|
|
|
|
|
|
|
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
|
@ -164,6 +171,7 @@ int8_t _dau_spi_rw;
|
|
|
|
uint16_t _dau_spi_addr;
|
|
|
|
uint16_t _dau_spi_addr;
|
|
|
|
uint16_t _dau_spi_len;
|
|
|
|
uint16_t _dau_spi_len;
|
|
|
|
int8_t g_is_adj_status = 0; // 1:采集 2:采集完成
|
|
|
|
int8_t g_is_adj_status = 0; // 1:采集 2:采集完成
|
|
|
|
|
|
|
|
uint8_t is_OK = FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
|
|
/* Internal functions --------------------------------------------------------*/
|
|
|
|
/* Internal functions --------------------------------------------------------*/
|
|
|
@ -324,7 +332,7 @@ static void _dau_data_save(void)
|
|
|
|
fd_data.vsc = ADC_ctrl.ADCi_vsc;
|
|
|
|
fd_data.vsc = ADC_ctrl.ADCi_vsc;
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
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++)
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -345,7 +353,7 @@ int32_t _dau_update(void)
|
|
|
|
uint16_t cnt = 0;
|
|
|
|
uint16_t cnt = 0;
|
|
|
|
uint16_t page_cnt = 0;
|
|
|
|
uint16_t page_cnt = 0;
|
|
|
|
//uint32_t app_len = wl_ctrl.app_len;
|
|
|
|
//uint32_t app_len = wl_ctrl.app_len;
|
|
|
|
uint32_t app_len = 476549;
|
|
|
|
uint32_t app_len = 900879;
|
|
|
|
uint32_t len = 0;
|
|
|
|
uint32_t len = 0;
|
|
|
|
uint32_t addr = TFTP_APP_ADDRESS;
|
|
|
|
uint32_t addr = TFTP_APP_ADDRESS;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
@ -383,9 +391,9 @@ int32_t _dau_update(void)
|
|
|
|
cnt = 0;
|
|
|
|
cnt = 0;
|
|
|
|
while(1)
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
osDelay(200);
|
|
|
|
osDelay(100);
|
|
|
|
cnt++;
|
|
|
|
cnt++;
|
|
|
|
if (cnt > 3)
|
|
|
|
if (cnt > 6)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
DBG(DBG_M_DAU, "DAU update timeout\r\n");
|
|
|
|
DBG(DBG_M_DAU, "DAU update timeout\r\n");
|
|
|
|
return HAL_TIMEOUT;
|
|
|
|
return HAL_TIMEOUT;
|
|
|
@ -425,6 +433,7 @@ int32_t _dau_update(void)
|
|
|
|
void _dau_utc(void)
|
|
|
|
void _dau_utc(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
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 对时一定是可用的 */
|
|
|
|
/* dau 主循环大概 250ms 运行一次, 在第 3 次循环 (500 ~ 750ms) 对时, 此时 GPS 对时一定是可用的 */
|
|
|
|
if (50000000 < dau_ctrl.reg_global.GNR && dau_ctrl.reg_global.GNR <= 75000000
|
|
|
|
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));
|
|
|
|
_dau_reg_write(DAU_REG_ADDR_GCUR, sizeof(uint32_t));
|
|
|
|
vty_print("Change\r\n");
|
|
|
|
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);
|
|
|
|
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);
|
|
|
|
DBG(DBG_M_DAU, "DAU wave err\r\n", rv);
|
|
|
|
return HAL_TIMEOUT;
|
|
|
|
return HAL_TIMEOUT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
osDelay(3000);
|
|
|
|
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)
|
|
|
@ -479,11 +495,11 @@ int32_t _dau_wave_col_start(void)
|
|
|
|
return: HAL_xxx */
|
|
|
|
return: HAL_xxx */
|
|
|
|
int32_t _dau_wave_col_fault(void)
|
|
|
|
int32_t _dau_wave_col_fault(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
|
|
|
|
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 rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
/* 读取触发电流值 */
|
|
|
|
/* 读取触发电流值 */
|
|
|
|
E_RETURN(_dau_reg_read_port_state());
|
|
|
|
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++)
|
|
|
|
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);
|
|
|
|
*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");
|
|
|
|
DBG(DBG_M_DAU, "DAU fault wave err\r\n");
|
|
|
|
return HAL_TIMEOUT;
|
|
|
|
return HAL_TIMEOUT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
osDelay(10);
|
|
|
|
osDelay(5);
|
|
|
|
|
|
|
|
|
|
|
|
E_RETURN(_dau_reg_read_global_state());
|
|
|
|
E_RETURN(_dau_reg_read_global_state());
|
|
|
|
if ((dau_ctrl.reg_global.GFTR & DAU_GFTR_FAULT_WAVE_Msk) >> DAU_GFTR_FAULT_WAVE_Pos)
|
|
|
|
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;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("#D8 %d\r\n", j);
|
|
|
|
j++;
|
|
|
|
j++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for(j = 0; j < DAU_PKT_FAULT_CNT; 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));
|
|
|
|
E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_FAULT_BYTE_CNT));
|
|
|
|
addr += DAU_PKT_FAULT_BYTE_CNT;
|
|
|
|
addr += DAU_PKT_FAULT_BYTE_CNT;
|
|
|
|
|
|
|
|
osDelay(200);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
vty_print("FA%d\r\n", i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
|
#endif
|
|
|
|
#if 0
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t j = 0;
|
|
|
|
uint8_t j = 0;
|
|
|
|
uint32_t addr = 0;
|
|
|
|
uint32_t addr = 0;
|
|
|
@ -550,6 +570,7 @@ int32_t _dau_wave_col_fault(void)
|
|
|
|
|
|
|
|
|
|
|
|
vty_print("#D2 %x\r\n", addr);
|
|
|
|
vty_print("#D2 %x\r\n", addr);
|
|
|
|
return rv;
|
|
|
|
return rv;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* description: 缺陷波形采集
|
|
|
|
/* description: 缺陷波形采集
|
|
|
@ -568,8 +589,8 @@ int32_t _dau_wave_col_defect(void)
|
|
|
|
E_RETURN(_dau_reg_read_port_state());
|
|
|
|
E_RETURN(_dau_reg_read_port_state());
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.MAX[i];
|
|
|
|
dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.DMAX[i];
|
|
|
|
if (dau_ctrl.reg_port_state.MAX[i] > dev_config.defect_threshold)
|
|
|
|
if (dau_ctrl.reg_port_state.DMAX[i] > dev_config.defect_threshold)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
is_exceed = TRUE;
|
|
|
|
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++)
|
|
|
|
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_POWER_BYTE_CNT));
|
|
|
|
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);
|
|
|
|
memcpy(power, &dau_ctrl.buf_dau_rx[2], DAU_PKT_POWER_BYTE_CNT);
|
|
|
|
power += DAU_PKT_POWER_BYTE_CNT >> 1;
|
|
|
|
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++)
|
|
|
|
for(i = 0; i < DAU_POWER_DATE_LEN; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
square_sum += val[ch][i] * val[ch][i];
|
|
|
|
square_sum += (val[ch][i] - 0x167) * (val[ch][i] - 0x167);
|
|
|
|
mean_sum += val[ch][i];
|
|
|
|
mean_sum += val[ch][i] - 0x167;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 根据数据查找数据落在哪个分段点上. */
|
|
|
|
/* 根据数据查找数据落在哪个分段点上. */
|
|
|
|
temp = (double)sqrt(square_sum / DAU_POWER_DATE_LEN) - abs(mean_sum / DAU_POWER_DATE_LEN);
|
|
|
|
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++)
|
|
|
|
for(adj = 0; adj < DAU_POWER_ADJ_CNT - 1; adj++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (temp <= dev_config.ADC_base[ch][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 */
|
|
|
|
return: HAL_xxx */
|
|
|
|
int32_t _dau_wave_col_trigger_by_fault(void)
|
|
|
|
int32_t _dau_wave_col_trigger_by_fault(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint32_t addr = 0;
|
|
|
|
uint32_t addr = 0;
|
|
|
|
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
/* 上次触发没有完成直接退出 */
|
|
|
|
/* 上次触发没有完成直接退出 */
|
|
|
|
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP))
|
|
|
|
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);
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
|
|
|
|
|
|
|
|
is_OK = TRUE;
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
static uint8_t temp = FALSE;
|
|
|
|
static uint8_t temp = FALSE;
|
|
|
|
if (temp)
|
|
|
|
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);
|
|
|
|
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
|
|
|
|
|
|
|
|
|
|
|
|
return rv;
|
|
|
|
return rv;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* description: 寄存器触发波形采集
|
|
|
|
/* description: 寄存器触发波形采集
|
|
|
@ -1012,21 +1035,22 @@ int32_t _dau_wave_col_trigger_by_reg(void)
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
int32_t rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
/* 上次触发没有完成直接退出 */
|
|
|
|
/* 上次触发没有完成直接退出 */
|
|
|
|
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
|
|
|
|
//if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
return HAL_OK;
|
|
|
|
// return HAL_OK;
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
/* 定时开始采集 */
|
|
|
|
/* 定时开始采集 */
|
|
|
|
tick = HAL_GetTick();
|
|
|
|
//tick = HAL_GetTick();
|
|
|
|
if ((tick - dau_ctrl.col_time) < (dev_config.collect_interval * 60000)
|
|
|
|
//if ((tick - dau_ctrl.col_time) < (dev_config.collect_interval * 60000)
|
|
|
|
&& !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
|
|
|
|
// && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
|
|
|
|
{
|
|
|
|
//{
|
|
|
|
return HAL_OK;
|
|
|
|
// return HAL_OK;
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
E_RETURN(_dau_wave_col_start());
|
|
|
|
E_RETURN(_dau_wave_col_start());
|
|
|
|
//E_RETURN(_dau_wave_col_defect());
|
|
|
|
//E_RETURN(_dau_wave_col_defect());
|
|
|
|
|
|
|
|
//common_watchdog_set(COM_WDG_DAU);
|
|
|
|
E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG));
|
|
|
|
E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG));
|
|
|
|
_dau_power_calculate(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)
|
|
|
|
static void _dau_init(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
char version[DEV_COMPILE_TIME_LEN] = {0};
|
|
|
|
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;
|
|
|
|
dau_ctrl.spi = &hspi1;
|
|
|
|
|
|
|
|
|
|
|
@ -1076,7 +1103,10 @@ static void _dau_init(void)
|
|
|
|
|
|
|
|
|
|
|
|
HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_SET);
|
|
|
|
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);
|
|
|
|
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 版本信息 */
|
|
|
|
/* 读取 FPGA 版本信息 */
|
|
|
|
if (HAL_OK == _dau_reg_read_global_state())
|
|
|
|
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);
|
|
|
|
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 主任务循环
|
|
|
|
/* description: DAU 主任务循环
|
|
|
@ -1095,8 +1147,8 @@ static void _dau_init(void)
|
|
|
|
return: */
|
|
|
|
return: */
|
|
|
|
static void _dau_start(void *argument)
|
|
|
|
static void _dau_start(void *argument)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
|
|
|
|
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
|
|
|
|
uint16_t *buf = NULL;
|
|
|
|
//uint16_t *buf = NULL;
|
|
|
|
uint32_t addr = 0;
|
|
|
|
uint32_t addr = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t i = 0;
|
|
|
|
uint8_t j = 0;
|
|
|
|
uint8_t j = 0;
|
|
|
@ -1108,7 +1160,7 @@ static void _dau_start(void *argument)
|
|
|
|
|
|
|
|
|
|
|
|
for (;;)
|
|
|
|
for (;;)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
osDelay(5000);
|
|
|
|
osDelay(1250);
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
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_fault();
|
|
|
|
|
|
|
|
|
|
|
|
/* 循环工频缺陷电流采集 */
|
|
|
|
/* 循环工频缺陷电流采集 */
|
|
|
|
//_dau_wave_col_trigger_by_reg();
|
|
|
|
_dau_wave_col_trigger_by_reg();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (1){
|
|
|
|
#if 0
|
|
|
|
#if 0
|
|
|
|
addr = dau_ctrl.addr_reg;
|
|
|
|
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);
|
|
|
|
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++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
|
|
|
|
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;)
|
|
|
|
for(k = 0; k < 512;)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
vty_print("%04x ", buf[k++]);
|
|
|
|
vty_print("%04x ", buf[k++]);
|
|
|
|
if(0 == k % 32)
|
|
|
|
if(0 == k % 32)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1169,16 +1223,42 @@ static void _dau_start(void *argument)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if 0
|
|
|
|
#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);
|
|
|
|
vty_print("POWER %d\r\n", i);
|
|
|
|
buf = (uint16_t*)dau_ctrl.reg_power[i];
|
|
|
|
buf = (uint16_t*)dau_ctrl.reg_power[i];
|
|
|
|
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
|
|
|
|
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
|
|
|
|
for(k = 0; k < 512;)
|
|
|
|
for(k = 0; k < 512;)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
vty_print("%-04x ", buf[k++]);
|
|
|
|
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)
|
|
|
|
if(0 == k % 32)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
osDelay(100);
|
|
|
|
osDelay(100);
|
|
|
@ -1190,16 +1270,41 @@ static void _dau_start(void *argument)
|
|
|
|
osDelay(100);
|
|
|
|
osDelay(100);
|
|
|
|
vty_print("\r\n");
|
|
|
|
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;
|
|
|
|
buf += 512;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
vty_print("\r\n");
|
|
|
|
vty_print("\r\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
while(1)
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
osDelay(500);
|
|
|
|
osDelay(500);
|
|
|
|
common_watchdog_set(COM_WDG_DAU);
|
|
|
|
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)
|
|
|
|
if (1 == _dau_spi_rw)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_dau_spi_rw = 0;
|
|
|
|
_dau_spi_rw = 0;
|
|
|
@ -1212,6 +1317,9 @@ static void _dau_start(void *argument)
|
|
|
|
_dau_spi_rw = 0;
|
|
|
|
_dau_spi_rw = 0;
|
|
|
|
_dau_reg_write(_dau_spi_addr, 2);
|
|
|
|
_dau_reg_write(_dau_spi_addr, 2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|