forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-13 72def895431ad7a08e635b11f3da738e2b2c4618
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#ifndef _MASTER_SLAVE_INTER_H_
#define _MASTER_SLAVE_INTER_H_
 
#include "define_all.h" 
#include "master_slave_recv_api.h"
#include "administrator.h"
#include "system_parameter.h"
#include "sundry.h"
#include "lcd.h"
 
#define CMD_DATATABLE_CRC_LENGTH 4     //ÃüÁî-Êý¾Ý±í-CRCУÑéµÄÊý¾Ý³¤¶È
#define ONE_BYTE_DATA_LENGTH 1         //Ò»×Ö½ÚµÄÊý¾Ý³¤¶È
#define WRITE_HARDWARE_DATA_LENGTH 15  //дӲ¼þ²ÎÊýµÄÊý¾Ý³¤¶È
#define WRITE_UT_CAL_DATA_LENGTH 14    //д̽ͷУ׼²ÎÊýµÄÊý¾Ý³¤¶È
#define WRITE_UT_ERR_TH_DATA_LENGTH 10 //д̽ͷãÐÖµ²ÎÊýµÄÊý¾Ý³¤¶È
#define WRITE_UART_DATA_LENGTH 3       //дUARTµÄÊý¾Ý³¤¶È
 
// ¼ÆÁ¿°åµçÔ´
#define MEASURE_PWR_PORT     GPIOC
#define MEASURE_PWR_PIN     GPIO_Pin_14
 
// Ö÷´Ó¿ØÖÆ
#define MAIN_TO_SLAVE_PORT     GPIOC
#define MAIN_TO_SLAVE_PIN     GPIO_Pin_8 
 
// ´ÓÖ÷¿ØÖÆ
#define SLAVE_TO_MAIN_PORT     GPIOC
#define SLAVE_TO_MAIN_PIN     GPIO_Pin_7
 
// Ö÷´Óʱ¼äͬ²½
#define SYNC_PORT                     GPIOC
#define SYNC_PIN                         GPIO_Pin_13
 
 
//Ö÷´Óʱ¼äͬ²½
#define SLAVE_SYNC(__HANDLE__) ((__HANDLE__ == SET) ? GPIO_SetBits(SYNC_PORT,SYNC_PIN) : GPIO_ResetBits(SYNC_PORT,SYNC_PIN))
 
//Ö÷´ÓͨѶÁ¬½Ó
#define SLAVE_CONNECT(__HANDLE__) ((__HANDLE__ == SET) ? GPIO_SetBits(MAIN_TO_SLAVE_PORT,MAIN_TO_SLAVE_PIN) : GPIO_ResetBits(MAIN_TO_SLAVE_PORT,MAIN_TO_SLAVE_PIN))
 
 
//´Ó»úµçÔ´¿ª¹Ø
#define SLAVE_PWR_ON         GPIO_ResetBits(MEASURE_PWR_PORT, MEASURE_PWR_PIN)
#define SLAVE_PWR_OFF     GPIO_SetBits(MEASURE_PWR_PORT, MEASURE_PWR_PIN)
 
#define MASTER_SEND_NORMAL(__DATA__,__SIZE__)     UARTx_SendData_Normal(UART3,__DATA__,__SIZE__)
 
//´Ó»úÖØÆô
#define SLAVE_PWR_RESTART \
  do                      \
  {                       \
    SLAVE_PWR_OFF;        \
    SLAVE_PWR_ON;         \
  } while (0)
 
#define SLAVE_SYNC_CMD          \
  do                            \
  {                             \
    SLAVE_SYNC(SET);                       \
    delay_ms(1);               \
    SLAVE_SYNC(RESET);                     \
  } while (0)
 
#pragma pack(1)
 
#define MICRO_CONSTANT_FLOW_FORMAT_SIZE sizeof(MICRO_CONSTANT_FLOW_PARA_T)
typedef struct{
    uint8_t micro_flow_time_start_bcd[2];
    uint8_t micro_flow_time_end_bcd[2];
    uint16_t micro_flow_once_duration_min;
    uint32_t micro_flow_threshold;
    uint8_t micro_flow_duration_days;
    uint8_t constant_flow_time_start_bcd[2];
    uint8_t constant_flow_time_end_bcd[2];
    uint16_t constant_flow_once_duration_min;
    uint32_t constant_flow_threshold_down;
    uint32_t constant_flow_threshold_up;
    uint8_t constant_flow_duration_days;
    uint8_t reserve[12];
}MICRO_CONSTANT_FLOW_PARA_T;
 
 
#define ZERO_DRIFT_CFG_SIZE sizeof(ZERO_DRIFT_CORR_CFG_T)
typedef struct
{
    FlagStatus zero_corr_ctl;
    uint8_t start_hour_min_bcd[2];
    uint8_t reserve[4];
}ZERO_DRIFT_CORR_CFG_T;    
 
#pragma pack()
 
extern uint8_t zero_drift_valve_flag;
 
extern MICRO_CONSTANT_FLOW_PARA_T micro_constant_flow_para_g;
extern ZERO_DRIFT_CORR_CFG_T zero_drift_cfg_g;
 
extern ErrorStatus_STM32 sys_mode_conversion_show_g;
 
void Measure_IO_Init(void);
    
void Send_Write_Slave_Command(uint8_t data_table, uint8_t *pBuffer, uint16_t data_len);
void Send_Read_Slave_Command(uint8_t data_table);
 
void Slave_Inter_Normal_FlowDataProcess(SYS_DELAY_SEC_PARA_T *sys_delay_sec_para_p);
void Slave_Inter_Cal_FlowDataProcess(void);
void Master_Slave_SysModeConversionProcess(SYS_DISPLAY_PAPA_T *sys_display_para_p);
void State_Alarm_Bytes_TempPressDataHandler(struct measure_para *sys_realtime_data_p);
float Per_Second_InstantScCalculate(struct measure_para *sys_realtime_data_p);
uint8_t ZeroDrift_Correction(float instant_sc,ZERO_DRIFT_CORR_CFG_T * zero_drift_p);
#endif