Compare commits

..

No commits in common. '60cb33ccfbae0f29bdc9c012f8a15a3b25e394aa' and 'bcbe52a64ce3de16dbf19be5e1848d0375f0b2a9' have entirely different histories.

@ -76,8 +76,20 @@ typedef struct
uint16_t ADCi_vin; // ADCi 输入电压通道计算值, 单位: mv. uint16_t ADCi_vin; // ADCi 输入电压通道计算值, 单位: mv.
uint16_t ADCi_vsc; // ADCi 超级电容电压通道计算值, 单位: mv. uint16_t ADCi_vsc; // ADCi 超级电容电压通道计算值, 单位: mv.
uint16_t ADCi_cnt; // ADCi 采样计数. uint16_t ADCi_cnt; // ADCi 采样计数.
uint32_t ADCi_time; // ADCi 上次采集结束时间.
uint8_t ADCi_state; // ADCi 采样状态. uint8_t ADCi_state; // ADCi 采样状态.
uint8_t energy_mode; // 设备工作模式 0 - 正常 1 - 休眠, 这个参数放这里, 主要是考虑到模式是由电流电压确定的. 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 主动采集.
} ADC_ctrl_t; } ADC_ctrl_t;
/* Exported macro ------------------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/

@ -54,9 +54,7 @@ typedef struct
uint8_t is_bat_charge; // 充电状态 uint8_t is_bat_charge; // 充电状态
uint8_t is_utc_valid; // GPS 对时 UTC 时间有效 uint8_t is_utc_valid; // GPS 对时 UTC 时间有效
uint8_t state_wir; // 无线状态 uint8_t state_wir; // 无线状态
uint8_t energy_mode; // 节能模式 uint8_t reserve[3];
uint8_t GB_cnt; // 北斗卫星数量
uint8_t fault_port; // 故障触发端口
uint32_t run; // 设备持续运行时间 uint32_t run; // 设备持续运行时间
uint32_t time; // 设备时间 uint32_t time; // 设备时间
uint32_t elec[8]; // 工频电流有效值mA uint32_t elec[8]; // 工频电流有效值mA
@ -65,9 +63,6 @@ typedef struct
int16_t elec_fault_max[4]; // 故障电流最大值mA int16_t elec_fault_max[4]; // 故障电流最大值mA
uint32_t fault_utc; // 故障触发时间 uint32_t fault_utc; // 故障触发时间
uint32_t fault_ns; // 故障触发时间 ns 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; } debug_real_data_t;
/* 校准命令信息. */ /* 校准命令信息. */
@ -95,15 +90,28 @@ typedef struct
int8_t index; int8_t index;
} debug_adj_num_t; } 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 ------------------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/
/* Extern global variables ---------------------------------------------------*/ /* Extern global variables ---------------------------------------------------*/
extern usart_buf_t debug_buf; extern usart_buf_t debug_buf;
/* Extern functions ----------------------------------------------------------*/ /* Extern functions ----------------------------------------------------------*/
extern void debug_start(void); 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 int32_t debug_app_check(uint32_t addr, uint32_t size, uint8_t file_type);
extern void debug_pkt_adj_defect(void); extern void _debug_pkt_adj_auto(void);
extern void debug_pkt_adj_fault(void);
#endif #endif
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/ /******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

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

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

@ -45,7 +45,7 @@
/* Define --------------------------------------------------------------------*/ /* Define --------------------------------------------------------------------*/
/* 版本信息. */ /* 版本信息. */
#define VERSION_MAJOR 1 #define VERSION_MAJOR 1
#define VERSION_MINOR 5 #define VERSION_MINOR 3
#define COMPILE_TIME (__DATE__" "__TIME__) #define COMPILE_TIME (__DATE__" "__TIME__)
#define DEV_CAPABILITY_LEN 16 #define DEV_CAPABILITY_LEN 16
@ -144,8 +144,6 @@ typedef struct
uint8_t is_voltage_adj; uint8_t is_voltage_adj;
uint8_t turns; uint8_t turns;
uint8_t elec; uint8_t elec;
uint16_t vin;
uint8_t reserve[2];
} dev_adj_power_t; } dev_adj_power_t;
/* 校准参数信息. */ /* 校准参数信息. */
@ -176,6 +174,42 @@ typedef struct
uint16_t fault_elec; uint16_t fault_elec;
} dev_adj_fault_zero_t; } 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 typedef struct
{ {
@ -201,11 +235,14 @@ typedef struct
uint16_t fault_threshold; uint16_t fault_threshold;
uint16_t defect_threshold; uint16_t defect_threshold;
char APN[DEV_APN_LEN]; char APN[DEV_APN_LEN];
uint16_t fault_interval; // 单位: s
int16_t fault_time_adj; // 单位: 10ns 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];
/* 保证配置区 8K 的保留位. */ /* 保证配置区 8K 的保留位. */
uint8_t reserve[660]; uint8_t reserve[256];
/* INIT_DONE_MAGIC. 4byte */ /* INIT_DONE_MAGIC. 4byte */
uint32_t magic_bak; uint32_t magic_bak;
} dev_config_t; } dev_config_t;

