FIX | 新硬件调试修改.

master
yuliang 5 months ago
parent ede556c5e5
commit bc527defce

File diff suppressed because one or more lines are too long

@ -29,47 +29,57 @@ CAD.pinconfig=
CAD.provider= CAD.provider=
Dma.Request0=USART3_RX Dma.Request0=USART3_RX
Dma.Request1=USART3_TX Dma.Request1=USART3_TX
Dma.Request2=UART4_RX Dma.Request2=SPI1_RX
Dma.Request3=SPI1_RX Dma.Request3=SPI1_TX
Dma.Request4=SPI1_TX Dma.Request4=USART2_RX
Dma.Request5=USART2_RX Dma.Request5=USART1_RX
Dma.RequestsNb=6 Dma.Request6=USART1_TX
Dma.SPI1_RX.3.Direction=DMA_PERIPH_TO_MEMORY Dma.RequestsNb=7
Dma.SPI1_RX.3.Instance=DMA2_Channel3 Dma.SPI1_RX.2.Direction=DMA_PERIPH_TO_MEMORY
Dma.SPI1_RX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.SPI1_RX.2.Instance=DMA2_Channel3
Dma.SPI1_RX.3.MemInc=DMA_MINC_ENABLE Dma.SPI1_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.SPI1_RX.3.Mode=DMA_NORMAL Dma.SPI1_RX.2.MemInc=DMA_MINC_ENABLE
Dma.SPI1_RX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.SPI1_RX.2.Mode=DMA_NORMAL
Dma.SPI1_RX.3.PeriphInc=DMA_PINC_DISABLE Dma.SPI1_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.SPI1_RX.3.Priority=DMA_PRIORITY_LOW Dma.SPI1_RX.2.PeriphInc=DMA_PINC_DISABLE
Dma.SPI1_RX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority Dma.SPI1_RX.2.Priority=DMA_PRIORITY_LOW
Dma.SPI1_TX.4.Direction=DMA_MEMORY_TO_PERIPH Dma.SPI1_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
Dma.SPI1_TX.4.Instance=DMA2_Channel4 Dma.SPI1_TX.3.Direction=DMA_MEMORY_TO_PERIPH
Dma.SPI1_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.SPI1_TX.3.Instance=DMA2_Channel4
Dma.SPI1_TX.4.MemInc=DMA_MINC_ENABLE Dma.SPI1_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.SPI1_TX.4.Mode=DMA_NORMAL Dma.SPI1_TX.3.MemInc=DMA_MINC_ENABLE
Dma.SPI1_TX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.SPI1_TX.3.Mode=DMA_NORMAL
Dma.SPI1_TX.4.PeriphInc=DMA_PINC_DISABLE Dma.SPI1_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.SPI1_TX.4.Priority=DMA_PRIORITY_LOW Dma.SPI1_TX.3.PeriphInc=DMA_PINC_DISABLE
Dma.SPI1_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority Dma.SPI1_TX.3.Priority=DMA_PRIORITY_LOW
Dma.UART4_RX.2.Direction=DMA_PERIPH_TO_MEMORY Dma.SPI1_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
Dma.UART4_RX.2.Instance=DMA2_Channel5 Dma.USART1_RX.5.Direction=DMA_PERIPH_TO_MEMORY
Dma.UART4_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.USART1_RX.5.Instance=DMA1_Channel5
Dma.UART4_RX.2.MemInc=DMA_MINC_ENABLE Dma.USART1_RX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.UART4_RX.2.Mode=DMA_NORMAL Dma.USART1_RX.5.MemInc=DMA_MINC_ENABLE
Dma.UART4_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.USART1_RX.5.Mode=DMA_NORMAL
Dma.UART4_RX.2.PeriphInc=DMA_PINC_DISABLE Dma.USART1_RX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.UART4_RX.2.Priority=DMA_PRIORITY_LOW Dma.USART1_RX.5.PeriphInc=DMA_PINC_DISABLE
Dma.UART4_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority Dma.USART1_RX.5.Priority=DMA_PRIORITY_LOW
Dma.USART2_RX.5.Direction=DMA_PERIPH_TO_MEMORY Dma.USART1_RX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
Dma.USART2_RX.5.Instance=DMA1_Channel6 Dma.USART1_TX.6.Direction=DMA_MEMORY_TO_PERIPH
Dma.USART2_RX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.USART1_TX.6.Instance=DMA1_Channel4
Dma.USART2_RX.5.MemInc=DMA_MINC_ENABLE Dma.USART1_TX.6.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.USART2_RX.5.Mode=DMA_NORMAL Dma.USART1_TX.6.MemInc=DMA_MINC_ENABLE
Dma.USART2_RX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.USART1_TX.6.Mode=DMA_NORMAL
Dma.USART2_RX.5.PeriphInc=DMA_PINC_DISABLE Dma.USART1_TX.6.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART2_RX.5.Priority=DMA_PRIORITY_LOW Dma.USART1_TX.6.PeriphInc=DMA_PINC_DISABLE
Dma.USART2_RX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority Dma.USART1_TX.6.Priority=DMA_PRIORITY_LOW
Dma.USART1_TX.6.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
Dma.USART2_RX.4.Direction=DMA_PERIPH_TO_MEMORY
Dma.USART2_RX.4.Instance=DMA1_Channel6
Dma.USART2_RX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.USART2_RX.4.MemInc=DMA_MINC_ENABLE
Dma.USART2_RX.4.Mode=DMA_NORMAL
Dma.USART2_RX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART2_RX.4.PeriphInc=DMA_PINC_DISABLE
Dma.USART2_RX.4.Priority=DMA_PRIORITY_LOW
Dma.USART2_RX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
Dma.USART3_RX.0.Direction=DMA_PERIPH_TO_MEMORY Dma.USART3_RX.0.Direction=DMA_PERIPH_TO_MEMORY
Dma.USART3_RX.0.Instance=DMA1_Channel3 Dma.USART3_RX.0.Instance=DMA1_Channel3
Dma.USART3_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.USART3_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
@ -120,63 +130,65 @@ Mcu.IPNb=14
Mcu.Name=STM32L496Z(E-G)Tx Mcu.Name=STM32L496Z(E-G)Tx
Mcu.Package=LQFP144 Mcu.Package=LQFP144
Mcu.Pin0=PE2 Mcu.Pin0=PE2
Mcu.Pin1=PC14-OSC32_IN (PC14) Mcu.Pin1=PE3
Mcu.Pin10=PA6 Mcu.Pin10=PA5
Mcu.Pin11=PA7 Mcu.Pin11=PA6
Mcu.Pin12=PC4 Mcu.Pin12=PA7
Mcu.Pin13=PC5 Mcu.Pin13=PC4
Mcu.Pin14=PB0 Mcu.Pin14=PC5
Mcu.Pin15=PE11 Mcu.Pin15=PB0
Mcu.Pin16=PB10 Mcu.Pin16=PE11
Mcu.Pin17=PB11 Mcu.Pin17=PB10
Mcu.Pin18=PD14 Mcu.Pin18=PB11
Mcu.Pin19=PD15 Mcu.Pin19=PD14
Mcu.Pin2=PF0 Mcu.Pin2=PC14-OSC32_IN (PC14)
Mcu.Pin20=PG2 Mcu.Pin20=PD15
Mcu.Pin21=PG3 Mcu.Pin21=PG2
Mcu.Pin22=PG4 Mcu.Pin22=PG3
Mcu.Pin23=PA9 Mcu.Pin23=PG4
Mcu.Pin24=PA10 Mcu.Pin24=PA9
Mcu.Pin25=PA13 (JTMS/SWDIO) Mcu.Pin25=PA10
Mcu.Pin26=PA14 (JTCK/SWCLK) Mcu.Pin26=PA13 (JTMS/SWDIO)
Mcu.Pin27=PC10 Mcu.Pin27=PA14 (JTCK/SWCLK)
Mcu.Pin28=PC11 Mcu.Pin28=PC10
Mcu.Pin29=PC12 Mcu.Pin29=PC11
Mcu.Pin3=PF9 Mcu.Pin3=PF0
Mcu.Pin30=PD3 Mcu.Pin30=PC12
Mcu.Pin31=PD4 Mcu.Pin31=PD3
Mcu.Pin32=PD5 Mcu.Pin32=PD4
Mcu.Pin33=PD6 Mcu.Pin33=PD5
Mcu.Pin34=PG9 Mcu.Pin34=PD6
Mcu.Pin35=PG10 Mcu.Pin35=PG9
Mcu.Pin36=PG13 Mcu.Pin36=PG10
Mcu.Pin37=PG14 Mcu.Pin37=PG13
Mcu.Pin38=PE0 Mcu.Pin38=PG14
Mcu.Pin39=VP_ADC1_TempSens_Input Mcu.Pin39=PE0
Mcu.Pin4=PH0-OSC_IN (PH0) Mcu.Pin4=PF9
Mcu.Pin40=VP_FREERTOS_VS_CMSIS_V2 Mcu.Pin40=VP_ADC1_TempSens_Input
Mcu.Pin41=VP_RTC_VS_RTC_Activate Mcu.Pin41=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin42=VP_SYS_VS_Systick Mcu.Pin42=VP_RTC_VS_RTC_Activate
Mcu.Pin43=VP_TIM7_VS_ClockSourceINT Mcu.Pin43=VP_SYS_VS_Systick
Mcu.Pin5=PH1-OSC_OUT (PH1) Mcu.Pin44=VP_TIM7_VS_ClockSourceINT
Mcu.Pin6=PA0 Mcu.Pin5=PH0-OSC_IN (PH0)
Mcu.Pin7=PA1 Mcu.Pin6=PH1-OSC_OUT (PH1)
Mcu.Pin8=PA4 Mcu.Pin7=PA0
Mcu.Pin9=PA5 Mcu.Pin8=PA1
Mcu.PinsNb=44 Mcu.Pin9=PA4
Mcu.PinsNb=45
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32L496ZGTx Mcu.UserName=STM32L496ZGTx
MxCube.Version=6.10.0 MxCube.Version=6.13.0
MxDb.Version=DB.6.0.100 MxDb.Version=DB.6.0.130
NVIC.ADC1_2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.ADC1_2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.DMA1_Channel2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Channel2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Channel3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Channel3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Channel4_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Channel5_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Channel6_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Channel6_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA2_Channel3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA2_Channel3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA2_Channel4_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA2_Channel4_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA2_Channel5_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.ForceEnableDMAVector=true NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
@ -192,6 +204,7 @@ NVIC.SavedSystickIrqHandlerGenerated=true
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:true\:false\:true\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:true\:false\:true\:false
NVIC.TIM7_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true NVIC.TIM7_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true
NVIC.UART4_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true NVIC.UART4_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true
NVIC.USART1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.USART2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.USART2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.USART3_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true NVIC.USART3_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
@ -282,6 +295,11 @@ PE2.GPIOParameters=GPIO_Label
PE2.GPIO_Label=POWER_GPS PE2.GPIO_Label=POWER_GPS
PE2.Locked=true PE2.Locked=true
PE2.Signal=GPIO_Output PE2.Signal=GPIO_Output
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
@ -449,8 +467,8 @@ SPI3.VirtualType=VM_MASTER
TIM7.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE TIM7.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM7.IPParameters=AutoReloadPreload,Prescaler,Period TIM7.IPParameters=AutoReloadPreload,Prescaler,Period
TIM7.Period=20 TIM7.Period=20
TIM7.Prescaler=7999 TIM7.Prescaler=39999
UART4.BaudRate=115200 UART4.BaudRate=9600
UART4.IPParameters=BaudRate UART4.IPParameters=BaudRate
USART1.IPParameters=VirtualMode-Asynchronous USART1.IPParameters=VirtualMode-Asynchronous
USART1.VirtualMode-Asynchronous=VM_ASYNC USART1.VirtualMode-Asynchronous=VM_ASYNC

