123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- #ifndef __UART_H__
- #define __UART_H__
- #define BAUD_RATE 9600
- /*
- UARTAn control register 0 (UAnCTL0)
- */
- #define _10_UARTA_UAnCTL0_INITIALVALUE 0x10U
- /* UARTAn operation control (UAnPWR) */
- #define _00_UARTA_OPERATION_DISABLE 0x00U /* disable UARTAn operation (UARTAn reset asynchronously) */
- #define _80_UARTA_OPERATION_ENABLE 0x80U /* enable UARTAn operation */
- /* Transmission operation enable (UAnTXE) */
- #define _00_UARTA_TRANSMISSION_DISABLE 0x00U /* disable transmission operation */
- #define _40_UARTA_TRANSMISSION_ENABLE 0x40U /* enable transmission operation */
- /* Reception operation enable (UAnRXE) */
- #define _00_UARTA_RECEPTION_DISABLE 0x00U /* disable reception operation */
- #define _20_UARTA_RECEPTION_ENABLE 0x20U /* enable reception operation */
- /* Transfer direction selection (UAnDIR) */
- #define _00_UARTA_TRANSFDIR_MSB 0x00U /* MSB-first transfer */
- #define _10_UARTA_TRANSFDIR_LSB 0x10U /* LSB-first transfer */
- /* Parity selection during transmission/reception (UAnPS1,UAnPS0) */
- #define _00_UARTA_PARITY_NONE 0x00U /* no parity output/reception with no parity */
- #define _04_UARTA_PARITY_ZREO 0x04U /* 0 parity output/reception with 0 parity */
- #define _08_UARTA_PARITY_ODD 0x08U /* odd parity output/odd parity check */
- #define _0C_UARTA_PARITY_EVEN 0x0CU /* even parity output/even parity check */
- /* Specification of data character length of 1 frame of transmit/receive data (UAnCL) */
- #define _00_UARTA_DATALENGTH_7BIT 0x00U /* 7 bits */
- #define _02_UARTA_DATALENGTH_8BIT 0x02U /* 8 bits */
- /* Specification of length of stop bit for transmit data (UAnSL) */
- #define _00_UARTA_STOPLENGTH_1BIT 0x00U /* 1 bit */
- #define _01_UARTA_STOPLENGTH_2BIT 0x01U /* 2 bits */
- /*
- UARTAn base clock selects register (UAnCTL1)
- */
- /* UAnCTL1 register (UAnCKS3 - UAnCKS0) */
- #define _00_UARTA_BASECLK_FXX_2 0x00U /* fXX/2 */
- #define _01_UARTA_BASECLK_FXX_4 0x01U /* fXX/2^2 */
- #define _02_UARTA_BASECLK_FXX_8 0x02U /* fXX/2^3 */
- #define _03_UARTA_BASECLK_FXX_16 0x03U /* fXX/2^4 */
- #define _04_UARTA_BASECLK_FXX_32 0x04U /* fXX/2^5 */
- #define _05_UARTA_BASECLK_FXX_64 0x05U /* fXX/2^6 */
- #define _06_UARTA_BASECLK_FXX_128 0x06U /* fXX/2^7 */
- #define _07_UARTA_BASECLK_FXX_256 0x07U /* fXX/2^8 */
- #define _08_UARTA_BASECLK_FXX_512 0x08U /* fXX/2^9 */
- #define _09_UARTA_BASECLK_FXX_1024 0x09U /* fXX/2^10 */
- #define _0A_UARTA_BASECLK_FXX_2048 0x0AU /* fXX/2^11 */
- #define _0B_UARTA_BASECLK_FXX_4096 0x0BU /* fXX/2^12 */
- /*
- UARTAn option control register 0 (UAnOPT0)
- */
- #define _14_UARTA_UAnOPT0_INITIALVALUE 0x14U
- /* Transmit data level bit(UAnTDL) */
- #define _00_UARTA_TRAN_DATALEVEL_NORMAL 0x00U /* normal output of transfer data */
- #define _02_UARTA_TRAN_DATALEVEL_INVERTED 0x02U /* inverted output of transfer data */
- /* Receive data level bit(UAnRDL) */
- #define _00_UARTA_REC_DATALEVEL_NORMAL 0x00U /* normal input of transfer data */
- #define _01_UARTA_REC_DATALEVEL_INVERTED 0x01U /* inverted input of transfer data */
- /*
- CSIBn control register 0 (CBnCTL0)
- */
- /* Specification of CSIBn operation disable/enable (CBnPWR)*/
- #define _00_CSIB_OPERATION_DISABLE 0x00U /* disable CSIBn operation and reset the CBnSTR register */
- #define _80_CSIB_OPERATION_ENABLE 0x80U /* enable CSIBn operation */
- /* Specification of transmit operation disable/enable (CBnTXE)*/
- #define _00_CSIB_TRANSMIT_DISABLE 0x00U /* disable transmit operation */
- #define _40_CSIB_TRANSMIT_ENABLE 0x40U /* enable transmit operation */
- /* Specification of receive operation disable/enable (CBnRXE)*/
- #define _00_CSIB_RECEIVE_DISABLE 0x00U /* disable receive operation */
- #define _20_CSIB_RECEIVE_ENABLE 0x20U /* enable receive operation */
- /* Specification of transfer direction mode (MSB/LSB) (CBnDIR) */
- #define _00_CSIB_DATA_MSB 0x00U /* MSB first */
- #define _10_CSIB_DATA_LSB 0x10U /* LSB first */
- /* Transfer mode specification (CBnTMS) */
- #define _00_CSIB_MODE_SINGLE 0x00U /* single transfer mode */
- #define _02_CSIB_MODE_CONTINUOUS 0x02U /* continuous transfer mode */
- /* Specification of start transfer disable/enable (CBnSCE) */
- #define _00_CSIB_STARTTRG_INVALID 0x00U /* communication start trigger invalid */
- #define _01_CSIB_STARTTRG_VALID 0x01U /* communication start trigger valid */
- /*
- CSIBn control register 1 (CBnCTL1)
- */
- /* Specification of data transmission/reception timing in relation to SCKBn (CBnCKP, CBnDAP) */
- #define _00_CSIB_DATA_TIMING1 0x00U /* communication type 1 */
- #define _08_CSIB_DATA_TIMING2 0x08U /* communication type 2 */
- #define _10_CSIB_DATA_TIMING3 0x10U /* communication type 3 */
- #define _18_CSIB_DATA_TIMING4 0x18U /* communication type 4 */
- /* Specification of input clock (CBnCKS2 - CBnCKS0) */
- #define _00_CSIB_CLOCK_1 0x00U /* fXX /2 */
- #define _01_CSIB_CLOCK_2 0x01U /* fXX/4 */
- #define _02_CSIB_CLOCK_3 0x02U /* fXX /8 */
- #define _03_CSIB_CLOCK_4 0x03U /* fXX /16 */
- #define _04_CSIB_CLOCK_5 0x04U /* fXX /32 */
- #define _05_CSIB_CLOCK_6 0x05U /* fXX /64 */
- #define _06_CSIB_CLOCK_7 0x06U /* fBRGm */
- #define _07_CSIB_CLOCK_EXT 0x07U /* external clock SCKBn */
- /*
- CSIBn control register 2 (CBnCTL2)
- */
- /* Serial register bit length (CBnCL3,CBnCL2,CBnCL1,CBnCL0) */
- #define _00_CSIB_DATA_LENGTH_8 0x00U /* 8 bits */
- #define _01_CSIB_DATA_LENGTH_9 0x01U /* 9 bits */
- #define _02_CSIB_DATA_LENGTH_10 0x02U /* 10 bits */
- #define _03_CSIB_DATA_LENGTH_11 0x03U /* 11 bits */
- #define _04_CSIB_DATA_LENGTH_12 0x04U /* 12 bits */
- #define _05_CSIB_DATA_LENGTH_13 0x05U /* 13 bits */
- #define _06_CSIB_DATA_LENGTH_14 0x06U /* 14 bits */
- #define _07_CSIB_DATA_LENGTH_15 0x07U /* 15 bits */
- #define _08_CSIB_DATA_LENGTH_16 0x08U /* 16 bits */
- /*
- CSIBn status register (CBnSTR)
- */
- /* Communication status flag (CBnTSF) */
- #define _00_CSIB_COMMUNICATION_STOP 0x00U /* communication stopped */
- #define _80_CSIB_COMMUNICATING 0x80U /* communicating */
- /* Overrun error flag (CBnOVE) */
- #define _00_CSIB_OVERRUN_NONE 0x00U /* no overrun */
- #define _01_CSIB_OVERRUN 0x01U /* overrun */
- /*
- BRGm prescaler mode registers (PRSMm)
- */
- /* Baud rate output(BGCEm) */
- #define _00_CSIB_FBRGM_DISABLE 0x00U /* baudrate output disabled */
- #define _10_CSIB_FBRGM_ENABLE 0x10U /* baudrate output enabled */
- /* Input clock selection (BGCSm1,BGCSm0) */
- #define _00_CSIB_FBGCS_0 0x00U /* fXX */
- #define _01_CSIB_FBGCS_1 0x01U /* fXX/2 */
- #define _02_CSIB_FBGCS_2 0x02U /* fXX/4 */
- #define _03_CSIB_FBGCS_3 0x03U /* fXX/8 */
- #define CB4RIC UA0RIC
- #define CB4TIC UA0TIC
- #define CB0RIC IICIC1
- /*
- IIC control register (IICCn)
- */
- /* IIC operation enable (IICEn) */
- #define _80_IIC_OPERATION 0x80U
- #define _00_IIC_OPERATION_DISABLE 0x00U /* stop operation */
- #define _80_IIC_OPERATION_ENABLE 0x80U /* enable operation */
- /* Exit from communications (LRELn) */
- #define _40_IIC_COMMUNICATION 0x40U
- #define _00_IIC_COMMUNICATION_NORMAL 0x00U /* normal operation */
- #define _40_IIC_COMMUNICATION_EXIT 0x40U /* exit from current communication */
- /* Wait cancellation (WRELn) */
- #define _20_IIC_WAITCANCEL 0x20U
- #define _00_IIC_WAIT_NOTCANCEL 0x00U /* do not cancel wait */
- #define _20_IIC_WAIT_CANCEL 0x20U /* cancel wait */
- /* Generation of interrupt when stop condition (SPIEn) */
- #define _10_IIC_STOPINT 0x10U
- #define _00_IIC_STOPINT_DISABLE 0x00U /* disable */
- #define _10_IIC_STOPINT_ENABLE 0x10U /* enable */
- /* Wait and interrupt generation (WTIMn) */
- #define _08_IIC_WAITINT 0x08U
- #define _00_IIC_WAITINT_CLK8FALLING 0x00U /* generate at the eighth clock falling edge */
- #define _08_IIC_WAITINT_CLK9FALLING 0x08U /* generated at the ninth clock falling edge */
- /* Acknowledgement control (ACKEn) */
- #define _04_IIC_ACK 0x04
- #define _00_IIC_ACK_DISABLE 0x00U /* disable acknowledgement */
- #define _04_IIC_ACK_ENABLE 0x04U /* enable acknowledgement */
- /* Start condition trigger (STTn) */
- #define _02_IIC_STARTCONDITION 0x02U
- #define _00_IIC_START_NOTGENERATE 0x00U /* do not generate start condition */
- #define _02_IIC_START_GENERATE 0x02U /* generate start condition */
- /* Stop condition trigger (SPTn) */
- #define _01_IIC_STOPCONDITION 0x01U
- #define _00_IIC_STOP_NOTGENERATE 0x00U /* do not generate stop condition */
- #define _01_IIC_STOP_GENERATE 0x01U /* generate stop condition */
- /*
- IIC Status Register (IICSn)
- */
- /* Master device status (MSTSn) */
- #define _80_IIC_MASTERSTATUS 0x80U
- #define _00_IIC_STATUS_NOTMASTER 0x00U /* slave device status or communication standby status */
- #define _80_IIC_STATUS_MASTER 0x80U /* master device communication status */
- /* Detection of arbitration loss (ALDn) */
- #define _40_IIC_ARBITRATION 0x40U
- #define _00_IIC_ARBITRATION_NO 0x00U /* arbitration win or no arbitration */
- #define _40_IIC_ARBITRATION_LOSS 0x40U /* arbitration loss */
- /* Detection of extension code reception (EXCn) */
- #define _20_IIC_EXTENSIONCODE 0x20U
- #define _00_IIC_EXTCODE_NOT 0x00U /* extension code not received */
- #define _20_IIC_EXTCODE_RECEIVED 0x20U /* extension code received */
- /* Detection of matching addresses (COIn) */
- #define _10_IIC_ADDRESSMATCH 0x10U
- #define _00_IIC_ADDRESS_NOTMATCH 0x00U /* addresses do not match */
- #define _10_IIC_ADDRESS_MATCH 0x10U /* addresses match */
- /* Detection of transmit/receive status (TRCn) */
- #define _08_IIC_STATUS 0x08U
- #define _00_IIC_STATUS_RECEIVE 0x00U /* receive status */
- #define _08_IIC_STATUS_TRANSMIT 0x08U /* transmit status */
- /* Detection of acknowledge signal (ACKDn) */
- #define _04_IIC_ACKDETECTION 0x04U
- #define _00_IIC_ACK_NOTDETECTED 0x00U /* ACK signal was not detected */
- #define _04_IIC_ACK_DETECTED 0x04U /* ACK signal was detected */
- /* Detection of start condition (STDn) */
- #define _02_IIC_STARTDETECTION 0x02U
- #define _00_IIC_START_NOTDETECTED 0x00U /* start condition not detected */
- #define _02_IIC_START_DETECTED 0x02U /* start condition detected */
- /* Detection of stop condition (SPDn) */
- #define _01_IIC_STOPDETECTION 0x01U
- #define _00_IIC_STOP_NOTDETECTED 0x00U /* stop condition not detected */
- #define _01_IIC_STOP_DETECTED 0x01U /* stop condition detected */
- /*
- IIC Flag Register (IICFn)
- */
- /* STTn clear flag (STCFn) */
- #define _80_IIC_STARTFLAG 0x80U
- #define _00_IIC_STARTFLAG_GENERATE 0x00U /* generate start condition */
- #define _80_IIC_STARTFLAG_UNSUCCESSFUL 0x80U /* start condition generation unsuccessful */
- /* IIC bus status flag (IICBSYn) */
- #define _40_IIC_BUSSTATUS 0x40U
- #define _00_IIC_BUS_RELEASE 0x00U /* bus release status */
- #define _40_IIC_BUS_COMMUNICATION 0x40U /* bus communication status */
- /* Initial start enable trigger (STCENn) */
- #define _02_IIC_STARTWITHSTOP 0x02U
- #define _00_IIC_START_WITHSTOP 0x00U /* generation of a start condition upon detection of a stop condition */
- #define _02_IIC_START_WITHOUTSTOP 0x02U /* generation of a start condition without detecting a stop condition */
- /* Communication reservation function disable bit (IICRSVn) */
- #define _01_IIC_RESERVATION 0x01U
- #define _00_IIC_RESERVATION_ENABLE 0x00U /* enable communication reservation */
- #define _01_IIC_RESERVATION_DISABLE 0x01U /* disable communication reservation */
- /*
- IIC clock selection register (IICCLn)
- */
- #define _00_IICCL_INITIALVALUE 0x00U
- /* Detection of SCL0n pin level (CLDn) */
- #define _20_IIC_SCLLEVEL 0x20U
- #define _00_IIC_SCL_LOW 0x00U /* clock line at low level */
- #define _20_IIC_SCL_HIGH 0x20U /* clock line at high level */
- /* Detection of SDA0 pin level (DADn) */
- #define _10_IIC_SDALEVEL 0x10U
- #define _00_IIC_SDA_LOW 0x00U /* data line at low level */
- #define _10_IIC_SDA_HIGH 0x10U /* data line at high level */
- /* Operation mode switching (SMCn) */
- #define _08_IIC_OPERATIONMODE 0x08U
- #define _00_IIC_MODE_STANDARD 0x00U /* operates in standard mode */
- #define _08_IIC_MODE_HIGHSPEED 0x08U /* operates in high-speed mode */
- /* Digital filter operation control (DFCn) */
- #define _04_IIC_DIGITALFILTER 0x04U
- #define _00_IIC_FILTER_OFF 0x00U /* digital filter off */
- #define _04_IIC_FILTER_ON 0x04U /* digital filter on */
- /* Operation mode switching (CLn1, CLn0) */
- #define _03_IIC_CLOCKSELECTION 0x03U
- /* Combine of (CLn1, CLn0)*/
- #define _00_IIC_CLOCK0 0x00U
- #define _01_IIC_CLOCK1 0x01U
- #define _02_IIC_CLOCK2 0x02U
- #define _03_IIC_CLOCK3 0x03U
- /*
- IIC division clock select register (OCKSn)
- */
- #define _10_IIC_SELECTED0 0x10U
- #define _11_IIC_SELECTED1 0x11U
- #define _12_IIC_SELECTED2 0x12U
- #define _13_IIC_SELECTED3 0x13U
- #define _18_IIC_SELECTED4 0x18U
- /*
- IIC function expansion register 0 (IICXn)
- */
- /* IIC clock expension (CLXn) */
- #define _01_IIC_CLOCKEXPENSION 0x01U
- #define _00_IIC_EXPENSION0 0x00U
- #define _01_IIC_EXPENSION1 0x01U
- #define _80_ADDRESS_COMPLETE 0x80U
- #define _00_IIC_MASTER_FLAG_CLEAR 0x00U
- #define IICIC2 UA1RIC
- #define IICIC0 UA2RIC
- /*
- *******************************************************************************
- ** Macro define
- *******************************************************************************
- */
- /* Selection of 8-bit counter output clock (UA1BRS7~UA1BRS0) */
- #define _D0_UARTA1_BASECLK_DIVISION 0xD0U /* 4 ~ 255 */ //9600
- #define _11_UARTA1_BASECLK_DIVISION 0x11U /* 4 ~ 255 */ //115200
- enum TransferMode
- {
- SEND, RECEIVE
- };
- void rt_hw_uart_init(void);
- #endif
|