master
yuliang 2 months ago
parent 4b6bb0a7c0
commit 7838863706

@ -76,20 +76,8 @@ typedef struct
uint16_t ADCi_vin; // ADCi 输入电压通道计算值, 单位: mv.
uint16_t ADCi_vsc; // ADCi 超级电容电压通道计算值, 单位: mv.
uint16_t ADCi_cnt; // ADCi 采样计数.
uint32_t ADCi_time; // ADCi 上次采集结束时间.
uint8_t ADCi_state; // ADCi 采样状态.
uint8_t ADCi_err_cnt; // ADCi 采样失败次数.
SPI_HandleTypeDef *ADC_spi; // ADC 使用的 SPI 句柄.
uint32_t collect_time; // ADC 上次采集结束时间.
uint8_t ADC_state; // ADC 采样状态.
uint8_t ADC_err_cnt; // ADC 采样失败次数.
uint8_t up_finish; // 上传是否完成 BOOL.
uint8_t is_energy_first; // 用于判断是否第一次判断节能模式, 因为第一次判断节能模式后需要立即反应, 后续判断模式在 wireless 里反应.
uint8_t is_ADC_thr; // ADC 采用超过工频阈值.
uint8_t is_force_col; // ADC 主动采集.
uint8_t energy_mode; // 设备工作模式 0 - 正常 1 - 休眠, 这个参数放这里, 主要是考虑到模式是由电流电压确定的.
} ADC_ctrl_t;
/* Exported macro ------------------------------------------------------------*/

@ -54,7 +54,9 @@ typedef struct
uint8_t is_bat_charge; // 充电状态
uint8_t is_utc_valid; // GPS 对时 UTC 时间有效
uint8_t state_wir; // 无线状态
uint8_t reserve[3];
uint8_t energy_mode; // 节能模式
uint8_t GB_cnt; // 北斗卫星数量
uint8_t fault_port; // 故障触发端口
uint32_t run; // 设备持续运行时间
uint32_t time; // 设备时间
uint32_t elec[8]; // 工频电流有效值mA
@ -63,6 +65,9 @@ typedef struct
int16_t elec_fault_max[4]; // 故障电流最大值mA
uint32_t fault_utc; // 故障触发时间
uint32_t fault_ns; // 故障触发时间 ns
uint32_t fault_utc_max; // 故障触发最大值时间
uint32_t fault_ns_max; // 故障触发最大值时间 ns
uint32_t PPS_cnt; // PPS 之间FPGA时钟计数
} debug_real_data_t;
/* 校准命令信息. */
@ -90,29 +95,16 @@ typedef struct
int8_t index;
} debug_adj_num_t;
/* 南网配置信息. */
typedef struct
{
uint8_t passwd[8];
uint8_t beat_interval;
uint8_t reset_time[3];
uint16_t collect_interval;
uint16_t sleep_time;
uint16_t online_time;
uint8_t reserve[2];
uint8_t ciphertext[8]; // 实时数据认证密文.
} debug_csg_config_t;
/* Exported macro ------------------------------------------------------------*/
/* Extern global variables ---------------------------------------------------*/
extern usart_buf_t debug_buf;
/* Extern functions ----------------------------------------------------------*/
extern void debug_start(void);
extern void debug_adj_auto(uint8_t bitmap);
extern int32_t debug_app_check(uint32_t addr, uint32_t size, uint8_t file_type);
extern void _debug_pkt_adj_auto(void);
extern void _debug_pkt_adj_auto2(void);
extern void debug_pkt_adj_defect(void);
extern void debug_pkt_adj_fault(void);
#endif
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

@ -205,8 +205,8 @@ enum DEBUG_CM_CMD
DEBUG_PRV_ADJ_SET_DEFECT = 9,
DEBUG_PRV_ADJ_SET_FAULT = 10,
DEBUG_PRV_WAVE_COL = 11,
DEBUG_PRV_ADJ_DECFECT_ZERO = 12,
DEBUG_PRV_ADJ_DECFECT = 13,
DEBUG_PRV_ADJ_DEFECT_ZERO = 12,
DEBUG_PRV_ADJ_DEFECT = 13,
DEBUG_PRV_LOG = 14,
DEBUG_PRV_HISTORY_DATA = 15,
DEBUG_PRV_ADJ_MANUAL = 16,
@ -215,7 +215,9 @@ enum DEBUG_CM_CMD
DEBUG_PRV_UPDATE_FPGA = 19,
DEBUG_PRV_UPDATE_RT = 20,
DEBUG_PRV_ADJ_AUTO = 21,
DEBUG_PRV_DEV_STATE = 22,
DEBUG_PRV_SLEEP = 23,
DEBUG_PRV_DEFECT_GET = 24,
DEBUG_PRV_FAULT_GET = 25
};
/* . */

@ -77,6 +77,8 @@
#define DAU_GSR_FLASH_Msk (0x1 << DAU_GSR_FLASH_Pos) /*!< 0x0004 */
/* 全局状态寄存器 - 故障触发录波状态寄存器 bit mask */
#define DAU_GFTR_PORT_Pos (4) // 故障触发端口
#define DAU_GFTR_PORT_Msk (0xf << DAU_GFTR_PORT_Pos) /*!< 0x00f0 */
#define DAU_GFTR_POWER_WAVE_Pos (3) // 故障触发工频电流波形状态
#define DAU_GFTR_POWER_WAVE_Msk (0x1 << DAU_GFTR_POWER_WAVE_Pos) /*!< 0x0008 */
#define DAU_GFTR_DEFECT_WAVE_Pos (2) // 故障触发缺陷电流波形状态
@ -101,10 +103,9 @@
#define DAU_REG_ADDR_GCRTR 0x0204 // 全局控制寄存器 - 寄存器触发录波控制寄存器
#define DAU_REG_ADDR_GCUR 0x0205 // 全局控制寄存器 - UTC 配置寄存器
#define DAU_REG_ADDR_GCFTTR 0x0207 // 全局控制寄存器 - 故障电流触发阈值寄存器
#define DAU_REG_ADDR_GFTTHR 0x0208 // 全局控制寄存器 - 故障电流触发间隔寄存器
#define DAU_REG_ADDR_GCFTIR 0x0208 // 全局控制寄存器 - 故障电流触发间隔寄存器
#define DAU_REG_ADDR_GSUDR 0x0e00 // 全局控制寄存器 - 固件升级数据寄存器
/* 全局控制寄存器 - 故障触发录波控制寄存器 bit mask */
#define DAU_GCFTR_PORT_Pos (4) // 故障触发波形端口
#define DAU_GCFTR_PORT_Msk (0x7 << DAU_GCFTR_PORT_Pos) /*!< 0x0070 */
@ -182,6 +183,9 @@ typedef struct
uint16_t reserve;
uint32_t GUR; // 全局 UTC 寄存器 (Global UTC Register)
uint32_t GNR; // 全局 ns 寄存器 (Global ns Register)
uint32_t GFMUR; // 全局故障触发最大值 UTC 寄存器
uint32_t GFMNR; // 全局故障触发最大值 ns 寄存器
uint32_t GGPCR; // 全局 PPS 之间 FPGS 时钟计数寄存器
} dau_reg_global_t;
/* DAU 通道状态寄存器. */
@ -220,11 +224,16 @@ typedef struct
uint8_t update_rt; // DAU 升级结果, 0 - 无效, 1 - 成功, 2 - 失败
uint8_t update_rt_dbg; // DAU 升级结果- debug 工具使用, 0 - 无效, 1 - 成功, 2 - 失败
uint32_t update_len; // DAU 升级文件大小
uint8_t reserve[3];
uint8_t fault_port; // 故障触发端口
uint32_t fault_utc; // 故障触发时间
uint32_t fault_ns; // 故障触发时间纳秒
uint32_t fault_utc_max; // 故障触发最大值时间
uint32_t fault_ns_max; // 故障触发最大值时间 ns
uint32_t PPS_cnt; // PPS 之间FPGA时钟计数
int16_t fault_power[DAU_PORT_POWER_CNT][DAU_POWER_DATE_LEN]; // 故障触发工频波形采样电流值, 接地电流 0.1A, 运行电流 A
uint32_t fault_elec[DAU_PORT_POWER_CNT];// 故障触发工频电流有效值 0.1A
uint16_t fault_max[DAU_PORT_FAULT_MAX]; // 故障触发电流最大值 0.2A
int16_t fault_max[DAU_PORT_FAULT_MAX]; // 故障触发电流最大值 0.2A
int16_t reg_power[DAU_PORT_POWER_CNT][DAU_POWER_DATE_LEN]; // 寄存器触发工频波形采样电流值, 接地电流 0.1A, 运行电流 A
uint32_t reg_elec[DAU_PORT_POWER_CNT]; // 寄存器触发工频电流有效值 0.1A
uint16_t reg_defect_max[DAU_PORT_DEFECT_MAX]; // 寄存器触发缺陷电流最大值 mA
@ -239,6 +248,7 @@ typedef struct
uint16_t len_buf_gps; // 接收到的报文长度
uint8_t is_half_buf_gps; // DMA 收包一半的时候会产生中断, 这个标志用于过滤这给中断
uint8_t is_utc_ok; // GPS 对时 UTC 时间成功, 当多次 is_utc_valid 无效后才会设置为失败
uint8_t GB_cnt; // 北斗 卫星数量
uint8_t is_utc_valid; // GPS 对时 UTC 时间有效
uint32_t utc; // GPS 对时 UTC 时间
} dau_ctrl_t;
@ -255,6 +265,7 @@ extern uint8_t dau_adj_state;
extern void dau_init(void);
extern void dau_spi_rw(int8_t rw, uint16_t addr, uint16_t len);
extern void dau_show(void);
extern void dau_adj_show(void);
#endif
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