@ -98,10 +98,10 @@ typedef struct
/* DAU 通道状态寄存器. */ /* DAU 通道状态寄存器. */
typedef struct typedef struct
{ {
uint16_t MSRR[4]; // 缺陷电流通道周波原始采样值的平均值 (Mean Square Root Register). uint16_t DMAX[4]; // 缺陷电流通道周波最大值寄存器 (Defect Max Value Register).
int16_t AVR[4]; // 缺陷电流通道周波校准值寄存器 (Adjust Value Register). uint16_t DAVR[4]; // 缺陷电流通道周波平均值寄存器 (Defect Average Value Register).
int16_t MAX[4]; // 缺陷电流通道周波校准值最大值寄存器 (Max Value Register). uint16_t FAVR[4]; // 故障电流通道周波平均值寄存器 (Fault Average Value Register).
int16_t FAULT[4]; // 故障触发电流值寄存器 (Fault Value Register). uint16_t FMAX[4]; // 故障电流通道原始采样值最大值寄存器 (Fault Max Value Register).
} dau_port_state_reg_t; } dau_port_state_reg_t;
/* DAU 全局结构体 */ /* DAU 全局结构体 */

@ -193,7 +193,11 @@ typedef struct
/* APN 配置. 128byte */ /* APN 配置. 128byte */
char APN[DEV_APN_LEN]; char APN[DEV_APN_LEN];
/* 保证配置区 8K 的保留位. */ /* 保证配置区 8K 的保留位. */
uint8_t reserve[300]; uint8_t reserve[268];
uint16_t defect_base[DAU_PORT_DEFECT_MAX];
uint16_t defect_adj[DAU_PORT_DEFECT_MAX];
uint16_t fault_base[DAU_PORT_FAULT_MAX];
uint16_t fault_adj[DAU_PORT_FAULT_MAX];
/* INIT_DONE_MAGIC. 4byte */ /* INIT_DONE_MAGIC. 4byte */
uint32_t magic_bak; uint32_t magic_bak;
} dev_config_t; } dev_config_t;

@ -46,22 +46,17 @@
#define FLASH_LOG_ID_LEN 8 #define FLASH_LOG_ID_LEN 8
#define FLASH_LOG_DATA_LEN 248 #define FLASH_LOG_DATA_LEN 248
#define FLASH_LOG_BUF_LEN 256 #define FLASH_LOG_BUF_LEN 256
#define FLASH_LOG_NUM 8192 #define FLASH_LOG_NUM 4096
#define FD_ID_LEN 8 #define FD_ID_LEN 8
#define FD_DATA_LEN 248 #define FD_DATA_LEN 248
#define FD_BUF_LEN 256 #define FD_BUF_LEN 256
#define FD_NUM 8192 #define FD_NUM 4096
#define POSITION_ID_LEN 8
#define POSITION_DATA_LEN 248
#define POSITION_BUF_LEN 256
#define POSITION_NUM 8192
#define ST_ID_LEN 8 #define ST_ID_LEN 8
#define ST_DATA_LEN 248 #define ST_DATA_LEN 248
#define ST_BUF_LEN 256 #define ST_BUF_LEN 256
#define ST_NUM 8192 #define ST_NUM 4096
#define FLASH_LOG_INVALID_ID 0xFFFFFFFFFFFFFFFF #define FLASH_LOG_INVALID_ID 0xFFFFFFFFFFFFFFFF
#define FD_INVALID_ID 0xFFFFFFFFFFFFFFFF #define FD_INVALID_ID 0xFFFFFFFFFFFFFFFF

