148 lines
4.5 KiB
C
148 lines
4.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:
|
|||
|
|
Author:
|
|||
|
|
Modification: <EFBFBD><EFBFBD><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;
|
|||
|
|
/*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><EFBFBD><EFBFBD>
|
|||
|
|
UART_FifoStructrue* FifoSetting ;
|
|||
|
|
}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<EFBFBD><EFBFBD><EFBFBD>ͼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>
|
|||
|
|
2<EFBFBD><EFBFBD>RDAINT <EFBFBD><EFBFBD><EFBFBD>ռĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>FIFOģʽ<EFBFBD>´<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
3<EFBFBD><EFBFBD>RTOINT FIFOģʽ<EFBFBD>½<EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>ֽ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>
|
|||
|
|
4<EFBFBD><EFBFBD>RLSINT <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
5<EFBFBD><EFBFBD>MSIINT <EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>CTS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>autoflow<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DSR/RI/DCD<EFBFBD><EFBFBD><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><EFBFBD><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><EFBFBD>FIFO*/
|
|||
|
|
void UART_TXCLR(CMSDK_UART_TypeDef* UARTx);
|
|||
|
|
/*<2A><><EFBFBD><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);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|