FluxDC/components/FluxUart/FluxUart.h
2025-03-13 10:26:19 +08:00

65 lines
1.4 KiB
C

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/uart.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
#include "esp_log.h"
/* UART */
/* UART1 RT-2 TX-1*/
/* UART2 RT-46 TX-45*/
#define ECHO_TEST_TXD2 (45)
#define ECHO_TEST_RXD2 (46)
#define ECHO_UART_PORT_NUM2 (UART_NUM_2)
#define ECHO_TEST_TXD1 (1)
#define ECHO_TEST_RXD1 (2)
#define ECHO_UART_PORT_NUM1 (UART_NUM_1)
#define ECHO_TEST_RTS (UART_PIN_NO_CHANGE)
#define ECHO_TEST_CTS (UART_PIN_NO_CHANGE)
#define ECHO_UART_BAUD_RATE (9600)
#define ECHO_TASK_STACK_SIZE (16*1024)
/*选择采用小端序还是大端序 Modbus-RTU通讯采用的是小端序*/
#define BIG_ENDIAN_USED 0
#define LITTLE_ENDIAN_USED !BIG_ENDIAN_USED
/*数字流量计地址*/
#define FLUX_ADDR 0x01
#define FLUX_FUNC_READ 0x03
#define FLUX_FUNC_SET 0x16
/*Modbus-RTU帧格式 */
/*湿式流量计所有数据均为两个字节*/
/*
ADDR : 1byte
FUNC : 1byte
DATA : 2byte
CRC : 2byte
*/
struct ModbusRTU_Frame
{
unsigned char ADDR;
unsigned char FUNC;
unsigned char DATA[4];
unsigned char CRC[2];
};
extern struct ModbusRTU_Frame flux_frame;
extern struct ModbusRTU_Frame breath_frame;
/*串口1响应任务*/
void uart1_echoTask(void);
/*串口2响应任务*/
void uart2_echoTask(void);
/*CRC16校验*/
unsigned short CRC16(unsigned char* pchMsg, unsigned short wDataLen);
esp_err_t ModbusRTU_Send(uart_port_t uart_num, struct ModbusRTU_Frame *frame);