@ -41,7 +41,7 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */ /* USER CODE BEGIN EC */
/* 系统åˆ<EFBFBD>å§åŒæ ‡å¿?. */ /* 系统初始化标<EFBFBD>?. */
typedef enum typedef enum
{ {
SYS_INIT_GPIO = 0, SYS_INIT_GPIO = 0,
@ -70,6 +70,8 @@ void Error_Handler(void);
/* Private defines -----------------------------------------------------------*/ /* Private defines -----------------------------------------------------------*/
#define POWER_GPS_Pin GPIO_PIN_2 #define POWER_GPS_Pin GPIO_PIN_2
#define POWER_GPS_GPIO_Port GPIOE #define POWER_GPS_GPIO_Port GPIOE
#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 DAU_RST_Pin GPIO_PIN_9 #define DAU_RST_Pin GPIO_PIN_9

@ -55,16 +55,18 @@ void DebugMon_Handler(void);
void SysTick_Handler(void); void SysTick_Handler(void);
void DMA1_Channel2_IRQHandler(void); void DMA1_Channel2_IRQHandler(void);
void DMA1_Channel3_IRQHandler(void); void DMA1_Channel3_IRQHandler(void);
void DMA1_Channel4_IRQHandler(void);
void DMA1_Channel5_IRQHandler(void);
void DMA1_Channel6_IRQHandler(void); void DMA1_Channel6_IRQHandler(void);
void ADC1_2_IRQHandler(void); void ADC1_2_IRQHandler(void);
void SPI1_IRQHandler(void); void SPI1_IRQHandler(void);
void USART1_IRQHandler(void);
void USART2_IRQHandler(void); void USART2_IRQHandler(void);
void USART3_IRQHandler(void); void USART3_IRQHandler(void);
void UART4_IRQHandler(void); void UART4_IRQHandler(void);
void TIM7_IRQHandler(void); void TIM7_IRQHandler(void);
void DMA2_Channel3_IRQHandler(void); void DMA2_Channel3_IRQHandler(void);
void DMA2_Channel4_IRQHandler(void); void DMA2_Channel4_IRQHandler(void);
void DMA2_Channel5_IRQHandler(void);
/* USER CODE BEGIN EFP */ /* USER CODE BEGIN EFP */
/* USER CODE END EFP */ /* USER CODE END EFP */

@ -105,9 +105,9 @@ typedef struct
/* 收法报文 buffer. */ /* 收法报文 buffer. */
usart_buf_t debug_buf; usart_buf_t debug_buf;
/* RS485 通讯串口. */ /* RS485 通讯串口. */
static UART_HandleTypeDef *debug_uart = &huart4; static UART_HandleTypeDef *debug_uart = &huart1;
/* 自动校准仪器通讯串口. */ /* 自动校准仪器通讯串口. */
static UART_HandleTypeDef *debug_adj_uart = &huart1; static UART_HandleTypeDef *debug_adj_uart = &huart4;
/* 判断收包是否开始, 用于处理粘包. */ /* 判断收包是否开始, 用于处理粘包. */
static uint8_t debug_state = 0; static uint8_t debug_state = 0;
/* 远程升级 flash 数据校验使用. */ /* 远程升级 flash 数据校验使用. */

@ -60,7 +60,7 @@
/* Private define ------------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/
/* cli buffer 长度定义. */ /* cli buffer 长度定义. */
#define CLI_OUTPUT_SIZE 4096 #define CLI_OUTPUT_SIZE 2048
#define CLI_CMD_SIZE 256 #define CLI_CMD_SIZE 256
/* cli 等待超时时间. */ /* cli 等待超时时间. */
#define CLI_TIMEOUT 300000 #define CLI_TIMEOUT 300000
@ -90,6 +90,7 @@ typedef struct
uint32_t flag; uint32_t flag;
osMutexId_t mutex; osMutexId_t mutex;
cli_output_buf_t output_buf; cli_output_buf_t output_buf;
char buf_dma[CLI_OUTPUT_SIZE];
char cmd[CLI_CMD_SIZE]; char cmd[CLI_CMD_SIZE];
} cli_machine_t; } cli_machine_t;
@ -104,7 +105,7 @@ static const osMutexAttr_t cli_mutex_attr =
{ {
.name = "cli" .name = "cli"
}; };
UART_HandleTypeDef *cli_uart = &huart4; UART_HandleTypeDef *cli_uart = &huart1;
extern uint8_t yl_test; extern uint8_t yl_test;
@ -865,6 +866,8 @@ void _cli_init(void)
/* 命令行线程开始函数. */ /* 命令行线程开始函数. */
void cli_start(void const * argument) void cli_start(void const * argument)
{ {
/******** START INIT ********/ /******** START INIT ********/
/* 以下代码是freeRTOS启动后第一个运行的任务,因为优先级最高,且最早创建.所以需要在freeRTOS启动后再初始化 /* 以下代码是freeRTOS启动后第一个运行的任务,因为优先级最高,且最早创建.所以需要在freeRTOS启动后再初始化
* . */ * . */
@ -877,11 +880,12 @@ void cli_start(void const * argument)
FLASH_If_Init(); FLASH_If_Init();
/* 配置系统初始化. */ /* 配置系统初始化. */
dev_config_init(); dev_config_init();
//dev_config_flag_set(DEV_FLAG_CLI); dev_config_flag_set(DEV_FLAG_CLI);
//dev_config_flag_unset(DEV_FLAG_CLI); //dev_config_flag_unset(DEV_FLAG_CLI);
//dev_config_flag_set(DEV_FLAG_ADJ); //dev_config_flag_set(DEV_FLAG_ADJ);
flash_log_init(); flash_log_init();
st_init(); st_init();
/* 公共监控任务初始化. */ /* 公共监控任务初始化. */
common_sys_init(); common_sys_init();
/* 默认开启的 debug. */ /* 默认开启的 debug. */
@ -890,9 +894,9 @@ void cli_start(void const * argument)
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 采样任务. */
@ -911,7 +915,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是原地循环等待,置位后变为任务调度. */
@ -940,10 +944,6 @@ void cli_usart_data_buf_send(char *format, va_list ap)
uint16_t index = 0; uint16_t index = 0;
int16_t num = 0; int16_t num = 0;
/* 串口为中断发送,在没有发送完前不能写数据. */
while(HAL_UART_STATE_BUSY_TX == cli_uart->gState)
osThreadYield();
_cli_mutex_lock(); _cli_mutex_lock();
index = buf->index; index = buf->index;
@ -975,7 +975,7 @@ void cli_usart_data_buf_send_without_os(char *format, va_list ap)
if (vsnprintf(buf->buf, CLI_OUTPUT_SIZE, format, ap) > 0) if (vsnprintf(buf->buf, CLI_OUTPUT_SIZE, format, ap) > 0)
{ {
HAL_UART_Transmit_IT(cli_uart, (uint8_t*)buf->buf, strlen(buf->buf)); HAL_UART_Transmit(cli_uart, (uint8_t*)buf->buf, strlen(buf->buf), 1000);
} }
} }
@ -992,7 +992,8 @@ void cli_data_buf_send_hw(void)
_cli_mutex_lock(); _cli_mutex_lock();
if (buf->index > 0) if (buf->index > 0)
{ {
HAL_UART_Transmit_IT(cli_uart, (uint8_t*)buf->buf, buf->index); memcpy(cli_machine.buf_dma, buf->buf, buf->index);
HAL_UART_Transmit_DMA(cli_uart, (uint8_t*)cli_machine.buf_dma, buf->index);
buf->index = 0; buf->index = 0;
} }
_cli_mutex_unlock(); _cli_mutex_unlock();

