FluxDC/components/FluxUart/FluxUart.h

81 lines
1.7 KiB
C
Raw Normal View History

2025-03-11 18:55:34 +08:00
2025-03-15 09:37:07 +08:00
#ifndef _FLUX_UART_H
#define _FLUX_UART_H
#ifdef __cplusplus
extern "C" {
#endif
2025-03-11 18:55:34 +08:00
#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"
2025-03-15 09:37:07 +08:00
2025-03-11 18:55:34 +08:00
/* UART */
/* UART1 RT-2 TX-1*/
/* UART2 RT-46 TX-45*/
2025-03-15 13:17:10 +08:00
#define ECHO_TEST_TXD2 GPIO_NUM_45
#define ECHO_TEST_RXD2 GPIO_NUM_46
2025-03-11 18:55:34 +08:00
#define ECHO_UART_PORT_NUM2 (UART_NUM_2)
2025-03-15 13:17:10 +08:00
#define ECHO_TEST_TXD1 GPIO_NUM_1
#define ECHO_TEST_RXD1 GPIO_NUM_2
2025-03-11 18:55:34 +08:00
#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)
2025-03-15 09:37:07 +08:00
/* Choose whether to use big-endian or little-endian. Modbus-RTU communication uses little-endian. */
#define BIG_ENDIAN_USED 0
#define LITTLE_ENDIAN_USED !BIG_ENDIAN_USED
2025-03-15 09:37:07 +08:00
/* Digital flow meter address */
#define FLUX_ADDR 0x01
#define FLUX_FUNC_READ 0x03
#define FLUX_FUNC_SET 0x16
2025-03-15 09:37:07 +08:00
/* Modbus-RTU frame format */
/* All data from the wet flow meter are two bytes long */
/*
ADDR : 1byte
FUNC : 1byte
DATA : 2byte
CRC : 2byte
*/
struct ModbusRTU_Frame
{
unsigned char ADDR;
unsigned char FUNC;
2025-03-13 10:26:19 +08:00
unsigned char DATA[4];
unsigned char CRC[2];
};
2025-03-13 10:26:19 +08:00
extern struct ModbusRTU_Frame flux_frame;
extern struct ModbusRTU_Frame breath_frame;
2025-03-11 18:55:34 +08:00
2025-03-15 09:37:07 +08:00
/* UART1 response task */
2025-03-15 13:17:10 +08:00
void uart1_echoTask(void* arg);
2025-03-11 18:55:34 +08:00
2025-03-15 09:37:07 +08:00
/* UART2 response task */
2025-03-15 13:17:10 +08:00
void uart2_echoTask(void* arg);
2025-03-11 18:55:34 +08:00
2025-03-15 09:37:07 +08:00
/* CRC16 checksum */
unsigned short CRC16(unsigned char* pchMsg, unsigned short wDataLen);
2025-03-13 10:26:19 +08:00
2025-03-15 09:37:07 +08:00
esp_err_t ModbusRTU_Send(uart_port_t uart_num, struct ModbusRTU_Frame *frame);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif