#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