]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/RX113-RSK_Renesas_e2studio/src/cg_src/r_cg_sci.h
FreeRTOS source:
[freertos] / FreeRTOS / Demo / RX113-RSK_Renesas_e2studio / src / cg_src / r_cg_sci.h
1 /***********************************************************************************************************************\r
2 * DISCLAIMER\r
3 * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.\r
4 * No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all\r
5 * applicable laws, including copyright laws. \r
6 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIESREGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED\r
7 * OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
8 * NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY\r
9 * LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,\r
10 * INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR\r
11 * ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
12 * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability \r
13 * of this software. By using this software, you agree to the additional terms and conditions found by accessing the \r
14 * following link:\r
15 * http://www.renesas.com/disclaimer\r
16 *\r
17 * Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
18 ***********************************************************************************************************************/\r
19 \r
20 /***********************************************************************************************************************\r
21 * File Name    : r_cg_sci.h\r
22 * Version      : Code Generator for RX113 V1.02.01.02 [28 May 2015]\r
23 * Device(s)    : R5F51138AxFP\r
24 * Tool-Chain   : CCRX\r
25 * Description  : This file implements device driver for SCI module.\r
26 * Creation Date: 21/09/2015\r
27 ***********************************************************************************************************************/\r
28 #ifndef SCI_H\r
29 #define SCI_H\r
30 \r
31 /***********************************************************************************************************************\r
32 Macro definitions (Register bit)\r
33 ***********************************************************************************************************************/\r
34 \r
35 /*\r
36     Serial mode register (SMR)\r
37 */\r
38 /* Clock select (CKS) */\r
39 #define _00_SCI_CLOCK_PCLK                        (0x00U) /* PCLK */\r
40 #define _01_SCI_CLOCK_PCLK_4                      (0x01U) /* PCLK/4 */\r
41 #define _02_SCI_CLOCK_PCLK_16                     (0x02U) /* PCLK/16 */\r
42 #define _03_SCI_CLOCK_PCLK_64                     (0x03U) /* PCLK/64 */\r
43 /* Multi-processor Mode (MP) */\r
44 #define _00_SCI_MULTI_PROCESSOR_DISABLE           (0x00U) /* Disable multiprocessor mode */\r
45 #define _04_SCI_MULTI_PROCESSOR_ENABLE            (0x04U) /* Enable multiprocessor mode */\r
46 /* Stop bit length (STOP) */\r
47 #define _00_SCI_STOP_1                            (0x00U) /* 1 stop bit length */\r
48 #define _08_SCI_STOP_2                            (0x08U) /* 2 stop bits length */\r
49 /* Parity mode (PM) */\r
50 #define _00_SCI_PARITY_EVEN                       (0x00U) /* Parity even */\r
51 #define _10_SCI_PARITY_ODD                        (0x10U) /* Parity odd */\r
52 /* Parity enable (PE) */\r
53 #define _00_SCI_PARITY_DISABLE                    (0x00U) /* Parity disable */\r
54 #define _20_SCI_PARITY_ENABLE                     (0x20U) /* Parity enable */\r
55 /* Character length (CHR) */\r
56 #define _00_SCI_DATA_LENGTH_8                     (0x00U) /* Data length 8 bits */\r
57 #define _40_SCI_DATA_LENGTH_7                     (0x40U) /* Data length 7 bits */\r
58 /* Communications mode (CM) */\r
59 #define _00_SCI_ASYNCHRONOUS_MODE                 (0x00U) /* Asynchronous mode */\r
60 #define _80_SCI_CLOCK_SYNCHRONOUS_MODE            (0x80U) /* Clock synchronous mode */\r
61 /* Base clock pulse (BCP) */\r
62 #define _00_SCI_32_93_CLOCK_CYCLES                (0x00U) /* 32 or 93 clock cycles */\r
63 #define _04_SCI_64_128_CLOCK_CYCLES               (0x04U) /* 64 or 128 clock cycles */\r
64 #define _08_SCI_186_372_CLOCK_CYCLES              (0x08U) /* 186 or 372 clock cycles */\r
65 #define _0C_SCI_256_512_CLOCK_CYCLES              (0x0CU) /* 256 or 512 clock cycles */\r
66 /* Block transfer mode (BLK) */\r
67 #define _00_SCI_BLK_TRANSFER_DISABLE              (0x00U) /* Block transfer disable */\r
68 #define _40_SCI_BLK_TRANSFER_ENABLE               (0x40U) /* Block transfer enable */\r
69 /* GSM mode (GSM) */\r
70 #define _00_SCI_GSM_DISABLE                       (0x00U) /* Normal mode operation */\r
71 #define _80_SCI_GSM_ENABLE                        (0x80U) /* GSM mode operation */\r
72 \r
73 /*\r
74     Serial control register (SCR)\r
75 */\r
76 /* Clock enable (CKE) */\r
77 #define _00_SCI_INTERNAL_SCK_UNUSED               (0x00U) /* Internal clock selected, SCK pin unused */\r
78 #define _01_SCI_INTERNAL_SCK_OUTPUT               (0x01U) /* Internal clock selected, SCK pin as clock output */\r
79 #define _02_SCI_EXTERNAL                          (0x02U) /* External clock selected */\r
80 #define _03_SCI_EXTERNAL                          (0x03U) /* External clock selected */\r
81 /* Transmit end interrupt enable (TEIE) */\r
82 #define _00_SCI_TEI_INTERRUPT_DISABLE             (0x00U) /* TEI interrupt request disable */\r
83 #define _04_SCI_TEI_INTERRUPT_ENABLE              (0x04U) /* TEI interrupt request enable */\r
84 /* Multi-processor interrupt enable (MPIE) */\r
85 #define _00_SCI_MP_INTERRUPT_NORMAL               (0x00U) /* Normal reception */\r
86 #define _08_SCI_MP_INTERRUPT_SPECIAL              (0x08U) /* Multi-processor ID reception */\r
87 /* Receive enable (RE) */\r
88 #define _00_SCI_RECEIVE_DISABLE                   (0x00U) /* Disable receive mode */\r
89 #define _10_SCI_RECEIVE_ENABLE                    (0x10U) /* Enable receive mode */\r
90 /* Transmit enable (TE) */\r
91 #define _00_SCI_TRANSMIT_DISABLE                  (0x00U) /* Disable transmit mode */\r
92 #define _20_SCI_TRANSMIT_ENABLE                   (0x20U) /* Enable transmit mode */\r
93 /* Receive interrupt enable (RIE) */\r
94 #define _00_SCI_RXI_ERI_DISABLE                   (0x00U) /* Disable RXI and ERI interrupt requests */\r
95 #define _40_SCI_RXI_ERI_ENABLE                    (0x40U) /* Enable RXI and ERI interrupt requests */\r
96 /* Transmit interrupt enable (TIE) */\r
97 #define _00_SCI_TXI_DISABLE                       (0x00U) /* Disable TXI interrupt requests */\r
98 #define _80_SCI_TXI_ENABLE                        (0x80U) /* Enable TXI interrupt requests */\r
99 \r
100 /*\r
101     Serial status register (SSR)\r
102 */\r
103 /* Multi-Processor bit transfer (MPBT) */\r
104 #define _00_SCI_SET_DATA_TRANSFER                 (0x00U) /* Set data transmission cycles */\r
105 #define _01_SCI_SET_ID_TRANSFER                   (0x01U) /* Set ID transmission cycles */\r
106 /* Multi-Processor (MPB) */\r
107 #define _00_SCI_DATA_TRANSFER                     (0x00U) /* In data transmission cycles */\r
108 #define _02_SCI_ID_TRANSFER                       (0x02U) /* In ID transmission cycles */\r
109 /* Transmit end flag (TEND) */\r
110 #define _00_SCI_TRANSMITTING                      (0x00U) /* A character is being transmitted */\r
111 #define _04_SCI_TRANSMIT_COMPLETE                 (0x04U) /* Character transfer has been completed */\r
112 /* Parity error flag (PER) */\r
113 #define _08_SCI_PARITY_ERROR                      (0x08U) /* A parity error has occurred */\r
114 /* Framing error flag (FER) */\r
115 #define _10_SCI_FRAME_ERROR                       (0x10U) /* A framing error has occurred */\r
116 /* Overrun error flag (ORER) */\r
117 #define _20_SCI_OVERRUN_ERROR                     (0x20U) /* An overrun error has occurred */\r
118 \r
119 /*\r
120     Smart card mode register (SCMR)\r
121 */\r
122 /* Smart card interface mode select (SMIF) */\r
123 #define _00_SCI_SERIAL_MODE                       (0x00U) /* Serial communications interface mode */\r
124 #define _01_SCI_SMART_CARD_MODE                   (0x01U) /* Smart card interface mode */\r
125 /* Transmitted / received data invert (SINV) */\r
126 #define _00_SCI_DATA_INVERT_NONE                  (0x00U) /* Data is not inverted */\r
127 #define _04_SCI_DATA_INVERTED                     (0x04U) /* Data is inverted */\r
128 /* Transmitted / received data transfer direction (SDIR) */\r
129 #define _00_SCI_DATA_LSB_FIRST                    (0x00U) /* Transfer data LSB first */\r
130 #define _08_SCI_DATA_MSB_FIRST                    (0x08U) /* Transfer data MSB first */\r
131 /* Base clock pulse 2 (BCP2) */\r
132 #define _00_SCI_93_128_186_512_CLK                (0x00U) /* 93, 128, 186, or 512 clock cycles */\r
133 #define _80_SCI_32_64_256_372_CLK                 (0x80U) /* 32, 64, 256, or 372 clock cycles */\r
134 #define _72_SCI_SCMR_DEFAULT                      (0x72U) /* Write default value of SCMR */\r
135 \r
136 /* \r
137     Serial extended mode register (SEMR)\r
138 */\r
139 /* Asynchronous Mode Clock Source Select (ACS0) */\r
140 #define _00_SCI_ASYNC_SOURCE_EXTERNAL             (0x00U) /* External clock input */\r
141 #define _01_SCI_ASYNC_SOURCE_TMR                  (0x01U) /* Logical AND of two clock cycles output from TMR */\r
142 /* Asynchronous mode base clock select (ABCS) */\r
143 #define _00_SCI_16_BASE_CLOCK                     (0x00U) /* Selects 16 base clock cycles for 1 bit period */\r
144 #define _10_SCI_8_BASE_CLOCK                      (0x10U) /* Selects 8 base clock cycles for 1 bit period */ \r
145 /* Digital noise filter function enable (NFEN) */\r
146 #define _00_SCI_NOISE_FILTER_DISABLE              (0x00U) /* Noise filter is disabled */\r
147 #define _20_SCI_NOISE_FILTER_ENABLE               (0x20U) /* Noise filter is enabled */\r
148 /* Asynchronous start bit edge detections select (RXDESEL) */\r
149 #define _00_SCI_LOW_LEVEL_START_BIT               (0x00U) /* Low level on RXDn pin selected as start bit */\r
150 #define _80_SCI_FALLING_EDGE_START_BIT            (0x80U) /* Falling edge on RXDn pin selected as start bit */\r
151 \r
152 /*\r
153     Noise filter setting register (SNFR)\r
154 */\r
155 /* Noise filter clock select (NFCS) */\r
156 #define _00_SCI_ASYNC_DIV_1                       (0x00U) /* Clock signal divided by 1 is used with the noise filter */\r
157 #define _01_SCI_IIC_DIV_1                         (0x01U) /* Clock signal divided by 1 is used with the noise filter */\r
158 #define _02_SCI_IIC_DIV_2                         (0x02U) /* Clock signal divided by 2 is used with the noise filter */\r
159 #define _03_SCI_IIC_DIV_4                         (0x03U) /* Clock signal divided by 4 is used with the noise filter */\r
160 #define _04_SCI_IIC_DIV_8                         (0x04U) /* Clock signal divided by 8 is used with the noise filter */\r
161 \r
162 /*\r
163     I2C mode register 1 (SIMR1)\r
164 */\r
165 /* Simple IIC mode select (IICM) */\r
166 #define _00_SCI_SERIAL_SMART_CARD_MODE            (0x00U) /* Serial or smart card mode */\r
167 #define _01_SCI_IIC_MODE                          (0x01U) /* Simple IIC mode */\r
168 \r
169 /*\r
170     I2C mode register 2 (SIMR2)\r
171 */\r
172 /* IIC interrupt mode select (IICINTM) */\r
173 #define _00_SCI_ACK_NACK_INTERRUPTS               (0x00U) /* Use ACK/NACK interrupts */\r
174 #define _01_SCI_RX_TX_INTERRUPTS                  (0x01U) /* Use reception/transmission interrupts */\r
175 /* Clock synchronization (IICCSC) */\r
176 #define _00_SCI_NO_SYNCHRONIZATION                (0x00U) /* No synchronization with the clock signal */\r
177 #define _02_SCI_SYNCHRONIZATION                   (0x02U) /* Synchronization with the clock signal */\r
178 /* ACK transmission data (IICACKT) */\r
179 #define _00_SCI_ACK_TRANSMISSION                  (0x00U) /* ACK transmission */\r
180 #define _20_SCI_NACK_TRANSMISSION                 (0x20U) /* NACK transmission and reception of ACK/NACK */\r
181 \r
182 /*\r
183     I2C mode register 3 (SIMR3)\r
184 */\r
185 /* Start condition generation (IICSTAREQ) */\r
186 #define _00_SCI_START_CONDITION_OFF               (0x00U) /* Start condition is not generated */\r
187 #define _01_SCI_START_CONDITION_ON                (0x01U) /* Start condition is generated */\r
188 /* Restart condition generation (IICRSTAREQ) */\r
189 #define _00_SCI_RESTART_CONDITION_OFF             (0x00U) /* Restart condition is not generated */\r
190 #define _02_SCI_RESTART_CONDITION_ON              (0x02U) /* Restart condition is generated */\r
191 /* Stop condition generation (IICSTPREQ) */\r
192 #define _00_SCI_STOP_CONDITION_OFF                (0x00U) /* Stop condition is not generated */\r
193 #define _04_SCI_STOP_CONDITION_ON                 (0x04U) /* Stop condition is generated */\r
194 /* Issuing of start, restart, or sstop condition completed flag (IICSTIF) */\r
195 #define _00_SCI_CONDITION_GENERATED               (0x00U) /* No requests to generate conditions/conditions generated */\r
196 #define _08_SCI_GENERATION_COMPLETED              (0x08U) /* All request generation has been completed */\r
197 /* SSDA output select (IICSDAS) */\r
198 #define _00_SCI_SSDA_DATA_OUTPUT                  (0x00U) /* SSDA output is serial data output */\r
199 #define _10_SCI_SSDA_START_RESTART_STOP_CONDITION (0x10U) /* SSDA output generates start, restart or stop condition */\r
200 #define _20_SCI_SSDA_LOW_LEVEL                    (0x20U) /* SSDA output low level */\r
201 #define _30_SCI_SSDA_HIGH_IMPEDANCE               (0x30U) /* SSDA output high impedance */\r
202 /* SSCL output select (IICSCLS) */\r
203 #define _00_SCI_SSCL_CLOCK_OUTPUT                 (0x00U) /* SSCL output is serial clock output */\r
204 #define _40_SCI_SSCL_START_RESTART_STOP_CONDITION (0x40U) /* SSCL output generates start, restart or stop condition */\r
205 #define _80_SCI_SSCL_LOW_LEVEL                    (0x80U) /* SSCL output low level */\r
206 #define _C0_SCI_SSCL_HIGH_IMPEDANCE               (0xC0U) /* SSCL output high impedance */\r
207 \r
208 /*\r
209     I2C status register (SISR)\r
210 */\r
211 /* ACK reception data flag (IICACKR) */\r
212 #define _00_SCI_ACK_RECEIVED                      (0x00U) /* ACK received */\r
213 #define _01_SCI_NACK_RECEIVED                     (0x01U) /* NACK received */\r
214 \r
215 /*\r
216     SPI mode register (SPMR)\r
217 */\r
218 /* SS pin function enable (SSE) */\r
219 #define _00_SCI_SS_PIN_DISABLE                    (0x00U) /* SS pin function disabled */\r
220 #define _01_SCI_SS_PIN_ENABLE                     (0x01U) /* SS pin function enabled */\r
221 /* CTS enable (CTSE) */\r
222 #define _00_SCI_RTS                               (0x00U) /* RTS function is enabled */\r
223 #define _02_SCI_CTS                               (0x02U) /* CTS function is disabled */\r
224 /* Master slave select (MSS) */\r
225 #define _00_SCI_SPI_MASTER                        (0x00U) /* Master mode */\r
226 #define _04_SCI_SPI_SLAVE                         (0x04U) /* Slave mode */\r
227 /* Mode fault flag (MFF) */\r
228 #define _00_SCI_NO_MODE_FAULT                     (0x00U) /* No mode fault */\r
229 #define _10_SCI_MODE_FAULT                        (0x10U) /* Mode fault */\r
230 /* Clock polarity select (CKPOL) */\r
231 #define _00_SCI_CLOCK_NOT_INVERTED                (0x00U) /* Clock polarity is not inverted */\r
232 #define _40_SCI_CLOCK_INVERTED                    (0x40U) /* Clock polarity is inverted */\r
233 /* Clock phase select (CKPH) */\r
234 #define _00_SCI_CLOCK_NOT_DELAYED                 (0x00U) /* Clock is not delayed */\r
235 #define _80_SCI_CLOCK_DELAYED                     (0x80U) /* Clock is delayed */\r
236 \r
237 /*\r
238     Interrupt Source Priority Register n (IPRn)\r
239 */\r
240 /* Interrupt Priority Level Select (IPR[3:0]) */\r
241 #define _00_SCI_PRIORITY_LEVEL0                   (0x00U) /* Level 0 (interrupt disabled) */\r
242 #define _01_SCI_PRIORITY_LEVEL1                   (0x01U) /* Level 1 */\r
243 #define _02_SCI_PRIORITY_LEVEL2                   (0x02U) /* Level 2 */\r
244 #define _03_SCI_PRIORITY_LEVEL3                   (0x03U) /* Level 3 */\r
245 #define _04_SCI_PRIORITY_LEVEL4                   (0x04U) /* Level 4 */\r
246 #define _05_SCI_PRIORITY_LEVEL5                   (0x05U) /* Level 5 */\r
247 #define _06_SCI_PRIORITY_LEVEL6                   (0x06U) /* Level 6 */\r
248 #define _07_SCI_PRIORITY_LEVEL7                   (0x07U) /* Level 7 */\r
249 #define _08_SCI_PRIORITY_LEVEL8                   (0x08U) /* Level 8 */\r
250 #define _09_SCI_PRIORITY_LEVEL9                   (0x09U) /* Level 9 */\r
251 #define _0A_SCI_PRIORITY_LEVEL10                  (0x0AU) /* Level 10 */\r
252 #define _0B_SCI_PRIORITY_LEVEL11                  (0x0BU) /* Level 11 */\r
253 #define _0C_SCI_PRIORITY_LEVEL12                  (0x0CU) /* Level 12 */\r
254 #define _0D_SCI_PRIORITY_LEVEL13                  (0x0DU) /* Level 13 */\r
255 #define _0E_SCI_PRIORITY_LEVEL14                  (0x0EU) /* Level 14 */\r
256 #define _0F_SCI_PRIORITY_LEVEL15                  (0x0FU) /* Level 15 (highest) */\r
257 \r
258 /*\r
259     Transfer status control value\r
260 */\r
261 /* Simple IIC Transmit Receive Flag */\r
262 #define _80_SCI_IIC_TRANSMISSION                  (0x80U)\r
263 #define _00_SCI_IIC_RECEPTION                     (0x00U)\r
264 /* Simple IIC Start Stop Flag */\r
265 #define _80_SCI_IIC_START_CYCLE                   (0x80U)\r
266 #define _00_SCI_IIC_STOP_CYCLE                    (0x00U)\r
267 /* Multiprocessor Asynchronous Communication Flag */\r
268 #define _80_SCI_ID_TRANSMISSION_CYCLE             (0x80U)\r
269 #define _00_SCI_DATA_TRANSMISSION_CYCLE           (0x00U)\r
270 \r
271 \r
272 /***********************************************************************************************************************\r
273 Macro definitions\r
274 ***********************************************************************************************************************/\r
275 \r
276 /***********************************************************************************************************************\r
277 Typedef definitions\r
278 ***********************************************************************************************************************/\r
279 \r
280 /***********************************************************************************************************************\r
281 Global functions\r
282 ***********************************************************************************************************************/\r
283 void R_SCI1_Create(void);\r
284 void R_SCI1_Start(void);\r
285 void R_SCI1_Stop(void);\r
286 MD_STATUS R_SCI1_Serial_Send(uint8_t * const tx_buf, uint16_t tx_num);\r
287 MD_STATUS R_SCI1_Serial_Receive(uint8_t * const rx_buf, uint16_t rx_num);\r
288 static void r_sci1_callback_transmitend(void);\r
289 static void r_sci1_callback_receiveend(void);\r
290 static void r_sci1_callback_receiveerror(void);\r
291 \r
292 /* Start user code for function. Do not edit comment generated here */\r
293 \r
294 /* Some of the code in this file is generated using "Code Generator" for e2 studio.\r
295  * Warnings exist in this module. */\r
296 \r
297 /* Exported functions used to transmit a number of bytes and wait for completion */\r
298 MD_STATUS R_SCI1_AsyncTransmit (uint8_t * const tx_buf, const uint16_t tx_num);\r
299 \r
300 /* Character is used to receive key presses from PC terminal */\r
301 extern uint8_t g_rx_char;\r
302 \r
303 /* Flag used to control transmission to PC terminal */\r
304 extern volatile uint8_t g_tx_flag;\r
305 \r
306 /* End user code. Do not edit comment generated here */\r
307 #endif