123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- /*
- * Copyright 2016, yichip Semiconductor(shenzhen office)
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor;
- * the contents of this file may not be disclosed to third parties, copied
- * or duplicated in any form, in whole or in part, without the prior
- * written permission of Yichip Semiconductor.
- */
-
- /** @file
- *
- * uart support for application
- */
- #ifndef _UART_H_
- #define _UART_H_
- #include <stdio.h>
- #include <stdint.h>
- #include <stdbool.h>
- #include "yc11xx.h"
- #include "yc_drv_common.h"
- #include "ycdef.h"
- #define printf_log //print log
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define UARTE_BAUDRATE_BAUDRATE_Baud4800 (0xa710) /*!< 4800 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud9600 (0x9388) /*!< 9600 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud14400 (0x8d05) /*!< 14400 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud19200 (0x89c4) /*!< 19200 baud */
- //#define UARTE_BAUDRATE_BAUDRATE_Baud28800 (0x875C) /*!< 28800 baud */
- //#define UARTE_BAUDRATE_BAUDRATE_Baud31250 (0x8800) /*!< 31250 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud38400 (0x84e2) /*!< 38400 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud56000 (0x8359) /*!< 56000 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud57600 (0x8341) /*!< 57600 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud76800 (0x8271) /*!< 76800 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud115200 (0x81A0) /*!< 115200 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud230400 (0x80d0) /*!< 230400 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud256000 (0x80bb) /*!< 250000 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud460800 (0x8068) /*!< 460800 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud921600 (0x8034) /*!< 921600 baud */
- #define UARTE_BAUDRATE_BAUDRATE_Baud1M (0x8030) /*!< 1Mega baud */
- #define IS_UARTE_BAUDRATE(BAUDRATE) ((BAUDRATE > 0) && (BAUDRATE<= UARTE_BAUDRATE_BAUDRATE_Baud4800))
- #define UARTN_BAUDRATE_BAUDRATE_Baud4800 (0x0710) /*!< 4800 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud9600 (0x0388) /*!< 9600 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud14400 (0x0d05) /*!< 14400 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud19200 (0x09c4) /*!< 19200 baud */
- //#define UARTN_BAUDRATE_BAUDRATE_Baud28800 (0x075C) /*!< 28800 baud */
- //#define UARTN_BAUDRATE_BAUDRATE_Baud31250 (0x0800) /*!< 31250 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud38400 (0x04e2) /*!< 38400 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud56000 (0x0359) /*!< 56000 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud57600 (0x0341) /*!< 57600 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud76800 (0x0271) /*!< 76800 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud115200 (0x01A0) /*!< 115200 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud230400 (0x00d0) /*!< 230400 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud256000 (0x00bb) /*!< 250000 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud460800 (0x0068) /*!< 460800 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud921600 (0x0034) /*!< 921600 baud */
- #define UARTN_BAUDRATE_BAUDRATE_Baud1M (0x1000) /*!< 1Mega baud */
- #define IS_UARTN_BAUDRATE(BAUDRATE) ((BAUDRATE > 0) && (BAUDRATE<= UARTN_BAUDRATE_BAUDRATE_Baud4800))
- /** @
- * @defgroup USART_Word_Length
- */
- #define USART_WordLength_8b (0<<2)
- #define USART_WordLength_9b (1<<2)
- #define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \
- ((LENGTH) == USART_WordLength_9b))
- /** @defgroup USART_Stop_Bits
- * @{
- */
- #define USART_StopBits_1 (0<<3)
- #define USART_StopBits_2 (1<<3)
- #define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \
- ((STOPBITS) == USART_StopBits_2) )
- /**
- * @}
- */
- /** @defgroup USART_Parity
- * @{
- */
- #define USART_Parity_Even (0<<1)
- #define USART_Parity_Odd (1 << 1)
- #define IS_USART_PARITY(PARITY) ( ((PARITY) == USART_Parity_Even) || \
- ((PARITY) == USART_Parity_Odd))
- /**
- * @}
- */
- /** @defgroup USART_Mode
- * @{
- */
- #define USART_Mode_Single_Line (1<<6)
- #define USART_Mode_duplex (0<<6)
- #define IS_USART_MODE(MODE) (((MODE) == USART_Mode_Single_Line) ||\
- ((MODE) == USART_Mode_duplex))
- /**
- * @}
- */
- /** @defgroup USART_Hardware_Flow_Control
- * @{
- */
- #define USART_HardwareFlowControl_None (0<<4)
- #define USART_HardwareFlowControl_ENABLE (1<<4)
- #define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\
- (((CONTROL) == USART_HardwareFlowControl_None) || \
- ((CONTROL) == USART_HardwareFlowControl_ENABLE))
- /**
- * @}
- */
- #define uart_DMA_buf_len 128
- /** @defgroup USART_TXLen
- * @{
- */
- #define IS_USART_TXLen(TxLen) ((TxLen > 0) && (TxLen <= uart_DMA_buf_len))
- /**
- * @}
- */
- /** @defgroup USART_RXLen
- * @{
- */
- #define IS_USART_RXLen(RxLen) ((RxLen > 0) && (RxLen <= uart_DMA_buf_len))
- /**
- * @}
- */
- /**
- * @brief USART channel define
- */
- typedef enum
- {
- UARTA = 0,
- UARTB,
- }USART_TypeDef;
- #define IS_USARTAB(USARTx) (USARTx == UARTA)||\
- (USARTx == UARTB)
- /**
- * @brief USART Init Structure definition
- */
- /** @defgroup USART_RXBuffer
- * @{
- */
- #define IS_USART_RXBuffer(RxBuffer) ((RxBuffer > 0x10000000) ||(RxBuffer < 0x10001fff) ) |\
- ((RxBuffer < 0x10004000) ||(RxBuffer > 0x10004fff))|\
- ((RxBuffer < 0x10010000) ||(RxBuffer > 0x10013fff))
- /**
- * @}
- */
- /** @defgroup USART_TXBuffer
- * @{
- */
- #define IS_USART_TXBuffer(TxBuffer) ((0x10000000 < TxBuffer ) ||(TxBuffer < 0x10001fff) ) |\
- ((TxBuffer < 0x10004000) ||(TxBuffer > 0x10004fff))|\
- ((TxBuffer < 0x10010000) ||(TxBuffer > 0x10013fff))
- /**
- * @}
- */
-
- typedef struct
- {
- uint32_t USART_BaudRate; /*!< This member configures the USART communication baud rate.
- The baud rate is computed using the following formula:
- - IntegerDivider = ((PCLKx) / (8 * (OVR8+1) * (USART_InitStruct->USART_BaudRate)))
- - FractionalDivider = ((IntegerDivider - ((u32) IntegerDivider)) * 8 * (OVR8+1)) + 0.5
- Where OVR8 is the "oversampling by 8 mode" configuration bit in the CR1 register. */
- uint16_t USART_WordLength; /*!< Specifies the number of data bits transmitted or received in a frame.
- This parameter can be a value of @ref USART_Word_Length */
- uint16_t USART_StopBits; /*!< Specifies the number of stop bits transmitted.
- This parameter can be a value of @ref USART_Stop_Bits */
- uint16_t USART_Parity; /*!< Specifies the parity mode.
- This parameter can be a value of @ref USART_Parity
- @note When parity is enabled, the computed parity is inserted
- at the MSB position of the transmitted data (9th bit when
- the word length is set to 9 data bits; 8th bit when the
- word length is set to 8 data bits). */
-
- uint16_t USART_Mode; /*!< Specifies wether the Receive or Transmit mode is enabled or disabled.
- This parameter can be a value of @ref USART_Mode */
- uint16_t USART_HardwareFlowControl; /*!< Specifies wether the hardware flow control mode is enabled
- or disabled.
- This parameter can be a value of @ref USART_Hardware_Flow_Control */
-
- uint16_t USART_TXLen; /*!< Specifies Tx DMA buff len */
-
- uint16_t USART_RXLen; /*!< Specifies Rx DMA buff len */
- // uint32_t USART_TxBuffer; /*!Tx ring buffer start addr */
- // uint32_t USART_RxBuffer; /*!Rx ring buffer start addr */
- } USART_InitTypeDef;
- void USART_Init(USART_TypeDef USARTx, USART_InitTypeDef* USART_InitStruct);
- void USART_DeInit(USART_TypeDef USARTx);
- void USART_SendData(USART_TypeDef USARTx, uint8_t Data);
- uint16_t USART_ReceiveData(USART_TypeDef USARTx);
- uint16_t USART_GetRxCount(USART_TypeDef USARTx);
- uint16_t USART_ReadDatatoBuff(USART_TypeDef USARTx, uint8_t* RxBuff, uint16_t RxSize);
- uint16_t USART_SendDataFromBuff(USART_TypeDef USARTx, uint8_t* TxBuff, uint16_t TxLen);
- #ifdef __cplusplus
- }
- #endif
- #endif /* _UART_H_ */
|