H2S stm32F407ZET stm32F407ZGT
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
H2S/Code/base/Src/device_port.c

149 lines
3.7 KiB

#include "main.h"
#include "cmsis_os.h"
#include "elog.h"
#if 1
extern void get_h2s_3(float *concentration, double voltage, double t);
extern void get_h2s_2(double *concentration, double voltage, double t);
extern void usart6_receive_enable();
extern void usart6_send_enable();
extern void max3243_enable();
extern void max3160_232_FULL_mode();
extern void max3160_485_send_mode();
extern void max3160_485_receive_mode();
extern void uart2_power_enable();
extern void uart3_power_enable();
extern void uart4_power_enable();
extern void uart6_power_enable();
void usart6_receive_enable()
{
/*GPIO默认低电平*/
HAL_GPIO_WritePin(R_W_GPIO_Port,R_W_Pin, RESET);
}
void usart6_send_enable()
{
HAL_GPIO_WritePin(R_W_GPIO_Port,R_W_Pin, SET);
}
void max3243_enable()
{
/* 使能 3243 工作, 系统默认低电平, 启动开启工作*/
HAL_GPIO_WritePin(MAX3242_EN_GPIO_Port,MAX3242_EN_Pin, SET);
}
void max3160_232_FULL_mode()
{
/*232_485选择 : 232-拉低 , DPLX 拉低 全双*/
HAL_GPIO_WritePin(SEL_232_485_GPIO_Port,SEL_232_485_Pin, RESET);
HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, RESET);
}
void max3160_485_send_mode()
{
/*232_485选择: 485-拉高 , DPLX 拉高 半双 , DE 拉低使能发送 */
HAL_GPIO_WritePin(SEL_232_485_GPIO_Port,SEL_232_485_Pin, SET);
HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, RESET);
HAL_GPIO_WritePin(DE485_GPIO_Port, DE485_Pin, SET);
}
void max3160_485_receive_mode()
{
/*232_485选择 -拉高 , DPLX 拉低 全双, DE 拉高接收 默认高电平 */
HAL_GPIO_WritePin(SEL_232_485_GPIO_Port,SEL_232_485_Pin, SET);
HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, SET);
HAL_GPIO_WritePin(DE485_GPIO_Port, DE485_Pin, RESET);
}
void uart2_power_enable()
{
HAL_GPIO_WritePin(SENSOR2_EN_GPIO_Port,SENSOR2_EN_Pin, SET);
}
void uart3_power_enable()
{
HAL_GPIO_WritePin(SENSOR3_EN_GPIO_Port,SENSOR3_EN_Pin, SET);
}
void uart4_power_enable()
{
HAL_GPIO_WritePin(SENSOR4_EN_GPIO_Port,SENSOR4_EN_Pin, SET);
}
void uart6_power_enable()
{
HAL_GPIO_WritePin(SENSOR6_EN_GPIO_Port,SENSOR6_EN_Pin, SET);
}
double get_h2s(double voltage, double t)
{
/*
H2S_con = a20 *voltage *ET
Et = a3*T^3 + a2*T^2 + a1*T + a0 温度补偿因子
Sulphide_con = H2S_con * G
a20: 20度时 电压值 0.007939553 20度时得斜率
voltage 毫伏
*/
double a0 = 3.149951E+00;
double a1 = -1.768957E-01;
double a2 = 3.656828E-03;
double a3 = -1.176627E-05;
double a20 = 7.939553E-03;
double Ug = 7.0E+00;
return ( voltage - Ug) * a20 *( a3*t*t*t+ a2*t*t + a1*t + a0 );
}
void get_h2s_2(double *concentration, double voltage, double t)
{
/*
H2S_con = a20 *voltage *ET
Et = a3*T^3 + a2*T^2 + a1*T + a0 温度补偿因子
Sulphide_con = H2S_con * G
a20: 20度时 电压值 0.007939553 20度时得斜率
voltage 毫伏
*/
double a0 = 3.149951E+00;
double a1 = -1.768957E-01;
double a2 = 3.656828E-03;
double a3 = -1.176627E-05;
double a20 = 7.939553E-03;
double Ug = 7.0E+00;
*concentration = ( voltage - Ug) * a20 *( a3*t*t*t+ a2*t*t + a1*t + a0 );
}
void get_h2s_3(float *concentration, double voltage, double t)
{
/*
H2S_con = a20 *voltage *ET
Et = a3*T^3 + a2*T^2 + a1*T + a0 温度补偿因子
Sulphide_con = H2S_con * G
a20: 20度时 电压值 0.007939553 20度时得斜率
voltage 毫伏
*/
double a0 = 3.149951E+00;
double a1 = -1.768957E-01;
double a2 = 3.656828E-03;
double a3 = -1.176627E-05;
double a20 = 7.939553E-03;
double Ug = 7.0E+00;
*concentration = ( voltage - Ug) * a20 *( a3*t*t*t+ a2*t*t + a1*t + a0 );
}
#endif