@ -53,7 +53,7 @@
#include "RS485_debug.h" #include "RS485_debug.h"
/* Private define ------------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/
#define DAU_WAVE_WAIT_MAX 3 // DAU 波形等待次数 #define DAU_WAVE_WAIT_MAX 4 // DAU 波形等待次数
/* 全局状态寄存器地址 -------------------------------- */ /* 全局状态寄存器地址 -------------------------------- */
#define DAU_REG_ADDR_GSCR 0x0000 // 全局状态寄存器 - 软件特征寄存器 #define DAU_REG_ADDR_GSCR 0x0000 // 全局状态寄存器 - 软件特征寄存器
@ -94,6 +94,7 @@
#define DAU_REG_ADDR_GCFTR 0x0203 // 全局控制寄存器 - 故障触发录波控制寄存器 #define DAU_REG_ADDR_GCFTR 0x0203 // 全局控制寄存器 - 故障触发录波控制寄存器
#define DAU_REG_ADDR_GCRTR 0x0204 // 全局控制寄存器 - 寄存器触发录波控制寄存器 #define DAU_REG_ADDR_GCRTR 0x0204 // 全局控制寄存器 - 寄存器触发录波控制寄存器
#define DAU_REG_ADDR_GCUR 0x0205 // 全局控制寄存器 - UTC 配置寄存器 #define DAU_REG_ADDR_GCUR 0x0205 // 全局控制寄存器 - UTC 配置寄存器
#define DAU_REG_ADDR_GCFTTR 0x0207 // 全局控制寄存器 - 故障电流触发阈值寄存器
#define DAU_REG_ADDR_GSUDR 0x0e00 // 全局控制寄存器 - 固件升级数据寄存器 #define DAU_REG_ADDR_GSUDR 0x0e00 // 全局控制寄存器 - 固件升级数据寄存器
@ -121,6 +122,12 @@
#define DAU_REG_ADDR_PMSR 0x0300 // 通道状态寄存器 - 缺陷电流通道周波原始采样值的平均值寄存器 #define DAU_REG_ADDR_PMSR 0x0300 // 通道状态寄存器 - 缺陷电流通道周波原始采样值的平均值寄存器
#define DAU_REG_ADDR_PPWR 0x03b0 // 通道状态寄存器 - 通道录波数据寄存器 #define DAU_REG_ADDR_PPWR 0x03b0 // 通道状态寄存器 - 通道录波数据寄存器
#define DAU_REG_ADDR_PORT_BASE 0x1000 // 通道配置寄存器基地址
#define DAU_REG_ADDR_PORT_DEFECT_BASE 0x0 // 通道配置寄存器 - 缺陷电流通道零点原始值寄存器
#define DAU_REG_ADDR_PORT_FAULT_BASE 0x1 // 通道配置寄存器 - 故障电流通道零点原始值寄存器
#define DAU_REG_ADDR_PORT_DEFECT_ADJ 0xC // 通道配置寄存器 - 缺陷电流通道校准系数 a 寄存器
#define DAU_ID 0x0702 // DAU 软件识别码 #define DAU_ID 0x0702 // DAU 软件识别码
/* Private typedef -----------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/
@ -164,6 +171,7 @@ int8_t _dau_spi_rw;
uint16_t _dau_spi_addr; uint16_t _dau_spi_addr;
uint16_t _dau_spi_len; uint16_t _dau_spi_len;
int8_t g_is_adj_status = 0; // 1:采集 2:采集完成 int8_t g_is_adj_status = 0; // 1:采集 2:采集完成
uint8_t is_OK = FALSE;
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
/* Internal functions --------------------------------------------------------*/ /* Internal functions --------------------------------------------------------*/
@ -324,7 +332,7 @@ static void _dau_data_save(void)
fd_data.vsc = ADC_ctrl.ADCi_vsc; fd_data.vsc = ADC_ctrl.ADCi_vsc;
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{ {
fd_data.defect[i] = dau_ctrl.reg_port_state.MAX[i]; fd_data.defect[i] = dau_ctrl.reg_port_state.DMAX[i];
} }
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{ {
@ -345,7 +353,7 @@ int32_t _dau_update(void)
uint16_t cnt = 0; uint16_t cnt = 0;
uint16_t page_cnt = 0; uint16_t page_cnt = 0;
//uint32_t app_len = wl_ctrl.app_len; //uint32_t app_len = wl_ctrl.app_len;
uint32_t app_len = 476549; uint32_t app_len = 900879;
uint32_t len = 0; uint32_t len = 0;
uint32_t addr = TFTP_APP_ADDRESS; uint32_t addr = TFTP_APP_ADDRESS;
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
@ -383,9 +391,9 @@ int32_t _dau_update(void)
cnt = 0; cnt = 0;
while(1) while(1)
{ {
osDelay(200); osDelay(100);
cnt++; cnt++;
if (cnt > 3) if (cnt > 6)
{ {
DBG(DBG_M_DAU, "DAU update timeout\r\n"); DBG(DBG_M_DAU, "DAU update timeout\r\n");
return HAL_TIMEOUT; return HAL_TIMEOUT;
@ -425,6 +433,7 @@ int32_t _dau_update(void)
void _dau_utc(void) void _dau_utc(void)
{ {
uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2]; uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2];
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
/* dau 主循环大概 250ms 运行一次, 在第 3 次循环 (500 ~ 750ms) 对时, 此时 GPS 对时一定是可用的 */ /* dau 主循环大概 250ms 运行一次, 在第 3 次循环 (500 ~ 750ms) 对时, 此时 GPS 对时一定是可用的 */
if (50000000 < dau_ctrl.reg_global.GNR && dau_ctrl.reg_global.GNR <= 75000000 if (50000000 < dau_ctrl.reg_global.GNR && dau_ctrl.reg_global.GNR <= 75000000
@ -435,6 +444,13 @@ void _dau_utc(void)
_dau_reg_write(DAU_REG_ADDR_GCUR, sizeof(uint32_t)); _dau_reg_write(DAU_REG_ADDR_GCUR, sizeof(uint32_t));
vty_print("Change\r\n"); vty_print("Change\r\n");
vty_print("%d %d %d %d\r\n", dau_ctrl.reg_global.GUR, dau_ctrl.reg_global.GNR, dau_ctrl.is_utc_valid, dau_ctrl.utc); vty_print("%d %d %d %d\r\n", dau_ctrl.reg_global.GUR, dau_ctrl.reg_global.GNR, dau_ctrl.is_utc_valid, dau_ctrl.utc);
*temp = 0x234;
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
*temp = 1;
_dau_reg_write(0xf, sizeof(uint16_t));
osDelay(3000);
*temp = 0;
_dau_reg_write(0xf, sizeof(uint16_t));
} }
} }
@ -459,7 +475,7 @@ int32_t _dau_wave_col_start(void)
DBG(DBG_M_DAU, "DAU wave err\r\n", rv); DBG(DBG_M_DAU, "DAU wave err\r\n", rv);
return HAL_TIMEOUT; return HAL_TIMEOUT;
} }
osDelay(3000); osDelay(1000);
E_RETURN(_dau_reg_read_global_state()); E_RETURN(_dau_reg_read_global_state());
if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_COMPLETE_Msk) >> DAU_GRTR_COMPLETE_Pos) if ((dau_ctrl.reg_global.GRTR & DAU_GRTR_COMPLETE_Msk) >> DAU_GRTR_COMPLETE_Pos)
@ -479,11 +495,11 @@ int32_t _dau_wave_col_start(void)
return: HAL_xxx */ return: HAL_xxx */
int32_t _dau_wave_col_fault(void) int32_t _dau_wave_col_fault(void)
{ {
#if 0
uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; uint16_t *reg = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
uint8_t i = 0; uint8_t i = 0;
uint8_t j = 0; uint8_t j = 0;
uint32_t addr = 0; uint32_t addr = 0;
int32_t rv = HAL_ERROR;
/* 读取触发电流值 */ /* 读取触发电流值 */
E_RETURN(_dau_reg_read_port_state()); E_RETURN(_dau_reg_read_port_state());
@ -493,7 +509,7 @@ int32_t _dau_wave_col_fault(void)
/* 读取故障数据 */ /* 读取故障数据 */
for(i = 0; i < DAU_PORT_FAULT_CNT; i++) for(i = 0; i < DAU_PORT_FAULT_CNT; i++)
{ {
dau_ctrl.fault_trig[i] = dau_ctrl.reg_port_state.FAULT[i]; dau_ctrl.fault_trig[i] = dau_ctrl.reg_port_state.FMAX[i];
/* 请求读取故障波形 */ /* 请求读取故障波形 */
*reg = DAU_GCFTR_FAULT_WAVE_Msk | (i << DAU_GCFTR_PORT_Pos); *reg = DAU_GCFTR_FAULT_WAVE_Msk | (i << DAU_GCFTR_PORT_Pos);
@ -508,7 +524,7 @@ int32_t _dau_wave_col_fault(void)
DBG(DBG_M_DAU, "DAU fault wave err\r\n"); DBG(DBG_M_DAU, "DAU fault wave err\r\n");
return HAL_TIMEOUT; return HAL_TIMEOUT;
} }
osDelay(10); osDelay(5);
E_RETURN(_dau_reg_read_global_state()); E_RETURN(_dau_reg_read_global_state());
if ((dau_ctrl.reg_global.GFTR & DAU_GFTR_FAULT_WAVE_Msk) >> DAU_GFTR_FAULT_WAVE_Pos) if ((dau_ctrl.reg_global.GFTR & DAU_GFTR_FAULT_WAVE_Msk) >> DAU_GFTR_FAULT_WAVE_Pos)
@ -516,19 +532,23 @@ int32_t _dau_wave_col_fault(void)
break; break;
} }
vty_print("#D8 %d\r\n", j);
j++; j++;
} }
for(j = 0; j < DAU_PKT_FAULT_CNT; j++) for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
{ {
E_RETURN(_dau_reg_read(DAU_REG_ADDR_PFWR + i, DAU_PKT_FAULT_BYTE_CNT)); vty_print("%d %d\r\n", i, j);
E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_FAULT_BYTE_CNT));
E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_FAULT_BYTE_CNT)); E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_FAULT_BYTE_CNT));
addr += DAU_PKT_FAULT_BYTE_CNT; addr += DAU_PKT_FAULT_BYTE_CNT;
osDelay(200);
} }
vty_print("FA%d\r\n", i);
} }
return HAL_OK; return HAL_OK;
#endif #if 0
uint8_t i = 0; uint8_t i = 0;
uint8_t j = 0; uint8_t j = 0;
uint32_t addr = 0; uint32_t addr = 0;
@ -550,6 +570,7 @@ int32_t _dau_wave_col_fault(void)
vty_print("#D2 %x\r\n", addr); vty_print("#D2 %x\r\n", addr);
return rv; return rv;
#endif
} }
/* description: 缺陷波形采集 /* description: 缺陷波形采集
@ -568,8 +589,8 @@ int32_t _dau_wave_col_defect(void)
E_RETURN(_dau_reg_read_port_state()); E_RETURN(_dau_reg_read_port_state());
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{ {
dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.MAX[i]; dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.DMAX[i];
if (dau_ctrl.reg_port_state.MAX[i] > dev_config.defect_threshold) if (dau_ctrl.reg_port_state.DMAX[i] > dev_config.defect_threshold)
{ {
is_exceed = TRUE; is_exceed = TRUE;
} }
@ -749,7 +770,7 @@ int32_t _dau_wave_col_power(DAU_SOURCE_E source)
for(j = 0; j < DAU_PKT_POWER_CNT; j++) for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{ {
E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_POWER_BYTE_CNT)); E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_POWER_BYTE_CNT));
osDelay(200); //osDelay(200);
memcpy(power, &dau_ctrl.buf_dau_rx[2], DAU_PKT_POWER_BYTE_CNT); memcpy(power, &dau_ctrl.buf_dau_rx[2], DAU_PKT_POWER_BYTE_CNT);
power += DAU_PKT_POWER_BYTE_CNT >> 1; power += DAU_PKT_POWER_BYTE_CNT >> 1;
} }
@ -802,12 +823,13 @@ void _dau_power_calculate(DAU_SOURCE_E source)
/* 遍历通道所有值, 求和, 并计算出最大值和最小值. */ /* 遍历通道所有值, 求和, 并计算出最大值和最小值. */
for(i = 0; i < DAU_POWER_DATE_LEN; i++) for(i = 0; i < DAU_POWER_DATE_LEN; i++)
{ {
square_sum += val[ch][i] * val[ch][i]; square_sum += (val[ch][i] - 0x167) * (val[ch][i] - 0x167);
mean_sum += val[ch][i]; mean_sum += val[ch][i] - 0x167;
} }
/* 根据数据查找数据落在哪个分段点上. */ /* 根据数据查找数据落在哪个分段点上. */
temp = (double)sqrt(square_sum / DAU_POWER_DATE_LEN) - abs(mean_sum / DAU_POWER_DATE_LEN); temp = (double)sqrt(square_sum / DAU_POWER_DATE_LEN) - abs(mean_sum / DAU_POWER_DATE_LEN);
vty_print("#DP%d %f\r\n", ch, temp);
for(adj = 0; adj < DAU_POWER_ADJ_CNT - 1; adj++) for(adj = 0; adj < DAU_POWER_ADJ_CNT - 1; adj++)
{ {
if (temp <= dev_config.ADC_base[ch][adj]) if (temp <= dev_config.ADC_base[ch][adj])
@ -930,9 +952,9 @@ HAL_StatusTypeDef _dau_base_auto(uint8_t ch_bitmap, uint8_t index)
return: HAL_xxx */ return: HAL_xxx */
int32_t _dau_wave_col_trigger_by_fault(void) int32_t _dau_wave_col_trigger_by_fault(void)
{ {
#if 0
uint8_t i = 0; uint8_t i = 0;
uint32_t addr = 0; uint32_t addr = 0;
int32_t rv = HAL_ERROR;
/* 上次触发没有完成直接退出 */ /* 上次触发没有完成直接退出 */
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP)) if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP))
@ -963,10 +985,10 @@ int32_t _dau_wave_col_trigger_by_fault(void)
/* 置标志位 */ /* 置标志位 */
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP); MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
is_OK = TRUE;
return HAL_OK; return HAL_OK;
#endif
#if 0
static uint8_t temp = FALSE; static uint8_t temp = FALSE;
if (temp) if (temp)
{ {
@ -1001,6 +1023,7 @@ int32_t _dau_wave_col_trigger_by_fault(void)
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP); MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
return rv; return rv;
#endif
} }
/* description: 寄存器触发波形采集 /* description: 寄存器触发波形采集
@ -1012,21 +1035,22 @@ int32_t _dau_wave_col_trigger_by_reg(void)
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
/* 上次触发没有完成直接退出 */ /* 上次触发没有完成直接退出 */
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP)) //if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
{ //{
return HAL_OK; // return HAL_OK;
} //}
/* 定时开始采集 */ /* 定时开始采集 */
tick = HAL_GetTick(); //tick = HAL_GetTick();
if ((tick - dau_ctrl.col_time) < (dev_config.collect_interval * 60000) //if ((tick - dau_ctrl.col_time) < (dev_config.collect_interval * 60000)
&& !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE)) // && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
{ //{
return HAL_OK; // return HAL_OK;
} //}
E_RETURN(_dau_wave_col_start()); E_RETURN(_dau_wave_col_start());
//E_RETURN(_dau_wave_col_defect()); //E_RETURN(_dau_wave_col_defect());
//common_watchdog_set(COM_WDG_DAU);
E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG)); E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG));
_dau_power_calculate(DAU_SOURCE_REG); _dau_power_calculate(DAU_SOURCE_REG);
@ -1044,6 +1068,9 @@ int32_t _dau_wave_col_trigger_by_reg(void)
static void _dau_init(void) static void _dau_init(void)
{ {
char version[DEV_COMPILE_TIME_LEN] = {0}; char version[DEV_COMPILE_TIME_LEN] = {0};
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
uint16_t addr = 0;
uint8_t i = 0;
dau_ctrl.spi = &hspi1; dau_ctrl.spi = &hspi1;
@ -1076,7 +1103,10 @@ static void _dau_init(void)
HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET);
osDelay(1000); osDelay(10000);
common_watchdog_set(COM_WDG_DAU);
osDelay(10000);
common_watchdog_set(COM_WDG_DAU);
/* 读取 FPGA 版本信息 */ /* 读取 FPGA 版本信息 */
if (HAL_OK == _dau_reg_read_global_state()) if (HAL_OK == _dau_reg_read_global_state())
@ -1088,6 +1118,28 @@ static void _dau_init(void)
common_sys_set(COM_SYS_SAVE_INFO, 0); common_sys_set(COM_SYS_SAVE_INFO, 0);
} }
} }
/* 配置校准系数 */
for(i = 0; i < DAU_PORT_DEFECT_MAX - 1; i++)
{
addr = (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE;
//*temp = dev_config.defect_base[i];
*temp = 0x0000;
_dau_reg_write(addr, sizeof(uint16_t));
addr = (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ;
//*temp = dev_config.ADC_adj[i][0];
*temp = 3276;
_dau_reg_write(addr, sizeof(uint16_t));
}
for(i = 0; i < DAU_PORT_FAULT_MAX - 1; i++)
{
addr = (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_BASE;
//*temp = dev_config.fault_base[i];
*temp = 0x0000;
_dau_reg_write(addr, sizeof(uint16_t));
}
} }
/* description: DAU 主任务循环 /* description: DAU 主任务循环
@ -1095,8 +1147,8 @@ static void _dau_init(void)
return: */ return: */
static void _dau_start(void *argument) static void _dau_start(void *argument)
{ {
//uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]); uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint16_t *buf = NULL; //uint16_t *buf = NULL;
uint32_t addr = 0; uint32_t addr = 0;
uint8_t i = 0; uint8_t i = 0;
uint8_t j = 0; uint8_t j = 0;
@ -1108,7 +1160,7 @@ static void _dau_start(void *argument)
for (;;) for (;;)
{ {
osDelay(5000); osDelay(1250);
common_watchdog_set(COM_WDG_DAU); common_watchdog_set(COM_WDG_DAU);
/* 读取全局状态寄存器 */ /* 读取全局状态寄存器 */
@ -1138,20 +1190,22 @@ static void _dau_start(void *argument)
//_dau_wave_col_trigger_by_fault(); //_dau_wave_col_trigger_by_fault();
/* 循环工频缺陷电流采集 */ /* 循环工频缺陷电流采集 */
//_dau_wave_col_trigger_by_reg(); _dau_wave_col_trigger_by_reg();
if (1){
#if 0 #if 0
addr = dau_ctrl.addr_reg; addr = dau_ctrl.addr_reg;
for(i = 0; i < 3; i++) for(i = 0; i < 1; i++)
{ {
common_watchdog_set(COM_WDG_DAU);
vty_print("DEFECT %x %d\r\n", addr, i); vty_print("DEFECT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++) for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
{ {
common_watchdog_set(COM_WDG_DAU);
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024); spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_DEFECT_BYTE_CNT; addr += DAU_PKT_DEFECT_BYTE_CNT;
for(k = 0; k < 512;) for(k = 0; k < 512;)
{ {
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]); vty_print("%04x ", buf[k++]);
if(0 == k % 32) if(0 == k % 32)
{ {
@ -1169,37 +1223,88 @@ static void _dau_start(void *argument)
} }
#endif #endif
#if 0 #if 0
for(i = 0; i < DAU_PORT_POWER_CNT; i++) //for(i = 5; i < DAU_PORT_POWER_CNT; i++)
for(i = 5; i < 6; i++)
{ {
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i); vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.reg_power[i]; buf = (uint16_t*)dau_ctrl.reg_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++) for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{ {
common_watchdog_set(COM_WDG_DAU);
for(k = 0; k < 512;) for(k = 0; k < 512;)
{ {
vty_print("%-04x ", buf[k++]); vty_print("%-04x ", buf[k++]);
if(0 == k % 32) if(0 == (j*512+k ) % 40)
{ {
osDelay(100); osDelay(100);
vty_print("\r\n"); vty_print("\r\n");
} }
} }
if(k % 32 != 0)
{
osDelay(100);
vty_print("\r\n");
}
buf += 512; buf += 512;
} }
vty_print("\r\n"); vty_print("\r\n");
} }
#endif #endif
#if 0
addr = dau_ctrl.addr_fault;
for(i = 0; i < 1; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("FAULT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_FAULT_BYTE_CNT;
for(k = 0; k < 512;)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if(0 == k % 32)
{
osDelay(100);
vty_print("\r\n");
}
}
if(k % 32 != 0)
{
osDelay(100);
vty_print("\r\n");
}
}
vty_print("\r\n");
}
#endif
#if 0
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.fault_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{
for(k = 0; k < 512;)
{
vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40)
{
osDelay(100);
vty_print("\r\n");
}
}
buf += 512;
}
vty_print("\r\n");
}
#endif
#if 0
while(1) while(1)
{ {
osDelay(500); osDelay(500);
common_watchdog_set(COM_WDG_DAU); common_watchdog_set(COM_WDG_DAU);
//_dau_reg_read_port_state();
//vty_print("%d\r\n", dau_ctrl.reg_port_state.DAVR[0]);
#if 1
if (1 == _dau_spi_rw) if (1 == _dau_spi_rw)
{ {
_dau_spi_rw = 0; _dau_spi_rw = 0;
@ -1212,7 +1317,10 @@ static void _dau_start(void *argument)
_dau_spi_rw = 0; _dau_spi_rw = 0;
_dau_reg_write(_dau_spi_addr, 2); _dau_reg_write(_dau_spi_addr, 2);
} }
#endif
} }
#endif
}
} }
} }

