CSIH.h 13.3 KB
Newer Older
崔立宝's avatar
崔立宝 committed
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__

#include "r_typedefs.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;


volatile static 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