|  |  | @ -49,9 +49,10 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | #include "flash_log.h" |  |  |  | #include "flash_log.h" | 
			
		
	
		
		
			
				
					
					|  |  |  | #include "ADC_collect.h" |  |  |  | #include "ADC_collect.h" | 
			
		
	
		
		
			
				
					
					|  |  |  | #include "dau.h" |  |  |  | #include "dau.h" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #include "wireless.h" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* Private define ------------------------------------------------------------*/ |  |  |  | /* Private define ------------------------------------------------------------*/ | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_WAVE_WAIT_MAX 5                     // DAU 波形等待次数
 |  |  |  | #define DAU_WAVE_WAIT_MAX 3                     // DAU 波形等待次数
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* 全局状态寄存器地址 -------------------------------- */ |  |  |  | /* 全局状态寄存器地址 -------------------------------- */ | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_REG_ADDR_GSCR       0x0000          // 全局状态寄存器 - 软件特征寄存器
 |  |  |  | #define DAU_REG_ADDR_GSCR       0x0000          // 全局状态寄存器 - 软件特征寄存器
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -87,9 +88,13 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_GRTR_COMPLETE_Msk       (0x1 << DAU_GRTR_COMPLETE_Pos)      /*!< 0x0001 */ |  |  |  | #define DAU_GRTR_COMPLETE_Msk       (0x1 << DAU_GRTR_COMPLETE_Pos)      /*!< 0x0001 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* 全局控制寄存器地址 -------------------------------- */ |  |  |  | /* 全局控制寄存器地址 -------------------------------- */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #define DAU_REG_ADDR_GFWSR      0x0200          // 全局控制寄存器 - Flash 写选择寄存器
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #define DAU_REG_ADDR_GSUPR      0x0202          // 全局控制寄存器 - 固件升级页寄存器
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_REG_ADDR_GCFTR      0x0203          // 全局控制寄存器 - 故障触发录波控制寄存器
 |  |  |  | #define DAU_REG_ADDR_GCFTR      0x0203          // 全局控制寄存器 - 故障触发录波控制寄存器
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_REG_ADDR_GCRTR      0x0204          // 全局控制寄存器 - 寄存器触发录波控制寄存器
 |  |  |  | #define DAU_REG_ADDR_GCRTR      0x0204          // 全局控制寄存器 - 寄存器触发录波控制寄存器
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_REG_ADDR_GCUR       0x0205          // 全局控制寄存器 - UTC 配置寄存器
 |  |  |  | #define DAU_REG_ADDR_GCUR       0x0205          // 全局控制寄存器 - UTC 配置寄存器
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #define DAU_REG_ADDR_GSUDR      0x0e00          // 全局控制寄存器 - 固件升级数据寄存器
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* 全局控制寄存器 - 故障触发录波控制寄存器 bit mask */ |  |  |  | /* 全局控制寄存器 - 故障触发录波控制寄存器 bit mask */ | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_GCFTR_PORT_Pos          (4)     // 故障触发波形端口
 |  |  |  | #define DAU_GCFTR_PORT_Pos          (4)     // 故障触发波形端口
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -113,9 +118,7 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* 通道状态寄存器地址 -------------------------------- */ |  |  |  | /* 通道状态寄存器地址 -------------------------------- */ | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_REG_ADDR_PMSR       0x0300          // 通道状态寄存器 - 缺陷电流通道周波原始采样值的平均值寄存器
 |  |  |  | #define DAU_REG_ADDR_PMSR       0x0300          // 通道状态寄存器 - 缺陷电流通道周波原始采样值的平均值寄存器
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_REG_ADDR_PPWR       0x03b0          // 通道状态寄存器 - 工频电流通道录波数据寄存器
 |  |  |  | #define DAU_REG_ADDR_PPWR       0x03b0          // 通道状态寄存器 - 通道录波数据寄存器
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_REG_ADDR_PDWR       0x03c0          // 通道状态寄存器 - 缺陷电流通道录波数据寄存器
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_REG_ADDR_PFWR       0x03d0          // 通道状态寄存器 - 故障电流通道录波数据寄存器
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #define DAU_ID 0x0702                         // DAU 软件识别码
 |  |  |  | #define DAU_ID 0x0702                         // DAU 软件识别码
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -148,6 +151,9 @@ const osThreadAttr_t dau_gps_attributes = | 
			
		
	
		
		
			
				
					
					|  |  |  | /* DAU 全局结构体 */ |  |  |  | /* DAU 全局结构体 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | dau_ctrl_t dau_ctrl; |  |  |  | dau_ctrl_t dau_ctrl; | 
			
		
	
		
		
			
				
					
					|  |  |  | static struct tm _dau_tm; |  |  |  | static struct tm _dau_tm; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | int8_t _dau_spi_rw; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | uint16_t _dau_spi_addr; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | uint16_t _dau_spi_len; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* Private function prototypes -----------------------------------------------*/ |  |  |  | /* Private function prototypes -----------------------------------------------*/ | 
			
		
	
		
		
			
				
					
					|  |  |  | /* Internal functions --------------------------------------------------------*/ |  |  |  | /* Internal functions --------------------------------------------------------*/ | 
			
		
	
	
		
		
			
				
					|  |  | @ -172,7 +178,7 @@ int32_t _dau_reg_write(uint16_t addr, uint16_t len) | 
			
		
	
		
		
			
				
					
					|  |  |  |     DBG(DBG_M_DAU_TXRX, "DAU write send(%d):\r\n", len); |  |  |  |     DBG(DBG_M_DAU_TXRX, "DAU write send(%d):\r\n", len); | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (dbg_stat_get(DBG_M_DAU_TXRX)) |  |  |  |     if (dbg_stat_get(DBG_M_DAU_TXRX)) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |         buf_print(pkt_tx, len > 16 ? 16 : len); |  |  |  |         buf_print(pkt_tx, len > 32 ? 32 : len); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* 发送数据. */ |  |  |  |     /* 发送数据. */ | 
			
		
	
	
		
		
			
				
					|  |  | @ -243,7 +249,7 @@ int32_t _dau_reg_read(uint16_t addr, uint16_t len) | 
			
		
	
		
		
			
				
					
					|  |  |  |     DBG(DBG_M_DAU_TXRX, "DAU read recv(%d):\r\n", len); |  |  |  |     DBG(DBG_M_DAU_TXRX, "DAU read recv(%d):\r\n", len); | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (dbg_stat_get(DBG_M_DAU_TXRX)) |  |  |  |     if (dbg_stat_get(DBG_M_DAU_TXRX)) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |         buf_print(pkt_rx + 2, len > 16 ? 16 : len); |  |  |  |         buf_print(pkt_rx + 2, len > 32 ? 32 : len); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         vty_print("\r\n"); |  |  |  |         vty_print("\r\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -319,6 +325,90 @@ static void _dau_data_save(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     fd_write(&fd_data); |  |  |  |     fd_write(&fd_data); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | /* description: DAU UTC 对时处理
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    param: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    return: */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | int32_t _dau_update(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint8_t *data = (uint8_t*)&dau_ctrl.buf_dau_tx[2]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint16_t cnt = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint16_t page_cnt = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     //uint32_t app_len = wl_ctrl.app_len;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint32_t app_len = 2097378; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint32_t len = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint32_t addr = TFTP_APP_ADDRESS; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     int32_t rv = HAL_ERROR; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     /* 初始化状态. */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     dau_ctrl.update_rt = DAU_UPD_NONE; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     /* 发送升级数据 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     while(1) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 组装数据报文, 报文头是大端模式 DAU_REG_ADDR_GSUDR */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         len = app_len < 1024 ? app_len : 1024; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (0 == len) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             /* 无数据, 直接结束 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 读取固件数据 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         E_RETURN(spi_flash_read(addr, data, 1024)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 先发送数据报文, 0x0e00 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         E_RETURN(_dau_reg_write(DAU_REG_ADDR_GSUDR, 1024)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 再发送页报文, 0x0202 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         *reg = page_cnt; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         E_RETURN(_dau_reg_write(DAU_REG_ADDR_GSUPR, 2)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 向 0x0200 写 1, 表示固件升级 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         *reg = 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         E_RETURN(_dau_reg_write(DAU_REG_ADDR_GFWSR, sizeof(uint16_t))); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 等待 spi flash 完成, 0x0002 bit2 为高 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         cnt = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         while(1) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             osDelay(500); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             cnt++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (cnt > 3) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 DBG(DBG_M_DAU, "DAU update timeout\r\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 return HAL_TIMEOUT; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             /* 读取 spi flash 状态 DAU_REG_ADDR_GSR */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             E_RETURN(_dau_reg_read_global_state()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             /* 0 - 空闲, 1 - 忙 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (!((dau_ctrl.reg_global.GSR & DAU_GSR_FLASH_Msk) >> DAU_GSR_FLASH_Pos)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 结束直接返回 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (len < 1024) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 更新参数 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         app_len -= len; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         page_cnt++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         addr += 1024; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |          | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     /* 向 DAU_REG_ADDR_GFWSR 写 0, 回复标志 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     *reg = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     E_RETURN(_dau_reg_write(DAU_REG_ADDR_GFWSR, sizeof(uint16_t))); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return HAL_OK; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* description: DAU UTC 对时处理
 |  |  |  | /* description: DAU UTC 对时处理
 | 
			
		
	
		
		
			
				
					
					|  |  |  |    param: |  |  |  |    param: | 
			
		
	
		
		
			
				
					
					|  |  |  |    return: */ |  |  |  |    return: */ | 
			
		
	
	
		
		
			
				
					|  |  | @ -327,12 +417,14 @@ void _dau_utc(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2]; |  |  |  |     uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* dau 主循环大概 250ms 运行一次, 在第 3 次循环 (500 ~ 750ms) 对时, 此时 GPS 对时一定是可用的 */ |  |  |  |     /* dau 主循环大概 250ms 运行一次, 在第 3 次循环 (500 ~ 750ms) 对时, 此时 GPS 对时一定是可用的 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (500000000 < dau_ctrl.reg_global.GNR && dau_ctrl.reg_global.GNR <= 750000000 |  |  |  |     if (50000000 < dau_ctrl.reg_global.GNR && dau_ctrl.reg_global.GNR <= 75000000 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         && dau_ctrl.is_utc_valid |  |  |  |         && dau_ctrl.is_utc_valid | 
			
		
	
		
		
			
				
					
					|  |  |  |         && dau_ctrl.reg_global.GUR != dau_ctrl.utc) |  |  |  |         && dau_ctrl.reg_global.GUR != dau_ctrl.utc) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |         *utc = dau_ctrl.utc; |  |  |  |         *utc = dau_ctrl.utc; | 
			
		
	
		
		
			
				
					
					|  |  |  |         _dau_reg_write(DAU_REG_ADDR_GCUR, sizeof(uint32_t)); |  |  |  |         _dau_reg_write(DAU_REG_ADDR_GCUR, sizeof(uint32_t)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         vty_print("Change\r\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         vty_print("%d %d %d %d\r\n", dau_ctrl.reg_global.GUR, dau_ctrl.reg_global.GNR, dau_ctrl.is_utc_valid, dau_ctrl.utc); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -357,7 +449,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(100); |  |  |  |         osDelay(3000); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |          |  |  |  |          | 
			
		
	
		
		
			
				
					
					|  |  |  |         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) | 
			
		
	
	
		
		
			
				
					|  |  | @ -366,6 +458,7 @@ int32_t _dau_wave_col_start(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         i++; |  |  |  |         i++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         vty_print("#D5 %d\r\n", i); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  |      | 
			
		
	
		
		
			
				
					
					|  |  |  |     return rv; |  |  |  |     return rv; | 
			
		
	
	
		
		
			
				
					|  |  | @ -397,6 +490,7 @@ int32_t _dau_wave_col_fault(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |         E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCFTR, sizeof(uint16_t))); |  |  |  |         E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCFTR, sizeof(uint16_t))); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 等待 DAU 准备故障数据 */ |  |  |  |         /* 等待 DAU 准备故障数据 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         j = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |         while(1) |  |  |  |         while(1) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (j >= DAU_WAVE_WAIT_MAX) |  |  |  |             if (j >= DAU_WAVE_WAIT_MAX) | 
			
		
	
	
		
		
			
				
					|  |  | @ -453,7 +547,6 @@ int32_t _dau_wave_col_fault(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |    return: HAL_xxx */ |  |  |  |    return: HAL_xxx */ | 
			
		
	
		
		
			
				
					
					|  |  |  | int32_t _dau_wave_col_defect(void) |  |  |  | int32_t _dau_wave_col_defect(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  | #if 0 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; |  |  |  |     uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t i = 0; |  |  |  |     uint8_t i = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t j = 0; |  |  |  |     uint8_t j = 0; | 
			
		
	
	
		
		
			
				
					|  |  | @ -468,19 +561,19 @@ int32_t _dau_wave_col_defect(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |         dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.MAX[i]; |  |  |  |         dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.MAX[i]; | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (dau_ctrl.reg_port_state.MAX[i] > dev_config.wave_threshold) |  |  |  |         if (dau_ctrl.reg_port_state.MAX[i] > dev_config.wave_threshold) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             is_exceed = TRUE; |  |  |  |             is_exceed = TRUE; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* 没有超过阈值直接返回 */ |  |  |  |     /* 没有超过阈值并没有强制录波直接返回 */ | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     if (is_exceed) |  |  |  |     //if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     //{
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); |  |  |  |     //    MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         return rv; |  |  |  |     //    return HAL_OK;
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     //}
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* 擦除 flash */ |  |  |  |     /* 擦除 flash */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     addr = dau_ctrl.addr_reg; |  |  |  |     addr = dau_ctrl.addr_reg; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     vty_print("#D3 %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,6 +590,7 @@ int32_t _dau_wave_col_defect(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |         E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCRTR, sizeof(uint16_t))); |  |  |  |         E_RETURN(_dau_reg_write(DAU_REG_ADDR_GCRTR, sizeof(uint16_t))); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 等待 DAU 准备缺陷数据 */ |  |  |  |         /* 等待 DAU 准备缺陷数据 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         j = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |         while(1) |  |  |  |         while(1) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (j >= DAU_WAVE_WAIT_MAX) |  |  |  |             if (j >= DAU_WAVE_WAIT_MAX) | 
			
		
	
	
		
		
			
				
					|  |  | @ -504,7 +598,7 @@ int32_t _dau_wave_col_defect(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 DBG(DBG_M_DAU, "DAU defect wave err\r\n", rv); |  |  |  |                 DBG(DBG_M_DAU, "DAU defect wave err\r\n", rv); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 return HAL_TIMEOUT; |  |  |  |                 return HAL_TIMEOUT; | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |             osDelay(10); |  |  |  |             osDelay(5); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |              |  |  |  |              | 
			
		
	
		
		
			
				
					
					|  |  |  |             E_RETURN(_dau_reg_read_global_state()); |  |  |  |             E_RETURN(_dau_reg_read_global_state()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_DEFECT_WAVE_Msk) >> DAU_GRTR_DEFECT_WAVE_Pos) |  |  |  |             if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_DEFECT_WAVE_Msk) >> DAU_GRTR_DEFECT_WAVE_Pos) | 
			
		
	
	
		
		
			
				
					|  |  | @ -513,18 +607,25 @@ int32_t _dau_wave_col_defect(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |              |  |  |  |              | 
			
		
	
		
		
			
				
					
					|  |  |  |             j++; |  |  |  |             j++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             vty_print("#D6 %d\r\n", j); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  |      | 
			
		
	
		
		
			
				
					
					|  |  |  |         for(j = 0; j < DAU_PKT_DEFECT_CNT; j++) |  |  |  |         for(j = 0; j < DAU_PKT_DEFECT_CNT; j++) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             E_RETURN(_dau_reg_read(DAU_REG_ADDR_PDWR + i, DAU_PKT_DEFECT_BYTE_CNT)); |  |  |  |             vty_print("%d %d\r\n", i, j); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_DEFECT_BYTE_CNT)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             osDelay(200); | 
			
		
	
		
		
			
				
					
					|  |  |  |             E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_DEFECT_BYTE_CNT)); |  |  |  |             E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_DEFECT_BYTE_CNT)); | 
			
		
	
		
		
			
				
					
					|  |  |  |             addr += DAU_PKT_DEFECT_BYTE_CNT; |  |  |  |             addr += DAU_PKT_DEFECT_BYTE_CNT; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         vty_print("DE%d\r\n", i); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     vty_print("#D4 %x\r\n", addr); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); | 
			
		
	
		
		
			
				
					
					|  |  |  |     return rv; |  |  |  |     return rv; | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #if 0 | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t i = 0; |  |  |  |     uint8_t i = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t j = 0; |  |  |  |     uint8_t j = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t is_exceed = FALSE; |  |  |  |     uint8_t is_exceed = FALSE; | 
			
		
	
	
		
		
			
				
					|  |  | @ -573,6 +674,7 @@ int32_t _dau_wave_col_defect(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     vty_print("#D4 %x\r\n", addr); |  |  |  |     vty_print("#D4 %x\r\n", addr); | 
			
		
	
		
		
			
				
					
					|  |  |  |     MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); |  |  |  |     MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); | 
			
		
	
		
		
			
				
					
					|  |  |  |     return rv; |  |  |  |     return rv; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* description: 工频波形采集
 |  |  |  | /* description: 工频波形采集
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -580,11 +682,11 @@ int32_t _dau_wave_col_defect(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |    return: HAL_xxx */ |  |  |  |    return: HAL_xxx */ | 
			
		
	
		
		
			
				
					
					|  |  |  | int32_t _dau_wave_col_power(DAU_SOURCE_E source) |  |  |  | int32_t _dau_wave_col_power(DAU_SOURCE_E source) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  | #if 0 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; |  |  |  |     uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     int16_t *power = NULL; |  |  |  |     int16_t *power = NULL; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t i = 0; |  |  |  |     uint8_t i = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t j = 0; |  |  |  |     uint8_t j = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     int32_t rv = HAL_ERROR; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* 读取工频数据 */ |  |  |  |     /* 读取工频数据 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     for(i = 0; i < DAU_PORT_POWER_CNT; i++) |  |  |  |     for(i = 0; i < DAU_PORT_POWER_CNT; i++) | 
			
		
	
	
		
		
			
				
					|  |  | @ -602,6 +704,7 @@ int32_t _dau_wave_col_power(DAU_SOURCE_E source) | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 等待 DAU 准备工频数据 */ |  |  |  |         /* 等待 DAU 准备工频数据 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         j = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |         while(1) |  |  |  |         while(1) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (j >= DAU_WAVE_WAIT_MAX) |  |  |  |             if (j >= DAU_WAVE_WAIT_MAX) | 
			
		
	
	
		
		
			
				
					|  |  | @ -609,7 +712,7 @@ int32_t _dau_wave_col_power(DAU_SOURCE_E source) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 DBG(DBG_M_DAU, "DAU power wave err\r\n"); |  |  |  |                 DBG(DBG_M_DAU, "DAU power wave err\r\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 return HAL_TIMEOUT; |  |  |  |                 return HAL_TIMEOUT; | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |             osDelay(10); |  |  |  |             osDelay(5); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |              |  |  |  |              | 
			
		
	
		
		
			
				
					
					|  |  |  |             E_RETURN(_dau_reg_read_global_state()); |  |  |  |             E_RETURN(_dau_reg_read_global_state()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (DAU_SOURCE_FAULT == source) |  |  |  |             if (DAU_SOURCE_FAULT == source) | 
			
		
	
	
		
		
			
				
					|  |  | @ -628,21 +731,24 @@ int32_t _dau_wave_col_power(DAU_SOURCE_E source) | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             j++; |  |  |  |             j++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             vty_print("#D7 %d\r\n", j); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  |      | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 选择存储位置, 读取数据 */ |  |  |  |         /* 选择存储位置, 读取数据 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |         power = (DAU_SOURCE_FAULT == source) ? dau_ctrl.fault_power[i] : dau_ctrl.reg_power[i]; |  |  |  |         power = (DAU_SOURCE_FAULT == source) ? dau_ctrl.fault_power[i] : dau_ctrl.reg_power[i]; | 
			
		
	
		
		
			
				
					
					|  |  |  |         for(j = 0; j < DAU_PKT_POWER_CNT; j++) |  |  |  |         for(j = 0; j < DAU_PKT_POWER_CNT; j++) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR + i, DAU_PKT_POWER_BYTE_CNT)); |  |  |  |             E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_POWER_BYTE_CNT)); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             osDelay(200); | 
			
		
	
		
		
			
				
					
					|  |  |  |             memcpy(power, &dau_ctrl.buf_dau_rx[2], DAU_PKT_POWER_BYTE_CNT); |  |  |  |             memcpy(power, &dau_ctrl.buf_dau_rx[2], DAU_PKT_POWER_BYTE_CNT); | 
			
		
	
		
		
			
				
					
					|  |  |  |             power += DAU_PKT_POWER_BYTE_CNT >> 1; |  |  |  |             power += DAU_PKT_POWER_BYTE_CNT >> 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         vty_print("PO%d\r\n", i); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  |      | 
			
		
	
		
		
			
				
					
					|  |  |  |     return HAL_OK; |  |  |  |     return HAL_OK; | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #if 0 | 
			
		
	
		
		
			
				
					
					|  |  |  |     int16_t *power = NULL; |  |  |  |     int16_t *power = NULL; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t i = 0; |  |  |  |     uint8_t i = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint8_t j = 0; |  |  |  |     uint8_t j = 0; | 
			
		
	
	
		
		
			
				
					|  |  | @ -661,6 +767,7 @@ int32_t _dau_wave_col_power(DAU_SOURCE_E source) | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  |      | 
			
		
	
		
		
			
				
					
					|  |  |  |     return HAL_OK; |  |  |  |     return HAL_OK; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* description: DAU 工频电流计算
 |  |  |  | /* description: DAU 工频电流计算
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -843,14 +950,14 @@ int32_t _dau_wave_col_trigger_by_reg(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* 定时开始采集 */ |  |  |  |     /* 定时开始采集 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     tick = HAL_GetTick(); |  |  |  |     tick = HAL_GetTick(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     if ((tick - dau_ctrl.col_time) < (dev_config.collect_interval * 600000) |  |  |  |     if ((tick - dau_ctrl.col_time) < (dev_config.collect_interval * 60000) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE)) |  |  |  |         && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE)) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return HAL_OK; |  |  |  |         return HAL_OK; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     //E_RETURN(_dau_wave_col_start());
 |  |  |  |     E_RETURN(_dau_wave_col_start()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     E_RETURN(_dau_wave_col_defect()); |  |  |  |     //E_RETURN(_dau_wave_col_defect());
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG)); |  |  |  |     E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG)); | 
			
		
	
		
		
			
				
					
					|  |  |  |     _dau_power_calculate(DAU_SOURCE_REG); |  |  |  |     _dau_power_calculate(DAU_SOURCE_REG); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -871,7 +978,6 @@ static void _dau_init(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     dau_ctrl.spi = &hspi1; |  |  |  |     dau_ctrl.spi = &hspi1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     vty_print("#D7 %x\r\n", st_data.addr_fault); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (st_data.addr_fault >= WARE_FAULT_ADDRESS && st_data.addr_fault < WARE_FAULT_ADDRESS_END |  |  |  |     if (st_data.addr_fault >= WARE_FAULT_ADDRESS && st_data.addr_fault < WARE_FAULT_ADDRESS_END | 
			
		
	
		
		
			
				
					
					|  |  |  |         &&  0 == (st_data.addr_fault & 0x1ffff)) |  |  |  |         &&  0 == (st_data.addr_fault & 0x1ffff)) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
	
		
		
			
				
					|  |  | @ -881,8 +987,8 @@ static void _dau_init(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |        dau_ctrl.addr_fault = WARE_FAULT_ADDRESS; |  |  |  |        dau_ctrl.addr_fault = WARE_FAULT_ADDRESS; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     vty_print("#D7 %x %x\r\n", st_data.addr_fault, dau_ctrl.addr_fault); | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  |      | 
			
		
	
		
		
			
				
					
					|  |  |  |     vty_print("#D8 %x\r\n", st_data.addr_reg); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (st_data.addr_reg >= WARE_REG_ADDRESS && st_data.addr_reg < WARE_REG_ADDRESS_END |  |  |  |     if (st_data.addr_reg >= WARE_REG_ADDRESS && st_data.addr_reg < WARE_REG_ADDRESS_END | 
			
		
	
		
		
			
				
					
					|  |  |  |         &&  0 == (st_data.addr_reg & 0x1ffff)) |  |  |  |         &&  0 == (st_data.addr_reg & 0x1ffff)) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
	
		
		
			
				
					|  |  | @ -892,6 +998,7 @@ static void _dau_init(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |        dau_ctrl.addr_reg = WARE_REG_ADDRESS; |  |  |  |        dau_ctrl.addr_reg = WARE_REG_ADDRESS; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     vty_print("#D8 %x %x\r\n", st_data.addr_reg, dau_ctrl.addr_reg); | 
			
		
	
		
		
			
				
					
					|  |  |  |      |  |  |  |      | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* 开启第一次采集前, 默认上传完成 */ |  |  |  |     /* 开启第一次采集前, 默认上传完成 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     dau_ctrl.col_time = 600000; |  |  |  |     dau_ctrl.col_time = 600000; | 
			
		
	
	
		
		
			
				
					|  |  | @ -919,7 +1026,13 @@ static void _dau_init(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |    return: */ |  |  |  |    return: */ | 
			
		
	
		
		
			
				
					
					|  |  |  | static void _dau_start(void *argument) |  |  |  | static void _dau_start(void *argument) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     //int32_t rv = HAL_ERROR;
 |  |  |  |     //uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint16_t *buf = NULL; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint32_t addr = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint8_t i = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint8_t j = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint16_t k = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     int32_t rv = HAL_ERROR; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* 状态初始化 */ |  |  |  |     /* 状态初始化 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     _dau_init(); |  |  |  |     _dau_init(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -929,10 +1042,24 @@ static void _dau_start(void *argument) | 
			
		
	
		
		
			
				
					
					|  |  |  |         osDelay(5000); |  |  |  |         osDelay(5000); | 
			
		
	
		
		
			
				
					
					|  |  |  |         common_watchdog_set(COM_WDG_DAU); |  |  |  |         common_watchdog_set(COM_WDG_DAU); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //rv = _dau_reg_read_global_state();
 |  |  |  |         /* 读取全局状态寄存器 */ | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         //if (rv != HAL_OK)
 |  |  |  |         rv = _dau_reg_read_global_state(); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (rv != HAL_OK) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             continue; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 处理升级 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //if (dau_ctrl.update_flag)
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //{
 |  |  |  |         //{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //    continue;
 |  |  |  |         //    if (HAL_OK == _dau_update())
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //    {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //        dau_ctrl.update_rt = DAU_UPD_OK;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //    }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //    else
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //    {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //        dau_ctrl.update_rt = DAU_UPD_ERROR;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //    }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //}
 |  |  |  |         //}
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* utc 对时处理 */ |  |  |  |         /* utc 对时处理 */ | 
			
		
	
	
		
		
			
				
					|  |  | @ -943,13 +1070,90 @@ static void _dau_start(void *argument) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 循环工频缺陷电流采集 */ |  |  |  |         /* 循环工频缺陷电流采集 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |         _dau_wave_col_trigger_by_reg(); |  |  |  |         _dau_wave_col_trigger_by_reg(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (1 == _dau_spi_rw) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             _dau_spi_rw = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             _dau_reg_read(_dau_spi_addr, _dau_spi_len << 1); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         else if(2 == _dau_spi_rw) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             uint16_t *data = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             *data = _dau_spi_len; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             _dau_spi_rw = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             _dau_reg_write(_dau_spi_addr, 2); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         common_watchdog_set(COM_WDG_DAU); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #if 0 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         addr = dau_ctrl.addr_reg; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         for(i = 0; i < 3; i++) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             vty_print("DEFECT %x %d\r\n", addr, i); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             for(j = 0; j < DAU_PKT_DEFECT_CNT; j++) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 common_watchdog_set(COM_WDG_DAU); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 addr += DAU_PKT_DEFECT_BYTE_CNT; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 for(k = 0; k < 512;) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     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 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         for(i = 0; i < DAU_PORT_POWER_CNT; i++) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             vty_print("POWER %d\r\n", i); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             buf = (uint16_t*)dau_ctrl.reg_power[i]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             for(j = 0; j < DAU_PKT_POWER_CNT; j++) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 common_watchdog_set(COM_WDG_DAU); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 for(k = 0; k < 512;) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     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"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 buf += 512; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             vty_print("\r\n"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         while(1) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             osDelay(5000); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             common_watchdog_set(COM_WDG_DAU); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //vty_print("sleep\r\n");
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* description: GPS 报文处理 ($GNZDA,235949.012,05,01,1980,,*4F)
 |  |  |  | /* description: GPS 报文处理 ($GNZDA,235949.012,05,01,1980,,*4F)
 | 
			
		
	
		
		
			
				
					
					|  |  |  |    param: |  |  |  |    param: | 
			
		
	
		
		
			
				
					
					|  |  |  |    return: */ |  |  |  |    return: */ | 
			
		
	
		
		
			
				
					
					|  |  |  | static void _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 n = 0; |  |  |  |     uint8_t n = 0; | 
			
		
	
	
		
		
			
				
					|  |  | @ -982,14 +1186,14 @@ static void _dau_gps_process(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |         n = sscanf(&pkt[i], "$GNZDA,%02d%02d%02d.%d,%02d,%02d,%04d", &hour, &min, &sec, &ms, &day, &mon, &year); |  |  |  |         n = sscanf(&pkt[i], "$GNZDA,%02d%02d%02d.%d,%02d,%02d,%04d", &hour, &min, &sec, &ms, &day, &mon, &year); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (n != 7) |  |  |  |         if (n != 7) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             return HAL_ERROR; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         DBG(DBG_M_GPS, "%d/%d/%d %d:%d:%d\r\n", year, mon, day, hour, min, sec); |  |  |  |         DBG(DBG_M_GPS, "%d/%d/%d %d:%d:%d\r\n", year, mon, day, hour, min, sec); | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 小于 2024 说明对时不成功. */ |  |  |  |         /* 小于 2024 说明对时不成功. */ | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (year < 2024) |  |  |  |         if (year < 2024) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             break; |  |  |  |             return HAL_ERROR; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         _dau_tm.tm_year = year - 1900; |  |  |  |         _dau_tm.tm_year = year - 1900; | 
			
		
	
		
		
			
				
					
					|  |  |  |         _dau_tm.tm_mon = mon - 1; |  |  |  |         _dau_tm.tm_mon = mon - 1; | 
			
		
	
	
		
		
			
				
					|  |  | @ -1000,9 +1204,10 @@ static void _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.is_utc_valid = TRUE; |  |  |  |         return HAL_OK; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         break; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return HAL_ERROR; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* description: GPS 初始化
 |  |  |  | /* description: GPS 初始化
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -1025,12 +1230,15 @@ static void _dau_gps_init(void) | 
			
		
	
		
		
			
				
					
					|  |  |  | static void _dau_gps_start(void *argument) |  |  |  | static void _dau_gps_start(void *argument) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t notify_value = 0xff; |  |  |  |     uint32_t notify_value = 0xff; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint32_t err_cnt = 5; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /* 状态初始化 */ |  |  |  |     /* 状态初始化 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     _dau_gps_init(); |  |  |  |     _dau_gps_init(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     for (;;) |  |  |  |     for (;;) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         /* 连续 5 次失败才认为对时失败 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         dau_ctrl.is_utc_ok = (err_cnt < 5);   | 
			
		
	
		
		
			
				
					
					|  |  |  |         common_watchdog_set(COM_WDG_GPS); |  |  |  |         common_watchdog_set(COM_WDG_GPS); | 
			
		
	
		
		
			
				
					
					|  |  |  |          |  |  |  |          | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 开启串口空闲中断收包 */ |  |  |  |         /* 开启串口空闲中断收包 */ | 
			
		
	
	
		
		
			
				
					|  |  | @ -1046,22 +1254,33 @@ static void _dau_gps_start(void *argument) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |             /* 收包超时 */ |  |  |  |             /* 收包超时 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |             dau_ctrl.is_utc_valid = FALSE; |  |  |  |             dau_ctrl.is_utc_valid = FALSE; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             err_cnt++; | 
			
		
	
		
		
			
				
					
					|  |  |  |             continue; |  |  |  |             continue; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         dau_ctrl.is_utc_valid = FALSE; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         DBG(DBG_M_GPS, "Len %d\r\n", dau_ctrl.len_buf_gps); |  |  |  |         DBG(DBG_M_GPS, "Len %d\r\n", dau_ctrl.len_buf_gps); | 
			
		
	
		
		
			
				
					
					|  |  |  |    |  |  |  |    | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 命令过长. */ |  |  |  |         /* 命令过长. */ | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (dau_ctrl.len_buf_gps >= DAU_GPS_BUF_LEN) |  |  |  |         if (dau_ctrl.len_buf_gps >= DAU_GPS_BUF_LEN) | 
			
		
	
		
		
			
				
					
					|  |  |  |         { |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             dau_ctrl.is_utc_valid = FALSE; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             err_cnt++; | 
			
		
	
		
		
			
				
					
					|  |  |  |             continue; |  |  |  |             continue; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /* 字符串结束标志 */ |  |  |  |         /* 字符串结束标志 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |         dau_ctrl.buf_gps[dau_ctrl.len_buf_gps] = 0; |  |  |  |         dau_ctrl.buf_gps[dau_ctrl.len_buf_gps] = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         _dau_gps_process(); |  |  |  |         if (HAL_OK == _dau_gps_process()) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             dau_ctrl.is_utc_valid = TRUE; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             err_cnt = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             dau_ctrl.is_utc_valid = FALSE; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             err_cnt++; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -1075,6 +1294,16 @@ void dau_init(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     dau_ctrl.gps_handle = osThreadNew(_dau_gps_start, NULL, &dau_gps_attributes); |  |  |  |     dau_ctrl.gps_handle = osThreadNew(_dau_gps_start, NULL, &dau_gps_attributes); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | /* description: spi 接口测试函数
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    param: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    return: */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | void dau_spi_rw(int8_t rw, uint16_t addr, uint16_t len) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     _dau_spi_rw = rw; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     _dau_spi_addr = addr; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     _dau_spi_len = len; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /* description: dau 显示接口
 |  |  |  | /* description: dau 显示接口
 | 
			
		
	
		
		
			
				
					
					|  |  |  |    param: |  |  |  |    param: | 
			
		
	
		
		
			
				
					
					|  |  |  |    return: */ |  |  |  |    return: */ | 
			
		
	
	
		
		
			
				
					|  |  | @ -1083,6 +1312,7 @@ void dau_show(void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     struct tm *day = NULL; |  |  |  |     struct tm *day = NULL; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t utc = dau_ctrl.utc; |  |  |  |     uint32_t utc = dau_ctrl.utc; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     vty_print("state: %d\r\n", dau_ctrl.is_utc_ok); | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (dau_ctrl.is_utc_valid) |  |  |  |     if (dau_ctrl.is_utc_valid) | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |         utc += 28800; |  |  |  |         utc += 28800; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |