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
#ifndef __CSIH_H__
#define __CSIH_H__
typedef struct stc_cpg_mfsn_csih_ctl0_field{
uint8_t CSIHnMBS:1;
uint8_t CSIHnJOBE:1;
uint8_t :3;
uint8_t CSIHnRXE:1;
uint8_t CSIHnTXE:1;
uint8_t CSIHnPWR:1;
}stc_cpg_mfsn_csih_ctl0_field_t;
typedef union un_cpg_mfsn_csih_ctl0{
uint8_t u8Register;
stc_cpg_mfsn_csih_ctl0_field_t stcField;
}un_cpg_mfsn_csih_ctl0_t;
typedef struct stc_cpg_mfsn_csih_ctl1_field{
uint32_t CSIHnSSE:1;
uint32_t CSIHnHSE:1;
uint32_t CSIHnSIT:1;
uint32_t CSIHnLBM:1;
uint32_t CSIHnCSRI:1;
uint32_t CSIHnDCS:1;
uint32_t CSIHnJE:1;
uint32_t CSIHnEDLE:1;
uint32_t CSIHnCSLx:8;
uint32_t CSIHnSLIT:1;
uint32_t CSIHnCKR:1;
uint32_t CSIHnPHE:1;
uint32_t :5;
uint32_t CSIHnSLRS:1;
uint32_t :7;
}stc_cpg_mfsn_csih_ctl1_field_t;
typedef union un_cpg_mfsn_csih_ctl1{
uint32_t u32Register;
stc_cpg_mfsn_csih_ctl1_field_t stcField;
}un_cpg_mfsn_csih_ctl1_t;
typedef struct stc_cpg_mfsn_csih_ctl2_field{
uint16_t CSIHnBRS:12;
uint16_t :1;
uint16_t CSIHnPRS:3;
}stc_cpg_mfsn_csih_ctl2_field_t;
typedef union un_cpg_mfsn_csih_ctl2{
uint16_t u16Register;
stc_cpg_mfsn_csih_ctl2_field_t stcField;
}un_cpg_mfsn_csih_ctl2_t;
typedef struct stc_cpg_mfsn_csih_str0_field{
uint32_t CSIHnOVE:1;
uint32_t CSIHnPE:1;
uint32_t :1;
uint32_t CSIHnDCE:1;
uint32_t CSIHnEMF:1;
uint32_t CSIHnFLF:1;
uint32_t :1;
uint32_t CSIHnTSF:1;
uint32_t CSIHnHPST:1;
uint32_t :5;
uint32_t CSIHnOFE:1;
uint32_t CSIHnTMOE:1;
uint32_t CSIHnSPF:8;
uint32_t CSIHnSRP:8;
}stc_cpg_mfsn_csih_str0_field_t;
typedef union un_cpg_mfsn_csih_str0{
uint32_t u32Register;
stc_cpg_mfsn_csih_str0_field_t stcField;
}un_cpg_mfsn_csih_str0_t;
typedef struct stc_cpg_mfsn_csih_stcr0_field{
uint16_t CSIHnOVEC:1;
uint16_t CSIHnPEC:1;
uint16_t :1;
uint16_t CSIHnDCEC:1;
uint16_t :4;
uint16_t CSIHnPCT:1;
uint16_t :5;
uint16_t CSIHnOFEC:1;
uint16_t CSIHnTMOEC:1;
}stc_cpg_mfsn_csih_stcr0_field_t;
typedef union un_cpg_mfsn_csih_stcr0{
uint16_t u16Register;
stc_cpg_mfsn_csih_stcr0_field_t stcField;
}un_cpg_mfsn_csih_stcr0_t;
typedef struct stc_cpg_mfsn_csih_mctl0_field{
uint16_t CSIHnTO:5;
uint16_t :3;
uint16_t CSIHnMMS:2;
uint16_t :6;
}stc_cpg_mfsn_csih_mctl0_field_t;
typedef union un_cpg_mfsn_csih_mctl0{
uint16_t u16Register;
stc_cpg_mfsn_csih_mctl0_field_t stcField;
}un_cpg_mfsn_csih_mctl0_t;
typedef struct stc_cpg_mfsn_csih_mctl1_field{
uint32_t CSIHnFFS:7;
uint32_t :9;
uint32_t CSIHnFES:7;
uint32_t :9;
}stc_cpg_mfsn_csih_mctl1_field_t;
typedef union un_cpg_mfsn_csih_mctl1{
uint32_t u32Register;
stc_cpg_mfsn_csih_mctl1_field_t stcField;
}un_cpg_mfsn_csih_mctl1_t;
typedef struct stc_cpg_mfsn_csih_mctl2_field{
uint32_t CSIHnSOP:7;
uint32_t :9;
uint32_t CSIHnND:8;
uint32_t :7;
uint32_t CSIHnBTST:1;
}stc_cpg_mfsn_csih_mctl2_field_t;
typedef union un_cpg_mfsn_csih_mctl2{
uint32_t u32Register;
stc_cpg_mfsn_csih_mctl2_field_t stcField;
}un_cpg_mfsn_csih_mctl2_t;
typedef struct stc_cpg_mfsn_csih_mrwp0_field{
uint32_t CSIHnTRWA:7;
uint32_t :9;
uint32_t CSIHnRRA:7;
uint32_t :9;
}stc_cpg_mfsn_csih_mrwp0_field_t;
typedef union un_cpg_mfsn_csih_mrwp0{
uint32_t u32Register;
stc_cpg_mfsn_csih_mrwp0_field_t stcField;
}un_cpg_mfsn_csih_mrwp0_t;
typedef struct stc_cpg_mfsn_csih_cfg0_field{
uint32_t CSIHnSPx:4;
uint32_t CSIHnINx:4;
uint32_t CSIHnHDx:4;
uint32_t CSIHnIDx:3;
uint32_t CSIHnIDLx:1;
uint32_t CSIHnDAPx:1;
uint32_t CSIHnCKPx:1;
uint32_t CSIHnDIRx:1;
uint32_t CSIHnRCBx:1;
uint32_t :4;
uint32_t CSIHnDLSx:4;
uint32_t CSIHnPSx:2;
uint32_t PSCLxOBRSSx:2;
}stc_cpg_mfsn_csih_cfg0_field_t;
typedef union un_cpg_mfsn_csih_cfg0{
uint32_t u32Register;
stc_cpg_mfsn_csih_cfg0_field_t stcField;
}un_cpg_mfsn_csih_cfg0_t;
typedef struct stc_cpg_mfsn_csih_cfg1_field{
uint32_t CSIHnSPx:4;
uint32_t CSIHnINx:4;
uint32_t CSIHnHDx:4;
uint32_t CSIHnIDx:3;
uint32_t CSIHnIDLx:1;
uint32_t CSIHnDAPx:1;
uint32_t CSIHnCKPx:1;
uint32_t CSIHnDIRx:1;
uint32_t CSIHnRCBx:1;
uint32_t :4;
uint32_t CSIHnDLSx:4;
uint32_t CSIHnPSx:2;
uint32_t PSCLxOBRSSx:2;
}stc_cpg_mfsn_csih_cfg1_field_t;
typedef union un_cpg_mfsn_csih_cfg1{
uint32_t u32Register;
stc_cpg_mfsn_csih_cfg1_field_t stcField;
}un_cpg_mfsn_csih_cfg1_t;
typedef struct stc_cpg_mfsn_csih_cfg2_field{
uint32_t CSIHnSPx:4;
uint32_t CSIHnINx:4;
uint32_t CSIHnHDx:4;
uint32_t CSIHnIDx:3;
uint32_t CSIHnIDLx:1;
uint32_t CSIHnDAPx:1;
uint32_t CSIHnCKPx:1;
uint32_t CSIHnDIRx:1;
uint32_t CSIHnRCBx:1;
uint32_t :4;
uint32_t CSIHnDLSx:4;
uint32_t CSIHnPSx:2;
uint32_t PSCLxOBRSSx:2;
}stc_cpg_mfsn_csih_cfg2_field_t;
typedef union un_cpg_mfsn_csih_cfg2{
uint32_t u32Register;
stc_cpg_mfsn_csih_cfg2_field_t stcField;
}un_cpg_mfsn_csih_cfg2_t;
typedef struct stc_cpg_mfsn_csih_cfg3_field{
uint32_t CSIHnSPx:4;
uint32_t CSIHnINx:4;
uint32_t CSIHnHDx:4;
uint32_t CSIHnIDx:3;
uint32_t CSIHnIDLx:1;
uint32_t CSIHnDAPx:1;
uint32_t CSIHnCKPx:1;
uint32_t CSIHnDIRx:1;
uint32_t CSIHnRCBx:1;
uint32_t :4;
uint32_t CSIHnDLSx:4;
uint32_t CSIHnPSx:2;
uint32_t PSCLxOBRSSx:2;
}stc_cpg_mfsn_csih_cfg3_field_t;
typedef union un_cpg_mfsn_csih_cfg3{
uint32_t u32Register;
stc_cpg_mfsn_csih_cfg3_field_t stcField;
}un_cpg_mfsn_csih_cfg3_t;
typedef struct stc_cpg_mfsn_csih_cfg4_field{
uint32_t CSIHnSPx:4;
uint32_t CSIHnINx:4;
uint32_t CSIHnHDx:4;
uint32_t CSIHnIDx:3;
uint32_t CSIHnIDLx:1;
uint32_t CSIHnDAPx:1;
uint32_t CSIHnCKPx:1;
uint32_t CSIHnDIRx:1;
uint32_t CSIHnRCBx:1;
uint32_t :4;
uint32_t CSIHnDLSx:4;
uint32_t CSIHnPSx:2;
uint32_t PSCLxOBRSSx:2;
}stc_cpg_mfsn_csih_cfg4_field_t;
typedef union un_cpg_mfsn_csih_cfg4{
uint32_t u32Register;
stc_cpg_mfsn_csih_cfg4_field_t stcField;
}un_cpg_mfsn_csih_cfg4_t;
typedef struct stc_cpg_mfsn_csih_cfg5_field{
uint32_t CSIHnSPx:4;
uint32_t CSIHnINx:4;
uint32_t CSIHnHDx:4;
uint32_t CSIHnIDx:3;
uint32_t CSIHnIDLx:1;
uint32_t CSIHnDAPx:1;
uint32_t CSIHnCKPx:1;
uint32_t CSIHnDIRx:1;
uint32_t CSIHnRCBx:1;
uint32_t :4;
uint32_t CSIHnDLSx:4;
uint32_t CSIHnPSx:2;
uint32_t PSCLxOBRSSx:2;
}stc_cpg_mfsn_csih_cfg5_field_t;
typedef union un_cpg_mfsn_csih_cfg5{
uint32_t u32Register;
stc_cpg_mfsn_csih_cfg5_field_t stcField;
}un_cpg_mfsn_csih_cfg5_t;
typedef struct stc_cpg_mfsn_csih_cfg6_field{
uint32_t CSIHnSPx:4;
uint32_t CSIHnINx:4;
uint32_t CSIHnHDx:4;
uint32_t CSIHnIDx:3;
uint32_t CSIHnIDLx:1;
uint32_t CSIHnDAPx:1;
uint32_t CSIHnCKPx:1;
uint32_t CSIHnDIRx:1;
uint32_t CSIHnRCBx:1;
uint32_t :4;
uint32_t CSIHnDLSx:4;
uint32_t CSIHnPSx:2;
uint32_t PSCLxOBRSSx:2;
}stc_cpg_mfsn_csih_cfg6_field_t;
typedef union un_cpg_mfsn_csih_cfg6{
uint32_t u32Register;
stc_cpg_mfsn_csih_cfg6_field_t stcField;
}un_cpg_mfsn_csih_cfg6_t;
typedef struct stc_cpg_mfsn_csih_cfg7_field{
uint32_t CSIHnSPx:4;
uint32_t CSIHnINx:4;
uint32_t CSIHnHDx:4;
uint32_t CSIHnIDx:3;
uint32_t CSIHnIDLx:1;
uint32_t CSIHnDAPx:1;
uint32_t CSIHnCKPx:1;
uint32_t CSIHnDIRx:1;
uint32_t CSIHnRCBx:1;
uint32_t :4;
uint32_t CSIHnDLSx:4;
uint32_t CSIHnPSx:2;
uint32_t PSCLxOBRSSx:2;
}stc_cpg_mfsn_csih_cfg7_field_t;
typedef union un_cpg_mfsn_csih_cfg7{
uint32_t u32Register;
stc_cpg_mfsn_csih_cfg7_field_t stcField;
}un_cpg_mfsn_csih_cfg7_t;
typedef struct stc_cpg_mfsn_csih_tx0w_field{
uint32_t CSIHnTX:16;
uint32_t CSIHnCS:8;
uint32_t :5;
uint32_t CSIHnEDL:1;
uint32_t CSIHnEOJ:1;
uint32_t CSIHnCIRE:1;
}stc_cpg_mfsn_csih_tx0w_field_t;
typedef union un_cpg_mfsn_csih_tx0w{
uint32_t u32Register;
stc_cpg_mfsn_csih_tx0w_field_t stcField;
}un_cpg_mfsn_csih_tx0w_t;
typedef struct stc_cpg_mfsn_csih_tx0h_field{
uint16_t CSIHnTX:16;
}stc_cpg_mfsn_csih_tx0h_field_t;
typedef union un_cpg_mfsn_csih_tx0h{
uint16_t u16Register;
stc_cpg_mfsn_csih_tx0h_field_t stcField;
}un_cpg_mfsn_csih_tx0h_t;
typedef struct stc_cpg_mfsn_csih_rx0w_field{
uint32_t CSIHnRX:16;
uint32_t CSIHnCSx:8;
uint32_t CSIHnTDCE:1;
uint32_t CSIHnRPE:1;
uint32_t :6;
}stc_cpg_mfsn_csih_rx0w_field_t;
typedef union un_cpg_mfsn_csih_rx0w{
uint32_t u32Register;
stc_cpg_mfsn_csih_rx0w_field_t stcField;
}un_cpg_mfsn_csih_rx0w_t;
typedef struct stc_cpg_mfsn_csih_rx0h_field{
uint16_t CSIHnRX:16;
}stc_cpg_mfsn_csih_rx0h_field_t;
typedef union un_cpg_mfsn_csih_rx0h{
uint16_t u16Register;
stc_cpg_mfsn_csih_rx0h_field_t stcField;
}un_cpg_mfsn_csih_rx0h_t;
typedef struct stc_cpg_mfsn_csih_emu_field{
uint8_t :7;
uint8_t CSIHnSVSDIS:1;
}stc_cpg_mfsn_csih_emu_field_t;
typedef union un_cpg_mfsn_csih_emu{
uint8_t u8Register;
stc_cpg_mfsn_csih_emu_field_t stcField;
}un_cpg_mfsn_csih_emu_t;
typedef struct stc_cpg_mfsn_csih_brs0_field{
uint16_t CSIHnBRS:12;
uint16_t :4;
}stc_cpg_mfsn_csih_brs0_field_t;
typedef union un_cpg_mfsn_csih_brs0{
uint16_t u16Register;
stc_cpg_mfsn_csih_brs0_field_t stcField;
}un_cpg_mfsn_csih_brs0_t;
typedef struct stc_cpg_mfsn_csih_brs1_field{
uint16_t CSIHnBRS:12;
uint16_t :4;
}stc_cpg_mfsn_csih_brs1_field_t;
typedef union un_cpg_mfsn_csih_brs1{
uint16_t u16Register;
stc_cpg_mfsn_csih_brs1_field_t stcField;
}un_cpg_mfsn_csih_brs1_t;
typedef struct stc_cpg_mfsn_csih_brs2_field{
uint16_t CSIHnBRS:12;
uint16_t :4;
}stc_cpg_mfsn_csih_brs2_field_t;
typedef union un_cpg_mfsn_csih_brs2{
uint16_t u16Register;
stc_cpg_mfsn_csih_brs2_field_t stcField;
}un_cpg_mfsn_csih_brs2_t;
typedef struct stc_cpg_mfsn_csih_brs3_field{
uint16_t CSIHnBRS:12;
uint16_t :4;
}stc_cpg_mfsn_csih_brs3_field_t;
typedef union un_cpg_mfsn_csih_brs3{
uint16_t u16Register;
stc_cpg_mfsn_csih_brs3_field_t stcField;
}un_cpg_mfsn_csih_brs3_t;
typedef struct stc_cpg_mfsn_csih{
un_cpg_mfsn_csih_ctl0_t unCTL0;
uint8_t Reserved0[3];
un_cpg_mfsn_csih_str0_t unSTR0;
un_cpg_mfsn_csih_stcr0_t unSTCR0;
uint8_t Reserved1[6];
un_cpg_mfsn_csih_ctl1_t unCTL1;
un_cpg_mfsn_csih_ctl2_t unCTL2;
uint8_t Reserved2[2];
un_cpg_mfsn_csih_emu_t unEMU;
uint8_t Reserved3[4071];
un_cpg_mfsn_csih_mctl1_t unMCTL1;
un_cpg_mfsn_csih_mctl2_t unMCTL2;
un_cpg_mfsn_csih_tx0w_t unTX0W;
un_cpg_mfsn_csih_tx0h_t unTX0H;
uint8_t Reserved4[2];
un_cpg_mfsn_csih_rx0w_t unRX0W;
un_cpg_mfsn_csih_rx0h_t unRX0H;
uint8_t Reserved5[2];
un_cpg_mfsn_csih_mrwp0_t unMRWP0;
uint8_t Reserved6[36];
un_cpg_mfsn_csih_mctl0_t unMCTL0;
uint8_t Reserved7[2];
un_cpg_mfsn_csih_cfg0_t unCFG0;
un_cpg_mfsn_csih_cfg1_t unCFG1;
un_cpg_mfsn_csih_cfg2_t unCFG2;
un_cpg_mfsn_csih_cfg3_t unCFG3;
un_cpg_mfsn_csih_cfg4_t unCFG4;
un_cpg_mfsn_csih_cfg5_t unCFG5;
un_cpg_mfsn_csih_cfg6_t unCFG6;
un_cpg_mfsn_csih_cfg7_t unCFG7;
uint8_t Reserved8[4];
un_cpg_mfsn_csih_brs0_t unBRS0;
uint8_t Reserved9[2];
un_cpg_mfsn_csih_brs1_t unBRS1;
uint8_t Reserved10[2];
un_cpg_mfsn_csih_brs2_t unBRS2;
uint8_t Reserved11[2];
un_cpg_mfsn_csih_brs3_t unBRS3;
}stc_cpg_mfsn_csih_t;
static volatile stc_cpg_mfsn_csih_t* const CSIH[2] =
{
(volatile stc_cpg_mfsn_csih_t*)(0xFFDA8000U), /* MFS 通道0 */
(volatile stc_cpg_mfsn_csih_t*)(0xFFDAA000U), /* MFS 通道1 */
};
typedef enum
{
CSIH_SCKH_Rising = 0, /* 在时钟信号空闲时,为高电平, 上升沿取数 */
CSIH_SCKH_Falling, /* 在时钟信号空闲时,为高电平, 下降沿取数 */
CSIH_SCKL_Rising, /* 在时钟信号空闲时,为低电平, 上升沿取数 */
CSIH_SCKL_Falling, /* 在时钟信号空闲时,为低电平, 下降沿取数 */
}CSIH_SCK_Edge;
typedef enum
{
CSIH_DAT_LSbit = 0, /* 低位先发出去 */
CSIH_DAT_MSbit, /* 高位先发出去 */
}CSIH_DAT_FORMAT;
typedef enum
{
CSIH_OptSt_OK = 0, /* 操作完成 */
CSIH_OptSt_BUSY, /* 当前忙 */
}CSIH_OptSt;
static void CSIH_CPU_SleepIdle(void);
extern void CSIH_Init(uint8_t channel,
uint16_t baud,
uint8_t bitnum,
CSIH_SCK_Edge sck_edge,
CSIH_DAT_FORMAT dat_format
);
static CSIH_OptSt CSIH_IsSendBusy(uint8_t channel);
static void CSIH_WaitForSendReady(uint8_t channel);
extern CSIH_OptSt CSIH_SendData_12bit8th(uint8_t channel, uint16_t* pdat);
extern CSIH_OptSt CSIH_SendData_9bit1th(uint8_t channel, uint16_t* pdat);
extern void CSIH_Ch0_Rx_ISR(void);
extern void CSIH_Ch1_Rx_ISR(void);
extern void CSIH_Ch0_Tx_ISR(void);
extern void CSIH_Ch1_Tx_ISR(void);
#endif