@ -45,7 +45,7 @@
/* Define --------------------------------------------------------------------*/
/* 版本信息. */
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_MINOR 5
#define COMPILE_TIME (__DATE__" "__TIME__)
#define DEV_CAPABILITY_LEN 16
@ -144,6 +144,8 @@ typedef struct
uint8_t is_voltage_adj;
uint8_t turns;
uint8_t elec;
uint16_t vin;
uint8_t reserve[2];
} dev_adj_power_t;
/* 校准参数信息. */
@ -174,42 +176,6 @@ typedef struct
uint16_t fault_elec;
} dev_adj_fault_zero_t;
/* 设备状态信息. */
typedef struct
{
uint8_t energy_mode; // 节能模式.
uint8_t is_adc_collect; // ADC 采集完成.
uint8_t is_adc_up; // ADC 上传完成.
uint8_t adci_cnt; // ADCi 错误计数.
uint8_t adci_state; // ADCi 状态.
uint8_t adc_cnt; // ADC 错误计数.
uint8_t adc_state; // ADC 状态.
uint8_t wave_state; // 高频录波状态.
uint32_t wave_time; // 高频录波开始时间.
uint8_t wave_start; // 高频录波完成.
uint8_t wave_up_start; // 高频录波上传完成.
uint16_t wave_idx; // 高频录波续传索引.
uint8_t wave_rt; // 高频录波结果.
uint8_t wave_force; // 是否强制录波.
uint8_t wl_state; // 4G 状态.
uint8_t wl_cnt; // 4G 错误计数.
uint16_t wl_wave_idx; // 4G 上传录波文件索引.
uint8_t is_wl_update; // 4G 升级.
uint8_t is_adc_thr; // 是否超过工频阈值.
uint8_t force_sleep_up; // 强制睡眠报文是否上传.
uint8_t is_bat_charge; // 电池充电状态.
uint16_t wave_adj; // 高频校准系数.
int16_t wave_min; // 高频采样最大值.
int16_t wave_max; // 高频采样最小值.
uint32_t sys_time; // 系统运行时间.
uint16_t sc_max; // 超级电容最大值.
uint16_t sc_min; // 超级电容最小值.
uint32_t sc_max_time; // 超级电容最大值时间.
uint32_t sc_min_time; // 超级电容最小值时间.
uint32_t sc_up_time; // 超级电容充电时间.
uint32_t sc_down_time; // 超级电容放电时间.
} dev_state_t;
/* 软件配置保存. */
typedef struct
{
@ -235,14 +201,11 @@ typedef struct
uint16_t fault_threshold;
uint16_t defect_threshold;
char APN[DEV_APN_LEN];
uint32_t ADC_base_elec[DAU_PORT_POWER_CNT][DAU_POWER_ADJ_CNT];
uint16_t ADC_adj[DAU_PORT_POWER_CNT][DAU_POWER_ADJ_CNT];
float ADC_base[DAU_PORT_POWER_CNT][DAU_POWER_ADJ_CNT];
uint8_t ADC_turns[DAU_PORT_POWER_CNT];
uint16_t fault_interval; // 单位: s
int16_t fault_time_adj; // 单位: 10ns
/* 保证配置区 8K 的保留位. */
uint8_t reserve[256];
uint8_t reserve[660];
/* INIT_DONE_MAGIC. 4byte */
uint32_t magic_bak;
} dev_config_t;

@ -99,8 +99,8 @@ typedef struct
uint16_t vin; // 工作电压, 单位: mv
uint16_t vbat; // 电池电压, 单位: mv
uint16_t vsc; // 超级电容电压, 单位: mv
uint16_t fault[DAU_PORT_FAULT_MAX]; // 故障电流最大值 A
uint16_t defect[DAU_PORT_DEFECT_MAX]; // 缺陷电流最大值 mA
int16_t fault[DAU_PORT_FAULT_MAX]; // 故障电流最大值 A
int16_t defect[DAU_PORT_DEFECT_MAX]; // 缺陷电流最大值 mA
uint32_t elec[DAU_PORT_POWER_CNT]; // 通道电流有效值 mA
uint8_t col_flag; // DAU 采集标志位
uint8_t is_bat_charge; // 充电状态

