1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
/***********************************************************************************************************************
* Copyright (C) All rights reserved.
***********************************************************************************************************************/
/***********************************************************************************************************************
* @file sci.h
* @brief This file implements device driver for SCI module.
* @version 1.0.0
* @date 2019/12/24
***********************************************************************************************************************/
#ifndef SCI_H
#define SCI_H
#include "common.h"
#include "userdefine.h"
/***********************************************************************************************************************
Macro definitions (Register bit)
***********************************************************************************************************************/
/*
IrDA Control Register (IRCR)
*/
/* IrDA enable (IRE) */
#define _00_IRDA_COMMUNICATION_NORMAL (0x00U) /* serial I/O pins are used for normal serial communication */
#define _80_IRDA_COMMUNICATION_IRDA (0x80U) /* serial I/O pins are used for IrDA data communication */
/* IrDA clock selection (IRCKS2,IRCKS1,IRCKS0) */
#define _00_IRDA_B_3_16_SELECTED (0x00U) /* B*3/16 */
#define _10_IRDA_fCLK_2_SELECTED (0x10U) /* fCLK/2 */
#define _20_IRDA_fCLK_4_SELECTED (0x20U) /* fCLK/4 */
#define _30_IRDA_fCLK_8_SELECTED (0x30U) /* fCLK/8 */
#define _40_IRDA_fCLK_16_SELECTED (0x40U) /* fCLK/16 */
#define _50_IRDA_fCLK_32_SELECTED (0x50U) /* fCLK/32 */
#define _60_IRDA_fCLK_64_SELECTED (0x60U) /* fCLK/64 */
/* IrTxD data polarity switching (IRTXINV) */
#define _00_IRDA_OUTPUT_IRTXD (0x00U) /* data to be transmitted is output to IrTxD as is */
#define _08_IRDA_OUTPUT_IRTXD_INVERTED (0x08U) /* data to be transmitted is output to IrTxD after the polarity is inverted */
/* IrRxD data polarity switching (IRRXINV) */
#define _00_IRDA_OUTPUT_IRRXD (0x00U) /* IrRxD input is used as received data as is */
#define _04_IRDA_OUTPUT_IRRXD_INVERTED (0x04U) /* IrRxD input is used as received data after the polarity is inverted */
/*
The SPSm register is a 16-bit register that is used to select two types of operation clocks (CKm0, CKm1) that are
commonly supplied to each channel. (SPSm)
*/
/* Section of operation clock (CKm0) (PRSm00,PRSm01,PRSm02,PRSm03) */
#define _0000_SCI_CK00_fCLK_0 (0x0000U) /* ck00-fCLK */
#define _0001_SCI_CK00_fCLK_1 (0x0001U) /* ck00-fCLK/2^1 */
#define _0002_SCI_CK00_fCLK_2 (0x0002U) /* ck00-fCLK/2^2 */
#define _0003_SCI_CK00_fCLK_3 (0x0003U) /* ck00-fCLK/2^3 */
#define _0004_SCI_CK00_fCLK_4 (0x0004U) /* ck00-fCLK/2^4 */
#define _0005_SCI_CK00_fCLK_5 (0x0005U) /* ck00-fCLK/2^5 */
#define _0006_SCI_CK00_fCLK_6 (0x0006U) /* ck00-fCLK/2^6 */
#define _0007_SCI_CK00_fCLK_7 (0x0007U) /* ck00-fCLK/2^7 */
#define _0008_SCI_CK00_fCLK_8 (0x0008U) /* ck00-fCLK/2^8 */
#define _0009_SCI_CK00_fCLK_9 (0x0009U) /* ck00-fCLK/2^9 */
#define _000A_SCI_CK00_fCLK_10 (0x000AU) /* ck00-fCLK/2^10 */
#define _000B_SCI_CK00_fCLK_11 (0x000BU) /* ck00-fCLK/2^11 */
#define _000C_SCI_CK00_fCLK_12 (0x000CU) /* ck00-fCLK/2^12 */
#define _000D_SCI_CK00_fCLK_13 (0x000DU) /* ck00-fCLK/2^13 */
#define _000E_SCI_CK00_fCLK_14 (0x000EU) /* ck00-fCLK/2^14 */
#define _000F_SCI_CK00_fCLK_15 (0x000FU) /* ck00-fCLK/2^15 */
/* Section of operation clock (CKm1) (PRSm10,PRSm11,PRSm12,PRSm13,) */
#define _0000_SCI_CK01_fCLK_0 (0x0000U) /* ck01-fCLK */
#define _0010_SCI_CK01_fCLK_1 (0x0010U) /* ck01-fCLK/2^1 */
#define _0020_SCI_CK01_fCLK_2 (0x0020U) /* ck01-fCLK/2^2 */
#define _0030_SCI_CK01_fCLK_3 (0x0030U) /* ck01-fCLK/2^3 */
#define _0040_SCI_CK01_fCLK_4 (0x0040U) /* ck01-fCLK/2^4 */
#define _0050_SCI_CK01_fCLK_5 (0x0050U) /* ck01-fCLK/2^5 */
#define _0060_SCI_CK01_fCLK_6 (0x0060U) /* ck01-fCLK/2^6 */
#define _0070_SCI_CK01_fCLK_7 (0x0070U) /* ck01-fCLK/2^7 */
#define _0080_SCI_CK01_fCLK_8 (0x0080U) /* ck01-fCLK/2^8 */
#define _0090_SCI_CK01_fCLK_9 (0x0090U) /* ck01-fCLK/2^9 */
#define _00A0_SCI_CK01_fCLK_10 (0x00A0U) /* ck01-fCLK/2^10 */
#define _00B0_SCI_CK01_fCLK_11 (0x00B0U) /* ck01-fCLK/2^11 */
#define _00C0_SCI_CK01_fCLK_12 (0x00C0U) /* ck01-fCLK/2^12 */
#define _00D0_SCI_CK01_fCLK_13 (0x00D0U) /* ck01-fCLK/2^13 */
#define _00E0_SCI_CK01_fCLK_14 (0x00E0U) /* ck01-fCLK/2^14 */
#define _00F0_SCI_CK01_fCLK_15 (0x00F0U) /* ck01-fCLK/2^15 */
/*
Serial mode register mn (SMRmn)
*/
/* Selection of operation clock (fMCK) of channel n (CKSmn) */
#define _0000_SCI_CLOCK_SELECT_CK00 (0x0000U) /* operation clock CKm0 set by the SPSm register */
#define _8000_SCI_CLOCK_SELECT_CK01 (0x8000U) /* operation clock CKm1 set by the SPSm register */
/* Selection of transfer clock (fTCLK) of channel n (CCSmn) */
#define _0000_SCI_CLOCK_MODE_CKS (0x0000U) /* divided operation clock fMCK specified by the CKSmn bit */
#define _4000_SCI_CLOCK_MODE_TI0N (0x4000U) /* clock input fSCK from the SCKp pin (slave transfer in SPI mode) */
/* Selection of start trigger source (STSmn) */
#define _0000_SCI_TRIGGER_SOFTWARE (0x0000U) /* only software trigger is valid (selected for SPI, UART transmission, and simplified I2C) */
#define _0100_SCI_TRIGGER_RXD (0x0100U) /* valid edge of the RxDq pin (selected for UART reception) */
/* Controls inversion of level of receive data of channel n in UART mode (SISmn0) */
#define _0000_SCI_EDGE_FALL (0x0000U) /* falling edge is detected as the start bit.
The input communication data is captured as is */
#define _0040_SCI_EDGE_RISING (0x0040U) /* rising edge is detected as the start bit.
The input communication data is inverted and captured */
/* Setting of operation mode of channel n (MDmn2,MDmn1) */
#define _0000_SCI_MODE_SPI (0x0000U) /* SPI mode */
#define _0002_SCI_MODE_UART (0x0002U) /* UART mode */
#define _0004_SCI_MODE_IIC (0x0004U) /* simplified I2C mode */
/* Selection of interrupt source of channel n (MDmn0) */
#define _0000_SCI_TRANSFER_END (0x0000U) /* transfer end interrupt */
#define _0001_SCI_BUFFER_EMPTY (0x0001U) /* buffer empty interrupt */
/*
Serial communication operation setting register mn (SCRmn)
*/
/* Setting of operation mode of channel n (TXEmn,RXEmn) */
#define _0000_SCI_NOT_COMMUNICATION (0x0000U) /* disable communication */
#define _4000_SCI_RECEPTION (0x4000U) /* reception only */
#define _8000_SCI_TRANSMISSION (0x8000U) /* transmission only */
#define _C000_SCI_RECEPTION_TRANSMISSION (0xC000U) /* transmission/reception */
/* Selection of data and clock phase in SPI mode (DAPmn,CKPmn) */
#define _0000_SCI_TIMING_1 (0x0000U) /* type 1 */
#define _1000_SCI_TIMING_2 (0x1000U) /* type 2 */
#define _2000_SCI_TIMING_3 (0x2000U) /* type 3 */
#define _3000_SCI_TIMING_4 (0x3000U) /* type 4 */
/* Mask control of error interrupt signal (INTSREx (x = 0 to 3)) (EOCmn) */
#define _0000_SCI_INTSRE_MASK (0x0000U) /* disables generation of error interrupt INTSREx (INTSRx is generated) */
#define _0400_SCI_INTSRE_ENABLE (0x0400U) /* enables generation of error interrupt INTSREx (INTSRx is not generated if an error occurs) */
/* Setting of parity bit in UART mode (PTCmn1,PTCmn0) */
#define _0000_SCI_PARITY_NONE (0x0000U) /* none parity */
#define _0100_SCI_PARITY_ZERO (0x0100U) /* zero parity */
#define _0200_SCI_PARITY_EVEN (0x0200U) /* even parity */
#define _0300_SCI_PARITY_ODD (0x0300U) /* odd parity */
/* Selection of data transfer sequence in SPI and UART modes (DIRmn) */
#define _0000_SCI_MSB (0x0000U) /* inputs/outputs data with MSB first */
#define _0080_SCI_LSB (0x0080U) /* inputs/outputs data with LSB first */
/* Setting of stop bit in UART mode (SLCmn1,SLCmn0) */
#define _0000_SCI_STOP_NONE (0x0000U) /* no stop bit */
#define _0010_SCI_STOP_1 (0x0010U) /* 1 Stop bit length = 1 bit */
#define _0020_SCI_STOP_2 (0x0020U) /* stop bit length = 2 bits (mn = 00,02,10 only) */
/* Setting of data length in SPI and UART modes (DLSmn1,DLSmn0) */
#define _0001_SCI_LENGTH_9 (0x0001U) /* 9-bit data length */
#define _0002_SCI_LENGTH_7 (0x0002U) /* 7-bit data length */
#define _0003_SCI_LENGTH_8 (0x0003U) /* 8-bit data length */
#define _0006_SCI_LENGTH_7 (0x0002U) /* 7-bit data length */
#define _0007_SCI_LENGTH_8 (0x0007U) /* 8-bit data length */
#define _000F_SCI_LENGTH_8 (0x000FU) /* 16-bit data length */
/*
Serial flag clear trigger register mn (SIRmn)
*/
/* Clear trigger of framing error of channel n (FECTmn) */
#define _0004_SCI_SIRMN_FECTMN (0x0004U) /* clears the FEFmn bit of the SSRmn register to 0 */
/* Clear trigger of parity error flag of channel n (PECTmn) */
#define _0002_SCI_SIRMN_PECTMN (0x0002U) /* clears the PEFmn bit of the SSRmn register to 0 */
/* Clear trigger of overrun error flag of channel n (OVCTmn) */
#define _0001_SCI_SIRMN_OVCTMN (0x0001U) /* clears the OVFmn bit of the SSRmn register to 0 */
/*
Serial status register mn (SSRmn)
*/
/* Communication status indication flag of channel n (TSFmn) */
#define _0040_SCI_UNDER_EXECUTE (0x0040U) /* communication is in progress */
/* Buffer register status indication flag of channel n (BFFmn) */
#define _0020_SCI_VALID_STORED (0x0020U) /* valid data is stored in the SDRmn register */
/* Framing error detection flag of channel n (FEFmn) */
#define _0004_SCI_FRAM_ERROR (0x0004U) /* an error occurs (during UART reception) */
/* Parity error detection flag of channel n (PEFmn) */
#define _0002_SCI_PARITY_ERROR (0x0002U) /* an error occurs (during UART reception) or ACK is not detected (during I2C transmission) */
/* Overrun error detection flag of channel n (OVFmn) */
#define _0001_SCI_OVERRUN_ERROR (0x0001U) /* an overrun error occurs */
/*
Serial channel start register m (SSm)
*/
/* Operation start trigger of channel 3 (SSm3) */
#define _0000_SCI_CH3_START_TRG_OFF (0x0000U) /* no trigger operation */
#define _0008_SCI_CH3_START_TRG_ON (0x0008U) /* sets the SEmn bit to 1 and enters the communication wait status */
/* Operation start trigger of channel 2 (SSm2) */
#define _0000_SCI_CH2_START_TRG_OFF (0x0000U) /* no trigger operation */
#define _0004_SCI_CH2_START_TRG_ON (0x0004U) /* sets the SEmn bit to 1 and enters the communication wait status */
/* Operation start trigger of channel 1 (SSm1) */
#define _0000_SCI_CH1_START_TRG_OFF (0x0000U) /* no trigger operation */
#define _0002_SCI_CH1_START_TRG_ON (0x0002U) /* sets the SEmn bit to 1 and enters the communication wait status */
/* Operation start trigger of channel 0 (SSm0) */
#define _0000_SCI_CH0_START_TRG_OFF (0x0000U) /* no trigger operation */
#define _0001_SCI_CH0_START_TRG_ON (0x0001U) /* sets the SEmn bit to 1 and enters the communication wait status */
/*
Format of Serial channel stop register m (STm)
*/
/* Operation stop trigger of channel 3 (STm3) */
#define _0000_SCI_CH3_STOP_TRG_OFF (0x0000U) /* no trigger operation */
#define _0008_SCI_CH3_STOP_TRG_ON (0x0008U) /* clears the SEmn bit to 0 and stops the communication operation */
/* Operation stop trigger of channel 2 (STm2) */
#define _0000_SCI_CH2_STOP_TRG_OFF (0x0000U) /* no trigger operation */
#define _0004_SCI_CH2_STOP_TRG_ON (0x0004U) /* clears the SEmn bit to 0 and stops the communication operation */
/* Operation stop trigger of channel 1 (STm1) */
#define _0000_SCI_CH1_STOP_TRG_OFF (0x0000U) /* no trigger operation */
#define _0002_SCI_CH1_STOP_TRG_ON (0x0002U) /* clears the SEmn bit to 0 and stops the communication operation */
/* Operation stop trigger of channel 0 (STm0) */
#define _0000_SCI_CH0_STOP_TRG_OFF (0x0000U) /* no trigger operation */
#define _0001_SCI_CH0_STOP_TRG_ON (0x0001U) /* clears the SEmn bit to 0 and stops the communication operation */
/*
Serial channel enable status register m (SEm)
*/
/* Indication of operation enable/stop status of channel 3 (SEm3) */
#define _0000_SCI_CH3_STATUS_DISABLE (0x0000U) /* operation stops */
#define _0008_SCI_CH3_STATUS_ENABLE (0x0008U) /* operation is enabled */
/* Indication of operation enable/stop status of channel 2 (SEm2) */
#define _0000_SCI_CH2_STATUS_DISABLE (0x0000U) /* operation stops */
#define _0004_SCI_CH2_STATUS_ENABLE (0x0004U) /* operation is enabled */
/* Indication of operation enable/stop status of channel 1 (SEm1) */
#define _0000_SCI_CH1_STATUS_DISABLE (0x0000U) /* operation stops */
#define _0002_SCI_CH1_STATUS_ENABLE (0x0002U) /* operation is enabled */
/* Indication of operation enable/stop status of channel 0 (SEm0) */
#define _0000_SCI_CH0_STATUS_DISABLE (0x0000U) /* operation stops */
#define _0001_SCI_CH0_STATUS_ENABLE (0x0001U) /* operation is enabled */
/*
Serial output enable register m (SOEm)
*/
/* Serial output enable/stop of channel 3 (SOEm3) */
#define _0000_SCI_CH3_OUTPUT_DISABLE (0x0000U) /* stops output by serial communication operation */
#define _0008_SCI_CH3_OUTPUT_ENABLE (0x0008U) /* enables output by serial communication operation */
/* Serial output enable/stop of channel 2 (SOEm2) */
#define _0000_SCI_CH2_OUTPUT_DISABLE (0x0000U) /* stops output by serial communication operation */
#define _0004_SCI_CH2_OUTPUT_ENABLE (0x0004U) /* enables output by serial communication operation */
/* Serial output enable/stop of channel 1 (SOEm1) */
#define _0000_SCI_CH1_OUTPUT_DISABLE (0x0000U) /* stops output by serial communication operation */
#define _0002_SCI_CH1_OUTPUT_ENABLE (0x0002U) /* enables output by serial communication operation */
/* Serial output enable/stop of channel 0 (SOEm0) */
#define _0000_SCI_CH0_OUTPUT_DISABLE (0x0000U) /* stops output by serial communication operation */
#define _0001_SCI_CH0_OUTPUT_ENABLE (0x0001U) /* enables output by serial communication operation */
/*
Serial output register m (SOm)
*/
/* Serial clock output of channel 3 (CKOm3) */
#define _0000_SCI_CH3_CLOCK_OUTPUT_0 (0x0000U) /* serial clock output value is 0 */
#define _0800_SCI_CH3_CLOCK_OUTPUT_1 (0x0800U) /* serial clock output value is 1 */
/* Serial clock output of channel 2 (CKOm2) */
#define _0000_SCI_CH2_CLOCK_OUTPUT_0 (0x0000U) /* serial clock output value is 0 */
#define _0400_SCI_CH2_CLOCK_OUTPUT_1 (0x0400U) /* serial clock output value is 1 */
/* Serial clock output of channel 1 (CKOm1) */
#define _0000_SCI_CH1_CLOCK_OUTPUT_0 (0x0000U) /* serial clock output value is 0 */
#define _0200_SCI_CH1_CLOCK_OUTPUT_1 (0x0200U) /* serial clock output value is 1 */
/* Serial clock output of channel 0 (CKOm0) */
#define _0000_SCI_CH0_CLOCK_OUTPUT_0 (0x0000U) /* serial clock output value is 0 */
#define _0100_SCI_CH0_CLOCK_OUTPUT_1 (0x0100U) /* serial clock output value is 1 */
/* Serial data output of channel 3 (SOm3) */
#define _0000_SCI_CH3_DATA_OUTPUT_0 (0x0000U) /* serial data output value is 0 */
#define _0008_SCI_CH3_DATA_OUTPUT_1 (0x0008U) /* serial data output value is 1 */
/* Serial data output of channel 2 (SOm2) */
#define _0000_SCI_CH2_DATA_OUTPUT_0 (0x0000U) /* serial data output value is 0 */
#define _0004_SCI_CH2_DATA_OUTPUT_1 (0x0004U) /* serial data output value is 1 */
/* Serial data output of channel 1 (SOm1) */
#define _0000_SCI_CH1_DATA_OUTPUT_0 (0x0000U) /* serial data output value is 0 */
#define _0002_SCI_CH1_DATA_OUTPUT_1 (0x0002U) /* serial data output value is 1 */
/* Serial data output of channel 0 (SOm0) */
#define _0000_SCI_CH0_DATA_OUTPUT_0 (0x0000U) /* serial data output value is 0 */
#define _0001_SCI_CH0_DATA_OUTPUT_1 (0x0001U) /* serial data output value is 1 */
/*
Serial output level register m (SOLm)
*/
/* Selects inversion of the level of the transmit data of channel n in UART mode (SOLm2) */
#define _0000_SCI_CHANNEL2_NORMAL (0x0000U) /* communication data is output as is */
#define _0004_SCI_CHANNEL2_INVERTED (0x0004U) /* communication data is inverted and output */
/* Selects inversion of the level of the transmit data of channel n in UART mode (SOLm0) */
#define _0000_SCI_CHANNEL0_NORMAL (0x0000U) /* communication data is output as is */
#define _0001_SCI_CHANNEL0_INVERTED (0x0001U) /* communication data is inverted and output */
/*
Serial standby control register m (SSCm)
*/
/* Selection of whether to enable or disable the generation of communication error interrupts in the
SNOOZE mode (SSECm) */
#define _0000_SCI_INTSRE0_ENABLE (0x0000U) /* enable the generation of error interrupts (INTSRE0/INTSRE2) */
#define _0002_SCI_INTSRE0_DISABLE (0x0002U) /* disable the generation of error interrupts (INTSRE0/INTSRE2) */
/* Setting of the SNOOZE mode (SWCm) */
#define _0000_SCI_CH0_SNOOZE_OFF (0x0000U) /* do not use the SNOOZE mode function */
#define _0001_SCI_CH0_SNOOZE_ON (0x0001U) /* use the SNOOZE mode function */
/*
Input switch control register (ISC)
*/
/* Channel 0 SSI00 input setting in SPI communication and slave mode (SSIE00) */
#define _00_SCI_SSI00_UNUSED (0x00U) /* disables SSI00 pin input */
#define _80_SCI_SSI00_USED (0x80U) /* enables SSI00 pin input */
/* Switching channel 3 input of timer array unit 0 (ISC1) */
#define _00_SCI_TI03_INPUT (0x00U) /* uses the input signal of the TI03 pin as a timer input (normal operation) */
#define _02_SCI_RxD0_INPUT (0x02U) /* input signal of the RxD0 pin is used as timer input */
/* Switching external interrupt (INTP0) input (ISC0) */
#define _00_SCI_INTP0_INTERRUPT (0x00U) /* uses the input signal of the INTP0 pin as an external interrupt (normal operation) */
#define _01_SCI_RxD0_INTERRUPT (0x01U) /* uses the input signal of the RxD0 pin as an external interrupt (wakeup signal detection) */
/*
Noise filter enable register 0 (NFEN0)
*/
/* Use of noise filter of RxD3 pin (SNFEN30) */
#define _00_SCI_RXD3_FILTER_OFF (0x00U) /* noise filter off */
#define _40_SCI_RXD3_FILTER_ON (0x40U) /* noise filter on */
/* Use of noise filter of RxD2 pin (SNFEN20) */
#define _00_SCI_RXD2_FILTER_OFF (0x00U) /* noise filter off */
#define _10_SCI_RXD2_FILTER_ON (0x10U) /* noise filter on */
/* Use of noise filter of RxD1 pin (SNFEN10) */
#define _00_SCI_RXD1_FILTER_OFF (0x00U) /* noise filter off */
#define _04_SCI_RXD1_FILTER_ON (0x04U) /* noise filter on */
/* Use of noise filter of RxD0 pin (SNFEN00) */
#define _00_SCI_RXD0_FILTER_OFF (0x00U) /* noise filter off */
#define _01_SCI_RXD0_FILTER_ON (0x01U) /* noise filter on */
/* SCI used flag */
#define _00_SCI_IIC_MASTER_IDLE (0x00U)
#define _01_SCI_IIC_SEND_FLAG (0x01U)
#define _02_SCI_IIC_RECEIVE_FLAG (0x02U)
#define _04_SCI_IIC_SENDED_ADDRESS_FLAG (0x04U)
/***********************************************************************************************************************
Macro definitions
***********************************************************************************************************************/
#define _CE00_SCI_BAUDRATE_DIVISOR (0xCE00U) /* transfer clock set by dividing the operating clock */
#define _9E00_SCI_BAUDRATE_DIVISOR (0x9E00U) /* transfer clock set by dividing the operating clock */
#define _1800_SCI_BAUDRATE_DIVISOR (0x1800U) /* IIC 400K@20MHz transfer clock set by dividing the operating clock */
#define _3000_SCI_BAUDRATE_DIVISOR (0x3000U) /* IIC 200K@20MHz transfer clock set by dividing the operating clock */
#define _2600_SCI_BAUDRATE_DIVISOR (0x2600U) /* IIC 400K@32MHz transfer clock set by dividing the operating clock */
#define _4E00_SCI_BAUDRATE_DIVISOR (0x4E00U) /* IIC 200K@32MHz transfer clock set by dividing the operating clock */
#define _0020_SMRMN_DEFAULT_VALUE (0x0020U) /* SMRmn default value */
#define _0004_SCRMN_DEFAULT_VALUE (0x0004U) /* SCRmn default value */
#define IIC_WAITTIME (14U) /* change the waiting time according to the system */
#define SLVADDR (0x98U) /* the IIC Slave Address of DAC on motherboard */
#define Uart_tx_Buffer_Size (100u)
#define Uart_rx_Buffer_Size (100u)
/***********************************************************************************************************************
Typedef definitions
***********************************************************************************************************************/
typedef struct
{
uint8_t prs; // SPS prescale value
uint8_t sdr; // SDR[15:9] value
} uart_baud_t;
typedef enum ASigConvStat
{
UART_TX_IDEL = 0,
UART_TX_BUSY,
} uart_state_t;
typedef enum
{
SPI_MODE_0 = 0x3000U, // Mode 0: CPOL = 0, CPHA = 0; i.e. DAP = 1, CKP = 1
SPI_MODE_1 = 0x1000U, // Mode 1: CPOL = 0, CPHA = 1; i.e. DAP = 0, CKP = 1
SPI_MODE_2 = 0x2000U, // Mode 2: CPOL = 1, CPHA = 0; i.e. DAP = 1, CKP = 0
SPI_MODE_3 = 0x0000U, // Mode 3: CPOL = 1, CPHA = 1; i.e. DAP = 0, CKP = 0
} spi_mode_t;
/***********************************************************************************************************************
Global variables
***********************************************************************************************************************/
extern const uint16_t sps_tbl[16]; /* sps prescale lookup table */
extern volatile uint8_t * gp_uart0_tx_address; /* uart0 send buffer address */
extern volatile uint16_t g_uart0_tx_count; /* uart0 send data number */
extern volatile uint8_t * gp_uart0_rx_address; /* uart0 receive buffer address */
extern volatile uint16_t g_uart0_rx_count; /* uart0 receive data number */
extern volatile uint16_t g_uart0_rx_length; /* uart0 receive data length */
extern volatile uint8_t * gp_spi00_rx_address; /* spi00 receive buffer address */
extern volatile uint16_t g_spi00_rx_length; /* spi00 receive data length */
extern volatile uint16_t g_spi00_rx_count; /* spi00 receive data count */
extern volatile uint8_t * gp_spi00_tx_address; /* spi00 send buffer address */
extern volatile uint16_t g_spi00_tx_length; /* spi00 send data length */
extern volatile uint16_t g_spi00_tx_count; /* spi00 send data count */
extern volatile uint8_t * gp_spi01_rx_address; /* spi01 receive buffer address */
extern volatile uint16_t g_spi01_rx_length; /* spi01 receive data length */
extern volatile uint16_t g_spi01_rx_count; /* spi01 receive data count */
extern volatile uint8_t * gp_spi01_tx_address; /* spi01 send buffer address */
extern volatile uint16_t g_spi01_tx_length; /* spi01 send data length */
extern volatile uint16_t g_spi01_tx_count; /* spi01 send data count */
extern volatile uint8_t g_iic00_master_status_flag; /* iic00 start flag for send address check by master mode */
extern volatile uint8_t * gp_iic00_tx_address; /* iic00 send data pointer by master mode */
extern volatile uint16_t g_iic00_tx_count; /* iic00 send data size by master mode */
extern volatile uint8_t * gp_iic00_rx_address; /* iic00 receive data pointer by master mode */
extern volatile uint16_t g_iic00_rx_count; /* iic00 receive data size by master mode */
extern volatile uint16_t g_iic00_rx_length; /* iic00 receive data length by master mode */
extern volatile uint8_t g_iic01_master_status_flag; /* iic01 start flag for send address check by master mode */
extern volatile uint8_t * gp_iic01_tx_address; /* iic01 send data pointer by master mode */
extern volatile uint16_t g_iic01_tx_count; /* iic01 send data size by master mode */
extern volatile uint8_t * gp_iic01_rx_address; /* iic01 receive data pointer by master mode */
extern volatile uint16_t g_iic01_rx_count; /* iic01 receive data size by master mode */
extern volatile uint16_t g_iic01_rx_length; /* iic01 receive data length by master mode */
extern volatile uint8_t * gp_uart1_tx_address; /* uart1 send buffer address */
extern volatile uint16_t g_uart1_tx_count; /* uart1 send data number */
extern volatile uint8_t * gp_uart1_rx_address; /* uart1 receive buffer address */
extern volatile uint16_t g_uart1_rx_count; /* uart1 receive data number */
extern volatile uint16_t g_uart1_rx_length; /* uart1 receive data length */
extern volatile uint8_t * gp_spi10_rx_address; /* spi10 receive buffer address */
extern volatile uint16_t g_spi10_rx_length; /* spi10 receive data length */
extern volatile uint16_t g_spi10_rx_count; /* spi10 receive data count */
extern volatile uint8_t * gp_spi10_tx_address; /* spi10 send buffer address */
extern volatile uint16_t g_spi10_tx_length; /* spi10 send data length */
extern volatile uint16_t g_spi10_tx_count; /* spi10 send data count */
extern volatile uint8_t * gp_spi11_rx_address; /* spi11 receive buffer address */
extern volatile uint16_t g_spi11_rx_length; /* spi11 receive data length */
extern volatile uint16_t g_spi11_rx_count; /* spi11 receive data count */
extern volatile uint8_t * gp_spi11_tx_address; /* spi11 send buffer address */
extern volatile uint16_t g_spi11_tx_length; /* spi11 send data length */
extern volatile uint16_t g_spi11_tx_count; /* spi11 send data count */
extern volatile uint8_t g_iic10_master_status_flag; /* iic10 start flag for send address check by master mode */
extern volatile uint8_t * gp_iic10_tx_address; /* iic10 send data pointer by master mode */
extern volatile uint16_t g_iic10_tx_count; /* iic10 send data size by master mode */
extern volatile uint8_t * gp_iic10_rx_address; /* iic10 receive data pointer by master mode */
extern volatile uint16_t g_iic10_rx_count; /* iic10 receive data size by master mode */
extern volatile uint16_t g_iic10_rx_length; /* iic10 receive data length by master mode */
extern volatile uint8_t g_iic11_master_status_flag; /* iic11 start flag for send address check by master mode */
extern volatile uint8_t * gp_iic11_tx_address; /* iic11 send data pointer by master mode */
extern volatile uint16_t g_iic11_tx_count; /* iic11 send data size by master mode */
extern volatile uint8_t * gp_iic11_rx_address; /* iic11 receive data pointer by master mode */
extern volatile uint16_t g_iic11_rx_count; /* iic11 receive data size by master mode */
extern volatile uint16_t g_iic11_rx_length; /* iic11 receive data length by master mode */
extern volatile uint8_t * gp_uart2_tx_address; /* uart2 send buffer address */
extern volatile uint16_t g_uart2_tx_count; /* uart2 send data number */
extern volatile uint8_t * gp_uart2_rx_address; /* uart2 receive buffer address */
extern volatile uint16_t g_uart2_rx_count; /* uart2 receive data number */
extern volatile uint16_t g_uart2_rx_length; /* uart2 receive data length */
extern volatile uint8_t * gp_spi20_rx_address; /* spi20 receive buffer address */
extern volatile uint16_t g_spi20_rx_length; /* spi20 receive data length */
extern volatile uint16_t g_spi20_rx_count; /* spi20 receive data count */
extern volatile uint8_t * gp_spi20_tx_address; /* spi20 send buffer address */
extern volatile uint16_t g_spi20_send_length; /* spi20 send data length */
extern volatile uint16_t g_spi20_tx_count; /* spi20 send data count */
extern volatile uint8_t * gp_spi21_rx_address; /* spi21 receive buffer address */
extern volatile uint16_t g_spi21_rx_length; /* spi21 receive data length */
extern volatile uint16_t g_spi21_rx_count; /* spi21 receive data count */
extern volatile uint8_t * gp_spi21_tx_address; /* spi21 send buffer address */
extern volatile uint16_t g_spi21_send_length; /* spi21 send data length */
extern volatile uint16_t g_spi21_tx_count; /* spi21 send data count */
extern volatile uint8_t g_iic20_master_status_flag; /* iic20 start flag for send address check by master mode */
extern volatile uint8_t * gp_iic20_tx_address; /* iic20 send data pointer by master mode */
extern volatile uint16_t g_iic20_tx_count; /* iic20 send data size by master mode */
extern volatile uint8_t * gp_iic20_rx_address; /* iic20 receive data pointer by master mode */
extern volatile uint16_t g_iic20_rx_count; /* iic20 receive data size by master mode */
extern volatile uint16_t g_iic20_rx_length; /* iic20 receive data length by master mode */
extern volatile uint8_t g_iic21_master_status_flag; /* iic21 start flag for send address check by master mode */
extern volatile uint8_t * gp_iic21_tx_address; /* iic21 send data pointer by master mode */
extern volatile uint16_t g_iic21_tx_count; /* iic21 send data size by master mode */
extern volatile uint8_t * gp_iic21_rx_address; /* iic21 receive data pointer by master mode */
extern volatile uint16_t g_iic21_rx_count; /* iic21 receive data size by master mode */
extern volatile uint16_t g_iic21_rx_length; /* iic21 receive data length by master mode */
extern volatile uint8_t * gp_uart3_tx_address; /* uart3 send buffer address */
extern volatile uint16_t g_uart3_tx_count; /* uart3 send data number */
extern volatile uint8_t * gp_uart3_rx_address; /* uart3 receive buffer address */
extern volatile uint16_t g_uart3_rx_count; /* uart3 receive data number */
extern volatile uint16_t g_uart3_rx_length; /* uart3 receive data length */
extern volatile uint8_t * gp_spi30_rx_address; /* spi30 receive buffer address */
extern volatile uint16_t g_spi30_rx_length; /* spi30 receive data length */
extern volatile uint16_t g_spi30_rx_count; /* spi30 receive data count */
extern volatile uint8_t * gp_spi30_tx_address; /* spi30 send buffer address */
extern volatile uint16_t g_spi30_send_length; /* spi30 send data length */
extern volatile uint16_t g_spi30_tx_count; /* spi30 send data count */
extern volatile uint8_t * gp_spi31_rx_address; /* spi31 receive buffer address */
extern volatile uint16_t g_spi31_rx_length; /* spi31 receive data length */
extern volatile uint16_t g_spi31_rx_count; /* spi31 receive data count */
extern volatile uint8_t * gp_spi31_tx_address; /* spi31 send buffer address */
extern volatile uint16_t g_spi31_send_length; /* spi31 send data length */
extern volatile uint16_t g_spi31_tx_count; /* spi31 send data count */
extern volatile uint8_t g_iic30_master_status_flag; /* iic30 start flag for send address check by master mode */
extern volatile uint8_t * gp_iic30_tx_address; /* iic30 send data pointer by master mode */
extern volatile uint16_t g_iic30_tx_count; /* iic30 send data size by master mode */
extern volatile uint8_t * gp_iic30_rx_address; /* iic30 receive data pointer by master mode */
extern volatile uint16_t g_iic30_rx_count; /* iic30 receive data size by master mode */
extern volatile uint16_t g_iic30_rx_length; /* iic30 receive data length by master mode */
extern volatile uint8_t g_iic31_master_status_flag; /* iic31 start flag for send address check by master mode */
extern volatile uint8_t * gp_iic31_tx_address; /* iic31 send data pointer by master mode */
extern volatile uint16_t g_iic31_tx_count; /* iic31 send data size by master mode */
extern volatile uint8_t * gp_iic31_rx_address; /* iic31 receive data pointer by master mode */
extern volatile uint16_t g_iic31_rx_count; /* iic31 receive data size by master mode */
extern volatile uint16_t g_iic31_rx_length; /* iic31 receive data length by master mode */
extern volatile uint8_t g_iic00_tx_end; /* iic00 send data end */
extern volatile uint8_t g_iic00_rx_end; /* iic00 receive data end */
extern volatile uint8_t g_iic01_tx_end; /* iic01 send data end */
extern volatile uint8_t g_iic01_rx_end; /* iic01 receive data end */
extern volatile uint8_t g_iic10_tx_end; /* iic10 send data end */
extern volatile uint8_t g_iic10_rx_end; /* iic10 receive data end */
extern volatile uint8_t g_iic11_tx_end; /* iic11 send data end */
extern volatile uint8_t g_iic11_rx_end; /* iic11 receive data end */
extern volatile uint8_t g_iic20_tx_end; /* iic20 send data end */
extern volatile uint8_t g_iic20_rx_end; /* iic20 receive data end */
extern volatile uint8_t g_iic21_tx_end; /* iic21 send data end */
extern volatile uint8_t g_iic21_rx_end; /* iic21 receive data end */
extern volatile uint8_t g_iic30_tx_end; /* iic30 send data end */
extern volatile uint8_t g_iic30_rx_end; /* iic30 receive data end */
extern volatile uint8_t g_iic31_tx_end; /* iic31 send data end */
extern volatile uint8_t g_iic31_rx_end; /* iic31 receive data end */
extern volatile uart_state_t g_uart2_tx_state;
/***********************************************************************************************************************
Global functions
***********************************************************************************************************************/
MD_STATUS UART0_Init(uint32_t freq, uint32_t baud);
MD_STATUS UART0_BaudRate(uint32_t fclk_freq, uint32_t baud);
void UART0_Send(uint8_t ch);
char UART0_Receive(void);
void SPI00_Start(void);
void SPI00_Stop(void);
void SPI00_MasterInit(spi_mode_t mode);
MD_STATUS SPI00_MasterSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI00_MasterSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI00_MasterReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI00_SlaveInit(spi_mode_t mode);
MD_STATUS SPI00_SlaveSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI00_SlaveReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI01_Start(void);
void SPI01_Stop(void);
void SPI01_MasterInit(spi_mode_t mode);
MD_STATUS SPI01_MasterSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI01_MasterReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI01_SlaveInit(spi_mode_t mode);
MD_STATUS SPI01_SlaveSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI01_SlaveSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI01_SlaveReceive(uint8_t * const rx_buf, uint16_t rx_num);
void IIC00_Init(void);
void IIC00_MasterSend(uint8_t adr, uint8_t * const tx_buf, uint16_t tx_num);
void IIC00_MasterReceive(uint8_t adr, uint8_t * const rx_buf, uint16_t rx_num);
void IIC00_Stop(void);
void IIC00_StartCondition(void);
void IIC00_StopCondition(void);
void IIC01_Init(void);
void IIC01_MasterSend(uint8_t adr, uint8_t * const tx_buf, uint16_t tx_num);
void IIC01_MasterReceive(uint8_t adr, uint8_t * const rx_buf, uint16_t rx_num);
void IIC01_Stop(void);
void IIC01_StartCondition(void);
void IIC01_StopCondition(void);
MD_STATUS UART1_Init(uint32_t freq, uint32_t baud);
MD_STATUS UART1_BaudRate(uint32_t fclk_freq, uint32_t baud);
void UART1_Start(void);
void UART1_Stop(void);
MD_STATUS UART1_Receive(uint8_t * const rx_buf, uint16_t rx_num);
MD_STATUS UART1_Send(uint8_t * const tx_buf, uint16_t tx_num);
void SPI10_Start(void);
void SPI10_Stop(void);
void SPI10_MasterInit(spi_mode_t mode);
MD_STATUS SPI10_MasterSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI10_MasterSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI10_MasterReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI10_SlaveInit(spi_mode_t mode);
MD_STATUS SPI10_SlaveSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI10_SlaveReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI11_Start(void);
void SPI11_Stop(void);
void SPI11_MasterInit(spi_mode_t mode);
MD_STATUS SPI11_MasterSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI11_MasterReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI11_SlaveInit(spi_mode_t mode);
MD_STATUS SPI11_SlaveSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI11_SlaveSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI11_SlaveReceive(uint8_t * const rx_buf, uint16_t rx_num);
void IIC10_Init(void);
void IIC10_MasterSend(uint8_t adr, uint8_t * const tx_buf, uint16_t tx_num);
void IIC10_MasterReceive(uint8_t adr, uint8_t * const rx_buf, uint16_t rx_num);
void IIC10_Stop(void);
void IIC10_StartCondition(void);
void IIC10_StopCondition(void);
void IIC11_Init(void);
void IIC11_MasterSend(uint8_t adr, uint8_t * const tx_buf, uint16_t tx_num);
void IIC11_MasterReceive(uint8_t adr, uint8_t * const rx_buf, uint16_t rx_num);
void IIC11_Stop(void);
void IIC11_StartCondition(void);
void IIC11_StopCondition(void);
MD_STATUS UART2_Init(uint32_t freq, uint32_t baud);
MD_STATUS UART2_BaudRate(uint32_t fclk_freq, uint32_t baud);
void UART2_Start(void);
void UART2_Stop(void);
MD_STATUS UART2_Receive(uint8_t * const rx_buf, uint16_t rx_num);
MD_STATUS UART2_Send(uint8_t * const tx_buf, uint16_t tx_num);
void SPI20_MasterInit(spi_mode_t mode);
void SPI20_Start(void);
void SPI20_Stop(void);
MD_STATUS SPI20_MasterSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI20_MasterReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI20_SlaveInit(spi_mode_t mode);
MD_STATUS SPI20_SlaveSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI20_SlaveSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI20_SlaveReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI21_MasterInit(spi_mode_t mode);
void SPI21_Start(void);
void SPI21_Stop(void);
MD_STATUS SPI21_MasterSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI21_MasterSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI21_MasterReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI21_SlaveInit(spi_mode_t mode);
MD_STATUS SPI21_SlaveSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI21_SlaveSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI21_SlaveReceive(uint8_t * const rx_buf, uint16_t rx_num);
void IIC20_Init(void);
void IIC20_MasterSend(uint8_t adr, uint8_t * const tx_buf, uint16_t tx_num);
void IIC20_MasterReceive(uint8_t adr, uint8_t * const rx_buf, uint16_t rx_num);
void IIC20_Stop(void);
void IIC20_StartCondition(void);
void IIC20_StopCondition(void);
void IIC21_Init(void);
void IIC21_MasterSend(uint8_t adr, uint8_t * const tx_buf, uint16_t tx_num);
void IIC21_MasterReceive(uint8_t adr, uint8_t * const rx_buf, uint16_t rx_num);
void IIC21_Stop(void);
void IIC21_StartCondition(void);
void IIC21_StopCondition(void);
MD_STATUS UART3_Init(uint32_t freq, uint32_t baud);
MD_STATUS UART3_BaudRate(uint32_t fclk_freq, uint32_t baud);
void UART3_Start(void);
void UART3_Stop(void);
MD_STATUS UART3_Receive(uint8_t * const rx_buf, uint16_t rx_num);
MD_STATUS UART3_Send(uint8_t * const tx_buf, uint16_t tx_num);
void SPI30_MasterInit(spi_mode_t mode);
void SPI30_Start(void);
void SPI30_Stop(void);
MD_STATUS SPI30_MasterSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI30_MasterReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI30_SlaveInit(spi_mode_t mode);
MD_STATUS SPI30_SlaveSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI30_SlaveSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI30_SlaveReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI31_MasterInit(spi_mode_t mode);
void SPI31_Start(void);
void SPI31_Stop(void);
MD_STATUS SPI31_MasterSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI31_MasterSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI31_MasterReceive(uint8_t * const rx_buf, uint16_t rx_num);
void SPI31_SlaveInit(spi_mode_t mode);
MD_STATUS SPI31_SlaveSendReceive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf);
MD_STATUS SPI31_SlaveSend(uint8_t * const tx_buf, uint16_t tx_num);
MD_STATUS SPI31_SlaveReceive(uint8_t * const rx_buf, uint16_t rx_num);
void IIC30_Init(void);
void IIC30_MasterSend(uint8_t adr, uint8_t * const tx_buf, uint16_t tx_num);
void IIC30_MasterReceive(uint8_t adr, uint8_t * const rx_buf, uint16_t rx_num);
void IIC30_Stop(void);
void IIC30_StartCondition(void);
void IIC30_StopCondition(void);
void IIC31_Init(void);
void IIC31_MasterSend(uint8_t adr, uint8_t * const tx_buf, uint16_t tx_num);
void IIC31_MasterReceive(uint8_t adr, uint8_t * const rx_buf, uint16_t rx_num);
void IIC31_Stop(void);
void IIC31_StartCondition(void);
void IIC31_StopCondition(void);
static void uart0_callback_receiveend(void);
static void uart0_callback_softwareoverrun(uint16_t rx_data);
static void uart0_callback_sendend(void);
static void uart0_callback_error(uint8_t err_type);
static void spi00_callback_receiveend(void);
static void spi00_callback_sendend(void);
static void spi00_callback_error(uint8_t err_type);
static void spi01_callback_receiveend(void);
static void spi01_callback_sendend(void);
static void spi01_callback_error(uint8_t err_type);
static void iic00_callback_master_receiveend(void);
static void iic00_callback_master_sendend(void);
static void iic00_callback_master_error(MD_STATUS flag);
static void iic01_callback_master_receiveend(void);
static void iic01_callback_master_sendend(void);
static void iic01_callback_master_error(MD_STATUS flag);
static void uart1_callback_receiveend(void);
static void uart1_callback_softwareoverrun(uint16_t rx_data);
static void uart1_callback_sendend(void);
static void uart1_callback_error(uint8_t err_type);
static void spi10_callback_receiveend(void);
static void spi10_callback_sendend(void);
static void spi10_callback_error(uint8_t err_type);
static void spi11_callback_receiveend(void);
static void spi11_callback_sendend(void);
static void spi11_callback_error(uint8_t err_type);
static void iic10_callback_master_receiveend(void);
static void iic10_callback_master_sendend(void);
static void iic10_callback_master_error(MD_STATUS flag);
static void iic11_callback_master_receiveend(void);
static void iic11_callback_master_sendend(void);
static void iic11_callback_master_error(MD_STATUS flag);
static void uart2_callback_receiveend(void);
static void uart2_callback_softwareoverrun(uint16_t rx_data);
static void uart2_callback_sendend(void);
static void uart2_callback_error(uint8_t err_type);
static void spi20_callback_receiveend(void);
static void spi20_callback_sendend(void);
static void spi20_callback_error(uint8_t err_type);
static void spi21_callback_receiveend(void);
static void spi21_callback_sendend(void);
static void spi21_callback_error(uint8_t err_type);
static void iic20_callback_master_receiveend(void);
static void iic20_callback_master_sendend(void);
static void iic20_callback_master_error(MD_STATUS flag);
static void iic21_callback_master_receiveend(void);
static void iic21_callback_master_sendend(void);
static void iic21_callback_master_error(MD_STATUS flag);
static void uart3_callback_receiveend(void);
static void uart3_callback_softwareoverrun(uint16_t rx_data);
static void uart3_callback_sendend(void);
static void uart3_callback_error(uint8_t err_type);
static void spi30_callback_receiveend(void);
static void spi30_callback_sendend(void);
static void spi30_callback_error(uint8_t err_type);
static void spi31_callback_receiveend(void);
static void spi31_callback_sendend(void);
static void spi31_callback_error(uint8_t err_type);
static void iic30_callback_master_receiveend(void);
static void iic30_callback_master_sendend(void);
static void iic30_callback_master_error(MD_STATUS flag);
static void iic31_callback_master_receiveend(void);
static void iic31_callback_master_sendend(void);
static void iic31_callback_master_error(MD_STATUS flag);
/* Start user code for function. Do not edit comment generated here */
void UART_Ch2_Send_Multiple_Byte( uint8_t* buf, uint8_t len );
extern uart_state_t Get_Uart2_State(void);
extern void uart2_User_KL15_Init(void);
extern void uart2_User_KL30_Init(void);
extern uint8_t uart2_Get_0x10_Rev_Flag(void);
/* End user code. Do not edit comment generated here */
#endif