@ -60,6 +60,7 @@
#define FLASH_LOG_INVALID_ID 0xFFFFFFFFFFFFFFFF #define FLASH_LOG_INVALID_ID 0xFFFFFFFFFFFFFFFF
#define FD_INVALID_ID 0xFFFFFFFFFFFFFFFF #define FD_INVALID_ID 0xFFFFFFFFFFFFFFFF
#define POSITION_INVALID_ID 0xFFFFFFFFFFFFFFFF
#define ST_INVALID_ID 0xFFFFFFFFFFFFFFFF #define ST_INVALID_ID 0xFFFFFFFFFFFFFFFF
#define FLASH_LOG_RETURN_MUTEX(_f_) \ #define FLASH_LOG_RETURN_MUTEX(_f_) \
@ -99,8 +100,8 @@ typedef struct
uint16_t vin; // 工作电压, 单位: mv uint16_t vin; // 工作电压, 单位: mv
uint16_t vbat; // 电池电压, 单位: mv uint16_t vbat; // 电池电压, 单位: mv
uint16_t vsc; // 超级电容电压, 单位: mv uint16_t vsc; // 超级电容电压, 单位: mv
int16_t fault[DAU_PORT_FAULT_MAX]; // 故障电流最大值 A uint16_t fault[DAU_PORT_FAULT_MAX]; // 故障电流最大值 A
int16_t defect[DAU_PORT_DEFECT_MAX]; // 缺陷电流最大值 mA uint16_t defect[DAU_PORT_DEFECT_MAX]; // 缺陷电流最大值 mA
uint32_t elec[DAU_PORT_POWER_CNT]; // 通道电流有效值 mA uint32_t elec[DAU_PORT_POWER_CNT]; // 通道电流有效值 mA
uint8_t col_flag; // DAU 采集标志位 uint8_t col_flag; // DAU 采集标志位
uint8_t is_bat_charge; // 充电状态 uint8_t is_bat_charge; // 充电状态
@ -108,6 +109,26 @@ typedef struct
uint8_t state_wir; // 无线状态 uint8_t state_wir; // 无线状态
} fd_data_t; } fd_data_t;
typedef struct
{
float v[POSITION_SUM]; //电流幅值
uint32_t s[POSITION_SUM]; //秒时刻
uint32_t ns[POSITION_SUM]; //纳秒时刻
uint32_t file_s; //录波文件秒
uint32_t file_ns; //录波文件纳秒
uint32_t file_feq; //录波文件频率
} position_wave_info_t;
/* Note: 必须保证这个结构体的大小是可以被flash扇区大小整除的,比如128,256... */
typedef struct
{
uint64_t id;
uint32_t run_time; //时间, 单位 s.
uint16_t vol; //工作电压, 单位: v.
uint16_t temperature; //设备温度, 单位: ℃.
position_wave_info_t wave_info;
} position_data_t;
/* Note: 必须保证这个结构体的大小是可以被flash扇区大小整除的,比如128,256... */ /* Note: 必须保证这个结构体的大小是可以被flash扇区大小整除的,比如128,256... */
typedef struct typedef struct
{ {

@ -167,33 +167,47 @@ static int32_t _ADC_collect(void)
static void _ADC_energy_calculate(void) static void _ADC_energy_calculate(void)
{ {
ADC_ctrl_t *ADC = &ADC_ctrl; ADC_ctrl_t *ADC = &ADC_ctrl;
uint8_t is_save = FALSE;
if (ADC->ADCi_temp < -100) if (ADC->ADCi_temp < -100 && st_data.is_bat_charge)
{ {
HAL_GPIO_WritePin(BAT_CHARGE_GPIO_Port, BAT_CHARGE_Pin, GPIO_PIN_SET); st_data.is_bat_charge = FALSE;
HAL_GPIO_WritePin(BAT_CLK_GPIO_Port, BAT_CLK_Pin, GPIO_PIN_SET); is_save = TRUE;
} }
else if(ADC->ADCi_temp >= -80) else if(ADC->ADCi_temp >= -80 && !st_data.is_bat_charge)
{ {
HAL_GPIO_WritePin(BAT_CHARGE_GPIO_Port, BAT_CHARGE_Pin, GPIO_PIN_RESET); st_data.is_bat_charge = TRUE;
HAL_GPIO_WritePin(BAT_CLK_GPIO_Port, BAT_CLK_Pin, GPIO_PIN_RESET); is_save = TRUE;
} }
if((ADC->ADCi_vbat >= 3600) if (st_data.is_bat_charge
|| (ADC->ADCi_vbat >= 3400 && ADC_ENERGY_NORMAL == st_data.energy_mode)) && GPIO_PIN_SET == HAL_GPIO_ReadPin(BAT_CHECK_GPIO_Port, BAT_CHECK_Pin))
{ {
ADC->energy_mode = ADC_ENERGY_NORMAL; /* 开始充电. */
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_SET);
osDelay(10);
HAL_GPIO_WritePin(BAT_CLK_GPIO_Port, BAT_CLK_Pin, GPIO_PIN_RESET);
} }
else else if((!st_data.is_bat_charge)
&& GPIO_PIN_RESET == HAL_GPIO_ReadPin(BAT_CHECK_GPIO_Port, BAT_CHECK_Pin))
{ {
ADC->energy_mode = ADC_ENERGY_SLEEP; /* 停止充电. */
HAL_GPIO_WritePin(BAT_CHARGE_GPIO_Port, BAT_CHARGE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(BAT_CLK_GPIO_Port, BAT_CLK_Pin, GPIO_PIN_SET);
osDelay(10);
HAL_GPIO_WritePin(BAT_CLK_GPIO_Port, BAT_CLK_Pin, GPIO_PIN_RESET);
} }
if (st_data.energy_mode != ADC->energy_mode) if (is_save)
{ {
st_data.energy_mode = ADC->energy_mode;
st_write(&st_data); st_write(&st_data);
flash_log_write(FLASH_LOG_TYPE_NOTIFY, "Energy is change to %s!\r\n", energy_str[st_data.energy_mode]); }
/* 超级电容电压小于 3.3V 设备不启动. */
if(ADC_ctrl.ADCi_vbat < 3000)
{
//system_shtudown(7200);
} }
} }
@ -265,10 +279,10 @@ void ADC_show(void)
{ {
ADC_ctrl_t *ADC = &ADC_ctrl; ADC_ctrl_t *ADC = &ADC_ctrl;
vty_print("TE VB VI VS ATE AVB AVI AVS ST\r\n"); vty_print("TE VB VI VS ATE AVB AVI AVS EC ST\r\n");
vty_print("%-04d %-04d %-04d %-04d %-04d %-04d %-04d %-04d %-02x\r\n", ADC->ADCi_temp, ADC->ADCi_vbat, vty_print("%-04d %-04d %-04d %-04d %-04d %-04d %-04d %-04d %-02d %-02x", 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_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_state); ADC->ADCi_value[ADCi_CH_VIN], ADC->ADCi_value[ADCi_CH_VSC], ADC->ADCi_err_cnt, ADC->ADCi_state);
vty_print("\n"); vty_print("\r\n");
} }
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/ /******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

@ -52,7 +52,6 @@
/* Private define ------------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/
#define DEBUG_FLASH_BUF_SIZE DEBUG_DATA_SIZE #define DEBUG_FLASH_BUF_SIZE DEBUG_DATA_SIZE
#define DEBUG_DEFECT_ADJ_P 0.91
/* Private typedef -----------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/
/* RS485调试通讯协议器件信息. */ /* RS485调试通讯协议器件信息. */
@ -97,8 +96,7 @@ typedef struct
uint16_t fault_thr; // 故障阈值, 单位: A. uint16_t fault_thr; // 故障阈值, 单位: A.
uint8_t APN[DEV_APN_LEN]; // APN 名字. uint8_t APN[DEV_APN_LEN]; // APN 名字.
uint16_t fault_inr; // 故障间隔, 单位: s. uint16_t fault_inr; // 故障间隔, 单位: s.
int16_t fault_time_adj; // 单位: 10ns uint8_t reserve[18];
uint8_t reserve[16];
} debug_config_t; } debug_config_t;
/* Private macro -------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/
@ -455,10 +453,6 @@ static void _debug_pkt_update_iap(void)
{ {
return; return;
} }
addr = 2;
flash_log_write(FLASH_LOG_TYPE_INFO, "Update IAP system reset!\r\n");
common_sys_set(COM_SYS_RESET, (void*)&addr);
} }
/* 封装报文头. */ /* 封装报文头. */
@ -578,8 +572,6 @@ static void _debug_pkt_config_get(void)
data->defect_thr = dev_config.defect_threshold; data->defect_thr = dev_config.defect_threshold;
data->fault_thr = dev_config.fault_threshold; data->fault_thr = dev_config.fault_threshold;
memcpy(data->APN, dev_config.APN, DEV_APN_LEN); 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); crc = (uint32_t*)(debug_buf.buf + head->len);
@ -628,8 +620,6 @@ static void _debug_pkt_config_set(void)
dev_config.defect_threshold = data->defect_thr; dev_config.defect_threshold = data->defect_thr;
dev_config.fault_threshold = data->fault_thr; dev_config.fault_threshold = data->fault_thr;
memcpy(dev_config.APN, data->APN, DEV_APN_LEN); 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); _debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_REPLY);
@ -643,7 +633,6 @@ static void _debug_pkt_config_set(void)
/* 保存配置. */ /* 保存配置. */
common_sys_set(COM_SYS_SAVE_CONFIG, 0); common_sys_set(COM_SYS_SAVE_CONFIG, 0);
MONITOR_BITMAP_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
if (is_reboot) if (is_reboot)
{ {
/* 设备重启, 这里延迟 2s 保证回复报文能发出. */ /* 设备重启, 这里延迟 2s 保证回复报文能发出. */
@ -1320,7 +1309,6 @@ static void _debug_pkt_data_get(void)
data->temperature = ADC_ctrl.ADCi_temp; data->temperature = ADC_ctrl.ADCi_temp;
data->vbat = ADC_ctrl.ADCi_vbat; data->vbat = ADC_ctrl.ADCi_vbat;
data->vin = ADC_ctrl.ADCi_vin; data->vin = ADC_ctrl.ADCi_vin;
data->energy_mode = ADC_ctrl.energy_mode;
HAL_RTC_GetTime(&hrtc, &debug_time, RTC_FORMAT_BIN); HAL_RTC_GetTime(&hrtc, &debug_time, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &debug_date, RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &debug_date, RTC_FORMAT_BIN);
debug_tm.tm_year = debug_date.Year + 100; debug_tm.tm_year = debug_date.Year + 100;
@ -1334,8 +1322,6 @@ static void _debug_pkt_data_get(void)
data->state_wir = wl_ctrl.state; data->state_wir = wl_ctrl.state;
data->is_bat_charge = st_data.is_bat_charge; data->is_bat_charge = st_data.is_bat_charge;
data->is_utc_valid = dau_ctrl.is_utc_valid; 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++) for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{ {
@ -1349,9 +1335,6 @@ static void _debug_pkt_data_get(void)
} }
data->fault_utc = dau_ctrl.fault_utc; data->fault_utc = dau_ctrl.fault_utc;
data->fault_ns = dau_ctrl.fault_ns; 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); crc = (uint32_t*)(debug_buf.buf + head->len);
@ -1496,94 +1479,6 @@ static void _debug_pkt_wave_col(void)
return; return;
} }
/* 设备状态获取报文处理. */
static void _debug_pkt_adj_defect_zero(void)
{
proto_head_t *head = (proto_head_t*)debug_buf.buf;
dev_adj_defect_zero_t *data = (dev_adj_defect_zero_t*)(debug_buf.buf + sizeof(proto_head_t));
uint32_t *crc = NULL;
uint8_t i = 0;
/* 解析数据. */
memcpy(&debug_adj_defect, data, sizeof(dev_adj_defect_zero_t));
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];
}
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY);
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */
_debug_pkt_send(head->len + 4, 20);
return;
}
/* 设备状态获取报文处理. */
static void _debug_pkt_adj_defect(void)
{
proto_head_t *head = (proto_head_t*)debug_buf.buf;
dev_adj_defect_cfg_t *data = (dev_adj_defect_cfg_t*)(debug_buf.buf + sizeof(proto_head_t));
uint32_t *crc = NULL;
uint32_t temp = 0;
uint8_t i = 0;
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);
}
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_defect_cfg_t), DEBUG_CT_PRV_REPLY);
/* 配置参数. */
memcpy(data->defect_base, dev_config.defect_base, sizeof(dev_adj_defect_cfg_t));
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */
_debug_pkt_send(head->len + 4, 20);
/* 保存参数. */
common_sys_set(COM_SYS_SAVE_CONFIG, 0);
return;
}
/* . */ /* . */
static void _debug_pkt_log_get(void) static void _debug_pkt_log_get(void)
{ {
@ -1726,146 +1621,12 @@ static void _debug_pkt_history_data_get(void)
return; return;
} }
/* 自动校准处理. */
static HAL_StatusTypeDef _debug_adj_manual(uint8_t bitmap)
{
if (!bitmap)
{
return HAL_OK;
}
dau_adj_state = DAU_ADJ_STATE_POWER;
while (dau_adj_state != DAU_ADJ_STATE_NONE)
{
common_watchdog_set(COM_WDG_CLI);
osDelay(1000);
}
DBG(DBG_M_RS485_DEBUG, "capture end...\r\n");
_debug_adj_power_cal();
return HAL_OK;
}
/* 手动校准报文处理. */
static void _debug_pkt_adj_manual(void)
{
proto_head_t *head = (proto_head_t*)debug_buf.buf;
dev_adj_power_t *data = (dev_adj_power_t*)(debug_buf.buf + sizeof(proto_head_t));
dev_adj_power_cfg_t *cfg = (dev_adj_power_cfg_t*)(debug_buf.buf + sizeof(proto_head_t));
uint32_t *crc = NULL;
/* 解析数据. */
memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t));
/* 组装数据 */
cfg->return_value = _debug_adj_manual(debug_adj_power.bitmap);
if (debug_adj_power.is_voltage_adj)
{
ADC_vbat_auto(debug_adj_power.vin);
}
memcpy(cfg->power_adj, dev_config.power_adj, 32);
cfg->vin_adj = dev_config.vin_adj;
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_power_cfg_t), DEBUG_CT_PRV_REPLY);
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */
_debug_pkt_send(head->len + 4, 20);
/* 保存参数. */
common_sys_set(COM_SYS_SAVE_CONFIG, 0);
return;
}
/* 设备状态获取报文处理. */
static void _debug_pkt_adj_fault_zero(void)
{
proto_head_t *head = (proto_head_t*)debug_buf.buf;
dev_adj_fault_zero_t *data = (dev_adj_fault_zero_t*)(debug_buf.buf + sizeof(proto_head_t));
uint32_t *crc = NULL;
/* 解析数据. */
memcpy(&debug_adj_fault, data, sizeof(dev_adj_fault_zero_t));
dau_adj_state = DAU_ADJ_STATE_FAULT_ZERO;
while(dau_adj_state != DAU_ADJ_STATE_NONE)
{
osDelay(1000);
common_watchdog_set(COM_WDG_CLI);
}
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY);
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */
_debug_pkt_send(head->len + 4, 20);
return;
}
/* 设备状态获取报文处理. */
static void _debug_pkt_adj_fault(void)
{
proto_head_t *head = (proto_head_t*)debug_buf.buf;
dev_adj_fault_cfg_t *data = (dev_adj_fault_cfg_t*)(debug_buf.buf + sizeof(proto_head_t));
uint32_t *crc = NULL;
uint8_t i = 0;
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++)
{
data->fault_base[i] = dev_config.fault_base[i];
if (!IS_MONITOR_BIT_SET(debug_adj_fault.bitmap, i))
{
data->fault_adj[i] = dev_config.fault_adj[i];
continue;
}
if (!((dau_ctrl.reg_global.GFTR & DAU_GFTR_FAULT_Msk) >> DAU_GFTR_FAULT_Pos))
{
data->fault_adj[i] = 0;
continue;
}
data->fault_adj[i] = abs_cal_u(dau_ctrl.reg_port_state.FMAX[i], dev_config.fault_base[i]);
}
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_fault_cfg_t), DEBUG_CT_PRV_REPLY);
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */
_debug_pkt_send(head->len + 4, 20);
return;
}
/* 主动上传fpga升级结果. */ /* 主动上传fpga升级结果. */
static void _debug_pkt_update_fpga_result() static void _debug_pkt_update_fpga_result()
{ {
proto_head_t *head = (proto_head_t*)debug_buf.buf; proto_head_t *head = (proto_head_t*)debug_buf.buf;
int32_t *res = (int32_t*)(debug_buf.buf + sizeof(proto_head_t)); int32_t *res = (int32_t*)(debug_buf.buf + sizeof(proto_head_t));
uint32_t *crc = NULL; uint32_t *crc = NULL;
uint32_t temp = 0;
/* 封装报文头. */ /* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(int32_t), DEBUG_CT_PRV_REPLY); _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(int32_t), DEBUG_CT_PRV_REPLY);
@ -1880,192 +1641,44 @@ static void _debug_pkt_update_fpga_result()
/* 发送报文 */ /* 发送报文 */
_debug_pkt_send(head->len + 4, 20); _debug_pkt_send(head->len + 4, 20);
temp = 2;
flash_log_write(FLASH_LOG_TYPE_INFO, "Update FPGA system reset!\r\n");
common_sys_set(COM_SYS_RESET, (void*)&temp);
return;
}
/* 自动校准报文处理. */
void _debug_pkt_adj_auto(void)
{
proto_head_t *head = (proto_head_t*)debug_buf.buf;
dev_adj_power_t *data = (dev_adj_power_t*)(debug_buf.buf + sizeof(proto_head_t));
dev_adj_power_cfg_t *cfg = (dev_adj_power_cfg_t*)(debug_buf.buf + sizeof(proto_head_t));
uint32_t *crc = NULL;
/* 解析数据. */
memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t));
/* 组装数据 */
cfg->return_value = _debug_adj_auto(debug_adj_power.bitmap);
if (debug_adj_power.is_voltage_adj)
{
ADC_vbat_auto(debug_adj_power.vin);
}
memcpy(cfg->power_adj, dev_config.power_adj, 32);
cfg->vin_adj = dev_config.vin_adj;
/* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_power_cfg_t), DEBUG_CT_PRV_REPLY);
/* 计算校验和. */
crc = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */
_debug_pkt_send(head->len + 4, 20);
/* 保存参数. */
common_sys_set(COM_SYS_SAVE_CONFIG, 0);
return;
}
/* . */
static void _debug_pkt_defect_get(void)
{
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_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_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; return;
} }
/* . */ /* 设备状态获取报文处理. */
static void _debug_pkt_fault_get(void) static void _debug_pkt_dev_state_get(void)
{ {
static uint32_t base = 0;
uint32_t addr = 0;
proto_head_t *head = (proto_head_t*)debug_buf.buf; 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)); dev_state_t *data = (dev_state_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; uint32_t *crc = NULL;
/* 封装报文头. */ /* 封装报文头. */
_debug_pkt_head_init(sizeof(proto_head_t), DEBUG_CT_PRV_REPLY); _debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_state_t), DEBUG_CT_PRV_REPLY);
/* 初始化数据. */ /* 装填数据. */
if (0 == m_head->index) data->is_adc_up = ADC_ctrl.up_finish;
{ data->adci_cnt = ADC_ctrl.ADCi_err_cnt;
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP)) data->adci_state = ADC_ctrl.ADCi_state;
{ data->adc_cnt = ADC_ctrl.ADC_err_cnt;
base = dau_ctrl.addr_fault; data->adc_state = ADC_ctrl.ADC_state;
} data->is_adc_thr = ADC_ctrl.is_ADC_thr;
else data->wave_time = st_data.wave_time;
{ data->wave_start = st_data.wave_start;
base = dau_ctrl.addr_fault - 0x20000; data->wave_up_start = st_data.wave_up_start;
if (base < WARE_FAULT_ADDRESS) data->wave_idx = st_data.wave_index;
{ data->wave_force = st_data.wave_force;
base = WARE_FAULT_ADDRESS_END - 0x20000; 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 = (uint32_t*)(debug_buf.buf + head->len);
*crc = crc32(debug_buf.buf, head->len); *crc = crc32(debug_buf.buf, head->len);
/* 发送报文 */ /* 发送报文 */
_debug_pkt_send(head->len + 4, 28); _debug_pkt_send(head->len + 4, 20);
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; return;
} }
@ -2143,10 +1756,10 @@ static void _debug_pkt_process(void)
case DEBUG_PRV_WAVE_COL: case DEBUG_PRV_WAVE_COL:
_debug_pkt_wave_col(); _debug_pkt_wave_col();
break; break;
case DEBUG_PRV_ADJ_DEFECT_ZERO: case DEBUG_PRV_ADJ_DECFECT_ZERO:
_debug_pkt_adj_defect_zero(); _debug_pkt_adj_defect_zero();
break; break;
case DEBUG_PRV_ADJ_DEFECT: case DEBUG_PRV_ADJ_DECFECT:
_debug_pkt_adj_defect(); _debug_pkt_adj_defect();
break; break;
case DEBUG_PRV_LOG: case DEBUG_PRV_LOG:
@ -2170,11 +1783,8 @@ static void _debug_pkt_process(void)
case DEBUG_PRV_ADJ_AUTO: case DEBUG_PRV_ADJ_AUTO:
_debug_pkt_adj_auto(); _debug_pkt_adj_auto();
break; break;
case DEBUG_PRV_DEFECT_GET: case DEBUG_PRV_DEV_STATE:
_debug_pkt_defect_get(); _debug_pkt_dev_state_get();
break;
case DEBUG_PRV_FAULT_GET:
_debug_pkt_fault_get();
break; break;
default: default:
break; break;
@ -2318,96 +1928,12 @@ CRC_CHECK_ERROR:
return HAL_ERROR; return HAL_ERROR;
} }
void debug_pkt_adj_defect(void) /* 显示命令 */
void debug_adj_auto(uint8_t bitmap)
{ {
uint32_t temp = 0; /* 开始自动校准. */
uint8_t i = 0; _debug_adj_auto(bitmap);
/* 关闭校准. */
debug_adj_defect.bitmap = 7; _debug_adj_close();
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 ****************/ /******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

@ -110,6 +110,7 @@ UART_HandleTypeDef *cli_uart = &huart1;
extern uint8_t yl_test; extern uint8_t yl_test;
/* Private function prototypes -----------------------------------------------*/ /* 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_dbg_mode(const char *string);
static BaseType_t _cli_default(const char *string); static BaseType_t _cli_default(const char *string);
static BaseType_t _cli_host(const char *string); static BaseType_t _cli_host(const char *string);
@ -135,6 +136,7 @@ static const char *debug_str[DBG_M_COUNT] =
}; };
static const CLI_Command_Definition_t cmd_debug = {"debug", _cli_debug, 2}; static const CLI_Command_Definition_t cmd_debug = {"debug", _cli_debug, 2};
#endif #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_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_default = {"default", _cli_default, 1};
static const CLI_Command_Definition_t cmd_host = {"host", _cli_host, 1}; static const CLI_Command_Definition_t cmd_host = {"host", _cli_host, 1};
@ -252,6 +254,38 @@ static BaseType_t _cli_debug(const char *string)
} }
#endif #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 模式. */ /* 配置 debug 模式. */
static BaseType_t _cli_dbg_mode(const char *string) static BaseType_t _cli_dbg_mode(const char *string)
{ {
@ -471,17 +505,13 @@ static BaseType_t _cli_show(const char *string)
if (0 == strncmp(param, "h", param_len)) if (0 == strncmp(param, "h", param_len))
{ {
vty_print("show <cmd> [param]:\r\n"); vty_print("show <cmd> [param]:\r\n");
vty_print(" <cmd>: info | adc | adj | cfg | wl\r\n"); vty_print(" <cmd>: info | sen | ADC | ADCi | ADCv | ADCj | mode | wave | wl | position\r\n");
vty_print(" Show info.\r\n"); vty_print(" Show info.\r\n");
} }
else if(0 == strncmp(param, "adc", param_len)) else if(0 == strncmp(param, "ADCi", param_len))
{ {
ADC_show(); ADC_show();
} }
else if(0 == strncmp(param, "adj", param_len))
{
dau_adj_show();
}
else if(0 == strncmp(param, "data", param_len)) else if(0 == strncmp(param, "data", param_len))
{ {
fd_show(20); fd_show(20);
@ -498,19 +528,18 @@ static BaseType_t _cli_show(const char *string)
{ {
flash_log_show(20); flash_log_show(20);
} }
else if(0 == strncmp(param, "cfg", param_len)) else if(0 == strncmp(param, "mode", param_len))
{ {
vty_print("Debug mode: %s\r\n", IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI) ? "CLI" : "PC"); 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_ADJ) ? "ADJ" : "NORMAL");
vty_print("Work mode: %s\r\n", IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY) ? "FACTORY" : "NORMAL"); vty_print("Work mode: %s\r\n", IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY) ? "FACTORY" : "NORMAL");
vty_print("BAT charge: %d\r\n", !HAL_GPIO_ReadPin(BAT_CHARGE_GPIO_Port, BAT_CHARGE_Pin)); 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("Collect interval: %dmin\r\n", dev_config.collect_interval); 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("Power threshold: %dA\r\n", dev_config.power_threshold);
vty_print("Defect threshold: %dmA\r\n", dev_config.defect_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("Fault threshold: %dA\r\n", dev_config.fault_threshold);
vty_print("Fault time adj: %dns\r\n", dev_config.fault_time_adj * 10); vty_print("Keepalive: %dmin\r\n", dev_config.keepalive);
vty_print("Keepalive: %dmin\r\n\n", dev_config.keepalive);
} }
else if(0 == strncmp(param, "state", param_len)) else if(0 == strncmp(param, "state", param_len))
{ {
@ -595,38 +624,6 @@ static BaseType_t _cli_spi(const char *string)
return pdFALSE; return pdFALSE;
} }
static BaseType_t _cli_debug_msg(const char *string)
{
const char *param = NULL;
uint8_t param_len = 0;
param = FreeRTOS_CLIGetParameter(string, 1, (BaseType_t *)&param_len);
if (NULL == param)
{
vty_print(cli_param_erro);
return pdFALSE;
}
switch(param[0])
{
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;
}
vty_print(cli_rv_ok);
return pdFALSE;
}
/* 工作模式配置命令. */ /* 工作模式配置命令. */
static BaseType_t _cli_work_mode(const char *string) static BaseType_t _cli_work_mode(const char *string)
{ {
@ -788,6 +785,7 @@ static void _cli_start(void)
#if LD_DEBUG #if LD_DEBUG
FreeRTOS_CLIRegisterCommand(&cmd_debug, CLI_NODE_COMMON); FreeRTOS_CLIRegisterCommand(&cmd_debug, CLI_NODE_COMMON);
#endif #endif
FreeRTOS_CLIRegisterCommand(&cmd_adc_auto, CLI_NODE_CONFIG);
FreeRTOS_CLIRegisterCommand(&cmd_dbg_mode, CLI_NODE_CONFIG); FreeRTOS_CLIRegisterCommand(&cmd_dbg_mode, CLI_NODE_CONFIG);
FreeRTOS_CLIRegisterCommand(&cmd_default, CLI_NODE_CONFIG); FreeRTOS_CLIRegisterCommand(&cmd_default, CLI_NODE_CONFIG);
FreeRTOS_CLIRegisterCommand(&cmd_host, CLI_NODE_CONFIG); FreeRTOS_CLIRegisterCommand(&cmd_host, CLI_NODE_CONFIG);
@ -852,12 +850,12 @@ void cli_start(void const * argument)
/* 默认开启的 debug. */ /* 默认开启的 debug. */
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI)) 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_DAU_TXRX);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_GPS); //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_4G);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_SEN); 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_RS485_DEBUG);
} }
/* 初始化 ADC 采样任务. */ /* 初始化 ADC 采样任务. */
@ -869,7 +867,7 @@ void cli_start(void const * argument)
if (!IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ) if (!IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ)
&& !IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY)) && !IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY))
{ {
wl_init(); //wl_init();
} }
/* 在这个标志置位前vty_print是原地循环等待,置位后变为任务调度. */ /* 在这个标志置位前vty_print是原地循环等待,置位后变为任务调度. */