@ -167,7 +167,6 @@ static int32_t _ADC_collect(void)
static void _ADC_energy_calculate(void)
{
ADC_ctrl_t *ADC = &ADC_ctrl;
uint8_t is_save = FALSE;
if (ADC->ADCi_temp < -100)
{
@ -179,6 +178,23 @@ static void _ADC_energy_calculate(void)
HAL_GPIO_WritePin(BAT_CHARGE_GPIO_Port, BAT_CHARGE_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(BAT_CLK_GPIO_Port, BAT_CLK_Pin, GPIO_PIN_RESET);
}
if((ADC->ADCi_vbat >= 3600)
|| (ADC->ADCi_vbat >= 3400 && ADC_ENERGY_NORMAL == st_data.energy_mode))
{
ADC->energy_mode = ADC_ENERGY_NORMAL;
}
else
{
ADC->energy_mode = ADC_ENERGY_SLEEP;
}
if (st_data.energy_mode != ADC->energy_mode)
{
st_data.energy_mode = ADC->energy_mode;
st_write(&st_data);
flash_log_write(FLASH_LOG_TYPE_NOTIFY, "Energy is change to %s!\r\n", energy_str[st_data.energy_mode]);
}
}
/* 初始化 ADCi 温度传感器校准数据. */
@ -249,10 +265,10 @@ void ADC_show(void)
{
ADC_ctrl_t *ADC = &ADC_ctrl;
vty_print("TE VB VI VS ATE AVB AVI AVS EC ST\r\n");
vty_print("%-04d %-04d %-04d %-04d %-04d %-04d %-04d %-04d %-02d %-02x", ADC->ADCi_temp, ADC->ADCi_vbat,
vty_print("TE VB VI VS ATE AVB AVI AVS ST\r\n");
vty_print("%-04d %-04d %-04d %-04d %-04d %-04d %-04d %-04d %-02x\r\n", ADC->ADCi_temp, ADC->ADCi_vbat,
ADC->ADCi_vin, ADC->ADCi_vsc, ADC->ADCi_value[ADCi_CH_TEMP], ADC->ADCi_value[ADCi_CH_VBAT],
ADC->ADCi_value[ADCi_CH_VIN], ADC->ADCi_value[ADCi_CH_VSC], ADC->ADCi_err_cnt, ADC->ADCi_state);
vty_print("\r\n");
ADC->ADCi_value[ADCi_CH_VIN], ADC->ADCi_value[ADCi_CH_VSC], ADC->ADCi_state);
vty_print("\n");
}
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

@ -52,6 +52,7 @@
/* Private define ------------------------------------------------------------*/
#define DEBUG_FLASH_BUF_SIZE DEBUG_DATA_SIZE
#define DEBUG_DEFECT_ADJ_P 0.91
/* Private typedef -----------------------------------------------------------*/
/* RS485调试通讯协议器件信息. */
@ -96,7 +97,8 @@ typedef struct
uint16_t fault_thr; // 故障阈值, 单位: A.
uint8_t APN[DEV_APN_LEN]; // APN 名字.
uint16_t fault_inr; // 故障间隔, 单位: s.
uint8_t reserve[18];
int16_t fault_time_adj; // 单位: 10ns
uint8_t reserve[16];
} debug_config_t;
/* Private macro -------------------------------------------------------------*/
@ -576,6 +578,8 @@ static void _debug_pkt_config_get(void)
data->defect_thr = dev_config.defect_threshold;
data->fault_thr = dev_config.fault_threshold;
memcpy(data->APN, dev_config.APN, DEV_APN_LEN);
data->fault_inr = dev_config.fault_interval;
data->fault_time_adj = dev_config.fault_time_adj;
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
@ -624,6 +628,8 @@ static void _debug_pkt_config_set(void)
dev_config.defect_threshold = data->defect_thr;
dev_config.fault_threshold = data->fault_thr;
memcpy(dev_config.APN, data->APN, DEV_APN_LEN);
dev_config.fault_interval = data->fault_inr;
dev_config.fault_time_adj = data->fault_time_adj;
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_REPLY);
@ -1057,6 +1063,7 @@ static void _debug_pkt_data_get(void)
data->temperature = ADC_ctrl.ADCi_temp;
data->vbat = ADC_ctrl.ADCi_vbat;
data->vin = ADC_ctrl.ADCi_vin;
data->energy_mode = ADC_ctrl.energy_mode;
HAL_RTC_GetTime(&hrtc, &debug_time, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &debug_date, RTC_FORMAT_BIN);
debug_tm.tm_year = debug_date.Year + 100;
@ -1070,6 +1077,8 @@ static void _debug_pkt_data_get(void)
data->state_wir = wl_ctrl.state;
data->is_bat_charge = st_data.is_bat_charge;
data->is_utc_valid = dau_ctrl.is_utc_valid;
data->fault_port = dau_ctrl.fault_port;
data->GB_cnt = dau_ctrl.GB_cnt;
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{
@ -1083,6 +1092,9 @@ static void _debug_pkt_data_get(void)
}
data->fault_utc = dau_ctrl.fault_utc;
data->fault_ns = dau_ctrl.fault_ns;
data->fault_utc_max = dau_ctrl.fault_utc_max;
data->fault_ns_max = dau_ctrl.fault_ns_max;
data->PPS_cnt = dau_ctrl.PPS_cnt;
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
@ -1290,9 +1302,9 @@ static void _debug_pkt_adj_defect(void)
{
continue;
}
temp = dau_ctrl.reg_port_state.DAVR[i] - dev_config.defect_base[i];
//temp = 3276;
dev_config.defect_adj[i] = debug_adj_defect.defect_elec * 32768 / temp;
dev_config.defect_adj[i] = (uint16_t)(debug_adj_defect.defect_elec * 8192 * DEBUG_DEFECT_ADJ_P / temp);
}
/* 封装报文头. */
@ -1471,6 +1483,7 @@ static HAL_StatusTypeDef _debug_adj_manual(uint8_t bitmap)
common_watchdog_set(COM_WDG_CLI);
osDelay(1000);
}
DBG(DBG_M_RS485_DEBUG, "capture end...\r\n");
_debug_adj_power_cal();
return HAL_OK;
@ -1491,10 +1504,9 @@ static void _debug_pkt_adj_manual(void)
cfg->return_value = _debug_adj_manual(debug_adj_power.bitmap);
if (debug_adj_power.is_voltage_adj)
{
ADC_vbat_auto(5000);
ADC_vbat_auto(debug_adj_power.vin);
}
memcpy(cfg->power_adj, dev_config.power_adj, 32);
//memcpy(cfg->power_adj_point, dev_config.power_adj_point, 32);
cfg->vin_adj = dev_config.vin_adj;
/* 封装报文头. */
@ -1574,8 +1586,7 @@ static void _debug_pkt_adj_fault(void)
continue;
}
//data->fault_adj[i] = abs_cal_u(dau_ctrl.reg_port_state.FMAX[i] - dev_config.fault_base[i]);
data->fault_adj[i] = 13107;
data->fault_adj[i] = abs_cal_u(dau_ctrl.reg_port_state.FMAX[i], dev_config.fault_base[i]);
}
/* 封装报文头. */
@ -1634,7 +1645,7 @@ void _debug_pkt_adj_auto(void)
cfg->return_value = _debug_adj_auto(debug_adj_power.bitmap);
if (debug_adj_power.is_voltage_adj)
{
ADC_vbat_auto(5000);
ADC_vbat_auto(debug_adj_power.vin);
}
memcpy(cfg->power_adj, dev_config.power_adj, 32);
cfg->vin_adj = dev_config.vin_adj;
@ -1655,61 +1666,152 @@ void _debug_pkt_adj_auto(void)
return;
}
void _debug_pkt_adj_auto2(void)
/* . */
static void _debug_pkt_defect_get(void)
{
debug_adj_power.bitmap = 1;
debug_adj_power.elec = 5;
debug_adj_power.turns = 10;
debug_adj_power.is_voltage_adj = 1;
static uint32_t base = 0;
uint32_t addr = 0;
proto_head_t *head = (proto_head_t*)debug_buf.buf;
mul_head_t *m_head = (mul_head_t*)(debug_buf.buf + sizeof(proto_head_t));
uint8_t *data = (uint8_t*)(debug_buf.buf + sizeof(proto_head_t) + sizeof(mul_head_t));
int32_t data_len = 0;
uint32_t *crc = NULL;
/* 组装数据 */
_debug_adj_auto(debug_adj_power.bitmap);
if (debug_adj_power.is_voltage_adj)
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY);
/* 初始化数据. */
if (0 == m_head->index)
{
ADC_vbat_auto(5000);
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
{
base = dau_ctrl.addr_reg;
}
else
{
base = dau_ctrl.addr_reg - 0x20000;
if (base < WARE_REG_ADDRESS)
{
base = WARE_REG_ADDRESS_END - 0x20000;
}
}
}
/* 计算数据长度和报文长度. */
data_len = DAU_DEFECT_BYTE_CNT - m_head->index * DEBUG_DATA_SIZE;
if (data_len < 0)
{
return;
}
else if (data_len > DEBUG_DATA_SIZE)
{
m_head->len = DEBUG_DATA_SIZE;
}
else
{
m_head->len = data_len;
}
/* 填充数据. */
if (m_head->len > 0)
{
addr = base + m_head->index * DEBUG_DATA_SIZE;
spi_flash_read(addr, data, DEBUG_DATA_SIZE);
}
/* 计算校验和. */
head->len = sizeof(proto_head_t) + sizeof(mul_head_t) + m_head->len;
crc = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */
_debug_pkt_send(head->len + 4, 28);
return;
}
/* 设备状态获取报文处理. */
static void _debug_pkt_dev_state_get(void)
/* . */
static void _debug_pkt_fault_get(void)
{
static uint32_t base = 0;
uint32_t addr = 0;
proto_head_t *head = (proto_head_t*)debug_buf.buf;
dev_state_t *data = (dev_state_t*)(debug_buf.buf + sizeof(proto_head_t));
mul_head_t *m_head = (mul_head_t*)(debug_buf.buf + sizeof(proto_head_t));
uint8_t *data = (uint8_t*)(debug_buf.buf + sizeof(proto_head_t) + sizeof(mul_head_t));
int32_t data_len = 0;
uint32_t *crc = NULL;
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_state_t), DEBUG_CT_PRV_REPLY);
_debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY);
/* 初始化数据. */
if (0 == m_head->index)
{
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP))
{
base = dau_ctrl.addr_fault;
}
else
{
base = dau_ctrl.addr_fault - 0x20000;
if (base < WARE_FAULT_ADDRESS)
{
base = WARE_FAULT_ADDRESS_END - 0x20000;
}
}
}
/* 装填数据. */
data->is_adc_up = ADC_ctrl.up_finish;
data->adci_cnt = ADC_ctrl.ADCi_err_cnt;
data->adci_state = ADC_ctrl.ADCi_state;
data->adc_cnt = ADC_ctrl.ADC_err_cnt;
data->adc_state = ADC_ctrl.ADC_state;
data->is_adc_thr = ADC_ctrl.is_ADC_thr;
data->wave_time = st_data.wave_time;
data->wave_start = st_data.wave_start;
data->wave_up_start = st_data.wave_up_start;
data->wave_idx = st_data.wave_index;
data->wave_force = st_data.wave_force;
data->wl_state = wl_ctrl.state;
data->wl_cnt = wl_ctrl.send_cnt;
data->force_sleep_up = st_data.force_sleep_up;
data->is_bat_charge = HAL_GPIO_ReadPin(BAT_CHECK_GPIO_Port, BAT_CHECK_Pin);
data->sys_time = HAL_GetTick() / 1000;
/* 计算数据长度和报文长度. */
data_len = DAU_FAULT_BYTE_CNT - m_head->index * DEBUG_DATA_SIZE;
if (data_len < 0)
{
return;
}
else if (data_len > DEBUG_DATA_SIZE)
{
m_head->len = DEBUG_DATA_SIZE;
}
else
{
m_head->len = data_len;
}
/* 填充数据. */
if (m_head->len > 0)
{
addr = base + m_head->index * DEBUG_DATA_SIZE;
spi_flash_read(addr, data, DEBUG_DATA_SIZE);
}
/* 计算校验和. */
head->len = sizeof(proto_head_t) + sizeof(mul_head_t) + m_head->len;
crc = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */
_debug_pkt_send(head->len + 4, 20);
_debug_pkt_send(head->len + 4, 28);
return;
}
void _debug_pkt_adj_auto2(void)
{
debug_adj_power.bitmap = 0x60;
debug_adj_power.elec = 5;
debug_adj_power.turns = 35;
debug_adj_power.is_voltage_adj = 0;
debug_adj_power.vin = 4610;
/* 组装数据 */
_debug_adj_auto(debug_adj_power.bitmap);
if (debug_adj_power.is_voltage_adj)
{
ADC_vbat_auto(5000);
}
return;
}
/* 收包报文处理. */
static void _debug_pkt_process(void)
{
@ -1784,10 +1886,10 @@ static void _debug_pkt_process(void)
case DEBUG_PRV_WAVE_COL:
_debug_pkt_wave_col();
break;
case DEBUG_PRV_ADJ_DECFECT_ZERO:
case DEBUG_PRV_ADJ_DEFECT_ZERO:
_debug_pkt_adj_defect_zero();
break;
case DEBUG_PRV_ADJ_DECFECT:
case DEBUG_PRV_ADJ_DEFECT:
_debug_pkt_adj_defect();
break;
case DEBUG_PRV_LOG:
@ -1811,8 +1913,11 @@ static void _debug_pkt_process(void)
case DEBUG_PRV_ADJ_AUTO:
_debug_pkt_adj_auto();
break;
case DEBUG_PRV_DEV_STATE:
_debug_pkt_dev_state_get();
case DEBUG_PRV_DEFECT_GET:
_debug_pkt_defect_get();
break;
case DEBUG_PRV_FAULT_GET:
_debug_pkt_fault_get();
break;
default:
break;
@ -1956,12 +2061,96 @@ CRC_CHECK_ERROR:
return HAL_ERROR;
}
/* 显示命令 */
void debug_adj_auto(uint8_t bitmap)
void debug_pkt_adj_defect(void)
{
/* 开始自动校准. */
_debug_adj_auto(bitmap);
/* 关闭校准. */
_debug_adj_close();
uint32_t temp = 0;
uint8_t i = 0;
debug_adj_defect.bitmap = 7;
debug_adj_defect.defect_elec = 400;
dau_adj_state = DAU_ADJ_STATE_DEFECT_ZERO;
while(dau_adj_state != DAU_ADJ_STATE_NONE)
{
osDelay(1000);
common_watchdog_set(COM_WDG_CLI);
}
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{
if (!IS_MONITOR_BIT_SET(debug_adj_defect.bitmap, i))
{
continue;
}
dev_config.defect_base[i] = dau_ctrl.reg_port_state.DAVR[i];
vty_print("#ADJ %d %d\r\n", i, dev_config.defect_base[i]);
}
vty_print("UP power!!!\r\n");
osDelay(10000);
dau_adj_state = DAU_ADJ_STATE_DEFECT;
while(dau_adj_state != DAU_ADJ_STATE_NONE)
{
osDelay(1000);
common_watchdog_set(COM_WDG_CLI);
}
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{
if (!IS_MONITOR_BIT_SET(debug_adj_defect.bitmap, i))
{
continue;
}
temp = dau_ctrl.reg_port_state.DAVR[i] - dev_config.defect_base[i];
dev_config.defect_adj[i] = (uint16_t)(debug_adj_defect.defect_elec * 8192 * DEBUG_DEFECT_ADJ_P / temp);
vty_print("#ADJ %d %d %d %d\r\n", i, dau_ctrl.reg_port_state.DAVR[i], dev_config.defect_adj[i], temp);
}
return;
}
void debug_pkt_adj_fault(void)
{
uint32_t temp = 0;
uint8_t i = 0;
/* 解析数据. */
debug_adj_fault.bitmap = 2;
debug_adj_fault.fault_elec = 2000;
dau_adj_state = DAU_ADJ_STATE_FAULT_ZERO;
while(dau_adj_state != DAU_ADJ_STATE_NONE)
{
osDelay(1000);
common_watchdog_set(COM_WDG_CLI);
}
/* 等待打入电流 */
vty_print("UP power!!!\r\n");
osDelay(40000);
dau_adj_state = DAU_ADJ_STATE_FAULT;
while(dau_adj_state != DAU_ADJ_STATE_NONE)
{
osDelay(1000);
common_watchdog_set(COM_WDG_CLI);
}
for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
{
if (!IS_MONITOR_BIT_SET(debug_adj_fault.bitmap, i))
{
continue;
}
temp = abs_cal_u(dau_ctrl.reg_port_state.FMAX[i], dev_config.fault_base[i]);
dev_config.fault_adj[i] = (uint16_t)(debug_adj_fault.fault_elec * 16 * 32768 / temp);
vty_print("#ADJ %d %d %d %d\r\n", dau_ctrl.reg_port_state.FMAX[i], dev_config.fault_base[i], temp, dev_config.fault_adj[i]);
}
return;
}
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