@ -186,6 +186,17 @@ static HAL_StatusTypeDef _dev_config_default_set(void)
dev_config.vin = DEV_VIN_ADJ_DEFAULT; dev_config.vin = DEV_VIN_ADJ_DEFAULT;
dev_config.vin_adj = DEV_VIN_ADJ_DEFAULT; dev_config.vin_adj = DEV_VIN_ADJ_DEFAULT;
for(i = 0; i < DAU_PORT_DEFECT_MAX; i++)
{
dev_config.defect_base[i] = 0x8000;
dev_config.ADC_adj[i][0] = 3276;
}
for(i = 0; i < DAU_PORT_FAULT_MAX; i++)
{
dev_config.fault_base[i] = 0x8000;
}
dev_config.keepalive = 5; dev_config.keepalive = 5;
dev_config.collect_interval = 10; dev_config.collect_interval = 10;
snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT"); snprintf(dev_config.APN, DEV_APN_LEN, "CMIOT");

@ -50,6 +50,12 @@ void MX_DMA_Init(void)
/* DMA1_Channel3_IRQn interrupt configuration */ /* DMA1_Channel3_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 5, 0); HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn); HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn);
/* DMA1_Channel4_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
/* DMA1_Channel5_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
/* DMA1_Channel6_IRQn interrupt configuration */ /* DMA1_Channel6_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 5, 0); HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn); HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
@ -59,9 +65,6 @@ void MX_DMA_Init(void)
/* DMA2_Channel4_IRQn interrupt configuration */ /* DMA2_Channel4_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Channel4_IRQn, 5, 0); HAL_NVIC_SetPriority(DMA2_Channel4_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA2_Channel4_IRQn); HAL_NVIC_EnableIRQ(DMA2_Channel4_IRQn);
/* DMA2_Channel5_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Channel5_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA2_Channel5_IRQn);
} }

@ -60,6 +60,9 @@ void MX_GPIO_Init(void)
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOE, POWER_GPS_Pin|POWER_DAU_Pin|POWER_4G_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOE, POWER_GPS_Pin|POWER_DAU_Pin|POWER_4G_Pin, GPIO_PIN_RESET);
/*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);
@ -78,21 +81,19 @@ 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 : PEPin PEPin PEPin */ /*Configure GPIO pins : POWER_GPS_Pin POWER_3V3_Pin POWER_DAU_Pin POWER_4G_Pin */
GPIO_InitStruct.Pin = POWER_GPS_Pin|POWER_DAU_Pin|POWER_4G_Pin; GPIO_InitStruct.Pin = POWER_GPS_Pin|POWER_3V3_Pin|POWER_DAU_Pin|POWER_4G_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
/*Configure GPIO pins : PE3 PE4 PE5 PE6 /*Configure GPIO pins : PE4 PE5 PE6 PE7
PE7 PE8 PE9 PE10 PE8 PE9 PE10 PE12
PE12 PE13 PE14 PE15 PE13 PE14 PE15 PE1 */
PE1 */ GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 |GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_12
|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_1;
|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15
|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);
@ -107,7 +108,7 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pins : PFPin PFPin */ /*Configure GPIO pins : WDG_Pin DAU_RST_Pin */
GPIO_InitStruct.Pin = WDG_Pin|DAU_RST_Pin; GPIO_InitStruct.Pin = WDG_Pin|DAU_RST_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
@ -134,7 +135,7 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */ /*Configure GPIO pin : DAU_CS_Pin */
GPIO_InitStruct.Pin = DAU_CS_Pin; GPIO_InitStruct.Pin = DAU_CS_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
@ -173,15 +174,15 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/*Configure GPIO pins : PDPin PDPin PDPin PDPin */ /*Configure GPIO pins : BAT_CHARGE_Pin BAT_CLK_Pin RS485_B_DE_Pin GPS_RST_Pin */
GPIO_InitStruct.Pin = BAT_CHARGE_Pin|BAT_CLK_Pin|RS485_B_DE_Pin|GPS_RST_Pin; GPIO_InitStruct.Pin = BAT_CHARGE_Pin|BAT_CLK_Pin|RS485_B_DE_Pin|GPS_RST_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/*Configure GPIO pins : PGPin PGPin PGPin PGPin /*Configure GPIO pins : RS485_A_DE_Pin LED_RUN_Pin POWER_RS485_Pin G4G_RST_Pin
PGPin */ SPI_FLASH_WP_Pin */
GPIO_InitStruct.Pin = RS485_A_DE_Pin|LED_RUN_Pin|POWER_RS485_Pin|G4G_RST_Pin GPIO_InitStruct.Pin = RS485_A_DE_Pin|LED_RUN_Pin|POWER_RS485_Pin|G4G_RST_Pin
|SPI_FLASH_WP_Pin; |SPI_FLASH_WP_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
@ -189,13 +190,13 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */ /*Configure GPIO pin : BAT_CHECK_Pin */
GPIO_InitStruct.Pin = BAT_CHECK_Pin; GPIO_InitStruct.Pin = BAT_CHECK_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(BAT_CHECK_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(BAT_CHECK_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */ /*Configure GPIO pin : SPI_FLASH_CS_Pin */
GPIO_InitStruct.Pin = SPI_FLASH_CS_Pin; GPIO_InitStruct.Pin = SPI_FLASH_CS_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;

@ -49,7 +49,7 @@
/* Private variables ---------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */ /* USER CODE BEGIN PV */
uint8_t system_init_flag = 0; // 表示程åºÂ<EFBFBD>å·²è¿â?ºÃ¥â?¦Â¥Ã¦â?œÂ<C593>作系çÂ??. uint8_t system_init_flag = 0; // 表示程序已è¿â?ºÃ¥â?¦Â¥Ã¦â?œÂÃ¤Â½Å“ç³»çÂ??.
/* USER CODE END PV */ /* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
@ -70,6 +70,7 @@ void MX_FREERTOS_Init(void);
*/ */
int main(void) int main(void)
{ {
/* USER CODE BEGIN 1 */ /* USER CODE BEGIN 1 */
__set_PRIMASK(0); __set_PRIMASK(0);
/* USER CODE END 1 */ /* USER CODE END 1 */
@ -108,13 +109,14 @@ int main(void)
/* Init scheduler */ /* Init scheduler */
osKernelInitialize(); osKernelInitialize();
/* Call init function for freertos objects (in freertos.c) */ /* Call init function for freertos objects (in cmsis_os2.c) */
MX_FREERTOS_Init(); MX_FREERTOS_Init();
/* Start scheduler */ /* Start scheduler */
osKernelStart(); osKernelStart();
/* We should never get here as control is now taken by the scheduler */ /* We should never get here as control is now taken by the scheduler */
/* Infinite loop */ /* Infinite loop */
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
while (1) while (1)

@ -20,7 +20,6 @@
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "main.h" #include "main.h"
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
/* USER CODE END Includes */ /* USER CODE END Includes */
@ -63,6 +62,7 @@
*/ */
void HAL_MspInit(void) void HAL_MspInit(void)
{ {
/* USER CODE BEGIN MspInit 0 */ /* USER CODE BEGIN MspInit 0 */
/* USER CODE END MspInit 0 */ /* USER CODE END MspInit 0 */

@ -62,11 +62,13 @@ extern DMA_HandleTypeDef hdma_spi1_rx;
extern DMA_HandleTypeDef hdma_spi1_tx; extern DMA_HandleTypeDef hdma_spi1_tx;
extern SPI_HandleTypeDef hspi1; extern SPI_HandleTypeDef hspi1;
extern TIM_HandleTypeDef htim7; extern TIM_HandleTypeDef htim7;
extern DMA_HandleTypeDef hdma_uart4_rx; extern DMA_HandleTypeDef hdma_usart1_rx;
extern DMA_HandleTypeDef hdma_usart1_tx;
extern DMA_HandleTypeDef hdma_usart2_rx; extern DMA_HandleTypeDef hdma_usart2_rx;
extern DMA_HandleTypeDef hdma_usart3_rx; extern DMA_HandleTypeDef hdma_usart3_rx;
extern DMA_HandleTypeDef hdma_usart3_tx; extern DMA_HandleTypeDef hdma_usart3_tx;
extern UART_HandleTypeDef huart4; extern UART_HandleTypeDef huart4;
extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart2; extern UART_HandleTypeDef huart2;
extern UART_HandleTypeDef huart3; extern UART_HandleTypeDef huart3;
/* USER CODE BEGIN EV */ /* USER CODE BEGIN EV */
@ -221,6 +223,34 @@ void DMA1_Channel3_IRQHandler(void)
/* USER CODE END DMA1_Channel3_IRQn 1 */ /* USER CODE END DMA1_Channel3_IRQn 1 */
} }
/**
* @brief This function handles DMA1 channel4 global interrupt.
*/
void DMA1_Channel4_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Channel4_IRQn 0 */
/* USER CODE END DMA1_Channel4_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_usart1_tx);
/* USER CODE BEGIN DMA1_Channel4_IRQn 1 */
/* USER CODE END DMA1_Channel4_IRQn 1 */
}
/**
* @brief This function handles DMA1 channel5 global interrupt.
*/
void DMA1_Channel5_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Channel5_IRQn 0 */
/* USER CODE END DMA1_Channel5_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_usart1_rx);
/* USER CODE BEGIN DMA1_Channel5_IRQn 1 */
/* USER CODE END DMA1_Channel5_IRQn 1 */
}
/** /**
* @brief This function handles DMA1 channel6 global interrupt. * @brief This function handles DMA1 channel6 global interrupt.
*/ */
@ -263,6 +293,20 @@ void SPI1_IRQHandler(void)
/* USER CODE END SPI1_IRQn 1 */ /* USER CODE END SPI1_IRQn 1 */
} }
/**
* @brief This function handles USART1 global interrupt.
*/
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}
/** /**
* @brief This function handles USART2 global interrupt. * @brief This function handles USART2 global interrupt.
*/ */
@ -347,20 +391,6 @@ void DMA2_Channel4_IRQHandler(void)
/* USER CODE END DMA2_Channel4_IRQn 1 */ /* USER CODE END DMA2_Channel4_IRQn 1 */
} }
/**
* @brief This function handles DMA2 channel5 global interrupt.
*/
void DMA2_Channel5_IRQHandler(void)
{
/* USER CODE BEGIN DMA2_Channel5_IRQn 0 */
/* USER CODE END DMA2_Channel5_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_uart4_rx);
/* USER CODE BEGIN DMA2_Channel5_IRQn 1 */
/* USER CODE END DMA2_Channel5_IRQn 1 */
}
/* USER CODE BEGIN 1 */ /* USER CODE BEGIN 1 */
/* USER CODE END 1 */ /* USER CODE END 1 */

