|
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
// File name : uart_drv.h
|
|
|
// Version : V0.1
|
|
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
#ifndef UART_DRV_H_
|
|
|
#define UART_DRV_H_
|
|
|
|
|
|
#include "memmap.h"
|
|
|
#include "uart_reg.h"
|
|
|
|
|
|
#define SCI1 ((UART_TypeDef *)(SCI1_BASE_ADDR))
|
|
|
#define SCI2 ((UART_TypeDef *)(SCI2_BASE_ADDR))
|
|
|
#define SCI3 ((UART_TypeDef *)(SCI3_BASE_ADDR))
|
|
|
|
|
|
#define SCI_BT SCI2
|
|
|
|
|
|
|
|
|
#define IS_UART_ALL_PERIPH(PERIPH) (((PERIPH) == SCI) || \
|
|
|
((PERIPH) == SCI_BT))
|
|
|
////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#define SCI2_ENABLE_TRANSMITTER (SCI2->SCICR2 |= SCICR2_TE_MASK)
|
|
|
#define SCI2_DISABLE_TRANSMITTER (SCI2->SCICR2 &= ~SCICR2_TE_MASK)
|
|
|
|
|
|
#define SCI2_ENABLE_RECEIVER (SCI2->SCICR2 |= SCICR2_RE_MASK)
|
|
|
#define SCI2_DISABLE_RECEIVER (SCI2->SCICR2 &= ~SCICR2_RE_MASK)
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////
|
|
|
#define UART_DATA_FRAME_LEN_10BIT 0 //10bit frame:----StartBit:1bit DataBit:8bit StopBit:1bit
|
|
|
#define UART_DATA_FRAME_LEN_11BIT SCICR1_M_MASK //11bit frame:----StartBit:1bit DataBit:9bit StopBit:1bit
|
|
|
|
|
|
#define IS_UART_FRAMW_LENGTH(LENGTH) (((LENGTH) == UART_DATA_FRAME_LEN_10BIT) || \
|
|
|
((LENGTH) == UART_DATA_FRAME_LEN_11BIT))
|
|
|
|
|
|
|
|
|
|
|
|
#define ParityDIS 0 //Parity Disable
|
|
|
#define ParityEN SCICR1_PE_MASK //Parity Enable
|
|
|
|
|
|
#define UART_PARITY_EVE 0 //Even Parity
|
|
|
#define UART_PARITY_ODD SCICR1_PT_MASK //Odd Parity
|
|
|
#define UART_PARITY_NONE 2 //NONE Parity
|
|
|
|
|
|
|
|
|
#define IS_UART_PARITY(PARITY) (((PARITY) == UART_PARITY_EVE) || \
|
|
|
((PARITY) == UART_PARITY_ODD) || \
|
|
|
((PARITY) == UART_PARITY_NONE))
|
|
|
|
|
|
typedef enum
|
|
|
{
|
|
|
UART_NORMAL_MODE = 0,
|
|
|
UART_INT_MODE,
|
|
|
UART_EDMA_MODE
|
|
|
|
|
|
}UART_MODE;
|
|
|
|
|
|
#define IS_UART_MODE(MODE) (((MODE) == UART_NORMAL_MODE) || \
|
|
|
((MODE) == UART_INT_MODE) || \
|
|
|
((MODE) == UART_EDMA_MODE))
|
|
|
|
|
|
/* UART Init Structure definition */
|
|
|
typedef struct
|
|
|
{
|
|
|
|
|
|
UINT32 UART_BaudRate;
|
|
|
UINT8 UART_FrameLength;
|
|
|
UINT8 UART_StopBits;
|
|
|
UINT8 UART_Parity;
|
|
|
UINT8 UART_Mode;
|
|
|
|
|
|
} UART_InitTypeDef;
|
|
|
|
|
|
typedef enum
|
|
|
{
|
|
|
UART_RX = 0,
|
|
|
UART_TX,
|
|
|
|
|
|
}UART_PINx;
|
|
|
|
|
|
extern UART_InitTypeDef UART_BT_InitStruct;
|
|
|
/*******************************************************************************
|
|
|
* Function Name : UART_Init
|
|
|
* Description : UART初始化
|
|
|
* Input : - UARTx: where x can be 0 to 1 to select the UART peripheral;取值SCI0 or SCI1
|
|
|
* - UART_InitStruct:UARTx initialization parameter structure Poniter
|
|
|
*
|
|
|
* Output : None
|
|
|
* Return : None
|
|
|
******************************************************************************/
|
|
|
extern void UART_Init(UART_TypeDef *UARTx, UART_InitTypeDef *UART_InitStruct);
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
* Function Name : UART_SendByte
|
|
|
* Description : UART发送一个字节
|
|
|
* Input : - UARTx: where x can be 0 to 1 to select the UART peripheral;取值SCI0 or SCI1
|
|
|
* - SendByte:发送的字节
|
|
|
*
|
|
|
* Output : None
|
|
|
* Return : None
|
|
|
******************************************************************************/
|
|
|
extern void UART_SendByte(UART_TypeDef *UARTx, UINT8 SendByte);
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
* Function Name : UART_SendData
|
|
|
* Description : UART发送多个字节
|
|
|
* Input : - UARTx: where x can be 0 to 1 to select the UART peripheral;取值SCI0 or SCI1
|
|
|
* - send:发送数据缓冲
|
|
|
* - len:发送的数据长度
|
|
|
*
|
|
|
* Output : None
|
|
|
* Return : None
|
|
|
******************************************************************************/
|
|
|
extern void UART_SendData(UART_TypeDef *UARTx, UINT8 *send, UINT16 len);
|
|
|
|
|
|
/*******************************************************************************
|
|
|
* Function Name : UART_ByteRecieved
|
|
|
* Description : UART接收到数据
|
|
|
* Input : - UARTx:取值SCI1、 SCI2
|
|
|
*
|
|
|
* Output : - None
|
|
|
*
|
|
|
* Return : - TRUE:接收到数据
|
|
|
* - FALSE:没有接收到数据
|
|
|
******************************************************************************/
|
|
|
INT8 UART_ByteRecieved(UART_TypeDef *UARTx);
|
|
|
|
|
|
/*******************************************************************************
|
|
|
* Function Name : UART_RecvByte
|
|
|
* Description : UART接收一个字节
|
|
|
* Input : - UARTx: where x can be 0 to 1 to select the UART peripheral;取值SCI0 or SCI1
|
|
|
*
|
|
|
*
|
|
|
* Output : - dat:接收数据缓冲
|
|
|
*
|
|
|
* Return : - TRUE:接收到数据
|
|
|
* - FALSE:没有接收到数据
|
|
|
******************************************************************************/
|
|
|
extern INT8 UART_RecvByte(UART_TypeDef *UARTx, UINT8 *dat);
|
|
|
|
|
|
/*******************************************************************************
|
|
|
* Function Name : UART_ConfigGpio
|
|
|
* Description : UART配置成GPIO用途
|
|
|
* Input : - UARTx: where x can be 1, 2 to select the UART peripheral.
|
|
|
* - UART_Pin对应的PIN脚,取值UART_TX、UART_RX
|
|
|
* - UART_Dir:设置GPIO方向 GPIO_OUTPUT:输出 GPIO_INPUT:输入
|
|
|
*
|
|
|
* Output : None
|
|
|
* Return : None
|
|
|
******************************************************************************/
|
|
|
extern void UART_ConfigGpio(UART_TypeDef *UARTx, UART_PINx UART_Pin, UINT8 UART_Dir);
|
|
|
|
|
|
/*******************************************************************************
|
|
|
* Function Name : UART_ReadGpioData
|
|
|
* Description : 获取UART_Pin对应引脚的电平
|
|
|
* Input : - UARTx: where x can be 1, 2 to select the UART peripheral.
|
|
|
* - UART_Pin对应的PIN脚,取值UART_TX、UART_RX
|
|
|
*
|
|
|
* Output : None
|
|
|
* Return : Bit_SET:高电平 Bit_RESET:低电平
|
|
|
******************************************************************************/
|
|
|
extern INT8 UART_ReadGpioData(UART_TypeDef *UARTx, UART_PINx UART_Pin);
|
|
|
|
|
|
/*******************************************************************************
|
|
|
* Function Name : UART_WriteGpioData
|
|
|
* Description : 设置UART_Pin对应引脚的电平
|
|
|
* Input : - UARTx: where x can be 1, 2 to select the UART peripheral.
|
|
|
* - UART_Pin对应的PIN脚,取值UART_TX、UART_RX
|
|
|
* - bitVal:设置的电平,Bit_SET:设置为高电平 Bit_RESET:设置为低电平
|
|
|
*
|
|
|
* Output : None
|
|
|
* Return : None
|
|
|
******************************************************************************/
|
|
|
extern void UART_WriteGpioData(UART_TypeDef *UARTx, UART_PINx UART_Pin, UINT8 bitVal);
|
|
|
|
|
|
#endif /* UART_DRV_H_ */
|