@ -110,7 +110,6 @@ UART_HandleTypeDef *cli_uart = &huart1;
extern uint8_t yl_test;
/* Private function prototypes -----------------------------------------------*/
static BaseType_t _cli_adc_auto(const char *string);
static BaseType_t _cli_dbg_mode(const char *string);
static BaseType_t _cli_default(const char *string);
static BaseType_t _cli_host(const char *string);
@ -137,7 +136,6 @@ static const char *debug_str[DBG_M_COUNT] =
};
static const CLI_Command_Definition_t cmd_debug = {"debug", _cli_debug, 2};
#endif
static const CLI_Command_Definition_t cmd_adc_auto = {"adc-auto", _cli_adc_auto, 1};
static const CLI_Command_Definition_t cmd_dbg_mode = {"dbg-mode", _cli_dbg_mode, 1};
static const CLI_Command_Definition_t cmd_default = {"default", _cli_default, 1};
static const CLI_Command_Definition_t cmd_host = {"host", _cli_host, 1};
@ -256,38 +254,6 @@ static BaseType_t _cli_debug(const char *string)
}
#endif
/* 自动校准. */
static BaseType_t _cli_adc_auto(const char *string)
{
const char *param = NULL;
uint8_t param_len = 0;
uint32_t bitmap = 0;
param = FreeRTOS_CLIGetParameter(string, 1, (BaseType_t *)&param_len);
if (NULL == param)
{
vty_print(cli_param_erro);
return pdFALSE;
}
if (0 == strncmp(param, "h", param_len))
{
vty_print("adc-auto <bitmap>\r\n ADC auto adjust.\r\n");
return pdFALSE;
}
if (sscanf(param, "%x", &bitmap) <= 0)
{
vty_print(cli_param_erro);
return pdFALSE;
}
debug_adj_auto(bitmap);
vty_print(cli_rv_ok);
return pdFALSE;
}
/* 配置 debug 模式. */
static BaseType_t _cli_dbg_mode(const char *string)
{
@ -507,13 +473,17 @@ static BaseType_t _cli_show(const char *string)
if (0 == strncmp(param, "h", param_len))
{
vty_print("show <cmd> [param]:\r\n");
vty_print(" <cmd>: info | sen | ADC | ADCi | ADCv | ADCj | mode | wave | wl | position\r\n");
vty_print(" <cmd>: info | adc | adj | cfg | wl\r\n");
vty_print(" Show info.\r\n");
}
else if(0 == strncmp(param, "ADCi", param_len))
else if(0 == strncmp(param, "adc", param_len))
{
ADC_show();
}
else if(0 == strncmp(param, "adj", param_len))
{
dau_adj_show();
}
else if(0 == strncmp(param, "data", param_len))
{
fd_show(20);
@ -530,18 +500,19 @@ static BaseType_t _cli_show(const char *string)
{
flash_log_show(20);
}
else if(0 == strncmp(param, "mode", param_len))
else if(0 == strncmp(param, "cfg", param_len))
{
vty_print("Debug mode: %s\r\n", IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI) ? "CLI" : "PC");
vty_print("Work mode: %s\r\n", IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ) ? "ADJ" : "NORMAL");
vty_print("Work mode: %s\r\n", IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY) ? "FACTORY" : "NORMAL");
vty_print("Force sleep up: %d\r\n", st_data.force_sleep_up);
vty_print("BAT charge: %d\r\n", HAL_GPIO_ReadPin(BAT_CHECK_GPIO_Port, BAT_CHECK_Pin));
vty_print("BAT charge: %d\r\n", !HAL_GPIO_ReadPin(BAT_CHARGE_GPIO_Port, BAT_CHARGE_Pin));
vty_print("Collect interval: %dmin\r\n", dev_config.collect_interval);
vty_print("Fault interval: %ds\r\n", dev_config.fault_interval);
vty_print("Power threshold: %dA\r\n", dev_config.power_threshold);
vty_print("Defect threshold: %dmA\r\n", dev_config.defect_threshold);
vty_print("Fault threshold: %dA\r\n", dev_config.fault_threshold);
vty_print("Keepalive: %dmin\r\n", dev_config.keepalive);
vty_print("Fault time adj: %dns\r\n", dev_config.fault_time_adj * 10);
vty_print("Keepalive: %dmin\r\n\n", dev_config.keepalive);
}
else if(0 == strncmp(param, "state", param_len))
{
@ -640,10 +611,15 @@ static BaseType_t _cli_debug_msg(const char *string)
switch(param[0])
{
case 'm':
//_debug_pkt_adj_auto(); // 一个分段点 100A
case 'p':
_debug_pkt_adj_auto2();
break;
case 'd':
debug_pkt_adj_defect();
break;
case 'f':
debug_pkt_adj_fault();
break;
default:
vty_print(cli_param_erro);
return pdFALSE;
@ -816,7 +792,6 @@ static void _cli_start(void)
#if LD_DEBUG
FreeRTOS_CLIRegisterCommand(&cmd_debug, CLI_NODE_COMMON);
#endif
FreeRTOS_CLIRegisterCommand(&cmd_adc_auto, CLI_NODE_CONFIG);
FreeRTOS_CLIRegisterCommand(&cmd_dbg_mode, CLI_NODE_CONFIG);
FreeRTOS_CLIRegisterCommand(&cmd_default, CLI_NODE_CONFIG);
FreeRTOS_CLIRegisterCommand(&cmd_host, CLI_NODE_CONFIG);
@ -882,12 +857,12 @@ void cli_start(void const * argument)
/* 默认开启的 debug. */
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI))
{
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_GPS);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_4G);
dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_SEN);
dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_DEBUG);
dbg_cmd_hander(DBG_CMD_ON, DBG_M_4G);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_SEN);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_DEBUG);
}
/* 初始化 ADC 采样任务. */

@ -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;
*temp = dev_config.defect_base[port];
/* 零点值用的是16位的 */
*temp = dev_config.defect_base[port] << 4;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
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;
/* 触发阈值 */
//*temp = dev_config.fault_threshold * 32768 / dev_config.fault_adj[i];
*temp = 0x7fff;
*temp = dev_config.fault_threshold / 3 * 32768 * 16 / dev_config.fault_adj[0];
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;
}
@ -438,7 +442,7 @@ int32_t _dau_wave_col_start(void)
DBG(DBG_M_DAU, "DAU wave err\r\n", rv);
return HAL_TIMEOUT;
}
osDelay(500);
osDelay(1000);
E_RETURN(_dau_reg_read_global_state());
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++;
vty_print("#D start wait %d\r\n", i);
//vty_print("#D start wait %d\r\n", i);
}
return rv;
@ -462,14 +466,23 @@ int32_t _dau_wave_col_fault(void)
uint8_t i = 0;
uint8_t j = 0;
uint32_t addr = 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;
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 */
addr = dau_ctrl.addr_fault;
vty_print("#DF reg start addr %x\r\n", addr);
for(i = 0; i < 2; i++)
{
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++)
{
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);
@ -540,13 +557,14 @@ int32_t _dau_wave_col_defect(void)
for(i = 0; i < DAU_PORT_DEFECT_CNT; 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)
vty_print(" %d %d ", dau_ctrl.reg_defect_max[i], dau_ctrl.reg_port_state.DAVR[i]);
if (dau_ctrl.reg_defect_max[i] > dev_config.defect_threshold)
{
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))
{
@ -811,7 +829,8 @@ int32_t _dau_wave_col_trigger_by_fault(void)
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());
@ -833,8 +852,8 @@ int32_t _dau_wave_col_trigger_by_fault(void)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("FAULT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
//for(j = 0; j < 1; j++)
//for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
for(j = 0; j < 1; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_FAULT_BYTE_CNT;
@ -920,24 +939,35 @@ int32_t _dau_wave_col_trigger_by_reg(void)
_dau_data_save();
#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 cnt = 0;
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++)
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);
for(k = 0; k < 512; k++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if (buf[k] > 0)
{
cnt++;
}
if (j != 0 || k >= 128)
{
continue;
}
vty_print("%04d ", buf[k]);
if(0 == k % 32)
{
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("%d\r\n", cnt);
cnt = 0;
}
#endif
#if 0
@ -1044,14 +1075,12 @@ static void _dau_init(void)
_dau_reg_write_port(i);
}
/* 触发阈值 */
//*temp = dev_config.fault_threshold * 32768 / dev_config.fault_adj[i];
*temp = 0x7fff;
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
/* 故障触发配置 */
_dau_reg_write_cfg();
osDelay(500);
/* 开启 */
*temp = 1 ;
_dau_reg_write(0xf, sizeof(uint16_t));
*temp = 1;
_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];
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();
vty_print("DAU start...\r\n");
@ -1167,15 +1207,66 @@ int32_t _dau_adj_reg_write_port(uint32_t port)
return: HAL_xxx */
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 j = 0;
uint16_t k = 0;
uint32_t mean = 0;
int32_t rv = HAL_ERROR;
/* 比较缺陷波形是否超过阈值 */
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] = 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);
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];
}
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{
_dau_reg_write_port(i);
}
/* 重启 FPGA 触发故障采集 */
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);
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));
/* 开启 */
osDelay(500);
*temp = 1;
_dau_reg_write(0xf, sizeof(uint16_t));
_dau_reg_write(0x0209, sizeof(uint16_t));
dau_adj_state = DAU_ADJ_STATE_NONE;
}
@ -1279,10 +1371,10 @@ static void _dau_adj_start(void *argument)
/* 读取最大值. */
_dau_reg_read_port_state();
/* 关闭 */
/* 关闭触发 */
osDelay(500);
*temp = 0;
_dau_reg_write(0xf, sizeof(uint16_t));
_dau_reg_write(0x0209, sizeof(uint16_t));
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: 故障触发波形采集
param:
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));
_dau_power_calculate(DAU_SOURCE_FAULT);
@ -1320,6 +1446,7 @@ int32_t _dau_continue_wave_col_trigger_by_fault(void)
return: */
static void _dau_continue_start(void *argument)
{
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
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);
_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)
{
char *pkt = (char*)dau_ctrl.buf_gps;
uint8_t GB_cnt = 0;
uint8_t n = 0;
uint16_t i = 0;
uint32_t hour = 0;
@ -1398,6 +1543,14 @@ static int32_t _dau_gps_process(void)
i++;
continue;
}
/* 查找对时字符串 "$GNZDA" */
if (0 == strncmp(&pkt[i], "$GBGSV", 6))
{
i++;
GB_cnt++;
continue;
}
/* 查找对时字符串 "$GNZDA" */
if (strncmp(&pkt[i], "$GNZDA", 6) != 0)
@ -1428,6 +1581,7 @@ static int32_t _dau_gps_process(void)
dau_ctrl.utc = mktime(&_dau_tm);
rtc_time_set(dau_ctrl.utc);
dau_ctrl.GB_cnt = GB_cnt;
return HAL_OK;
}
@ -1456,6 +1610,17 @@ static void _dau_gps_start(void *argument)
uint32_t notify_value = 0xff;
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();
@ -1548,7 +1713,7 @@ void dau_show(void)
struct tm *day = NULL;
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)
{
utc += 28800;
@ -1558,6 +1723,46 @@ void dau_show(void)
}
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 ****************/

