Changeset 374 for asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZA1XX/can_api.c
- Timestamp:
- Apr 5, 2019, 9:26:53 PM (5 years ago)
- Location:
- asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZA1XX
- Files:
-
- 1 added
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZA1XX/can_api.c
r373 r374 19 19 #include "RZ_A1_Init.h" 20 20 #include "cmsis.h" 21 #include " pinmap.h"22 #include " rscan0_iodefine.h"21 #include "PeripheralPins.h" 22 #include "iodefine.h" 23 23 #include "r_typedefs.h" 24 #include "MBRZA1H.h" 25 24 #include "mbed_drv_cfg.h" 25 26 #if defined(TARGET_RZA1H) 26 27 #define CAN_NUM 5 28 #else 29 #define CAN_NUM 2 30 #endif 27 31 #define CAN_SND_RCV 2 28 32 #define IRQ_NUM 8 … … 32 36 static void can_err_irq(uint32_t ch, CanIrqType type); 33 37 static void can0_rec_irq(void); 38 static void can0_trx_irq(void); 39 static void can0_err_warning_irq(void); 40 static void can0_overrun_irq(void); 41 static void can0_passive_irq(void); 42 static void can0_arb_lost_irq(void); 43 static void can0_bus_err_irq(void); 34 44 static void can1_rec_irq(void); 45 static void can1_trx_irq(void); 46 static void can1_err_warning_irq(void); 47 static void can1_overrun_irq(void); 48 static void can1_passive_irq(void); 49 static void can1_arb_lost_irq(void); 50 static void can1_bus_err_irq(void); 51 #if defined(TARGET_RZA1H) 35 52 static void can2_rec_irq(void); 53 static void can2_trx_irq(void); 54 static void can2_err_warning_irq(void); 55 static void can2_overrun_irq(void); 56 static void can2_passive_irq(void); 57 static void can2_arb_lost_irq(void); 58 static void can2_bus_err_irq(void); 36 59 static void can3_rec_irq(void); 60 static void can3_trx_irq(void); 61 static void can3_err_warning_irq(void); 62 static void can3_overrun_irq(void); 63 static void can3_passive_irq(void); 64 static void can3_arb_lost_irq(void); 65 static void can3_bus_err_irq(void); 37 66 static void can4_rec_irq(void); 38 static void can0_trx_irq(void);39 static void can1_trx_irq(void);40 static void can2_trx_irq(void);41 static void can3_trx_irq(void);42 67 static void can4_trx_irq(void); 43 static void can0_err_warning_irq(void);44 static void can1_err_warning_irq(void);45 static void can2_err_warning_irq(void);46 static void can3_err_warning_irq(void);47 68 static void can4_err_warning_irq(void); 48 static void can0_overrun_irq(void);49 static void can1_overrun_irq(void);50 static void can2_overrun_irq(void);51 static void can3_overrun_irq(void);52 69 static void can4_overrun_irq(void); 53 static void can0_passive_irq(void);54 static void can1_passive_irq(void);55 static void can2_passive_irq(void);56 static void can3_passive_irq(void);57 70 static void can4_passive_irq(void); 58 static void can0_arb_lost_irq(void);59 static void can1_arb_lost_irq(void);60 static void can2_arb_lost_irq(void);61 static void can3_arb_lost_irq(void);62 71 static void can4_arb_lost_irq(void); 63 static void can0_bus_err_irq(void);64 static void can1_bus_err_irq(void);65 static void can2_bus_err_irq(void);66 static void can3_bus_err_irq(void);67 72 static void can4_bus_err_irq(void); 73 #endif 74 68 75 static void can_reset_reg(can_t *obj); 69 76 static void can_reset_recv_rule(can_t *obj); … … 100 107 static int can_initialized[CAN_NUM] = {0}; 101 108 102 static const PinMap PinMap_CAN_RD[] = {103 {P7_8 , CAN_0, 4},104 {P9_1 , CAN_0, 3},105 {P1_4 , CAN_1, 3},106 {P5_9 , CAN_1, 5},107 {P7_11 , CAN_1, 4},108 {P11_12, CAN_1, 1},109 {P4_9 , CAN_2, 6},110 {P6_4 , CAN_2, 3},111 {P7_2 , CAN_2, 5},112 {P2_12 , CAN_3, 5},113 {P4_2 , CAN_3, 4},114 {P1_5 , CAN_4, 3},115 {P2_14 , CAN_4, 5},116 {NC , NC , 0}117 };118 119 static const PinMap PinMap_CAN_TD[] = {120 {P7_9 , CAN_0, 4},121 {P9_0 , CAN_0, 3},122 {P5_10 , CAN_1, 5},123 {P7_10 , CAN_1, 4},124 {P11_13, CAN_1, 1},125 {P4_8 , CAN_2, 6},126 {P6_5 , CAN_2, 3},127 {P7_3 , CAN_2, 5},128 {P2_13 , CAN_3, 5},129 {P4_3 , CAN_3, 4},130 {P4_11 , CAN_4, 6},131 {P8_10 , CAN_4, 5},132 {NC , NC , 0}133 };134 109 135 110 static __IO uint32_t *CTR_MATCH[] = { 136 111 &RSCAN0C0CTR, 137 112 &RSCAN0C1CTR, 113 #if defined(TARGET_RZA1H) 138 114 &RSCAN0C2CTR, 139 115 &RSCAN0C3CTR, 140 116 &RSCAN0C4CTR, 117 #endif 141 118 }; 142 119 … … 144 121 &RSCAN0C0CFG, 145 122 &RSCAN0C1CFG, 123 #if defined(TARGET_RZA1H) 146 124 &RSCAN0C2CFG, 147 125 &RSCAN0C3CFG, 148 126 &RSCAN0C4CFG, 127 #endif 149 128 }; 150 129 … … 163 142 &RSCAN0TXQCC0, 164 143 &RSCAN0TXQCC1, 144 #if defined(TARGET_RZA1H) 165 145 &RSCAN0TXQCC2, 166 146 &RSCAN0TXQCC3, 167 147 &RSCAN0TXQCC4, 148 #endif 168 149 }; 169 150 … … 171 152 &RSCAN0THLCC0, 172 153 &RSCAN0THLCC1, 154 #if defined(TARGET_RZA1H) 173 155 &RSCAN0THLCC2, 174 156 &RSCAN0THLCC3, 175 157 &RSCAN0THLCC4, 158 #endif 176 159 }; 177 160 … … 179 162 &RSCAN0C0STS, 180 163 &RSCAN0C1STS, 164 #if defined(TARGET_RZA1H) 181 165 &RSCAN0C2STS, 182 166 &RSCAN0C3STS, 183 167 &RSCAN0C4STS, 168 #endif 184 169 }; 185 170 … … 187 172 &RSCAN0C0ERFL, 188 173 &RSCAN0C1ERFL, 174 #if defined(TARGET_RZA1H) 189 175 &RSCAN0C2ERFL, 190 176 &RSCAN0C3ERFL, 191 177 &RSCAN0C4ERFL, 178 #endif 192 179 }; 193 180 … … 195 182 { &RSCAN0CFCC0 , &RSCAN0CFCC1 }, 196 183 { &RSCAN0CFCC3 , &RSCAN0CFCC4 }, 184 #if defined(TARGET_RZA1H) 197 185 { &RSCAN0CFCC6 , &RSCAN0CFCC7 }, 198 186 { &RSCAN0CFCC9 , &RSCAN0CFCC10 }, 199 { &RSCAN0CFCC12, &RSCAN0CFCC13 } 187 { &RSCAN0CFCC12, &RSCAN0CFCC13 }, 188 #endif 200 189 }; 201 190 … … 203 192 { &RSCAN0CFSTS0 , &RSCAN0CFSTS1 }, 204 193 { &RSCAN0CFSTS3 , &RSCAN0CFSTS4 }, 194 #if defined(TARGET_RZA1H) 205 195 { &RSCAN0CFSTS6 , &RSCAN0CFSTS7 }, 206 196 { &RSCAN0CFSTS9 , &RSCAN0CFSTS10 }, 207 { &RSCAN0CFSTS12, &RSCAN0CFSTS13 } 197 { &RSCAN0CFSTS12, &RSCAN0CFSTS13 }, 198 #endif 208 199 }; 209 200 … … 211 202 { &RSCAN0CFPCTR0 , &RSCAN0CFPCTR1 }, 212 203 { &RSCAN0CFPCTR3 , &RSCAN0CFPCTR4 }, 204 #if defined(TARGET_RZA1H) 213 205 { &RSCAN0CFPCTR6 , &RSCAN0CFPCTR7 }, 214 206 { &RSCAN0CFPCTR9 , &RSCAN0CFPCTR10 }, 215 { &RSCAN0CFPCTR12, &RSCAN0CFPCTR13 } 207 { &RSCAN0CFPCTR12, &RSCAN0CFPCTR13 }, 208 #endif 216 209 }; 217 210 … … 219 212 { &RSCAN0CFID0 , &RSCAN0CFID1 }, 220 213 { &RSCAN0CFID3 , &RSCAN0CFID4 }, 214 #if defined(TARGET_RZA1H) 221 215 { &RSCAN0CFID6 , &RSCAN0CFID7 }, 222 216 { &RSCAN0CFID9 , &RSCAN0CFID10 }, 223 { &RSCAN0CFID12, &RSCAN0CFID13 } 217 { &RSCAN0CFID12, &RSCAN0CFID13 }, 218 #endif 224 219 }; 225 220 … … 227 222 { &RSCAN0CFPTR0 , &RSCAN0CFPTR1 }, 228 223 { &RSCAN0CFPTR3 , &RSCAN0CFPTR4 }, 224 #if defined(TARGET_RZA1H) 229 225 { &RSCAN0CFPTR6 , &RSCAN0CFPTR7 }, 230 226 { &RSCAN0CFPTR9 , &RSCAN0CFPTR10 }, 231 227 { &RSCAN0CFPTR12, &RSCAN0CFPTR13 } 228 #endif 232 229 }; 233 230 … … 235 232 { &RSCAN0CFDF00 , &RSCAN0CFDF01 }, 236 233 { &RSCAN0CFDF03 , &RSCAN0CFDF04 }, 234 #if defined(TARGET_RZA1H) 237 235 { &RSCAN0CFDF06 , &RSCAN0CFDF07 }, 238 236 { &RSCAN0CFDF09 , &RSCAN0CFDF010 }, 239 { &RSCAN0CFDF012, &RSCAN0CFDF013 } 237 { &RSCAN0CFDF012, &RSCAN0CFDF013 }, 238 #endif 240 239 }; 241 240 … … 243 242 { &RSCAN0CFDF10 , &RSCAN0CFDF11 }, 244 243 { &RSCAN0CFDF13 , &RSCAN0CFDF14 }, 244 #if defined(TARGET_RZA1H) 245 245 { &RSCAN0CFDF16 , &RSCAN0CFDF17 }, 246 246 { &RSCAN0CFDF19 , &RSCAN0CFDF110 }, 247 { &RSCAN0CFDF112, &RSCAN0CFDF113 } 247 { &RSCAN0CFDF112, &RSCAN0CFDF113 }, 248 #endif 248 249 }; 249 250 … … 270 271 { INTRCAN1ERR_IRQn, can1_bus_err_irq } /* BeIrq */ 271 272 }, 273 #if defined(TARGET_RZA1H) 272 274 { /* ch2 */ 273 275 { INTRCAN2REC_IRQn, can2_rec_irq }, /* RxIrq */ … … 299 301 { INTRCAN4ERR_IRQn, can4_arb_lost_irq }, /* AlIrq */ 300 302 { INTRCAN4ERR_IRQn, can4_bus_err_irq } /* BeIrq */ 301 } 303 }, 304 #endif 302 305 }; 303 306 … … 341 344 InterruptHandlerRegister(can_int_info[obj->ch][type].int_num, can_int_info[obj->ch][type].handler); 342 345 GIC_SetPriority(can_int_info[obj->ch][type].int_num, 5); 346 GIC_SetConfiguration(can_int_info[obj->ch][type].int_num, 1); 343 347 GIC_EnableIRQ(can_int_info[obj->ch][type].int_num); 344 348 } else { … … 385 389 break; 386 390 case IRQ_BUS: 387 *dmy_erfl &= 0xFFFF00FF; // Clear ADERR , B0ERR, B1ERR, CERR, AERR, FERR,SERR391 *dmy_erfl &= 0xFFFF00FF; // Clear ADERR、B0ERR、B1ERR、CERR、AERR、FERR、SERR 388 392 *dmy_erfl &= 0xFFFFFFFE; // Clear BEF 389 393 break; … … 404 408 } 405 409 410 static void can0_trx_irq(void) { 411 can_trx_irq(CAN_0); 412 } 413 414 static void can0_err_warning_irq(void) { 415 can_err_irq(CAN_0, IRQ_ERROR); 416 } 417 418 static void can0_overrun_irq(void) { 419 can_err_irq(CAN_0, IRQ_OVERRUN); 420 } 421 422 static void can0_passive_irq(void) { 423 can_err_irq(CAN_0, IRQ_PASSIVE); 424 } 425 426 static void can0_arb_lost_irq(void) { 427 can_err_irq(CAN_0, IRQ_ARB); 428 } 429 430 static void can0_bus_err_irq(void) { 431 can_err_irq(CAN_0, IRQ_BUS); 432 } 433 406 434 static void can1_rec_irq(void) { 407 435 can_rec_irq(CAN_1); 408 436 } 409 437 438 static void can1_trx_irq(void) { 439 can_trx_irq(CAN_1); 440 } 441 442 static void can1_err_warning_irq(void) { 443 can_err_irq(CAN_1, IRQ_ERROR); 444 } 445 446 static void can1_overrun_irq(void) { 447 can_err_irq(CAN_1, IRQ_OVERRUN); 448 } 449 450 static void can1_passive_irq(void) { 451 can_err_irq(CAN_1, IRQ_PASSIVE); 452 } 453 454 static void can1_arb_lost_irq(void) { 455 can_err_irq(CAN_1, IRQ_ARB); 456 } 457 458 static void can1_bus_err_irq(void) { 459 can_err_irq(CAN_1, IRQ_BUS); 460 } 461 462 #if defined(TARGET_RZA1H) 410 463 static void can2_rec_irq(void) { 411 464 can_rec_irq(CAN_2); 412 465 } 413 466 467 static void can2_trx_irq(void) { 468 can_trx_irq(CAN_2); 469 } 470 471 static void can2_err_warning_irq(void) { 472 can_err_irq(CAN_2, IRQ_ERROR); 473 } 474 475 static void can2_overrun_irq(void) { 476 can_err_irq(CAN_2, IRQ_OVERRUN); 477 } 478 479 static void can2_passive_irq(void) { 480 can_err_irq(CAN_2, IRQ_PASSIVE); 481 } 482 483 static void can2_arb_lost_irq(void) { 484 can_err_irq(CAN_2, IRQ_ARB); 485 } 486 487 static void can2_bus_err_irq(void) { 488 can_err_irq(CAN_2, IRQ_BUS); 489 } 490 414 491 static void can3_rec_irq(void) { 415 492 can_rec_irq(CAN_3); 416 493 } 417 494 495 static void can3_trx_irq(void) { 496 can_trx_irq(CAN_3); 497 } 498 499 static void can3_err_warning_irq(void) { 500 can_err_irq(CAN_3, IRQ_ERROR); 501 } 502 503 static void can3_overrun_irq(void) { 504 can_err_irq(CAN_3, IRQ_OVERRUN); 505 } 506 507 static void can3_passive_irq(void) { 508 can_err_irq(CAN_3, IRQ_PASSIVE); 509 } 510 511 static void can3_arb_lost_irq(void) { 512 can_err_irq(CAN_3, IRQ_ARB); 513 } 514 515 static void can3_bus_err_irq(void) { 516 can_err_irq(CAN_3, IRQ_BUS); 517 } 518 418 519 static void can4_rec_irq(void) { 419 520 can_rec_irq(CAN_4); 420 521 } 421 522 422 static void can0_trx_irq(void) {423 can_trx_irq(CAN_0);424 }425 426 static void can1_trx_irq(void) {427 can_trx_irq(CAN_1);428 }429 430 static void can2_trx_irq(void) {431 can_trx_irq(CAN_2);432 }433 434 static void can3_trx_irq(void) {435 can_trx_irq(CAN_3);436 }437 438 523 static void can4_trx_irq(void) { 439 524 can_trx_irq(CAN_4); 440 525 } 441 526 442 static void can0_err_warning_irq(void) {443 can_err_irq(CAN_0, IRQ_ERROR);444 }445 446 static void can1_err_warning_irq(void) {447 can_err_irq(CAN_1, IRQ_ERROR);448 }449 450 static void can2_err_warning_irq(void) {451 can_err_irq(CAN_2, IRQ_ERROR);452 }453 454 static void can3_err_warning_irq(void) {455 can_err_irq(CAN_3, IRQ_ERROR);456 }457 458 527 static void can4_err_warning_irq(void) { 459 528 can_err_irq(CAN_4, IRQ_ERROR); 460 529 } 461 530 462 static void can0_overrun_irq(void) {463 can_err_irq(CAN_0, IRQ_OVERRUN);464 }465 466 static void can1_overrun_irq(void) {467 can_err_irq(CAN_1, IRQ_OVERRUN);468 }469 470 static void can2_overrun_irq(void) {471 can_err_irq(CAN_2, IRQ_OVERRUN);472 }473 474 static void can3_overrun_irq(void) {475 can_err_irq(CAN_3, IRQ_OVERRUN);476 }477 478 531 static void can4_overrun_irq(void) { 479 532 can_err_irq(CAN_4, IRQ_OVERRUN); 480 533 } 481 534 482 static void can0_passive_irq(void) {483 can_err_irq(CAN_0, IRQ_PASSIVE);484 }485 486 static void can1_passive_irq(void) {487 can_err_irq(CAN_1, IRQ_PASSIVE);488 }489 490 static void can2_passive_irq(void) {491 can_err_irq(CAN_2, IRQ_PASSIVE);492 }493 494 static void can3_passive_irq(void) {495 can_err_irq(CAN_3, IRQ_PASSIVE);496 }497 498 535 static void can4_passive_irq(void) { 499 536 can_err_irq(CAN_4, IRQ_PASSIVE); 500 537 } 501 538 502 static void can0_arb_lost_irq(void) {503 can_err_irq(CAN_0, IRQ_ARB);504 }505 506 static void can1_arb_lost_irq(void) {507 can_err_irq(CAN_1, IRQ_ARB);508 }509 510 static void can2_arb_lost_irq(void) {511 can_err_irq(CAN_2, IRQ_ARB);512 }513 514 static void can3_arb_lost_irq(void) {515 can_err_irq(CAN_3, IRQ_ARB);516 }517 518 539 static void can4_arb_lost_irq(void) { 519 540 can_err_irq(CAN_4, IRQ_ARB); 520 541 } 521 542 522 static void can0_bus_err_irq(void) {523 can_err_irq(CAN_0, IRQ_BUS);524 }525 526 static void can1_bus_err_irq(void) {527 can_err_irq(CAN_1, IRQ_BUS);528 }529 530 static void can2_bus_err_irq(void) {531 can_err_irq(CAN_2, IRQ_BUS);532 }533 534 static void can3_bus_err_irq(void) {535 can_err_irq(CAN_3, IRQ_BUS);536 }537 538 543 static void can4_bus_err_irq(void) { 539 544 can_err_irq(CAN_4, IRQ_BUS); 540 545 } 541 542 void can_init(can_t *obj, PinName rd, PinName td) { 546 #endif 547 548 void can_init_freq(can_t *obj, PinName rd, PinName td, int hz) { 543 549 __IO uint32_t *dmy_ctr; 544 550 … … 574 580 pinmap_pinout(rd, PinMap_CAN_RD); 575 581 pinmap_pinout(td, PinMap_CAN_TD); 582 583 /* set can frequency */ 584 can_frequency(obj, hz); 585 } 586 587 void can_init(can_t *obj, PinName rd, PinName td) { 588 can_init_freq(obj, rd, td, 100000); 576 589 } 577 590 … … 631 644 } 632 645 633 if (((msg.format == CANStandard) && (msg.id <= 0x07FF)) || ((msg.format == CANExtended) && (msg.id <= 0x 03FFFF))) {646 if (((msg.format == CANStandard) && (msg.id <= 0x07FF)) || ((msg.format == CANExtended) && (msg.id <= 0x1FFFFFFF))) { 634 647 /* send/receive FIFO buffer isn't full */ 635 648 dmy_cfsts = CFSTS_TBL[obj->ch][CAN_SEND]; 636 649 if ((*dmy_cfsts & 0x02) != 0x02) { 637 /* set format, frame type and send/receive FIFO buffer ID(b10-0 or b28- 11) */650 /* set format, frame type and send/receive FIFO buffer ID(b10-0 or b28-0) */ 638 651 dmy_cfid = CFID_TBL[obj->ch][CAN_SEND]; 639 652 *dmy_cfid = ((msg.format << 31) | (msg.type << 30)); … … 641 654 *dmy_cfid |= (msg.id & 0x07FF); 642 655 } else { 643 *dmy_cfid |= ( (msg.id & 0x03FFFF) << 11);656 *dmy_cfid |= (msg.id & 0x1FFFFFFF); 644 657 } 645 658 /* set length */ … … 680 693 dmy_cfsts = CFSTS_TBL[obj->ch][CAN_RECV]; 681 694 while ((*dmy_cfsts & 0x01) != 0x01) { 682 /* get format, frame type and send/receive FIFO buffer ID(b10-0 or b28- 11) */695 /* get format, frame type and send/receive FIFO buffer ID(b10-0 or b28-0) */ 683 696 dmy_cfid = CFID_TBL[obj->ch][CAN_RECV]; 684 697 msg->format = (CANFormat)(*dmy_cfid >> 31); 685 msg->type = (CANType)( *dmy_cfid >> 30);698 msg->type = (CANType)((*dmy_cfid >> 30) & 0x1); 686 699 if (msg->format == CANStandard) { 687 700 msg->id = (*dmy_cfid & 0x07FF); 688 701 } else { 689 msg->id = ( (*dmy_cfid >> 11) & 0x03FFFF);702 msg->id = (*dmy_cfid & 0x1FFFFFFF); 690 703 } 691 704 /* get length */ … … 756 769 break; 757 770 case MODE_TEST_GLOBAL: 758 /* set the channel between the communication test on channel 1 and channel 2*/771 /* set the channel between the communication test on CAN_TEST_GLOBAL_CH and CAN_TEST_GLOBAL_CH+1 */ 759 772 /* set Channel Hold mode */ 760 for (tmp_obj->ch = CAN_ 1; tmp_obj->ch <= CAN_2; tmp_obj->ch++) {773 for (tmp_obj->ch = CAN_TEST_GLOBAL_CH; tmp_obj->ch <= (CAN_TEST_GLOBAL_CH + 1); tmp_obj->ch++) { 761 774 dmy_sts = STS_MATCH[tmp_obj->ch]; 762 775 if ((*dmy_sts & 0x04) == 0x04) { … … 770 783 } 771 784 can_set_global_mode(GL_TEST); 772 /* enable communication test between channel1 and channel2*/785 /* enable communication test between CAN_TEST_GLOBAL_CH and CAN_TEST_GLOBAL_CH+1 */ 773 786 RSCAN0GTSTCFG = 0x06; 774 787 RSCAN0GTSTCTR = 0x01; 775 788 /* send and receive setting of channel1 and channel2 */ 776 for (tmp_obj->ch = CAN_ 1; tmp_obj->ch <= CAN_2; tmp_obj->ch++) {789 for (tmp_obj->ch = CAN_TEST_GLOBAL_CH; tmp_obj->ch <= (CAN_TEST_GLOBAL_CH + 1); tmp_obj->ch++) { 777 790 can_reset_buffer(tmp_obj); 778 791 /* set global interrrupt */ … … 807 820 808 821 if ((format == CANStandard) || (format == CANExtended)) { 809 if (((format == CANStandard) && (id <= 0x07FF)) || ((format == CANExtended) && (id <= 0x 03FFFF))) {822 if (((format == CANStandard) && (id <= 0x07FF)) || ((format == CANExtended) && (id <= 0x1FFFFFFF))) { 810 823 /* set Global Reset mode and Channel Reset mode */ 811 824 can_set_global_mode(GL_RESET); … … 818 831 *dmy_gaflid = (format << 31); 819 832 if (format == CANExtended) { 820 /* set receive rule ID for bit28- 11*/821 *dmy_gaflid |= (id << 11);833 /* set receive rule ID for bit28-0 */ 834 *dmy_gaflid |= (id & 0x1FFFFFFF); 822 835 } else { 823 836 /* set receive rule ID for bit10-0 */ 824 *dmy_gaflid |= id;837 *dmy_gaflid |= (id & 0x07FF); 825 838 } 826 839 /* set ID mask bit */ … … 881 894 /* number of receive rules of each chanel = 64 */ 882 895 RSCAN0GAFLCFG0 = 0x40404040; 896 #if defined(TARGET_RZA1H) 883 897 RSCAN0GAFLCFG1 = 0x40000000; 898 #endif 884 899 /* enable receive rule table writing */ 885 900 RSCAN0GAFLECTR = 0x00000100; … … 932 947 /* TMIEp interrupt is disable */ 933 948 RSCAN0TMIEC0 = 0x00000000; 949 #if defined(TARGET_RZA1H) 934 950 RSCAN0TMIEC1 = 0x00000000; 935 951 RSCAN0TMIEC2 = 0x00000000; 952 #endif 936 953 } 937 954 … … 965 982 uint8_t tseg1 = 0; 966 983 uint8_t tseg2 = 0; 984 uint8_t sjw = 0; 967 985 968 986 /* set clkc */ … … 987 1005 tseg1 = (tq - 1) * 0.666666667; 988 1006 tseg2 = (tq - 1) - tseg1; 1007 sjw = (tseg2 > 4)? 4 : tseg2; 989 1008 /* set RSCAN0CmCFG register */ 990 1009 dmy_cfg = CFG_MATCH[obj->ch]; 991 *dmy_cfg = (( tseg2 - 1) << 20) | ((tseg1 - 1) << 16) | brp;1010 *dmy_cfg = ((sjw - 1) << 24) | ((tseg2 - 1) << 20) | ((tseg1 - 1) << 16) | brp; 992 1011 } 993 1012 994 1013 static void can_set_global_mode(int mode) { 995 1014 /* set Global mode */ 996 RSCAN0GCTR = ((RSCAN0GCTR & 0xFFFFFFFC) | mode);1015 RSCAN0GCTR = ((RSCAN0GCTR & 0xFFFFFFFC) | (uint32_t)mode); 997 1016 /* Wait to cahnge into Global XXXX mode */ 998 while ((RSCAN0GSTS & 0x07) != mode) {1017 while ((RSCAN0GSTS & 0x07) != (uint32_t)mode) { 999 1018 __NOP(); 1000 1019 } … … 1007 1026 /* set Channel mode */ 1008 1027 dmy_ctr = CTR_MATCH[ch]; 1009 *dmy_ctr = ((*dmy_ctr & 0xFFFFFFFC) | mode);1028 *dmy_ctr = ((*dmy_ctr & 0xFFFFFFFC) | (uint32_t)mode); 1010 1029 /* Wait to cahnge into Channel XXXX mode */ 1011 1030 dmy_sts = STS_MATCH[ch]; 1012 while ((*dmy_sts & 0x07) != mode) {1031 while ((*dmy_sts & 0x07) != (uint32_t)mode) { 1013 1032 __NOP(); 1014 1033 }
Note:
See TracChangeset
for help on using the changeset viewer.