202 lines
6.5 KiB
C
202 lines
6.5 KiB
C
/*
|
||
*Copyright (C),2023 , NANOCHAP
|
||
*File name: ENS1_UART.H
|
||
*Author:
|
||
*Version: V1.0
|
||
*Date: 2023-11-
|
||
*Description:
|
||
*Function List:
|
||
1 void UART_Init(CMSDK_UART_TypeDef *CMSDK_UART, UART_InitStructure* uart_paraX);
|
||
2 void UART_ITConfig(CMSDK_UART_TypeDef *CMSDK_UART, UART_ITStructure* uart_paraX);
|
||
3 unsigned char UartPutc(CMSDK_UART_TypeDef *CMSDK_UART ,unsigned char my_ch);
|
||
|
||
History:
|
||
1.V1.0
|
||
Date: -z
|
||
Author:
|
||
Modification: <20><><EFBFBD><EFBFBD>
|
||
*/
|
||
#ifndef _ENS1_UART_H_
|
||
#define _ENS1_UART_H_
|
||
|
||
#include "MY_HEADER.h"
|
||
#include "CMSDK_CM0.h"
|
||
#include "ENS1_CLOCK.h"
|
||
#include "math.h"
|
||
|
||
#define UART0_RX GPIO_2
|
||
#define UART0_TX GPIO_3
|
||
#define UART0_RTS GPIO_4
|
||
#define UART0_CTS GPIO_5
|
||
#define UART1_RX GPIO_12
|
||
#define UART1_TX GPIO_13
|
||
#define UART1_RTS GPIO_14
|
||
#define UART1_CTS GPIO_15
|
||
|
||
#define InterruptDisable __disable_irq
|
||
#define InterruptEnable __enable_irq
|
||
typedef enum uartRcvfifoTrigger{byte_1=0 , bytes_4=1,bytes_8=2,bytes_14=3}uartRcvTrigger;
|
||
typedef enum {OverSamp_16 = 0,OverSamp_13}UART_OverSamp;
|
||
// 外部变量声明(在main.c中定义)
|
||
extern uint8_t uart_rx_buffer[64];
|
||
extern uint8_t uart_rx_count;
|
||
extern volatile uint8_t uart_data_ready;
|
||
|
||
|
||
|
||
typedef enum {
|
||
StopLen_1 = 0,
|
||
StopLen_Other
|
||
}UART_StopLen;
|
||
|
||
typedef enum {
|
||
WordLen_5,
|
||
WordLen_6,
|
||
WordLen_7,
|
||
WordLen_8
|
||
}UART_WordLen;
|
||
|
||
|
||
typedef enum {
|
||
Stick_RESET = 0,
|
||
Stick_SET
|
||
}UART_Stick_EN;
|
||
|
||
typedef enum {
|
||
Odd_SET = 0,
|
||
Even_SET
|
||
}UART_Even_EN;
|
||
|
||
typedef enum {
|
||
Parity_RESET = 0,
|
||
Parity_SET
|
||
}UART_Parity_EN;
|
||
|
||
/*uart<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>*/
|
||
|
||
typedef struct uart_fifo{
|
||
uartRcvTrigger level;
|
||
uint8_t DMA_Enable ;
|
||
uint8_t FIFO_Enable ;
|
||
}UART_FifoStructrue;
|
||
|
||
typedef struct uart_para{
|
||
uint8_t UART_OverSampMode;
|
||
uint32_t UART_BaudRate;
|
||
uint8_t UART_HardwareFlowControl; //Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>
|
||
UART_FifoStructrue* FifoSetting ;
|
||
UART_StopLen stop_len; //停止位长度
|
||
UART_WordLen Word_len; //数据位长度
|
||
UART_Stick_EN Stick_EN; //固定奇偶校验使能
|
||
UART_Even_EN Even_EN; //奇偶校验选择
|
||
UART_Parity_EN Parity_EN; //奇偶校验使能
|
||
}UART_InitStructure;
|
||
|
||
extern UART_FifoStructrue UART0_Fifo;
|
||
extern UART_InitStructure UART0_Init;
|
||
extern UART_FifoStructrue UART1_Fifo;
|
||
extern UART_InitStructure UART1_Init;
|
||
|
||
/*
|
||
<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Դ˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
1<EFBFBD><EFBFBD>THREINT THR<48><52><EFBFBD>ͼĴ<CDBC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<46><4F>
|
||
2<EFBFBD><EFBFBD>RDAINT <20><><EFBFBD>ռĴ<D5BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD> <20><>FIFOģʽ<C4A3>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||
3<EFBFBD><EFBFBD>RTOINT FIFOģʽ<C4A3>½<EFBFBD><C2BD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ֽ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ֽ<EFBFBD><D6BD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD>ڽ<EFBFBD><DABD><EFBFBD>FIFO<46><4F>
|
||
4<EFBFBD><EFBFBD>RLSINT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||
5<EFBFBD><EFBFBD>MSIINT <20><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>CTS<54><53><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>autoflow<6F><77><EFBFBD><EFBFBD>DSR/RI/DCD<43><44><EFBFBD><EFBFBD>״̬
|
||
*/
|
||
/*<2A>ж<EFBFBD>ʹ<EFBFBD><CAB9>*/
|
||
#define MSI_EN (uint8_t)0X8
|
||
#define RLSI_EN (uint8_t)0X4
|
||
#define THRE_EN (uint8_t)0X2
|
||
#define RDAI_EN (uint8_t)0X1
|
||
/*<2A>ж<EFBFBD><D0B6><EFBFBD>Ϣ*/
|
||
#define INT_MODEM_STATUS (uint8_t)0X0
|
||
#define INT_THR_EMPTY (uint8_t)0X1
|
||
#define INT_RCV_DATA_AVAILABLE (uint8_t)0X2
|
||
#define INT_RCV_LINE_STATUS (uint8_t)0X3
|
||
#define INT_CHAR_TIMEOUT_INDICATION (uint8_t)0X6
|
||
|
||
typedef struct uart_it_para{
|
||
uint8_t UartIntModel ; //ѡ<><D1A1><EFBFBD>жϵ<D0B6>ģʽ
|
||
uint8_t UartDMAEnable; //ѡ<><D1A1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>DMA
|
||
}UART_ITStructure;
|
||
|
||
extern UART_ITStructure UART0_ITSet;
|
||
extern UART_ITStructure UART1_ITSet;
|
||
|
||
#define UART_WordLength_5b ((uint8_t)0x00)
|
||
#define UART_WordLength_6b ((uint8_t)0x01)
|
||
#define UART_WordLength_7b ((uint8_t)0x02)
|
||
#define UART_WordLength_8b ((uint8_t)0x03)
|
||
|
||
#define UART_NO_PARITY ((uint8_t)0x00 & 0xff)
|
||
#define UART_LOGIC_1_ODD_NUM ((uint8_t)0x08 & 0xff) //<2F><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
#define UART_LOGIC_1_EVEN_NUM ((uint8_t)0x18 & 0xff) //<2F><EFBFBD>1ż<31><C5BC><EFBFBD><EFBFBD>
|
||
#define UART_STICK_PARITY_AS1 ((uint8_t)0x28 & 0xff) //<2F>̶<EFBFBD><CCB6><EFBFBD>żУ<C5BC><D0A3>Ϊ1
|
||
#define UART_STICK_PARITY_AS0 ((uint8_t)0x38 & 0xff)
|
||
|
||
|
||
/*<2A>ж<EFBFBD><D0B6><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ*/
|
||
/*<2A>жϹ<D0B6><CFB9><EFBFBD>*/
|
||
uint8_t UART_INT_PEND(CMSDK_UART_TypeDef* UARTx); //Ϊ0ʱ<30><CAB1>UART<52><54><EFBFBD>жϹ<D0B6><CFB9><EFBFBD>
|
||
/*<2A>ж<EFBFBD>״̬<D7B4>ж<EFBFBD>*/
|
||
uint8_t UART_INT_TYPE(CMSDK_UART_TypeDef* UARTx);
|
||
/*fifo ʹ<><CAB9>ָʾ<D6B8><CABE>*/
|
||
uint8_t UART_FIFO_USE(CMSDK_UART_TypeDef* UARTx); //0:<3A><>fifoģʽ 1<><31>fifo ʹ<><CAB9>
|
||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO*/
|
||
void UART_TXCLR(CMSDK_UART_TypeDef* UARTx);
|
||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO*/
|
||
void UART_RXCLR(CMSDK_UART_TypeDef* UARTx);
|
||
/*FIFOʹ<4F><CAB9>*/
|
||
void UART_FIFOEnable(CMSDK_UART_TypeDef* UARTx);
|
||
/*FIFO<46>ر<EFBFBD>*/
|
||
void UART_FIFODisable(CMSDK_UART_TypeDef* UARTx);
|
||
|
||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||
uint8_t READ_UART_RCVBuff(CMSDK_UART_TypeDef* UARTx );
|
||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||
void WRITE_UART_THRBuff(CMSDK_UART_TypeDef* UARTx ,uint8_t data);
|
||
|
||
/*FIFO״̬<D7B4><CCAC>ȡ*/
|
||
uint8_t UART_RX_FIFO_LEN(CMSDK_UART_TypeDef* UARTx) ;
|
||
uint8_t UART_TX_FIFO_LEN(CMSDK_UART_TypeDef* UARTx) ;
|
||
uint8_t UART_RX_FIFO_FULL(CMSDK_UART_TypeDef* UARTx) ;
|
||
uint8_t UART_RX_FIFO_EMPTY(CMSDK_UART_TypeDef* UARTx) ;
|
||
uint8_t UART_TX_FIFO_FULL(CMSDK_UART_TypeDef* UARTx) ;
|
||
uint8_t UART_TX_FIFO_EMPTY(CMSDK_UART_TypeDef* UARTx) ;
|
||
|
||
/*<2A>շ<EFBFBD><D5B7><EFBFBD>״̬<D7B4><CCAC>ȡ*/
|
||
uint8_t UARTLine_RCVError(CMSDK_UART_TypeDef* UARTx);
|
||
|
||
/*<2A>жϷ<D0B6><CFB7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>*/
|
||
uint8_t UARTLine_TRANSEmpty(CMSDK_UART_TypeDef* UARTx);
|
||
|
||
/*<2A>ж<EFBFBD>THR<48>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>*/
|
||
uint8_t UARTLine_THREmpty(CMSDK_UART_TypeDef* UARTx);
|
||
|
||
/*UART<52><54>ʼ<EFBFBD><CABC>*/
|
||
void UART_Init(CMSDK_UART_TypeDef *CMSDK_UART, UART_InitStructure* uart_paraX);
|
||
void UART_ITConfig(CMSDK_UART_TypeDef *CMSDK_UART, UART_ITStructure* uart_paraX);
|
||
unsigned char UartPutc(CMSDK_UART_TypeDef *CMSDK_UART ,unsigned char my_ch);
|
||
void Uart_Send(CMSDK_UART_TypeDef *CMSDK_UART ,uint8_t *data, uint8_t len);
|
||
typedef struct {
|
||
uint16_t function_code; // 功能码 (0x0003)
|
||
uint16_t data_length; // 数据长度 (0x0001)
|
||
uint8_t switch_type; // 开关状态以及电刺激类型
|
||
uint8_t intensity; // 强度值
|
||
uint16_t frequency; // 频率值
|
||
uint16_t duration; // 总持续时间 (ms)
|
||
uint16_t rest_time; // 休息时间 (ms)
|
||
uint16_t silent_time; // 静默时间 (ms)
|
||
uint8_t ramp_up_time; // 缓进时间
|
||
uint8_t hold_time; // 保持时间
|
||
uint8_t ramp_down_time; // 缓出时间
|
||
uint16_t crc16; // CRC16校验
|
||
} UART_EMS_Packet_t;
|
||
|
||
|
||
|
||
#endif
|
||
|