@ -154,14 +154,14 @@ static HAL_StatusTypeDef _dev_config_default_set(void)
for(i = 0; i < DAU_PORT_DEFECT_MAX; i++)
{
dev_config.defect_base[i] = 34297;
dev_config.defect_adj[i] = 32768;
dev_config.defect_base[i] = 2144;
dev_config.defect_adj[i] = 8192;
}
for(i = 0; i < DAU_PORT_FAULT_MAX; i++)
{
dev_config.fault_base[i] = 34530;
dev_config.fault_adj[i] = 32768;
dev_config.fault_base[i] = 29800;
dev_config.fault_adj[i] = 30000;
}
dev_config.vin_adj = DEV_VIN_ADJ_DEFAULT;
@ -173,6 +173,8 @@ static HAL_StatusTypeDef _dev_config_default_set(void)
dev_config.fault_threshold = 2000;
dev_config.defect_threshold = 1000;
snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT");
dev_config.fault_interval = 300;
dev_config.fault_time_adj = 0;
dev_config.magic_bak = INIT_DONE_MAGIC;
@ -597,6 +599,7 @@ void dev_config_defaults_set(void)
dev_config.fault_threshold = 2000;
dev_config.defect_threshold = 1000;
snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT");
dev_config.fault_interval = 300;
_dev_config_save(CONFIG_ADDRESS);
_dev_config_save(CONFIG_ADDRESS_BAK);
@ -745,16 +748,9 @@ void dev_info_print(void)
vty_print("Copyright(c) 2019 WTOE. All rights reserved.\r\n");
vty_print("Boot version %s, compile time is %s.\r\n", dev_info.boot_version, dev_info.boot_compile_time);
vty_print("Img version %s, compile time is %s.\r\n\n", dev_info.img_version, dev_info.img_compile_time);
vty_print("Device type %d:%d.\r\n", dev_info.type_m, dev_info.type_s);
vty_print("Id: %02x%02x%02x%02x\r\n", dev_info.id[3], dev_info.id[2], dev_info.id[1], dev_info.id[0]);
vty_print("Mac: %02x:%02x:%02x:%02x:%02x:%02x\r\n", dev_info.mac[0], dev_info.mac[1], dev_info.mac[2], dev_info.mac[3], dev_info.mac[4], dev_info.mac[5]);
vty_print("Ip: %d.%d.%d.%d\r\n", dev_info.ip[0], dev_info.ip[1], dev_info.ip[2], dev_info.ip[3]);
vty_print("Mask: %d.%d.%d.%d\r\n", dev_info.ip_mask[0], dev_info.ip_mask[1], dev_info.ip_mask[2], dev_info.ip_mask[3]);
vty_print("Gw: %d.%d.%d.%d\r\n", dev_info.ip_gw[0], dev_info.ip_gw[1], dev_info.ip_gw[2], dev_info.ip_gw[3]);
vty_print("Server: %d.%d.%d.%d\r\n", dev_info.server_ip[0], dev_info.server_ip[1], dev_info.server_ip[2], dev_info.server_ip[3]);
vty_print("Wireless server: %d.%d.%d.%d\r\n", dev_info.wireless_server_ip[0], dev_info.wireless_server_ip[1], dev_info.wireless_server_ip[2], dev_info.wireless_server_ip[3]);
vty_print("\r\nFireware size: %d | Spi fireware size: %d\r\n", dev_info.fireware_size, dev_info.spi_fireware_size);
vty_print("Server: %d.%d.%d.%d:%d\r\n", dev_info.server_ip[0], dev_info.server_ip[1], dev_info.server_ip[2], dev_info.server_ip[3], dev_info.server_port);
vty_print("\r\nFireware size: %d | Spi fireware size: %d\r\n\n", dev_info.fireware_size, dev_info.spi_fireware_size);
}
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