@ -39,7 +39,8 @@ UART_HandleTypeDef huart4;
UART_HandleTypeDef huart1; UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2; UART_HandleTypeDef huart2;
UART_HandleTypeDef huart3; UART_HandleTypeDef huart3;
DMA_HandleTypeDef hdma_uart4_rx; DMA_HandleTypeDef hdma_usart1_rx;
DMA_HandleTypeDef hdma_usart1_tx;
DMA_HandleTypeDef hdma_usart2_rx; DMA_HandleTypeDef hdma_usart2_rx;
DMA_HandleTypeDef hdma_usart3_rx; DMA_HandleTypeDef hdma_usart3_rx;
DMA_HandleTypeDef hdma_usart3_tx; DMA_HandleTypeDef hdma_usart3_tx;
@ -56,7 +57,7 @@ void MX_UART4_Init(void)
/* USER CODE END UART4_Init 1 */ /* USER CODE END UART4_Init 1 */
huart4.Instance = UART4; huart4.Instance = UART4;
huart4.Init.BaudRate = 115200; huart4.Init.BaudRate = 9600;
huart4.Init.WordLength = UART_WORDLENGTH_8B; huart4.Init.WordLength = UART_WORDLENGTH_8B;
huart4.Init.StopBits = UART_STOPBITS_1; huart4.Init.StopBits = UART_STOPBITS_1;
huart4.Init.Parity = UART_PARITY_NONE; huart4.Init.Parity = UART_PARITY_NONE;
@ -87,7 +88,7 @@ void MX_USART1_UART_Init(void)
/* USER CODE END USART1_Init 1 */ /* USER CODE END USART1_Init 1 */
huart1.Instance = USART1; huart1.Instance = USART1;
huart1.Init.BaudRate = 9600; huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Parity = UART_PARITY_NONE;
@ -203,24 +204,6 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
GPIO_InitStruct.Alternate = GPIO_AF8_UART4; GPIO_InitStruct.Alternate = GPIO_AF8_UART4;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* UART4 DMA Init */
/* UART4_RX Init */
hdma_uart4_rx.Instance = DMA2_Channel5;
hdma_uart4_rx.Init.Request = DMA_REQUEST_2;
hdma_uart4_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_uart4_rx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_uart4_rx.Init.MemInc = DMA_MINC_ENABLE;
hdma_uart4_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_uart4_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_uart4_rx.Init.Mode = DMA_NORMAL;
hdma_uart4_rx.Init.Priority = DMA_PRIORITY_LOW;
if (HAL_DMA_Init(&hdma_uart4_rx) != HAL_OK)
{
Error_Handler();
}
__HAL_LINKDMA(uartHandle,hdmarx,hdma_uart4_rx);
/* UART4 interrupt Init */ /* UART4 interrupt Init */
HAL_NVIC_SetPriority(UART4_IRQn, 6, 0); HAL_NVIC_SetPriority(UART4_IRQn, 6, 0);
HAL_NVIC_EnableIRQ(UART4_IRQn); HAL_NVIC_EnableIRQ(UART4_IRQn);
@ -258,6 +241,44 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
GPIO_InitStruct.Alternate = GPIO_AF7_USART1; GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USART1 DMA Init */
/* USART1_RX Init */
hdma_usart1_rx.Instance = DMA1_Channel5;
hdma_usart1_rx.Init.Request = DMA_REQUEST_2;
hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_usart1_rx.Init.Mode = DMA_NORMAL;
hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;
if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK)
{
Error_Handler();
}
__HAL_LINKDMA(uartHandle,hdmarx,hdma_usart1_rx);
/* USART1_TX Init */
hdma_usart1_tx.Instance = DMA1_Channel4;
hdma_usart1_tx.Init.Request = DMA_REQUEST_2;
hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE;
hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_usart1_tx.Init.Mode = DMA_NORMAL;
hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW;
if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK)
{
Error_Handler();
}
__HAL_LINKDMA(uartHandle,hdmatx,hdma_usart1_tx);
/* USART1 interrupt Init */
HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
/* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE BEGIN USART1_MspInit 1 */
/* USER CODE END USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */
@ -408,9 +429,6 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
*/ */
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1); HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1);
/* UART4 DMA DeInit */
HAL_DMA_DeInit(uartHandle->hdmarx);
/* UART4 interrupt Deinit */ /* UART4 interrupt Deinit */
HAL_NVIC_DisableIRQ(UART4_IRQn); HAL_NVIC_DisableIRQ(UART4_IRQn);
/* USER CODE BEGIN UART4_MspDeInit 1 */ /* USER CODE BEGIN UART4_MspDeInit 1 */
@ -431,6 +449,12 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
*/ */
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
/* USART1 DMA DeInit */
HAL_DMA_DeInit(uartHandle->hdmarx);
HAL_DMA_DeInit(uartHandle->hdmatx);
/* USART1 interrupt Deinit */
HAL_NVIC_DisableIRQ(USART1_IRQn);
/* USER CODE BEGIN USART1_MspDeInit 1 */ /* USER CODE BEGIN USART1_MspDeInit 1 */
/* USER CODE END USART1_MspDeInit 1 */ /* USER CODE END USART1_MspDeInit 1 */
@ -553,7 +577,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
notify_to_task(wl_ctrl.handle); notify_to_task(wl_ctrl.handle);
} }
else if (UART4 == huart->Instance) else if (USART1 == huart->Instance)
{ {
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI)) if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI))
{ {
@ -592,7 +616,6 @@ void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{ {
if(USART2 == huart->Instance) if(USART2 == huart->Instance)
{ {
vty_print_usart("#U12\r\n");
HAL_UART_Abort(huart); HAL_UART_Abort(huart);
dau_ctrl.len_buf_gps = 0; dau_ctrl.len_buf_gps = 0;
dau_ctrl.is_half_buf_gps = FALSE; dau_ctrl.is_half_buf_gps = FALSE;
@ -600,14 +623,12 @@ void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
} }
if(USART3 == huart->Instance) if(USART3 == huart->Instance)
{ {
vty_print_usart("#U13\r\n");
HAL_UART_Abort(huart); HAL_UART_Abort(huart);
HAL_GPIO_WritePin(RS485_B_DE_GPIO_Port, RS485_B_DE_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(RS485_B_DE_GPIO_Port, RS485_B_DE_Pin, GPIO_PIN_RESET);
HAL_UARTEx_ReceiveToIdle_DMA(huart, wl_ctrl.dma_rx_buf, WL_DMA_RX_BUF_LEN); HAL_UARTEx_ReceiveToIdle_DMA(huart, wl_ctrl.dma_rx_buf, WL_DMA_RX_BUF_LEN);
} }
else if(UART4 == huart->Instance) else if(USART1 == huart->Instance)
{ {
vty_print_usart("#U14\r\n");
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI)) if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_CLI))
{ {
cli_buf.end = 0; cli_buf.end = 0;

@ -1915,6 +1915,9 @@ static void _wl_4G_hw_restart(void)
HAL_GPIO_WritePin(POWER_4G_GPIO_Port, POWER_4G_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(POWER_4G_GPIO_Port, POWER_4G_Pin, GPIO_PIN_RESET);
HAL_UART_Abort(wl_ctrl.uart); HAL_UART_Abort(wl_ctrl.uart);
HAL_UART_DeInit(wl_ctrl.uart); HAL_UART_DeInit(wl_ctrl.uart);
/* 初始化软硬件 */
osDelay(10000);
wl_ctrl.state = 0; wl_ctrl.state = 0;
wl_ctrl.send_cnt = 0; wl_ctrl.send_cnt = 0;
wl_ctrl.mul_idx = 0; wl_ctrl.mul_idx = 0;
@ -1922,9 +1925,6 @@ static void _wl_4G_hw_restart(void)
wl_ctrl.time_send = HAL_GetTick() + 20000; wl_ctrl.time_send = HAL_GetTick() + 20000;
wl_ctrl.err_cnt++; wl_ctrl.err_cnt++;
memset(&wl_buf_list_rx, 0, sizeof(wl_buf_list_t)); memset(&wl_buf_list_rx, 0, sizeof(wl_buf_list_t));
/* 初始化硬件 */
osDelay(10000);
MX_USART3_UART_Init(); MX_USART3_UART_Init();
_wl_4G_hw_init(); _wl_4G_hw_init();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save