@ -250,45 +250,29 @@ int32_t _dau_reg_write_port(uint32_t port)
/* 缺陷校准系数 */ /* 缺陷校准系数 */
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE; addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE;
/* 零点值用的是16位的 */ //*temp = dev_config.defect_base[i];
*temp = dev_config.defect_base[port] << 4; *temp = 32927;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t))); E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ; addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ;
*temp = dev_config.defect_adj[port]; //*temp = dev_config.defect_adj[i];
*temp = 52428;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t))); E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
/* 故障校准系数 */ /* 故障校准系数 */
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_BASE; addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_BASE;
*temp = dev_config.fault_base[port]; *temp = dev_config.fault_base[port];
//*temp = 35000;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t))); E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_ADJ; addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_ADJ;
*temp = dev_config.fault_adj[port]; //*temp = dev_config.fault_adj[i];
*temp = 32768;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t))); E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
return rv; return rv;
} }
/* description: DAU 写端口配置寄存器报文发送
param:
return: HAL_xxx */
int32_t _dau_reg_write_cfg(void)
{
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
int32_t rv = HAL_ERROR;
/* 触发阈值 */
*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;
}
/* description: DAU 历史数据保存 /* description: DAU 历史数据保存
param: param:
return: */ return: */
@ -303,11 +287,11 @@ 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_FAULT_MAX; i++) for(i = 0; i < DAU_PORT_FAULT_MAX; i++)
{ {
fd_data.fault[i] = dau_ctrl.fault_max[i]; fd_data.fault[i] = dau_ctrl.reg_port_state.FMAX[i];
} }
for(i = 0; i < DAU_PORT_DEFECT_MAX; i++) for(i = 0; i < DAU_PORT_DEFECT_MAX; i++)
{ {
fd_data.defect[i] = dau_ctrl.reg_defect_max[i]; fd_data.defect[i] = dau_ctrl.reg_port_state.DMAX[i];
} }
for(i = 0; i < DAU_PORT_POWER_CNT; i++) for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{ {
@ -442,7 +426,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(1000); osDelay(500);
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)
@ -451,7 +435,7 @@ int32_t _dau_wave_col_start(void)
} }
i++; i++;
//vty_print("#D start wait %d\r\n", i); vty_print("#D start wait %d\r\n", i);
} }
return rv; return rv;
@ -466,23 +450,14 @@ int32_t _dau_wave_col_fault(void)
uint8_t i = 0; uint8_t i = 0;
uint8_t j = 0; uint8_t j = 0;
uint32_t addr = 0; uint32_t addr = 0;
int32_t temp = 0;
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
dau_ctrl.fault_utc = dau_ctrl.reg_global.GFTUR; dau_ctrl.fault_utc = dau_ctrl.reg_global.GFTUR;
dau_ctrl.fault_ns = dau_ctrl.reg_global.GFTNR; dau_ctrl.fault_ns = dau_ctrl.reg_global.GFTNR;
dau_ctrl.fault_utc_max = dau_ctrl.reg_global.GFMUR; vty_print("#D utc %d.%d\r\n", dau_ctrl.fault_utc, dau_ctrl.fault_ns);
dau_ctrl.fault_ns_max = dau_ctrl.reg_global.GFMNR;
dau_ctrl.PPS_cnt = dau_ctrl.reg_global.GGPCR;
vty_print("#D utc %d.%d %d %d\r\n", dau_ctrl.fault_utc, dau_ctrl.fault_ns, dau_ctrl.PPS_cnt, dev_config.fault_time_adj);
dau_ctrl.fault_ns = (uint64_t)dau_ctrl.fault_ns * 100000000 / dau_ctrl.PPS_cnt;
vty_print(" #D %d ", dau_ctrl.fault_ns);
dau_ctrl.fault_ns += dev_config.fault_time_adj;
vty_print("%d\r\n", dau_ctrl.fault_ns);
/* 擦除 flash */ /* 擦除 flash */
addr = dau_ctrl.addr_fault; addr = dau_ctrl.addr_fault;
vty_print("#DF reg start addr %x\r\n", addr);
for(i = 0; i < 2; i++) for(i = 0; i < 2; i++)
{ {
E_RETURN(spi_flash_erase(addr, SPI_CMD_BLOCK64_ERASE)); E_RETURN(spi_flash_erase(addr, SPI_CMD_BLOCK64_ERASE));
@ -497,11 +472,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++)
{ {
vty_print("#DF %d %d\r\n", i, dau_ctrl.reg_port_state.FMAX[i]); dau_ctrl.fault_max[i] = dau_ctrl.reg_port_state.FMAX[i];
temp = dau_ctrl.reg_port_state.FMAX[i] - dev_config.fault_base[i];
dau_ctrl.fault_max[i] = dev_config.fault_adj[i] * temp / 32768 / 16 * 3;
vty_print(" #DF %d %d %d\r\n", dau_ctrl.fault_max[i], dev_config.fault_adj[i], temp);
/* 请求读取故障波形 */ /* 请求读取故障波形 */
*reg = DAU_GCFTR_FAULT_WAVE_Msk | (i << DAU_GCFTR_PORT_Pos); *reg = DAU_GCFTR_FAULT_WAVE_Msk | (i << DAU_GCFTR_PORT_Pos);
@ -557,14 +528,13 @@ int32_t _dau_wave_col_defect(void)
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{ {
dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]); dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]);
vty_print(" %d %d ", dau_ctrl.reg_defect_max[i], dau_ctrl.reg_port_state.DAVR[i]); vty_print(" %d", dau_ctrl.reg_defect_max[i]);
if (dau_ctrl.reg_defect_max[i] > dev_config.defect_threshold) if (dau_ctrl.reg_port_state.DMAX[i] > dev_config.defect_threshold)
{ {
is_exceed = TRUE; is_exceed = TRUE;
} }
} }
vty_print("\r\n");
vty_print(" %d\r\n", is_exceed);
/* 没有超过阈值并没有强制录波直接返回 */ /* 没有超过阈值并没有强制录波直接返回 */
if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE)) if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
{ {
@ -829,8 +799,7 @@ int32_t _dau_wave_col_trigger_by_fault(void)
return HAL_OK; return HAL_OK;
} }
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!\r\n");
flash_log_write(FLASH_LOG_TYPE_WARNING, "Fhault triggering port %d!\r\n", dau_ctrl.fault_port);
/* 采集波形 */ /* 采集波形 */
E_RETURN(_dau_wave_col_fault()); E_RETURN(_dau_wave_col_fault());
@ -852,8 +821,8 @@ int32_t _dau_wave_col_trigger_by_fault(void)
{ {
common_watchdog_set(COM_WDG_DAU); common_watchdog_set(COM_WDG_DAU);
vty_print("FAULT %x %d\r\n", addr, i); vty_print("FAULT %x %d\r\n", addr, i);
//for(j = 0; j < DAU_PKT_FAULT_CNT; j++) for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
for(j = 0; j < 1; j++) //for(j = 0; j < 1; j++)
{ {
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024); spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_FAULT_BYTE_CNT; addr += DAU_PKT_FAULT_BYTE_CNT;
@ -939,35 +908,24 @@ int32_t _dau_wave_col_trigger_by_reg(void)
_dau_data_save(); _dau_data_save();
#if 0 #if 0
int16_t *buf = (int16_t*)(&dau_ctrl.buf_dau_rx[2]); uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint32_t addr = dau_ctrl.addr_reg; uint32_t addr = dau_ctrl.addr_reg;
uint32_t cnt = 0;
uint8_t i = 0; uint8_t i = 0;
uint8_t j = 0; uint8_t j = 0;
uint16_t k = 0; uint16_t k = 0;
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) //for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
//for(i = 0; i < 1; i++) for(i = 0; i < 1; i++)
{ {
common_watchdog_set(COM_WDG_DAU);
vty_print("DEFECT %x %d\r\n", addr, i); vty_print("DEFECT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++) for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
{ {
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024); spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_DEFECT_BYTE_CNT; addr += DAU_PKT_DEFECT_BYTE_CNT;
common_watchdog_set(COM_WDG_DAU); for(k = 0; k < 512;)
for(k = 0; k < 512; k++)
{
if (buf[k] > 0)
{
cnt++;
}
if (j != 0 || k >= 128)
{ {
continue; common_watchdog_set(COM_WDG_DAU);
} vty_print("%04x ", buf[k++]);
vty_print("%04d ", buf[k]);
if(0 == k % 32) if(0 == k % 32)
{ {
osDelay(100); osDelay(100);
@ -980,11 +938,10 @@ int32_t _dau_wave_col_trigger_by_reg(void)
vty_print("\r\n"); vty_print("\r\n");
} }
} }
vty_print("%d\r\n", cnt); vty_print("\r\n");
cnt = 0;
} }
#endif #endif
#if 0 #if 1
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]); uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint8_t i = 0; uint8_t i = 0;
uint8_t j = 0; uint8_t j = 0;
@ -1075,12 +1032,14 @@ static void _dau_init(void)
_dau_reg_write_port(i); _dau_reg_write_port(i);
} }
/* 故障触发配置 */ /* 触发阈值 */
_dau_reg_write_cfg(); //*temp = dev_config.fault_threshold * 32768 / dev_config.fault_adj[i];
*temp = 0x7fff;
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
osDelay(500); osDelay(500);
/* 开启 */ /* 开启 */
*temp = 1; *temp = 1 ;
_dau_reg_write(0x0209, sizeof(uint16_t)); _dau_reg_write(0xf, sizeof(uint16_t));
} }
} }
@ -1089,20 +1048,8 @@ static void _dau_init(void)
return: */ return: */
static void _dau_start(void *argument) static void _dau_start(void *argument)
{ {
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
/* 等待完成首次 ADC 采样 */
while(1)
{
if (IS_MONITOR_BIT_SET(system_init_flag, SYS_INIT_ADC))
{
break;
}
osDelay(200);
}
osDelay(2000);
/* 状态初始化 */ /* 状态初始化 */
_dau_init(); _dau_init();
vty_print("DAU start...\r\n"); vty_print("DAU start...\r\n");
@ -1146,14 +1093,12 @@ static void _dau_start(void *argument)
flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update %s!\r\n", dau_ctrl.update_rt == 1 ? "OK" : "ERROR"); flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update %s!\r\n", dau_ctrl.update_rt == 1 ? "OK" : "ERROR");
} }
/* FPGA 配置下发 */
if (IS_MONITOR_BIT_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE)) if (IS_MONITOR_BIT_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE))
{ {
MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE); MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
_dau_reg_write_cfg(); _dau_reg_write_port(dau_ctrl.reg_data);
} }
/* 命令行 FPGA 寄存器读写操作 */
if (1 == _dau_spi_rw) if (1 == _dau_spi_rw)
{ {
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX); dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
@ -1164,7 +1109,8 @@ static void _dau_start(void *argument)
else if(2 == _dau_spi_rw) else if(2 == _dau_spi_rw)
{ {
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX); dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
*temp = _dau_spi_len; uint16_t *data = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
*data = _dau_spi_len;
_dau_spi_rw = 0; _dau_spi_rw = 0;
_dau_reg_write(_dau_spi_addr, 2); _dau_reg_write(_dau_spi_addr, 2);
dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX); dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX);
@ -1207,66 +1153,15 @@ int32_t _dau_adj_reg_write_port(uint32_t port)
return: HAL_xxx */ return: HAL_xxx */
int32_t _dau_adj_wave_col_defect(void) int32_t _dau_adj_wave_col_defect(void)
{ {
uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
int16_t *data = (int16_t*)&dau_ctrl.buf_dau_rx[2];
uint8_t i = 0; uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
uint32_t mean = 0;
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
/* 比较缺陷波形是否超过阈值 */ /* 比较缺陷波形是否超过阈值 */
E_RETURN(_dau_reg_read_port_state()); E_RETURN(_dau_reg_read_port_state());
vty_print("#D defect max");
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{ {
dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]); dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]);
vty_print(" %d", dau_ctrl.reg_defect_max[i]);
vty_print(" %d ", dau_ctrl.reg_port_state.DAVR[i]);
} }
vty_print("\r\n");
/* 读取缺陷数据 */
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{
/* 请求读取缺陷波形 */
*reg = DAU_GCRTR_DEFECT_WAVE_Msk | (i << DAU_GCRTR_PORT_Pos);
E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCRTR, sizeof(uint16_t)));
/* 等待 DAU 准备缺陷数据 */
j = 0;
while(1)
{
if (j >= DAU_WAVE_WAIT_MAX)
{
DBG(DBG_M_DAU, "DAU defect wave err\r\n", rv);
return HAL_TIMEOUT;
}
osDelay(5);
E_RETURN(_dau_reg_read_global_state());
if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_DEFECT_WAVE_Msk) >> DAU_GRTR_DEFECT_WAVE_Pos)
{
break;
}
j++;
vty_print("#D reg d wait %d\r\n", j);
}
mean = 0;
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
{
E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_DEFECT_BYTE_CNT));
for(k = 0; k < 512; k++)
{
mean += abs(data[k]);
}
}
mean = mean / 20480;
dau_ctrl.reg_defect_max[i] = mean;
}
/* 直接返回 */ /* 直接返回 */
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
return HAL_OK; return HAL_OK;
@ -1338,6 +1233,10 @@ static void _dau_adj_start(void *argument)
dev_config.fault_base[i] = dau_ctrl.reg_port_state.FAVR[i]; dev_config.fault_base[i] = dau_ctrl.reg_port_state.FAVR[i];
} }
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{
_dau_reg_write_port(i);
}
/* 重启 FPGA 触发故障采集 */ /* 重启 FPGA 触发故障采集 */
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_RESET);
@ -1347,18 +1246,13 @@ static void _dau_adj_start(void *argument)
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET);
osDelay(2000); osDelay(2000);
for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
{
_dau_reg_write_port(i);
}
/* 触发阈值 */ /* 触发阈值 */
*temp = 0x1000; *temp = 0x2800;
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t)); _dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
/* 开启 */ /* 开启 */
osDelay(500); osDelay(500);
*temp = 1; *temp = 1;
_dau_reg_write(0x0209, sizeof(uint16_t)); _dau_reg_write(0xf, sizeof(uint16_t));
dau_adj_state = DAU_ADJ_STATE_NONE; dau_adj_state = DAU_ADJ_STATE_NONE;
} }
@ -1371,10 +1265,10 @@ static void _dau_adj_start(void *argument)
/* 读取最大值. */ /* 读取最大值. */
_dau_reg_read_port_state(); _dau_reg_read_port_state();
/* 关闭触发 */ /* 关闭 */
osDelay(500); osDelay(500);
*temp = 0; *temp = 0;
_dau_reg_write(0x0209, sizeof(uint16_t)); _dau_reg_write(0xf, sizeof(uint16_t));
dau_adj_state = DAU_ADJ_STATE_NONE; dau_adj_state = DAU_ADJ_STATE_NONE;
} }
@ -1386,40 +1280,6 @@ static void _dau_adj_start(void *argument)
} }
} }
/* description: 故障波形采集
param:
return: HAL_xxx */
int32_t _dau_continue_wave_col_fault(void)
{
uint8_t i = 0;
int32_t temp = 0;
int32_t rv = HAL_ERROR;
dau_ctrl.fault_utc = dau_ctrl.reg_global.GFTUR;
dau_ctrl.fault_ns = dau_ctrl.reg_global.GFTNR;
dau_ctrl.fault_utc_max = dau_ctrl.reg_global.GFMUR;
dau_ctrl.fault_ns_max = dau_ctrl.reg_global.GFMNR;
dau_ctrl.PPS_cnt = dau_ctrl.reg_global.GGPCR;
vty_print("#D utc %d.%d %d %d\r\n", dau_ctrl.fault_utc, dau_ctrl.fault_ns, dau_ctrl.PPS_cnt, dev_config.fault_time_adj);
dau_ctrl.fault_ns = (uint64_t)dau_ctrl.fault_ns * 100000000 / dau_ctrl.PPS_cnt;
vty_print(" #D %d ", dau_ctrl.fault_ns);
dau_ctrl.fault_ns += dev_config.fault_time_adj;
vty_print("%d\r\n", dau_ctrl.fault_ns);
/* 读取触发电流值 */
E_RETURN(_dau_reg_read_port_state());
/* 读取故障数据 */
for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
{
temp = dau_ctrl.reg_port_state.FMAX[i] - dev_config.fault_base[i];
dau_ctrl.fault_max[i] = dev_config.fault_adj[i] * temp / 32768 / 16 * 3;
vty_print("#DF %d %d %d\r\n", dau_ctrl.fault_max[i], dau_ctrl.reg_port_state.FMAX[i], temp);
}
return HAL_OK;
}
/* description: 故障触发波形采集 /* description: 故障触发波形采集
param: param:
return: HAL_xxx */ return: HAL_xxx */
@ -1434,10 +1294,71 @@ int32_t _dau_continue_wave_col_trigger_by_fault(void)
} }
/* 采集波形 */ /* 采集波形 */
E_RETURN(_dau_continue_wave_col_fault()); E_RETURN(_dau_wave_col_fault());
E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT)); E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT));
_dau_power_calculate(DAU_SOURCE_FAULT); _dau_power_calculate(DAU_SOURCE_FAULT);
#if 0
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
uint32_t 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++)
//for(j = 0; j < 1; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_FAULT_BYTE_CNT;
for(k = 0; k < 512;)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if(0 == k % 32)
{
osDelay(100);
vty_print("\r\n");
}
}
if(k % 32 != 0)
{
osDelay(100);
vty_print("\r\n");
}
}
vty_print("\r\n");
}
#endif
#if 0
uint16_t *buf = NULL;
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.fault_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{
for(k = 0; k < 512;)
{
vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40)
{
osDelay(100);
vty_print("\r\n");
}
}
buf += 512;
}
vty_print("\r\n");
}
#endif
return HAL_OK; return HAL_OK;
} }
@ -1446,7 +1367,6 @@ int32_t _dau_continue_wave_col_trigger_by_fault(void)
return: */ return: */
static void _dau_continue_start(void *argument) static void _dau_continue_start(void *argument)
{ {
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
/* 状态初始化 */ /* 状态初始化 */
@ -1496,24 +1416,7 @@ static void _dau_continue_start(void *argument)
if (IS_MONITOR_BIT_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE)) if (IS_MONITOR_BIT_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE))
{ {
MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE); MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
_dau_reg_write_cfg(); _dau_reg_write_port(dau_ctrl.reg_data);
}
/* 命令行 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);
} }
} }
} }
@ -1524,7 +1427,6 @@ static void _dau_continue_start(void *argument)
static int32_t _dau_gps_process(void) static int32_t _dau_gps_process(void)
{ {
char *pkt = (char*)dau_ctrl.buf_gps; char *pkt = (char*)dau_ctrl.buf_gps;
uint8_t GB_cnt = 0;
uint8_t n = 0; uint8_t n = 0;
uint16_t i = 0; uint16_t i = 0;
uint32_t hour = 0; uint32_t hour = 0;
@ -1544,14 +1446,6 @@ static int32_t _dau_gps_process(void)
continue; continue;
} }
/* 查找对时字符串 "$GNZDA" */
if (0 == strncmp(&pkt[i], "$GBGSV", 6))
{
i++;
GB_cnt++;
continue;
}
/* 查找对时字符串 "$GNZDA" */ /* 查找对时字符串 "$GNZDA" */
if (strncmp(&pkt[i], "$GNZDA", 6) != 0) if (strncmp(&pkt[i], "$GNZDA", 6) != 0)
{ {
@ -1581,7 +1475,6 @@ static int32_t _dau_gps_process(void)
dau_ctrl.utc = mktime(&_dau_tm); dau_ctrl.utc = mktime(&_dau_tm);
rtc_time_set(dau_ctrl.utc); rtc_time_set(dau_ctrl.utc);
dau_ctrl.GB_cnt = GB_cnt;
return HAL_OK; return HAL_OK;
} }
@ -1610,17 +1503,6 @@ static void _dau_gps_start(void *argument)
uint32_t notify_value = 0xff; uint32_t notify_value = 0xff;
uint32_t err_cnt = 5; uint32_t err_cnt = 5;
/* 等待完成首次 ADC 采样 */
while(1)
{
if (IS_MONITOR_BIT_SET(system_init_flag, SYS_INIT_ADC))
{
break;
}
osDelay(200);
}
osDelay(1000);
/* 状态初始化 */ /* 状态初始化 */
_dau_gps_init(); _dau_gps_init();
@ -1713,7 +1595,7 @@ void dau_show(void)
struct tm *day = NULL; struct tm *day = NULL;
uint32_t utc = dau_ctrl.utc; uint32_t utc = dau_ctrl.utc;
vty_print("state: %d GB: %d\r\n", dau_ctrl.is_utc_ok, dau_ctrl.GB_cnt); vty_print("state: %d\r\n", dau_ctrl.is_utc_ok);
if (dau_ctrl.is_utc_valid) if (dau_ctrl.is_utc_valid)
{ {
utc += 28800; utc += 28800;
@ -1723,46 +1605,6 @@ void dau_show(void)
} }
vty_print("\n"); vty_print("\n");
/* DAU 全局寄存器. */
vty_print("Global state reg\r\n");
vty_print("0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n");
vty_print("%04x %04x %04x %04x ", dau_ctrl.reg_global.GSCR, dau_ctrl.reg_global.GSVR, dau_ctrl.reg_global.GSR, dau_ctrl.reg_global.GFTR);
vty_print("%04x %04x ", dau_ctrl.reg_global.GFTUR & 0xffff, (dau_ctrl.reg_global.GFTUR >> 16) & 0xffff);
vty_print("%04x %04x ", dau_ctrl.reg_global.GFTNR & 0xffff, (dau_ctrl.reg_global.GFTNR >> 16) & 0xffff);
vty_print("%04x %04x ", dau_ctrl.reg_global.GRTR, dau_ctrl.reg_global.reserve);
vty_print("%04x %04x ", dau_ctrl.reg_global.GUR & 0xffff, (dau_ctrl.reg_global.GUR >> 16) & 0xffff);
vty_print("%04x %04x\r\n\n", dau_ctrl.reg_global.GNR & 0xffff, (dau_ctrl.reg_global.GNR >> 16) & 0xffff);
}
/* 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 ****************/ /******************* (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++) for(i = 0; i < DAU_PORT_DEFECT_MAX; i++)
{ {
dev_config.defect_base[i] = 2144; dev_config.defect_base[i] = 34297;
dev_config.defect_adj[i] = 8192; dev_config.defect_adj[i] = 32768;
} }
for(i = 0; i < DAU_PORT_FAULT_MAX; i++) for(i = 0; i < DAU_PORT_FAULT_MAX; i++)
{ {
dev_config.fault_base[i] = 29800; dev_config.fault_base[i] = 34530;
dev_config.fault_adj[i] = 30000; dev_config.fault_adj[i] = 32768;
} }
dev_config.vin_adj = DEV_VIN_ADJ_DEFAULT; dev_config.vin_adj = DEV_VIN_ADJ_DEFAULT;
@ -173,8 +173,6 @@ static HAL_StatusTypeDef _dev_config_default_set(void)
dev_config.fault_threshold = 2000; dev_config.fault_threshold = 2000;
dev_config.defect_threshold = 1000; dev_config.defect_threshold = 1000;
snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT"); 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; dev_config.magic_bak = INIT_DONE_MAGIC;
@ -599,7 +597,6 @@ void dev_config_defaults_set(void)
dev_config.fault_threshold = 2000; dev_config.fault_threshold = 2000;
dev_config.defect_threshold = 1000; dev_config.defect_threshold = 1000;
snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT"); snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT");
dev_config.fault_interval = 300;
_dev_config_save(CONFIG_ADDRESS); _dev_config_save(CONFIG_ADDRESS);
_dev_config_save(CONFIG_ADDRESS_BAK); _dev_config_save(CONFIG_ADDRESS_BAK);
@ -748,9 +745,16 @@ void dev_info_print(void)
vty_print("Copyright(c) 2019 WTOE. All rights reserved.\r\n"); 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("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("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("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("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("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("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("\r\nFireware size: %d | Spi fireware size: %d\r\n\n", dev_info.fireware_size, dev_info.spi_fireware_size); 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);
} }
/******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/ /******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

@ -53,11 +53,15 @@
#include "dau.h" #include "dau.h"
/* Private define ------------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/
#define WL_RX_TIMEOUT 500 // 每 500ms 检查一次收包数据 #define WL_RX_TIMEOUT 500 // 每 500ms 检查一次收包数据.
#define WL_USART_ERR_TIMEOUT 1000 // 串口发送错误延迟时间 #define WL_USART_ERR_TIMEOUT 1000 // 串口发送错误延迟时间.
#define WL_SOFT_INIT_ERR 5 // 软件初始化错误最大次数 #define WL_SOFT_INIT_ERR 5 // 软件初始化错误最大次数.
#define WL_DATA_ERR 3 // 数据发送错误最大次数 #define WL_DATA_ERR 3 // 数据发送错误最大次数.
#define WL_SLEEP_TIME 120 // 休眠时间 #define WL_PWR_FRE_CH_NUM 4 // 工频录波通道数.
#define WL_FLASH_BUF_SIZE 1024
#define WIR_RX_TIMEOUT 10000 // 有线模式每 10s 检查一次收包数据.
/* Private typedef -----------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/
/* 状态机状态. */ /* 状态机状态. */
@ -85,7 +89,6 @@ typedef enum
WL_STATE_UPDATE_RT, WL_STATE_UPDATE_RT,
WL_STATE_UPDATE_FPGA_RT, WL_STATE_UPDATE_FPGA_RT,
WL_STATE_KEEPALIVE, WL_STATE_KEEPALIVE,
WL_STATE_SLEEP,
WL_STATE_END = 255 WL_STATE_END = 255
} WL_STATE_E; } WL_STATE_E;
@ -131,8 +134,7 @@ typedef struct
uint16_t elec_defect_max[DAU_PORT_FAULT_MAX]; // 缺陷电流最大值 mA uint16_t elec_defect_max[DAU_PORT_FAULT_MAX]; // 缺陷电流最大值 mA
uint8_t valid_power; // 工频波形有效 uint8_t valid_power; // 工频波形有效
uint8_t valid_defect; // 缺陷波形有效 uint8_t valid_defect; // 缺陷波形有效
uint8_t energy_mode; // 节能模式 uint8_t reserve[2]; // 保留位
uint8_t GB_cnt; // 北斗数量
} wl_proto_realdata_t; } wl_proto_realdata_t;
/* 实时数据传输结构体. */ /* 实时数据传输结构体. */
@ -142,8 +144,6 @@ typedef struct
uint32_t ns; // 故障时间纳秒 uint32_t ns; // 故障时间纳秒
uint16_t fault_trig[DAU_PORT_FAULT_MAX];// 故障电流触发值 A uint16_t fault_trig[DAU_PORT_FAULT_MAX];// 故障电流触发值 A
uint32_t elec[DAU_PORT_POWER_CNT]; // 工频电流有效值 mA uint32_t elec[DAU_PORT_POWER_CNT]; // 工频电流有效值 mA
uint8_t port; // 触发端口
uint8_t reserve[3]; // 保留位
} wl_proto_realdata_fault_t; } wl_proto_realdata_fault_t;
typedef struct typedef struct
@ -153,17 +153,8 @@ typedef struct
uint16_t threshold_defect; uint16_t threshold_defect;
uint16_t threshold_fault; uint16_t threshold_fault;
uint16_t keepalive; uint16_t keepalive;
uint16_t interval_fault;
} wl_proto_config_t;
typedef struct
{
uint8_t server_ip[4];
uint16_t server_port;
uint8_t reserve[2]; uint8_t reserve[2];
char host[DEV_NAME_LEN]; } wl_proto_config_t;
char APN[DEV_APN_LEN];
} wl_proto_dev_t;
typedef struct typedef struct
{ {
@ -187,7 +178,6 @@ static RTC_TimeTypeDef wl_time;
static struct tm wl_tm; static struct tm wl_tm;
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
static void _wl_4G_send_dev_set(void);
static void _wl_4G_send_reset(void); static void _wl_4G_send_reset(void);
static void _wl_4G_send_update(void); static void _wl_4G_send_update(void);
static void _wl_4G_send_cfg_set(void); static void _wl_4G_send_cfg_set(void);
@ -468,12 +458,6 @@ static void _wl_4G_recv_contect(uint8_t *cmd, uint32_t len)
dev_config.keepalive = cfg->keepalive; 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) if (is_cfg_save)
{ {
common_sys_set(COM_SYS_SAVE_CONFIG, 0); common_sys_set(COM_SYS_SAVE_CONFIG, 0);
@ -486,24 +470,6 @@ static void _wl_4G_recv_contect(uint8_t *cmd, uint32_t len)
_wl_4G_pkt_id_update(); _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) static void _wl_4G_recv_reset(uint8_t *cmd, uint32_t len)
{ {
@ -628,15 +594,8 @@ static void _wl_4G_recv_cfg_set(uint8_t *cmd, uint32_t len)
dev_config.keepalive = cfg->keepalive; 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) if (is_cfg_save)
{ {
MONITOR_BITMAP_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
common_sys_set(COM_SYS_SAVE_CONFIG, 0); common_sys_set(COM_SYS_SAVE_CONFIG, 0);
} }
@ -706,7 +665,7 @@ static void _wl_4G_recv_realdata(void)
else else
{ {
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP); MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
wl_ctrl.state = WL_STATE_SLEEP; wl_ctrl.state = WL_STATE_END;
} }
wl_ctrl.time_send = 0; wl_ctrl.time_send = 0;
wl_ctrl.send_cnt = 0; wl_ctrl.send_cnt = 0;
@ -729,7 +688,7 @@ static void _wl_4G_recv_power(uint8_t *cmd, uint32_t len)
else else
{ {
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP); MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
wl_ctrl.state = WL_STATE_SLEEP; wl_ctrl.state = WL_STATE_END;
} }
wl_ctrl.mul_idx = 0; wl_ctrl.mul_idx = 0;
@ -761,7 +720,7 @@ static void _wl_4G_recv_defect(uint8_t *cmd, uint32_t len)
st_data.addr_reg = dau_ctrl.addr_reg; st_data.addr_reg = dau_ctrl.addr_reg;
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP); MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
wl_ctrl.state = WL_STATE_SLEEP; wl_ctrl.state = WL_STATE_END;
wl_ctrl.mul_idx = 0; wl_ctrl.mul_idx = 0;
} }
else else
@ -922,22 +881,6 @@ static void _wl_4G_recv_update_fpga_rt(void)
return; 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) static void _wl_4G_data_process(uint8_t *cmd, uint32_t len)
{ {
@ -988,9 +931,6 @@ static void _wl_4G_data_process(uint8_t *cmd, uint32_t len)
case DEBUG_C_CONTACT: case DEBUG_C_CONTACT:
_wl_4G_recv_contect(cmd, len); _wl_4G_recv_contect(cmd, len);
break; break;
case DEBUG_C_DEV_INFO_SET:
_wl_4G_recv_dev_set(cmd, len);
break;
case DEBUG_C_RESET: case DEBUG_C_RESET:
_wl_4G_recv_reset(cmd, len); _wl_4G_recv_reset(cmd, len);
break; break;
@ -1045,9 +985,6 @@ static void _wl_4G_data_process(uint8_t *cmd, uint32_t len)
case DEBUG_PRV_UPDATE_RT: case DEBUG_PRV_UPDATE_RT:
_wl_4G_recv_update_fpga_rt(); _wl_4G_recv_update_fpga_rt();
break; break;
case DEBUG_PRV_SLEEP:
_wl_4G_recv_sleep();
break;
default: default:
break; break;
} }
@ -1220,24 +1157,6 @@ 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) static void _wl_4G_send_reset(void)
{ {
@ -1354,35 +1273,6 @@ 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) static void _wl_4G_send_time(void)
{ {
@ -1415,7 +1305,6 @@ static void _wl_4G_send_realdata(void)
/* 装填数据. */ /* 装填数据. */
data->vbat = ADC_ctrl.ADCi_vbat; data->vbat = ADC_ctrl.ADCi_vbat;
data->vin = ADC_ctrl.ADCi_vin; data->vin = ADC_ctrl.ADCi_vin;
data->energy_mode = ADC_ctrl.energy_mode;
data->temperature = ADC_ctrl.ADCi_temp; data->temperature = ADC_ctrl.ADCi_temp;
data->CSQ = wl_ctrl.CSQ; data->CSQ = wl_ctrl.CSQ;
@ -1442,7 +1331,6 @@ 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_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->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); crc = (uint32_t*)(wl_ctrl.dma_tx_buf + head->len);
@ -1594,7 +1482,6 @@ static void _wl_4G_send_realdata_fault(void)
{ {
data->elec[i] = dau_ctrl.fault_elec[i]; data->elec[i] = dau_ctrl.fault_elec[i];
} }
data->port = dau_ctrl.fault_port;
/* 计算校验和. */ /* 计算校验和. */
crc = (uint32_t*)(wl_ctrl.dma_tx_buf + head->len); crc = (uint32_t*)(wl_ctrl.dma_tx_buf + head->len);
@ -1858,21 +1745,6 @@ void _wl_4G_send(void)
wl_ctrl.send_cnt++; wl_ctrl.send_cnt++;
break; 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 else
{ {
break; break;
@ -1992,11 +1864,11 @@ void _wl_4G_init_soft(void)
else if ((WL_STATE_AT_QIOPEN == wl_ctrl.state) && is_timeout) 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", //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.wireless_server_ip[0], dev_info.wireless_server_ip[1], dev_info.wireless_server_ip[2],
dev_info.server_ip[3], dev_info.server_port); // 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("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_4G_init_cmd_send(wl_ctrl.dma_tx_buf, 11000);
wl_ctrl.send_cnt++; wl_ctrl.send_cnt++;
} }
else if (WL_STATE_AT_COMP == wl_ctrl.state) else if (WL_STATE_AT_COMP == wl_ctrl.state)
@ -2029,26 +1901,6 @@ static void _wl_4G_hw_init(void)
HAL_GPIO_WritePin(G4G_RST_GPIO_Port, G4G_RST_Pin, GPIO_PIN_RESET); 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 模块硬件 */ /* 重启 4G 模块硬件 */
static void _wl_4G_hw_restart(void) static void _wl_4G_hw_restart(void)
{ {
@ -2059,10 +1911,10 @@ static void _wl_4G_hw_restart(void)
HAL_UART_Abort(wl_ctrl.uart); HAL_UART_Abort(wl_ctrl.uart);
HAL_UART_DeInit(wl_ctrl.uart); HAL_UART_DeInit(wl_ctrl.uart);
//if (wl_ctrl.err_cnt > 3) if (wl_ctrl.err_cnt > 3)
//{ {
// _wl_4G_hw_close(dev_config.collect_interval * 60); osDelay(600000);
//} }
/* 初始化软硬件 */ /* 初始化软硬件 */
osDelay(10000); osDelay(10000);
@ -2119,7 +1971,7 @@ static void _wl_4G_start(void *argument)
{ {
break; break;
} }
osDelay(200); osDelay(1000);
} }
/* 初始化 4G 模块硬件 */ /* 初始化 4G 模块硬件 */
@ -2149,7 +2001,7 @@ static void _wl_4G_start(void *argument)
else else
{ {
if (WL_STATE_UPDATE == wl_ctrl.state if (WL_STATE_UPDATE == wl_ctrl.state
&& HAL_GetTick() > wl_ctrl.time_update + 10000) && wl_ctrl.time_update + 10000 < HAL_GetTick())
{ {
/* 升级超时处理 10s */ /* 升级超时处理 10s */
wl_ctrl.mul_idx = 0; wl_ctrl.mul_idx = 0;
@ -2195,8 +2047,6 @@ void wl_init(void)
return: */ return: */
void wl_show(void) void wl_show(void)
{ {
vty_print("STA: %d\r\nErr: %d\r\n", wl_ctrl.state, wl_ctrl.send_cnt); vty_print("ST: %-03d %d\r\n\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 ****************/ /******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/

File diff suppressed because it is too large Load Diff

@ -21,7 +21,7 @@
<Checksum>1051652893</Checksum> <Checksum>1051652893</Checksum>
</DebugChecksum> </DebugChecksum>
<RecentFlashDownload> <RecentFlashDownload>
<Path>D:\Work\CablePositioning\reless\V1.4\FP_IAP_V1.4.out</Path> <Path>D:\Work\CablePositioning\Code\CablePositioningV1.0\CablePositioning_IAP_V1.0\EWARM\CableMonitor_V3.2\Exe\CableMonitor_V3.2.out</Path>
</RecentFlashDownload> </RecentFlashDownload>
<JLinkDriver> <JLinkDriver>
<CStepIntDis>_ 0</CStepIntDis> <CStepIntDis>_ 0</CStepIntDis>
@ -148,8 +148,7 @@
<mode>0</mode> <mode>0</mode>
</DisassembleMode> </DisassembleMode>
<Breakpoints2> <Breakpoints2>
<Bp0>_ 1 "EMUL_CODE" "{$PROJ_DIR$\..\Core\Src\RS485_debug.c}.1.1" 0 0 1 "" 0 "" 0</Bp0> <Count>0</Count>
<Count>1</Count>
</Breakpoints2> </Breakpoints2>
<Aliases> <Aliases>
<Count>0</Count> <Count>0</Count>

@ -86,16 +86,16 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus> <RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows> <MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay> <ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>580C00000E00598400000200000040E1000002000000108600001000000056840000030000005F860000080000000F810000010000000C810000FE0B000055840000030000000E810000080000000B810000150000000584000003000000468100000100000010840000230000000D81000007000000</CommandsUsage> <CommandsUsage>6F0B00000E0040E10000020000005984000002000000568400000200000010860000100000000F810000010000005F860000070000000C8100001E0B000055840000030000000E810000080000000B810000110000000584000003000000108400002000000046810000010000000D81000007000000</CommandsUsage>
</MFCToolBarParameters> </MFCToolBarParameters>
<CommandManager> <CommandManager>
<CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages> <CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages>
<MenuUserImages>3700048400004C000000268100002D000000048100001C0000002CE10000430000001581000025000000239200000000000007E100003B00000031840000530000000F81000023000000208100002B0000005F8600003400000004E10000390000000C8100002000000023E100003D0000000D8000001700000001E10000360000001982000015000000068400004E0000004A8100004700000016820000130000001781000027000000038400004B0000002BE1000042000000008400004800000014810000240000004492000010000000008100001900000030840000520000000E840000500000000E810000220000001F8100002A00000025E100003F0000002F820000160000001F9200000D00000003E10000380000000B8100001F00000022E100003C0000002D9200000F00000000E1000035000000D18400000C000000188200001400000041E1000045000000058400004D000000058100001D00000049810000460000001681000026000000028400004A00000032840000540000001084000051000000518400005600000005E100003A0000000D8100002100000002E10000370000000A8400004F0000002C9200000E000000</MenuUserImages> <MenuUserImages>3700048400004C00000015810000250000002CE1000043000000048100001C000000268100002D00000007E100003B0000002392000000000000318400005300000004E10000390000005F86000034000000208100002B0000000F8100002300000001E10000360000000D8000001700000023E100003D0000000C81000020000000068400004E00000019820000150000001781000027000000038400004B00000016820000130000004A81000047000000148100002400000000840000480000002BE100004200000000810000190000000E840000500000003084000052000000449200001000000003E10000380000001F9200000D0000002F8200001600000025E100003F0000001F8100002A0000000E8100002200000000E10000350000002D9200000F00000022E100003C0000000B8100001F00000041E1000045000000058400004D0000001882000014000000D18400000C0000001681000026000000028400004A0000004981000046000000058100001D0000001084000051000000328400005400000005E100003A000000518400005600000002E10000370000000A8400004F0000000D810000210000002C9200000E000000</MenuUserImages>
</CommandManager> </CommandManager>
<Pane-59393> <Pane-59393>
<ID>0</ID> <ID>0</ID>
<RectRecentFloat>0A0000000A0000006E0000006E000000</RectRecentFloat> <RectRecentFloat>0A0000000A0000006E0000006E000000</RectRecentFloat>
<RectRecentDocked>00000000060300000006000019030000</RectRecentDocked> <RectRecentDocked>00000000DE03000080070000F1030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -122,7 +122,7 @@
<Pane--1> <Pane--1>
<ID>4294967295</ID> <ID>4294967295</ID>
<RectRecentFloat>00000000D002000080070000F5030000</RectRecentFloat> <RectRecentFloat>00000000D002000080070000F5030000</RectRecentFloat>
<RectRecentDocked>00000000E10100000006000006030000</RectRecentDocked> <RectRecentDocked>00000000B902000080070000DE030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -135,7 +135,7 @@
<Pane-34052> <Pane-34052>
<ID>34052</ID> <ID>34052</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat> <RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000F9010000FC050000EC020000</RectRecentDocked> <RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -158,7 +158,7 @@
<Pane-34048> <Pane-34048>
<ID>34048</ID> <ID>34048</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat> <RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000F9010000FC050000EC020000</RectRecentDocked> <RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -171,7 +171,7 @@
<Pane-34056> <Pane-34056>
<ID>34056</ID> <ID>34056</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat> <RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked> <RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -193,7 +193,7 @@
<Pane-34057> <Pane-34057>
<ID>34057</ID> <ID>34057</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat> <RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked> <RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -215,7 +215,7 @@
<Pane-34058> <Pane-34058>
<ID>34058</ID> <ID>34058</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat> <RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked> <RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -238,7 +238,7 @@
<Pane-34059> <Pane-34059>
<ID>34059</ID> <ID>34059</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat> <RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked> <RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -260,7 +260,7 @@
<Pane-34062> <Pane-34062>
<ID>34062</ID> <ID>34062</ID>
<RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat> <RectRecentFloat>000000001700000022010000C8000000</RectRecentFloat>
<RectRecentDocked>04000000F90100007C070000EC020000</RectRecentDocked> <RectRecentDocked>04000000D10200007C070000C4030000</RectRecentDocked>
<RecentFrameAlignment>32768</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -349,7 +349,7 @@
<Pane-34063> <Pane-34063>
<ID>34063</ID> <ID>34063</ID>
<RectRecentFloat>00000000170000000601000078010000</RectRecentFloat> <RectRecentFloat>00000000170000000601000078010000</RectRecentFloat>
<RectRecentDocked>0000000032000000A8010000DD010000</RectRecentDocked> <RectRecentDocked>0000000032000000A8010000B5020000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>4096</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
@ -360,7 +360,7 @@
<IsVisible>1</IsVisible> <IsVisible>1</IsVisible>
</BasePane-34063> </BasePane-34063>
<DockingManager-256> <DockingManager-256>
<DockingPaneAndPaneDividers>0000000010000000000000000010000001000000FFFFFFFFFFFFFFFFA801000032000000AC010000DD010000010000000200001004000000010000002CFFFFFF0C0600000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF00000000DD01000000060000E10100000100000001000010040000000100000009FEFFFF72010000FFFFFFFF0700000008850000098500000A8500000B8500000E8500000485000000850000FFFF02000B004354616262656450616E65008000000100000000000000D002000080070000F503000000000000E10100000006000006030000000000004080005607000000FFFEFF0C4400650063006C00610072006100740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400010000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000085000001000000FFFFFFFFFFFFFFFF05000000000000000000000000000000000000000000000001000000FFFFFFFF0885000001000000FFFFFFFF08850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000000000000000000</DockingPaneAndPaneDividers> <DockingPaneAndPaneDividers>0000000010000000000000000010000001000000FFFFFFFFFFFFFFFFA801000032000000AC010000B5020000010000000200001004000000010000002CFFFFFF0C0600000F85000000000000000000000000000000000000010000000F850000010000000F850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000D85000000000000000000000000000000000000010000000D850000010000000D850000000000000080000000000000FFFFFFFFFFFFFFFF000000000000000004000000040000000000000001000000040000000100000000000000000000000C85000000000000000000000000000000000000010000000C850000010000000C850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000078500000000000000000000000000000000000001000000078500000100000007850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000068500000000000000000000000000000000000001000000068500000100000006850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000058500000000000000000000000000000000000001000000058500000100000005850000000000000080000001000000FFFFFFFFFFFFFFFF00000000B502000080070000B90200000100000001000010040000000100000009FEFFFF72010000FFFFFFFF0700000008850000098500000A8500000B8500000E8500000485000000850000FFFF02000B004354616262656450616E65008000000100000000000000D002000080070000F503000000000000B902000080070000DE030000000000004080005607000000FFFEFF0C4400650063006C00610072006100740069006F006E007300000000000885000001000000FFFFFFFFFFFFFFFFFFFEFF0A5200650066006500720065006E00630065007300000000000985000001000000FFFFFFFFFFFFFFFFFFFEFF0D460069006E006400200069006E002000460069006C0065007300000000000A85000001000000FFFFFFFFFFFFFFFFFFFEFF1541006D0062006900670075006F0075007300200044006500660069006E006900740069006F006E007300000000000B85000001000000FFFFFFFFFFFFFFFFFFFEFF0B54006F006F006C0020004F0075007400700075007400000000000E85000001000000FFFFFFFFFFFFFFFFFFFEFF054200750069006C006400010000000485000001000000FFFFFFFFFFFFFFFFFFFEFF094400650062007500670020004C006F006700010000000085000001000000FFFFFFFFFFFFFFFF05000000000000000000000000000000000000000000000001000000FFFFFFFF0885000001000000FFFFFFFF08850000000000000080000000000000FFFFFFFFFFFFFFFF00000000000000000400000004000000000000000100000004000000010000000000000000000000038500000000000000000000000000000000000001000000038500000100000003850000000000000000000000000000</DockingPaneAndPaneDividers>
</DockingManager-256> </DockingManager-256>
<MFCToolBar-34049> <MFCToolBar-34049>
<Name>CMSIS-Pack</Name> <Name>CMSIS-Pack</Name>
@ -381,7 +381,7 @@
</BasePane-34049> </BasePane-34049>
<MFCToolBar-34050> <MFCToolBar-34050>
<Name>Main</Name> <Name>Main</Name>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000035000000FFFEFF000000000000000000000000000100000001000000018001E100000000000036000000FFFEFF000000000000000000000000000100000001000000018003E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180008100000000000019000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018022E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018025E10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040042000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040043000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002C000000FFFEFF000000000000000000000000000100000001000000018024E10000000004003E000000FFFEFF000000000000000000000000000100000001000000018028E100000000040040000000FFFEFF000000000000000000000000000100000001000000018029E100000000040041000000FFFEFF000000000000000000000000000100000001000000018002810000000004001B000000FFFEFF0000000000000000000000000001000000010000000180298100000000040030000000FFFEFF000000000000000000000000000100000001000000018027810000000004002E000000FFFEFF000000000000000000000000000100000001000000018028810000000004002F000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040028000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040029000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000004001F000000FFFEFF00000000000000000000000000010000000100000001800D8100000000020021000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000034000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000000022000000FFFEFF00000000000000000000000000010000000100000001800F8100000000000023000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons> <Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000035000000FFFEFF000000000000000000000000000100000001000000018001E100000000000036000000FFFEFF000000000000000000000000000100000001000000018003E100000000040038000000FFFEFF0000000000000000000000000001000000010000000180008100000000000019000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000004003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018022E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018025E10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040042000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040043000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000400FFFFFFFFFFFEFF0000000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002C000000FFFEFF000000000000000000000000000100000001000000018024E10000000004003E000000FFFEFF000000000000000000000000000100000001000000018028E100000000040040000000FFFEFF000000000000000000000000000100000001000000018029E100000000040041000000FFFEFF000000000000000000000000000100000001000000018002810000000004001B000000FFFEFF0000000000000000000000000001000000010000000180298100000000040030000000FFFEFF000000000000000000000000000100000001000000018027810000000004002E000000FFFEFF000000000000000000000000000100000001000000018028810000000004002F000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040028000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040029000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000004001F000000FFFEFF00000000000000000000000000010000000100000001800D8100000000020021000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000034000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000000022000000FFFEFF00000000000000000000000000010000000100000001800F8100000000000023000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
</MFCToolBar-34050> </MFCToolBar-34050>
<Pane-34050> <Pane-34050>
<ID>34050</ID> <ID>34050</ID>
@ -419,7 +419,7 @@
</ChildIdMap> </ChildIdMap>
<MDIWindows> <MDIWindows>
<MDIClientArea-0> <MDIClientArea-0>
<MDITabsState>010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000001000000020000000100000001000000FFFEFF202400570053005F0044004900520024005C002E002E005C0043006F00720065005C005300720063005C0066006C006100730068005F006C006F0067002E00630001000000FFFF010014004966436F6E74656E7453746F72616765496D706CFFFEFF00FFFEFFFF22013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E003200360036003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0B66006C006100730068005F006C006F0067002E00630000000000FFFFFFFFFFFFFFFFFFFEFF222400570053005F0044004900520024005C002E002E005C0043006F00720065005C005300720063005C00520053003400380035005F00640065006200750067002E006300010000000180FFFEFF00FFFEFFFF2B013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E0031003900330031003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E00350038003800320030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E00350038003800320030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0D520053003400380035005F00640065006200750067002E00630000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000100000002000000AC0100004900000000060000F4010000</MDITabsState> <MDITabsState>010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000000000000</MDITabsState>
</MDIClientArea-0> </MDIClientArea-0>
</MDIWindows> </MDIWindows>
</WindowStorage> </WindowStorage>

File diff suppressed because one or more lines are too long

@ -11,27 +11,26 @@ Mcu.IP0=NVIC
Mcu.IP1=RCC Mcu.IP1=RCC
Mcu.IP2=SPI3 Mcu.IP2=SPI3
Mcu.IP3=SYS Mcu.IP3=SYS
Mcu.IP4=USART1 Mcu.IP4=UART4
Mcu.IPNb=5 Mcu.IPNb=5
Mcu.Name=STM32L496Z(E-G)Tx Mcu.Name=STM32L496Z(E-G)Tx
Mcu.Package=LQFP144 Mcu.Package=LQFP144
Mcu.Pin0=PE3 Mcu.Pin0=PC14-OSC32_IN (PC14)
Mcu.Pin1=PC14-OSC32_IN (PC14) Mcu.Pin1=PF0
Mcu.Pin10=PC10 Mcu.Pin10=PC11
Mcu.Pin11=PC11 Mcu.Pin11=PC12
Mcu.Pin12=PC12 Mcu.Pin12=PG13
Mcu.Pin13=PG13 Mcu.Pin13=PG14
Mcu.Pin14=PG14 Mcu.Pin14=VP_SYS_VS_Systick
Mcu.Pin15=VP_SYS_VS_Systick Mcu.Pin2=PH0-OSC_IN (PH0)
Mcu.Pin2=PF0 Mcu.Pin3=PH1-OSC_OUT (PH1)
Mcu.Pin3=PH0-OSC_IN (PH0) Mcu.Pin4=PA0
Mcu.Pin4=PH1-OSC_OUT (PH1) Mcu.Pin5=PA1
Mcu.Pin5=PG4 Mcu.Pin6=PG4
Mcu.Pin6=PA9 Mcu.Pin7=PA13 (JTMS/SWDIO)
Mcu.Pin7=PA10 Mcu.Pin8=PA14 (JTCK/SWCLK)
Mcu.Pin8=PA13 (JTMS/SWDIO) Mcu.Pin9=PC10
Mcu.Pin9=PA14 (JTCK/SWCLK) Mcu.PinsNb=15
Mcu.PinsNb=16
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32L496ZGTx Mcu.UserName=STM32L496ZGTx
@ -48,14 +47,16 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 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.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA10.Mode=Asynchronous PA0.Locked=true
PA10.Signal=USART1_RX PA0.Mode=Asynchronous
PA0.Signal=UART4_TX
PA1.Locked=true
PA1.Mode=Asynchronous
PA1.Signal=UART4_RX
PA13\ (JTMS/SWDIO).Mode=Serial_Wire PA13\ (JTMS/SWDIO).Mode=Serial_Wire
PA13\ (JTMS/SWDIO).Signal=SYS_JTMS-SWDIO PA13\ (JTMS/SWDIO).Signal=SYS_JTMS-SWDIO
PA14\ (JTCK/SWCLK).Mode=Serial_Wire PA14\ (JTCK/SWCLK).Mode=Serial_Wire
PA14\ (JTCK/SWCLK).Signal=SYS_JTCK-SWCLK PA14\ (JTCK/SWCLK).Signal=SYS_JTCK-SWCLK
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
PC10.Locked=true PC10.Locked=true
PC10.Mode=Full_Duplex_Master PC10.Mode=Full_Duplex_Master
PC10.Signal=SPI3_SCK PC10.Signal=SPI3_SCK
@ -67,11 +68,6 @@ PC12.Mode=Full_Duplex_Master
PC12.Signal=SPI3_MOSI PC12.Signal=SPI3_MOSI
PC14-OSC32_IN\ (PC14).Mode=LSE-External-Clock-Source PC14-OSC32_IN\ (PC14).Mode=LSE-External-Clock-Source
PC14-OSC32_IN\ (PC14).Signal=RCC_OSC32_IN 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.GPIOParameters=GPIO_Label
PF0.GPIO_Label=WDG PF0.GPIO_Label=WDG
PF0.Locked=true PF0.Locked=true
@ -195,8 +191,6 @@ SPI3.Direction=SPI_DIRECTION_2LINES
SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase
SPI3.Mode=SPI_MODE_MASTER SPI3.Mode=SPI_MODE_MASTER
SPI3.VirtualType=VM_MASTER SPI3.VirtualType=VM_MASTER
USART1.IPParameters=VirtualMode-Asynchronous
USART1.VirtualMode-Asynchronous=VM_ASYNC
VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick VP_SYS_VS_Systick.Signal=SYS_VS_Systick
board=custom 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> <LeaveTargetRunning>_ 0</LeaveTargetRunning>
</JLinkDriver> </JLinkDriver>
<DebugChecksum> <DebugChecksum>
<Checksum>3054662682</Checksum> <Checksum>572784430</Checksum>
</DebugChecksum> </DebugChecksum>
<RecentFlashDownload> <RecentFlashDownload>
<Path>D:\Work\CablePositioning\reless\V1.4\FP_IAP_V1.4.out</Path> <Path>D:\Work\CablePositioning\Code\CablePositioningV1.0\CablePositioning_APP_V1.0\EWARM\CableMonitor_APP_V3.2\Exe\CableMonitor_APP_V3.2.out</Path>
</RecentFlashDownload> </RecentFlashDownload>
<Exceptions> <Exceptions>
<StopOnUncaught>_ 0</StopOnUncaught> <StopOnUncaught>_ 0</StopOnUncaught>

File diff suppressed because one or more lines are too long

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

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

@ -398,12 +398,11 @@ static HAL_StatusTypeDef _dev_info_default_set(void)
memcpy(&dev_info.ip[1], &dev_info.mac[3], 3); memcpy(&dev_info.ip[1], &dev_info.mac[3], 3);
dev_info.ip_mask[0] = 255; dev_info.ip_mask[0] = 255;
dev_info.ip_gw[0] = 10; dev_info.ip_gw[3] = 1; 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[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_ip[2] = 21;dev_info.wireless_server_ip[3] = 141;
dev_info.wireless_server_port = 8809; dev_info.wireless_server_port = 9456;
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, 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); VERSION_MAJOR, VERSION_MINOR);

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

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

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

Loading…
Cancel
Save