@ -53,15 +53,11 @@
#include "dau.h"
/* Private define ------------------------------------------------------------*/
#define WL_RX_TIMEOUT 500 // 每 500ms 检查一次收包数据.
#define WL_USART_ERR_TIMEOUT 1000 // 串口发送错误延迟时间.
#define WL_SOFT_INIT_ERR 5 // 软件初始化错误最大次数.
#define WL_DATA_ERR 3 // 数据发送错误最大次数.
#define WL_PWR_FRE_CH_NUM 4 // 工频录波通道数.
#define WL_FLASH_BUF_SIZE 1024
#define WIR_RX_TIMEOUT 10000 // 有线模式每 10s 检查一次收包数据.
#define WL_RX_TIMEOUT 500 // 每 500ms 检查一次收包数据
#define WL_USART_ERR_TIMEOUT 1000 // 串口发送错误延迟时间
#define WL_SOFT_INIT_ERR 5 // 软件初始化错误最大次数
#define WL_DATA_ERR 3 // 数据发送错误最大次数
#define WL_SLEEP_TIME 120 // 休眠时间
/* Private typedef -----------------------------------------------------------*/
/* 状态机状态. */
@ -89,6 +85,7 @@ typedef enum
WL_STATE_UPDATE_RT,
WL_STATE_UPDATE_FPGA_RT,
WL_STATE_KEEPALIVE,
WL_STATE_SLEEP,
WL_STATE_END = 255
} WL_STATE_E;
@ -134,7 +131,8 @@ typedef struct
uint16_t elec_defect_max[DAU_PORT_FAULT_MAX]; // 缺陷电流最大值 mA
uint8_t valid_power; // 工频波形有效
uint8_t valid_defect; // 缺陷波形有效
uint8_t reserve[2]; // 保留位
uint8_t energy_mode; // 节能模式
uint8_t GB_cnt; // 北斗数量
} wl_proto_realdata_t;
/* 实时数据传输结构体. */
@ -144,6 +142,8 @@ typedef struct
uint32_t ns; // 故障时间纳秒
uint16_t fault_trig[DAU_PORT_FAULT_MAX];// 故障电流触发值 A
uint32_t elec[DAU_PORT_POWER_CNT]; // 工频电流有效值 mA
uint8_t port; // 触发端口
uint8_t reserve[3]; // 保留位
} wl_proto_realdata_fault_t;
typedef struct
@ -153,9 +153,18 @@ typedef struct
uint16_t threshold_defect;
uint16_t threshold_fault;
uint16_t keepalive;
uint8_t reserve[2];
uint16_t interval_fault;
} wl_proto_config_t;
typedef struct
{
uint8_t server_ip[4];
uint16_t server_port;
uint8_t reserve[2];
char host[DEV_NAME_LEN];
char APN[DEV_APN_LEN];
} wl_proto_dev_t;
typedef struct
{
uint8_t is_utc_valid; // gps 对时是否有效
@ -178,6 +187,7 @@ static RTC_TimeTypeDef wl_time;
static struct tm wl_tm;
/* Private function prototypes -----------------------------------------------*/
static void _wl_4G_send_dev_set(void);
static void _wl_4G_send_reset(void);
static void _wl_4G_send_update(void);
static void _wl_4G_send_cfg_set(void);
@ -457,7 +467,13 @@ static void _wl_4G_recv_contect(uint8_t *cmd, uint32_t len)
is_cfg_save = TRUE;
dev_config.keepalive = cfg->keepalive;
}
if (cfg->interval_fault != dev_config.fault_interval)
{
is_cfg_save = TRUE;
dev_config.fault_interval = cfg->interval_fault;
}
if (is_cfg_save)
{
common_sys_set(COM_SYS_SAVE_CONFIG, 0);
@ -470,6 +486,24 @@ static void _wl_4G_recv_contect(uint8_t *cmd, uint32_t len)
_wl_4G_pkt_id_update();
}
/* 设备信息 */
static void _wl_4G_recv_dev_set(uint8_t *cmd, uint32_t len)
{
proto_head_t *head = (proto_head_t*)cmd;
wl_proto_dev_t *cfg = (wl_proto_dev_t*)(cmd + sizeof(proto_head_t));
memcpy(dev_info.server_ip, cfg->server_ip, 4);
dev_info.server_port = cfg->server_port;
memcpy(dev_config.host, cfg->host, DEV_NAME_LEN);
memcpy(dev_config.APN, cfg->APN, DEV_APN_LEN);
common_sys_set(COM_SYS_SAVE_CONFIG, 0);
common_sys_set(COM_SYS_SAVE_INFO, 0);
wl_ctrl.pkt_id_recv = head->pkt_id;
_wl_4G_send_dev_set();
}
/* 设备重启 */
static void _wl_4G_recv_reset(uint8_t *cmd, uint32_t len)
{
@ -594,6 +628,12 @@ static void _wl_4G_recv_cfg_set(uint8_t *cmd, uint32_t len)
dev_config.keepalive = cfg->keepalive;
}
if (cfg->interval_fault != dev_config.fault_interval)
{
is_cfg_save = TRUE;
dev_config.fault_interval = cfg->interval_fault;
}
if (is_cfg_save)
{
MONITOR_BITMAP_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
@ -666,7 +706,7 @@ static void _wl_4G_recv_realdata(void)
else
{
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
wl_ctrl.state = WL_STATE_END;
wl_ctrl.state = WL_STATE_SLEEP;
}
wl_ctrl.time_send = 0;
wl_ctrl.send_cnt = 0;
@ -689,7 +729,7 @@ static void _wl_4G_recv_power(uint8_t *cmd, uint32_t len)
else
{
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
wl_ctrl.state = WL_STATE_END;
wl_ctrl.state = WL_STATE_SLEEP;
}
wl_ctrl.mul_idx = 0;
@ -721,7 +761,7 @@ static void _wl_4G_recv_defect(uint8_t *cmd, uint32_t len)
st_data.addr_reg = dau_ctrl.addr_reg;
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
wl_ctrl.state = WL_STATE_END;
wl_ctrl.state = WL_STATE_SLEEP;
wl_ctrl.mul_idx = 0;
}
else
@ -882,6 +922,22 @@ static void _wl_4G_recv_update_fpga_rt(void)
return;
}
/* 设备休眠通知报文回复. */
static void _wl_4G_recv_sleep(void)
{
uint32_t sleep_time = WL_SLEEP_TIME;
wl_ctrl.state = WL_STATE_END;
wl_ctrl.time_send = 0;
wl_ctrl.send_cnt = 0;
flash_log_write(FLASH_LOG_TYPE_WARNING, "Energy mode system sleep %ds!\r\n", sleep_time);
common_sys_set(COM_SYS_SHUTDOWN, (void*)&sleep_time);
_wl_4G_pkt_id_update();
return;
}
/* 数据回复处理. */
static void _wl_4G_data_process(uint8_t *cmd, uint32_t len)
{
@ -932,6 +988,9 @@ static void _wl_4G_data_process(uint8_t *cmd, uint32_t len)
case DEBUG_C_CONTACT:
_wl_4G_recv_contect(cmd, len);
break;
case DEBUG_C_DEV_INFO_SET:
_wl_4G_recv_dev_set(cmd, len);
break;
case DEBUG_C_RESET:
_wl_4G_recv_reset(cmd, len);
break;
@ -986,6 +1045,9 @@ static void _wl_4G_data_process(uint8_t *cmd, uint32_t len)
case DEBUG_PRV_UPDATE_RT:
_wl_4G_recv_update_fpga_rt();
break;
case DEBUG_PRV_SLEEP:
_wl_4G_recv_sleep();
break;
default:
break;
}
@ -1158,6 +1220,24 @@ static void _wl_4G_send_contact(void)
}
}
/* 设备信息设置回复报文发送 */
static void _wl_4G_send_dev_set(void)
{
proto_head_t *head = (proto_head_t*)wl_ctrl.dma_tx_buf_recv;
uint32_t *crc = NULL;
/* 封装报文头. */
_wl_4G_head_init_recv(sizeof(proto_head_t), DEBUG_CT_REPLY, DEBUG_C_DEV_INFO_SET, wl_ctrl.pkt_id_recv);
/* 计算校验和. */
crc = (uint32_t*)(wl_ctrl.dma_tx_buf_recv + head->len);
*crc = crc32(wl_ctrl.dma_tx_buf_recv, head->len);
/* 发送报文 */
_wl_4G_transmit(wl_ctrl.dma_tx_buf_recv, head->len + 4);
}
/* 重启报文发送 */
static void _wl_4G_send_reset(void)
{
@ -1274,6 +1354,35 @@ static void _wl_4G_send_keepalive(void)
}
}
/* 保活报文发送. */
static void _wl_4G_send_sleep(void)
{
proto_head_t *head = (proto_head_t*)wl_ctrl.dma_tx_buf;
uint32_t *data = (uint32_t*)(wl_ctrl.dma_tx_buf + sizeof(proto_head_t));
uint32_t *crc = NULL;
/* 封装报文头. */
_wl_4G_head_init(sizeof(proto_head_t) + sizeof(uint32_t), DEBUG_CT_PRV_REPLY, DEBUG_PRV_SLEEP, wl_ctrl.pkt_id);
*data = WL_SLEEP_TIME;
/* 计算校验和. */
crc = (uint32_t*)(wl_ctrl.dma_tx_buf + head->len);
*crc = crc32(wl_ctrl.dma_tx_buf, head->len);
/* 发送报文. */
if (HAL_OK == _wl_4G_transmit(wl_ctrl.dma_tx_buf, head->len + 4))
{
/* 发送成功, 如果指定时间内没有收到回复, 则根据 timeout 时间重发. */
wl_ctrl.time_send = HAL_GetTick() + 5500;
}
else
{
/* 发送失败, 等待 1s 重发. */
wl_ctrl.time_send = HAL_GetTick() + 1100;
}
}
/* 对时报文回复 */
static void _wl_4G_send_time(void)
{
@ -1306,6 +1415,7 @@ static void _wl_4G_send_realdata(void)
/* 装填数据. */
data->vbat = ADC_ctrl.ADCi_vbat;
data->vin = ADC_ctrl.ADCi_vin;
data->energy_mode = ADC_ctrl.energy_mode;
data->temperature = ADC_ctrl.ADCi_temp;
data->CSQ = wl_ctrl.CSQ;
@ -1332,6 +1442,7 @@ static void _wl_4G_send_realdata(void)
data->valid_power = IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_POWER);
data->valid_defect = IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
data->GB_cnt = dau_ctrl.GB_cnt;
/* 计算校验和. */
crc = (uint32_t*)(wl_ctrl.dma_tx_buf + head->len);
@ -1483,6 +1594,7 @@ static void _wl_4G_send_realdata_fault(void)
{
data->elec[i] = dau_ctrl.fault_elec[i];
}
data->port = dau_ctrl.fault_port;
/* 计算校验和. */
crc = (uint32_t*)(wl_ctrl.dma_tx_buf + head->len);
@ -1746,6 +1858,21 @@ void _wl_4G_send(void)
wl_ctrl.send_cnt++;
break;
}
else if (WL_STATE_SLEEP == wl_ctrl.state)
{
if (ADC_ENERGY_SLEEP == ADC_ctrl.energy_mode)
{
_wl_4G_send_sleep();
wl_ctrl.send_cnt++;
}
else
{
wl_ctrl.state = WL_STATE_END;
wl_ctrl.time_send = 0;
wl_ctrl.send_cnt = 0;
}
break;
}
else
{
break;
@ -1865,11 +1992,11 @@ void _wl_4G_init_soft(void)
else if ((WL_STATE_AT_QIOPEN == wl_ctrl.state) && is_timeout)
{
/* 连接远程服务器. */
//snprintf((char*)wl_ctrl.dma_tx_buf, WL_DMA_TX_BUF_LEN, "AT+QIOPEN=1,0,\"TCP\",\"%d.%d.%d.%d\",%d,19421,2\r\n",
// dev_info.wireless_server_ip[0], dev_info.wireless_server_ip[1], dev_info.wireless_server_ip[2],
// dev_info.wireless_server_ip[3], dev_info.wireless_server_port);
_wl_4G_init_cmd_send("AT+QIOPEN=1,0,\"TCP\",\"111.47.21.142\",8809,19421,2\r\n", 10000);
//_wl_4G_init_cmd_send(wl_ctrl.dma_tx_buf, 11000);
snprintf((char*)wl_ctrl.dma_tx_buf, WL_DMA_TX_BUF_LEN, "AT+QIOPEN=1,0,\"TCP\",\"%d.%d.%d.%d\",%d,19421,2\r\n",
dev_info.server_ip[0], dev_info.server_ip[1], dev_info.server_ip[2],
dev_info.server_ip[3], dev_info.server_port);
//_wl_4G_init_cmd_send("AT+QIOPEN=1,0,\"TCP\",\"111.47.21.142\",8809,19421,2\r\n", 10000);
_wl_4G_init_cmd_send(wl_ctrl.dma_tx_buf, 11000);
wl_ctrl.send_cnt++;
}
else if (WL_STATE_AT_COMP == wl_ctrl.state)
@ -1902,6 +2029,26 @@ static void _wl_4G_hw_init(void)
HAL_GPIO_WritePin(G4G_RST_GPIO_Port, G4G_RST_Pin, GPIO_PIN_RESET);
}
/* 关闭 4G 模块硬件. */
static void _wl_4G_hw_close(uint32_t sleep_time)
{
HAL_GPIO_WritePin(POWER_4G_GPIO_Port, POWER_4G_Pin, GPIO_PIN_RESET);
if (ADC_ctrl.energy_mode != ADC_ENERGY_NORMAL
&& sleep_time < WL_SLEEP_TIME)
{
sleep_time = WL_SLEEP_TIME;
}
flash_log_write(FLASH_LOG_TYPE_WARNING, "Server is disconnect system sleep %ds!\r\n", sleep_time);
common_sys_set(COM_SYS_SHUTDOWN, (void*)&sleep_time);
while(1)
{
osDelay(portMAX_DELAY);
}
}
/* 重启 4G 模块硬件 */
static void _wl_4G_hw_restart(void)
{
@ -1912,10 +2059,10 @@ static void _wl_4G_hw_restart(void)
HAL_UART_Abort(wl_ctrl.uart);
HAL_UART_DeInit(wl_ctrl.uart);
if (wl_ctrl.err_cnt > 3)
{
osDelay(600000);
}
//if (wl_ctrl.err_cnt > 3)
//{
// _wl_4G_hw_close(dev_config.collect_interval * 60);
//}
/* 初始化软硬件 */
osDelay(10000);
@ -1972,7 +2119,7 @@ static void _wl_4G_start(void *argument)
{
break;
}
osDelay(1000);
osDelay(200);
}
/* 初始化 4G 模块硬件 */
@ -2002,7 +2149,7 @@ static void _wl_4G_start(void *argument)
else
{
if (WL_STATE_UPDATE == wl_ctrl.state
&& wl_ctrl.time_update + 10000 < HAL_GetTick())
&& HAL_GetTick() > wl_ctrl.time_update + 10000)
{
/* 升级超时处理 10s */
wl_ctrl.mul_idx = 0;
@ -2048,6 +2195,8 @@ void wl_init(void)
return: */
void wl_show(void)
{
vty_print("ST: %-03d %d\r\n\n", wl_ctrl.state, wl_ctrl.send_cnt);
vty_print("STA: %d\r\nErr: %d\r\n", wl_ctrl.state, wl_ctrl.send_cnt);
vty_print("CSQ: %d\r\n", wl_ctrl.CSQ);
vty_print("QID: %s\r\n\n", wl_ctrl.QCCID);
}
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

File diff suppressed because it is too large Load Diff

@ -21,7 +21,7 @@
<Checksum>1051652893</Checksum>
</DebugChecksum>
<RecentFlashDownload>
<Path>D:\Work\CablePositioning\Code\CablePositioningV1.0\CablePositioning_IAP_V1.0\EWARM\CableMonitor_V3.2\Exe\CableMonitor_V3.2.out</Path>
<Path>D:\Work\CablePositioning\reless\V1.4\FP_IAP_V1.4.out</Path>
</RecentFlashDownload>
<JLinkDriver>
<CStepIntDis>_ 0</CStepIntDis>
@ -130,12 +130,6 @@
<ShowTimeSum>1</ShowTimeSum>
<SumSortOrder>0</SumSortOrder>
</EventLog>
<DisassembleMode>
<mode>0</mode>
</DisassembleMode>
<Breakpoints2>
<Count>0</Count>
</Breakpoints2>
<TermIOLog>
<LoggingEnabled>_ 0</LoggingEnabled>
<LogFile>_ ""</LogFile>
@ -145,13 +139,20 @@
<LogFile>_ ""</LogFile>
<Category>_ 0</Category>
</LogFile>
<Aliases>
<Count>0</Count>
<SuppressDialog>0</SuppressDialog>
</Aliases>
<PowerProbe>
<Frequency>10000</Frequency>
<Probe0>I0</Probe0>
<ProbeSetup0>2 1 1 2 0 0</ProbeSetup0>
</PowerProbe>
<DisassembleMode>
<mode>0</mode>
</DisassembleMode>
<Breakpoints2>
<Bp0>_ 1 "EMUL_CODE" "{$PROJ_DIR$\..\Core\Src\RS485_debug.c}.1.1" 0 0 1 "" 0 "" 0</Bp0>
<Count>1</Count>
</Breakpoints2>
<Aliases>
<Count>0</Count>
<SuppressDialog>0</SuppressDialog>
</Aliases>
</settings>

@ -11,7 +11,7 @@
<ColumnWidth0>19</ColumnWidth0>
<ColumnWidth1>1868</ColumnWidth1>
<FilterLevel>2</FilterLevel>
<LiveFile></LiveFile>
<LiveFile />
<LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34048>
@ -86,16 +86,16 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>7E0B00000E00598400000200000040E1000002000000108600001000000056840000020000005F860000070000000F810000010000000C8100002D0B000055840000030000000E810000080000000B810000110000000584000003000000468100000100000010840000200000000D81000007000000</CommandsUsage>
<CommandsUsage>580C00000E00598400000200000040E1000002000000108600001000000056840000030000005F860000080000000F810000010000000C810000FE0B000055840000030000000E810000080000000B810000150000000584000003000000468100000100000010840000230000000D81000007000000</CommandsUsage>
</MFCToolBarParameters>
<CommandManager>
<CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages>
<MenuUserImages>3700048400004C000000268100002D000000048100001C0000002CE100004300000015810000250000003184000053000000239200000000000007E100003B0000000F81000023000000208100002B0000005F8600003400000004E10000390000000C8100002000000023E100003D0000000D8000001700000001E10000360000001982000015000000068400004E0000004A810000470000001682000013000000038400004B00000017810000270000002BE100004200000000840000480000001481000024000000449200001000000030840000520000000E8400005000000000810000190000000E810000220000001F8100002A00000025E100003F0000002F820000160000001F9200000D00000003E10000380000000B8100001F00000022E100003C0000002D9200000F00000000E1000035000000D18400000C0000001882000014000000058400004D00000041E1000045000000058100001D0000004981000046000000028400004A000000168100002600000032840000540000001084000051000000518400005600000005E100003A0000000D810000210000000A8400004F00000002E10000370000002C9200000E000000</MenuUserImages>
<MenuUserImages>3700048400004C000000268100002D000000048100001C0000002CE10000430000001581000025000000239200000000000007E100003B00000031840000530000000F81000023000000208100002B0000005F8600003400000004E10000390000000C8100002000000023E100003D0000000D8000001700000001E10000360000001982000015000000068400004E0000004A8100004700000016820000130000001781000027000000038400004B0000002BE1000042000000008400004800000014810000240000004492000010000000008100001900000030840000520000000E840000500000000E810000220000001F8100002A00000025E100003F0000002F820000160000001F9200000D00000003E10000380000000B8100001F00000022E100003C0000002D9200000F00000000E1000035000000D18400000C000000188200001400000041E1000045000000058400004D000000058100001D00000049810000460000001681000026000000028400004A00000032840000540000001084000051000000518400005600000005E100003A0000000D8100002100000002E10000370000000A8400004F0000002C9200000E000000</MenuUserImages>
</CommandManager>
<Pane-59393>
<ID>0</ID>
<RectRecentFloat>0A0000000A0000006E0000006E000000</RectRecentFloat>
<RectRecentDocked>00000000DE03000080070000F1030000</RectRecentDocked>
<RectRecentDocked>00000000060300000006000019030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -122,7 +122,7 @@
<Pane--1>
<ID>4294967295</ID>
<RectRecentFloat>00000000D002000080070000F5030000</RectRecentFloat>
<RectRecentDocked>00000000B902000080070000DE030000</RectRecentDocked>
<RectRecentDocked>00000000E10100000006000006030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -135,7 +135,7 @@
<Pane-34052>
<ID>34052</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RectRecentDocked>04000000F9010000FC050000EC020000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -158,7 +158,7 @@
<Pane-34048>
<ID>34048</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RectRecentDocked>04000000F9010000FC050000EC020000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -171,7 +171,7 @@
<Pane-34056>
<ID>34056</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -186,14 +186,14 @@
<ColumnWidth1>95</ColumnWidth1>
<ColumnWidth2>1142</ColumnWidth2>
<FilterLevel>2</FilterLevel>
<LiveFile></LiveFile>
<LiveFile />
<LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34056>
<Pane-34057>
<ID>34057</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -208,14 +208,14 @@
<ColumnWidth1>95</ColumnWidth1>
<ColumnWidth2>1142</ColumnWidth2>
<FilterLevel>2</FilterLevel>
<LiveFile></LiveFile>
<LiveFile />
<LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34057>
<Pane-34058>
<ID>34058</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -231,14 +231,14 @@
<ColumnWidth2>856</ColumnWidth2>
<ColumnWidth3>380</ColumnWidth3>
<FilterLevel>2</FilterLevel>
<LiveFile></LiveFile>
<LiveFile />
<LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34058>
<Pane-34059>
<ID>34059</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -253,14 +253,14 @@
<ColumnWidth1>95</ColumnWidth1>
<ColumnWidth2>1142</ColumnWidth2>
<FilterLevel>2</FilterLevel>
<LiveFile></LiveFile>
<LiveFile />
<LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34059>
<Pane-34062>
<ID>34062</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -272,7 +272,7 @@
</BasePane-34062>
<IarPane-34062>
<FilterLevel>2</FilterLevel>
<LiveFile></LiveFile>
<LiveFile />
<LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34062>
@ -349,7 +349,7 @@
<Pane-34063>
<ID>34063</ID>
<RectRecentFloat>00000000170000000601000078010000</RectRecentFloat>
<RectRecentDocked>0000000032000000A8010000B5020000</RectRecentDocked>
<RectRecentDocked>0000000032000000A8010000DD010000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating>
@ -360,7 +360,7 @@
<IsVisible>1</IsVisible>
</BasePane-34063>
<DockingManager-256>
<DockingPaneAndPaneDividers>0000000010000000000000000010000001000000FFFFFFFFFFFFFFFFA801000032000000AC010000B5020000010000000200001004000000010000002CFFFFFF0C0600000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF00000000B502000080070000B90200000100000001000010040000000100000009FEFFFF72010000FFFFFFFF0700000008850000098500000A8500000B8500000E8500000485000000850000FFFF02000B004354616262656450616E65008000000100000000000000D002000080070000F503000000000000B902000080070000DE030000000000004080005607000000FFFEFF0C4400650063006C00610072006100740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400010000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000085000001000000FFFFFFFFFFFFFFFF05000000000000000000000000000000000000000000000001000000FFFFFFFF0885000001000000FFFFFFFF08850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000000000000000000</DockingPaneAndPaneDividers>
<DockingPaneAndPaneDividers>0000000010000000000000000010000001000000FFFFFFFFFFFFFFFFA801000032000000AC010000DD010000010000000200001004000000010000002CFFFFFF0C0600000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF00000000DD01000000060000E10100000100000001000010040000000100000009FEFFFF72010000FFFFFFFF0700000008850000098500000A8500000B8500000E8500000485000000850000FFFF02000B004354616262656450616E65008000000100000000000000D002000080070000F503000000000000E10100000006000006030000000000004080005607000000FFFEFF0C4400650063006C00610072006100740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400010000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000085000001000000FFFFFFFFFFFFFFFF05000000000000000000000000000000000000000000000001000000FFFFFFFF0885000001000000FFFFFFFF08850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000000000000000000</DockingPaneAndPaneDividers>
</DockingManager-256>
<MFCToolBar-34049>
<Name>CMSIS-Pack</Name>
@ -381,7 +381,7 @@
</BasePane-34049>
<MFCToolBar-34050>
<Name>Main</Name>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000031000000FFFEFF000000000000000000000000000100000001000000018001E100000000000032000000FFFEFF000000000000000000000000000100000001000000018003E100000000000034000000FFFEFF0000000000000000000000000001000000010000000180008100000000000015000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000000037000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000000039000000FFFEFF000000000000000000000000000100000001000000018022E100000000000038000000FFFEFF000000000000000000000000000100000001000000018025E10000000000003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE10000000004003E000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF00960000000000000000000180218100000000040028000000FFFEFF000000000000000000000000000100000001000000018024E10000000000003A000000FFFEFF000000000000000000000000000100000001000000018028E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018029E10000000000003D000000FFFEFF0000000000000000000000000001000000010000000180028100000000000017000000FFFEFF000000000000000000000000000100000001000000018029810000000000002C000000FFFEFF000000000000000000000000000100000001000000018027810000000000002A000000FFFEFF000000000000000000000000000100000001000000018028810000000000002B000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040024000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040025000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000000001B000000FFFEFF00000000000000000000000000010000000100000001800D810000000002001D000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000030000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E810000000000001E000000FFFEFF00000000000000000000000000010000000100000001800F810000000000001F000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000035000000FFFEFF000000000000000000000000000100000001000000018001E100000000000036000000FFFEFF000000000000000000000000000100000001000000018003E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180008100000000000019000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018022E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018025E10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040042000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040043000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002C000000FFFEFF000000000000000000000000000100000001000000018024E10000000004003E000000FFFEFF000000000000000000000000000100000001000000018028E100000000040040000000FFFEFF000000000000000000000000000100000001000000018029E100000000040041000000FFFEFF000000000000000000000000000100000001000000018002810000000004001B000000FFFEFF0000000000000000000000000001000000010000000180298100000000040030000000FFFEFF000000000000000000000000000100000001000000018027810000000004002E000000FFFEFF000000000000000000000000000100000001000000018028810000000004002F000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040028000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040029000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000004001F000000FFFEFF00000000000000000000000000010000000100000001800D8100000000020021000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000034000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000000022000000FFFEFF00000000000000000000000000010000000100000001800F8100000000000023000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
</MFCToolBar-34050>
<Pane-34050>
<ID>34050</ID>
@ -419,7 +419,7 @@
</ChildIdMap>
<MDIWindows>
<MDIClientArea-0>
<MDITabsState>010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000001000000010000000000000001000000FFFEFF202400570053005F0044004900520024005C002E002E005C0043006F00720065005C005300720063005C0066006C006100730068005F006C006F0067002E00630001000000FFFF010014004966436F6E74656E7453746F72616765496D706CFFFEFF00FFFEFFFF28013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E003200340032003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0037003500300039003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0037003500330039003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0B66006C006100730068005F006C006F0067002E00630000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000100000002000000AC0100004900000080070000CC020000</MDITabsState>
<MDITabsState>010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000001000000020000000100000001000000FFFEFF202400570053005F0044004900520024005C002E002E005C0043006F00720065005C005300720063005C0066006C006100730068005F006C006F0067002E00630001000000FFFF010014004966436F6E74656E7453746F72616765496D706CFFFEFF00FFFEFFFF22013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E003200360036003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0B66006C006100730068005F006C006F0067002E00630000000000FFFFFFFFFFFFFFFFFFFEFF222400570053005F0044004900520024005C002E002E005C0043006F00720065005C005300720063005C00520053003400380035005F00640065006200750067002E006300010000000180FFFEFF00FFFEFFFF2B013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0031003900330031003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E00350038003800320030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E00350038003800320030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0D520053003400380035005F00640065006200750067002E00630000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000100000002000000AC0100004900000000060000F4010000</MDITabsState>
</MDIClientArea-0>
</MDIWindows>
</WindowStorage>

File diff suppressed because one or more lines are too long

@ -11,26 +11,27 @@ Mcu.IP0=NVIC
Mcu.IP1=RCC
Mcu.IP2=SPI3
Mcu.IP3=SYS
Mcu.IP4=UART4
Mcu.IP4=USART1
Mcu.IPNb=5
Mcu.Name=STM32L496Z(E-G)Tx
Mcu.Package=LQFP144
Mcu.Pin0=PC14-OSC32_IN (PC14)
Mcu.Pin1=PF0
Mcu.Pin10=PC11
Mcu.Pin11=PC12
Mcu.Pin12=PG13
Mcu.Pin13=PG14
Mcu.Pin14=VP_SYS_VS_Systick
Mcu.Pin2=PH0-OSC_IN (PH0)
Mcu.Pin3=PH1-OSC_OUT (PH1)
Mcu.Pin4=PA0
Mcu.Pin5=PA1
Mcu.Pin6=PG4
Mcu.Pin7=PA13 (JTMS/SWDIO)
Mcu.Pin8=PA14 (JTCK/SWCLK)
Mcu.Pin9=PC10
Mcu.PinsNb=15
Mcu.Pin0=PE3
Mcu.Pin1=PC14-OSC32_IN (PC14)
Mcu.Pin10=PC10
Mcu.Pin11=PC11
Mcu.Pin12=PC12
Mcu.Pin13=PG13
Mcu.Pin14=PG14
Mcu.Pin15=VP_SYS_VS_Systick
Mcu.Pin2=PF0
Mcu.Pin3=PH0-OSC_IN (PH0)
Mcu.Pin4=PH1-OSC_OUT (PH1)
Mcu.Pin5=PG4
Mcu.Pin6=PA9
Mcu.Pin7=PA10
Mcu.Pin8=PA13 (JTMS/SWDIO)
Mcu.Pin9=PA14 (JTCK/SWCLK)
Mcu.PinsNb=16
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32L496ZGTx
@ -47,16 +48,14 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA0.Locked=true
PA0.Mode=Asynchronous
PA0.Signal=UART4_TX
PA1.Locked=true
PA1.Mode=Asynchronous
PA1.Signal=UART4_RX
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
PA13\ (JTMS/SWDIO).Mode=Serial_Wire
PA13\ (JTMS/SWDIO).Signal=SYS_JTMS-SWDIO
PA14\ (JTCK/SWCLK).Mode=Serial_Wire
PA14\ (JTCK/SWCLK).Signal=SYS_JTCK-SWCLK
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
PC10.Locked=true
PC10.Mode=Full_Duplex_Master
PC10.Signal=SPI3_SCK
@ -68,6 +67,11 @@ PC12.Mode=Full_Duplex_Master
PC12.Signal=SPI3_MOSI
PC14-OSC32_IN\ (PC14).Mode=LSE-External-Clock-Source
PC14-OSC32_IN\ (PC14).Signal=RCC_OSC32_IN
PE3.GPIOParameters=PinState,GPIO_Label
PE3.GPIO_Label=POWER_3V3
PE3.Locked=true
PE3.PinState=GPIO_PIN_SET
PE3.Signal=GPIO_Output
PF0.GPIOParameters=GPIO_Label
PF0.GPIO_Label=WDG
PF0.Locked=true
@ -191,6 +195,8 @@ SPI3.Direction=SPI_DIRECTION_2LINES
SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase
SPI3.Mode=SPI_MODE_MASTER
SPI3.VirtualType=VM_MASTER
USART1.IPParameters=VirtualMode-Asynchronous
USART1.VirtualMode-Asynchronous=VM_ASYNC
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
board=custom

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -24,10 +24,10 @@
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
</JLinkDriver>
<DebugChecksum>
<Checksum>572784430</Checksum>
<Checksum>3054662682</Checksum>
</DebugChecksum>
<RecentFlashDownload>
<Path>D:\Work\CablePositioning\Code\CablePositioningV1.0\CablePositioning_APP_V1.0\EWARM\CableMonitor_APP_V3.2\Exe\CableMonitor_APP_V3.2.out</Path>
<Path>D:\Work\CablePositioning\reless\V1.4\FP_IAP_V1.4.out</Path>
</RecentFlashDownload>
<Exceptions>
<StopOnUncaught>_ 0</StopOnUncaught>

File diff suppressed because one or more lines are too long

@ -42,7 +42,7 @@
/* Define --------------------------------------------------------------------*/
#define VERSION_MAJOR 1
#define VERSION_MINOR 1
#define VERSION_MINOR 4
#define COMPILE_TIME (__DATE__" "__TIME__)
#define NAME_LEN 32

@ -57,6 +57,8 @@ void Error_Handler(void);
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
#define POWER_3V3_Pin GPIO_PIN_3
#define POWER_3V3_GPIO_Port GPIOE
#define WDG_Pin GPIO_PIN_0
#define WDG_GPIO_Port GPIOF
#define LED_RUN_Pin GPIO_PIN_4

@ -398,11 +398,12 @@ static HAL_StatusTypeDef _dev_info_default_set(void)
memcpy(&dev_info.ip[1], &dev_info.mac[3], 3);
dev_info.ip_mask[0] = 255;
dev_info.ip_gw[0] = 10; dev_info.ip_gw[3] = 1;
dev_info.server_ip[0] = 10; dev_info.server_ip[3] = 1;
dev_info.server_port = 17777;
dev_info.wireless_server_ip[0] = 111;dev_info.wireless_server_ip[1] = 47;
dev_info.wireless_server_ip[2] = 21;dev_info.wireless_server_ip[3] = 141;
dev_info.wireless_server_port = 9456;
dev_info.wireless_server_port = 8809;
dev_info.server_ip[0] = 111;dev_info.server_ip[1] = 47;
dev_info.server_ip[2] = 21;dev_info.server_ip[3] = 141;
dev_info.server_port = 8809;
snprintf((char*)dev_info.boot_version, DEV_VERSION_STR_LEN, "V%d.%d.%d.%d", dev_info.type_m, dev_info.type_s,
VERSION_MAJOR, VERSION_MINOR);

@ -42,18 +42,18 @@
/* Private variables ---------------------------------------------------------*/
SPI_HandleTypeDef hspi3;
UART_HandleTypeDef huart4;
UART_HandleTypeDef huart1;
/* USER CODE BEGIN PV */
SPI_HandleTypeDef *SpiHandle = &hspi3;
UART_HandleTypeDef *UartHandle = &huart4;
UART_HandleTypeDef *UartHandle = &huart1;
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI3_Init(void);
static void MX_UART4_Init(void);
static void MX_USART1_UART_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
@ -92,7 +92,7 @@ int main(void)
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI3_Init();
MX_UART4_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
HAL_Delay(10);
/* Init internal flash */
@ -214,37 +214,37 @@ static void MX_SPI3_Init(void)
}
/**
* @brief UART4 Initialization Function
* @brief USART1 Initialization Function
* @param None
* @retval None
*/
static void MX_UART4_Init(void)
static void MX_USART1_UART_Init(void)
{
/* USER CODE BEGIN UART4_Init 0 */
/* USER CODE BEGIN USART1_Init 0 */
/* USER CODE END UART4_Init 0 */
/* USER CODE END USART1_Init 0 */
/* USER CODE BEGIN UART4_Init 1 */
/* USER CODE BEGIN USART1_Init 1 */
/* USER CODE END UART4_Init 1 */
huart4.Instance = UART4;
huart4.Init.BaudRate = 115200;
huart4.Init.WordLength = UART_WORDLENGTH_8B;
huart4.Init.StopBits = UART_STOPBITS_1;
huart4.Init.Parity = UART_PARITY_NONE;
huart4.Init.Mode = UART_MODE_TX_RX;
huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart4.Init.OverSampling = UART_OVERSAMPLING_16;
huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&huart4) != HAL_OK)
/* USER CODE END USART1_Init 1 */
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN UART4_Init 2 */
/* USER CODE BEGIN USART1_Init 2 */
/* USER CODE END UART4_Init 2 */
/* USER CODE END USART1_Init 2 */
}
@ -270,6 +270,9 @@ static void MX_GPIO_Init(void)
__HAL_RCC_GPIOD_CLK_ENABLE();
HAL_PWREx_EnableVddIO2();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(POWER_3V3_GPIO_Port, POWER_3V3_Pin, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(WDG_GPIO_Port, WDG_Pin, GPIO_PIN_RESET);
@ -279,18 +282,25 @@ static void MX_GPIO_Init(void)
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOG, SPI_FLASH_WP_Pin|SPI_FLASH_CS_Pin, GPIO_PIN_SET);
/*Configure GPIO pins : PE2 PE3 PE4 PE5
PE6 PE7 PE8 PE9
PE10 PE11 PE12 PE13
PE14 PE15 PE0 PE1 */
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9
|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13
|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
/*Configure GPIO pins : PE2 PE4 PE5 PE6
PE7 PE8 PE9 PE10
PE11 PE12 PE13 PE14
PE15 PE0 PE1 */
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10
|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
/*Configure GPIO pin : POWER_3V3_Pin */
GPIO_InitStruct.Pin = POWER_3V3_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(POWER_3V3_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : PC13 PC15 PC0 PC1
PC2 PC3 PC4 PC5
PC6 PC7 PC8 PC9 */
@ -320,12 +330,12 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
/*Configure GPIO pins : PA2 PA3 PA4 PA5
PA6 PA7 PA8 PA9
PA10 PA11 PA12 PA15 */
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9
|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15;
/*Configure GPIO pins : PA0 PA1 PA2 PA3
PA4 PA5 PA6 PA7
PA8 PA11 PA12 PA15 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
|GPIO_PIN_8|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

@ -395,13 +395,13 @@ static void _dev_info_set(void)
do
{
Serial_PutString("\r\nWireless server ip: ");
} while(_serial_input_ip(dev_info.wireless_server_ip) != COM_OK);
Serial_PutString("\r\nServer ip: ");
} while(_serial_input_ip(dev_info.server_ip) != COM_OK);
do
{
Serial_PutString("\r\nWireless server port: ");
} while(_serial_input_port(&dev_info.wireless_server_port) != COM_OK);
Serial_PutString("\r\nServer port: ");
} while(_serial_input_port(&dev_info.server_port) != COM_OK);
Serial_PutString("\r\n");
dev_info_save();

@ -154,39 +154,39 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
if(huart->Instance==UART4)
if(huart->Instance==USART1)
{
/* USER CODE BEGIN UART4_MspInit 0 */
/* USER CODE BEGIN USART1_MspInit 0 */
/* USER CODE END UART4_MspInit 0 */
/* USER CODE END USART1_MspInit 0 */
/** Initializes the peripherals clock
*/
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_UART4;
PeriphClkInit.Uart4ClockSelection = RCC_UART4CLKSOURCE_PCLK1;
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
/* Peripheral clock enable */
__HAL_RCC_UART4_CLK_ENABLE();
__HAL_RCC_USART1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/**UART4 GPIO Configuration
PA0 ------> UART4_TX
PA1 ------> UART4_RX
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF8_UART4;
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN UART4_MspInit 1 */
/* USER CODE BEGIN USART1_MspInit 1 */
/* USER CODE END UART4_MspInit 1 */
/* USER CODE END USART1_MspInit 1 */
}
}
@ -199,23 +199,23 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
*/
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
{
if(huart->Instance==UART4)
if(huart->Instance==USART1)
{
/* USER CODE BEGIN UART4_MspDeInit 0 */
/* USER CODE BEGIN USART1_MspDeInit 0 */
/* USER CODE END UART4_MspDeInit 0 */
/* USER CODE END USART1_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_UART4_CLK_DISABLE();
__HAL_RCC_USART1_CLK_DISABLE();
/**UART4 GPIO Configuration
PA0 ------> UART4_TX
PA1 ------> UART4_RX
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
/* USER CODE BEGIN UART4_MspDeInit 1 */
/* USER CODE BEGIN USART1_MspDeInit 1 */
/* USER CODE END UART4_MspDeInit 1 */
/* USER CODE END USART1_MspDeInit 1 */
}
}

Loading…
Cancel
Save