2025-02-26 09:59:15 +00:00
|
|
|
|
#ifndef FM_UART_DEV_H_
|
|
|
|
|
#define FM_UART_DEV_H_
|
|
|
|
|
|
|
|
|
|
#include "ch32v30x.h"
|
|
|
|
|
#include "HD_UART.h"
|
|
|
|
|
#include "comm_types.h"
|
|
|
|
|
#include "ring_queue.h"
|
|
|
|
|
|
|
|
|
|
#define ASCII_CHAR_BACKSPACE 0x08 /* '\b' */
|
|
|
|
|
#define ASCII_CHAR_CHARACTER_TABULATION 0x09 /* '\t' */
|
|
|
|
|
#define ASCII_CHAR_LINE_FEED 0x0A /* '\n' */
|
|
|
|
|
#define ASCII_CHAR_LINE_TABULATION 0x0B /* '\v' */
|
|
|
|
|
#define ASCII_CHAR_FORM_FEED 0x0C /* '\f' */
|
|
|
|
|
#define ASCII_CHAR_CARRIAGE_RETURN 0x0D /* '\r' */
|
|
|
|
|
|
|
|
|
|
typedef enum{
|
2025-04-02 10:02:25 +00:00
|
|
|
|
J01_485_INDEX = 0,
|
|
|
|
|
J23_485_INDEX = 1,
|
|
|
|
|
J45_485_INDEX = 2,
|
|
|
|
|
J67_485_INDEX = 3,
|
|
|
|
|
J8_485_INDEX = 4,
|
|
|
|
|
J9_485_INDEX = 5,
|
|
|
|
|
Lora_UART_INDEX = 6,
|
|
|
|
|
Su806_UART_INDEX = 7,
|
|
|
|
|
MCU_UART_INDEX = 8,
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}uartIndex_e;
|
|
|
|
|
|
|
|
|
|
typedef struct _uartSendInfo {
|
|
|
|
|
uint8_t *data; //指向数据
|
|
|
|
|
uint16_t count; //已经发送数据字节个数
|
|
|
|
|
uint16_t len; //数据长度
|
2025-04-02 10:02:25 +00:00
|
|
|
|
} uartSendInfo;
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
|
|
|
|
/* UART 驱动数据结构,对应一个uart设备 */
|
|
|
|
|
typedef struct _uart_device_info{
|
|
|
|
|
uint8_t init;
|
|
|
|
|
uartIndex_e uart_index;
|
|
|
|
|
uint32_t uart_baudrate;
|
|
|
|
|
RingQueue uart_ring_queue;
|
|
|
|
|
uartSendInfo uart_send_data;
|
2025-04-02 10:02:25 +00:00
|
|
|
|
} uart_device_info;
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
|
|
|
|
typedef uint32_t device_handle;
|
2025-04-02 10:02:25 +00:00
|
|
|
|
extern device_handle g_J0_handle;
|
|
|
|
|
extern device_handle g_J1_handle;
|
|
|
|
|
extern device_handle g_J2_handle;
|
|
|
|
|
extern device_handle g_J3_handle;
|
|
|
|
|
extern device_handle g_J4_handle;
|
|
|
|
|
extern device_handle g_J5_handle;
|
|
|
|
|
extern device_handle g_J6_handle;
|
|
|
|
|
extern device_handle g_J7_handle;
|
|
|
|
|
extern device_handle g_J8_handle;
|
|
|
|
|
extern device_handle g_J9_handle;
|
|
|
|
|
extern device_handle g_Mcu_handle;
|
|
|
|
|
extern device_handle g_Su806_handle;
|
|
|
|
|
extern device_handle g_Lora_handle;
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
|
|
|
|
uint8_t uart_dev_in_char(device_handle device);
|
|
|
|
|
int uart_dev_char_present(device_handle device);
|
2025-04-02 10:02:25 +00:00
|
|
|
|
|
|
|
|
|
void HostMcu_uartBuf_Init(int32_t rs485BufLen, int32_t loraBufLen, int32_t mcuBufLen, int32_t su806BufLen);
|
|
|
|
|
void SlaveMcu_uartBuf_Init(int32_t rs485BufLen, int32_t mcuBufLen);
|
|
|
|
|
void Init_J0_485(uint32_t baud);
|
2025-02-26 09:59:15 +00:00
|
|
|
|
void Init_J1_485(uint32_t baud);
|
|
|
|
|
void Init_J2_485(uint32_t baud);
|
|
|
|
|
void Init_J3_485(uint32_t baud);
|
|
|
|
|
void Init_J4_485(uint32_t baud);
|
2025-04-02 10:02:25 +00:00
|
|
|
|
void Init_J5_485(uint32_t baud);
|
|
|
|
|
void Init_J6_485(uint32_t baud);
|
|
|
|
|
void Init_J7_485(uint32_t baud);
|
|
|
|
|
void Init_J8_485(uint32_t baud);
|
|
|
|
|
void Init_J9_485(uint32_t baud);
|
|
|
|
|
void Init_Mcu_Uart(uint32_t baud);
|
|
|
|
|
void Init_Su806_Uart(uint32_t baud);
|
|
|
|
|
void Init_Lora_Uart(uint32_t baud);
|
|
|
|
|
void uartIT_Init(void);
|
|
|
|
|
|
|
|
|
|
void J0_Interrupt();
|
|
|
|
|
void J1_Interrupt();
|
|
|
|
|
void J2_Interrupt();
|
|
|
|
|
void J3_Interrupt();
|
|
|
|
|
void J4_Interrupt();
|
|
|
|
|
void J5_Interrupt();
|
|
|
|
|
void J6_Interrupt();
|
|
|
|
|
void J7_Interrupt();
|
|
|
|
|
void J8_Interrupt();
|
|
|
|
|
void J9_Interrupt();
|
|
|
|
|
// void Host_Interrupt();
|
|
|
|
|
// void Slave_Interrupt();
|
|
|
|
|
void Mcu_Interrupt();
|
|
|
|
|
void Su806_Interrupt();
|
|
|
|
|
void Lora_Interrupt();
|
|
|
|
|
|
|
|
|
|
/* 0为主mcu,非0为从mcu */
|
|
|
|
|
extern uint8_t getMCU(void);
|
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
|
2025-02-28 08:57:09 +00:00
|
|
|
|
uint8_t getUartSendState(device_handle device);
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
extern void J0_485_IN_TXE(void);
|
2025-02-28 08:57:09 +00:00
|
|
|
|
extern void J1_485_IN_TXE(void);
|
|
|
|
|
extern void J2_485_IN_TXE(void);
|
|
|
|
|
extern void J3_485_IN_TXE(void);
|
|
|
|
|
extern void J4_485_IN_TXE(void);
|
2025-04-02 10:02:25 +00:00
|
|
|
|
extern void J5_485_IN_TXE(void);
|
|
|
|
|
extern void J6_485_IN_TXE(void);
|
|
|
|
|
extern void J7_485_IN_TXE(void);
|
|
|
|
|
extern void J8_485_IN_TXE(void);
|
|
|
|
|
extern void J9_485_IN_TXE(void);
|
|
|
|
|
extern void Lora_uart_IN_TXE(void);
|
|
|
|
|
// extern void Mcu_uart_IN_TXE(void);
|
|
|
|
|
extern void hostMcu_uart_IN_TXE(void);
|
|
|
|
|
extern void slaveMcu_uart_IN_TXE(void);
|
|
|
|
|
extern void Su806_uart_IN_TXE(void);
|
|
|
|
|
|
|
|
|
|
extern void J0_485_IN_IDLE(void);
|
2025-02-28 08:57:09 +00:00
|
|
|
|
extern void J1_485_IN_IDLE(void);
|
|
|
|
|
extern void J2_485_IN_IDLE(void);
|
|
|
|
|
extern void J3_485_IN_IDLE(void);
|
|
|
|
|
extern void J4_485_IN_IDLE(void);
|
2025-04-02 10:02:25 +00:00
|
|
|
|
extern void J5_485_IN_IDLE(void);
|
|
|
|
|
extern void J6_485_IN_IDLE(void);
|
|
|
|
|
extern void J7_485_IN_IDLE(void);
|
|
|
|
|
extern void J8_485_IN_IDLE(void);
|
|
|
|
|
extern void J9_485_IN_IDLE(void);
|
2025-02-28 08:57:09 +00:00
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
extern void J0_485_IN_RXNE(void);
|
2025-02-28 08:57:09 +00:00
|
|
|
|
extern void J1_485_IN_RXNE(void);
|
|
|
|
|
extern void J2_485_IN_RXNE(void);
|
|
|
|
|
extern void J3_485_IN_RXNE(void);
|
|
|
|
|
extern void J4_485_IN_RXNE(void);
|
2025-04-02 10:02:25 +00:00
|
|
|
|
extern void J5_485_IN_RXNE(void);
|
|
|
|
|
extern void J6_485_IN_RXNE(void);
|
|
|
|
|
extern void J7_485_IN_RXNE(void);
|
|
|
|
|
extern void J8_485_IN_RXNE(void);
|
|
|
|
|
extern void J9_485_IN_RXNE(void);
|
2025-02-28 08:57:09 +00:00
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
#endif
|