MG32F157 Standard Peripherals Firmware Library
mg32f157_can.h
Go to the documentation of this file.
1 
10 /* Define to prevent recursive inclusion -------------------------------------*/
11 #ifndef __MG32F157_CAN_H
12 #define __MG32F157_CAN_H
13 
14 #ifdef __cplusplus
15  extern "C" {
16 #endif
17 
18 /* Includes ------------------------------------------------------------------*/
19 #include "mg32f157.h"
20 
29 /* Exported types ------------------------------------------------------------*/
30 
34 typedef struct
35 {
36  uint8_t CAN_Mode;
39  uint8_t CAN_Sample;
45  uint8_t CAN_Prescaler;
48  uint8_t CAN_SJW;
53  uint8_t CAN_SEG1;
56  uint8_t CAN_SEG2;
59 
63 typedef struct
64 {
65  uint8_t CAN_Mode;
68  uint8_t CAN_Sample;
74  uint8_t CAN_Prescaler;
77  uint8_t CAN_SJW;
82  uint8_t CAN_SEG1;
85  uint8_t CAN_SEG2;
105  uint8_t FD_DataSJW;
110  uint8_t FD_DataSEG1;
113  uint8_t FD_DataSEG2;
134  uint8_t FD_FrameFormat;
137 
141 typedef struct
142 {
143  uint8_t Filter_Mode;
149  uint8_t Filter1_Type;
152  uint8_t Filter1_RTRCmd;
155  uint32_t Filter1_Code;
158  uint32_t Filter1_Mask;
161  uint8_t Filter2_Type;
164  uint8_t Filter2_RTRCmd;
167  uint32_t Filter2_Code;
170  uint32_t Filter2_Mask;
174 
178 typedef struct
179 {
180  uint32_t Identifier;
185  uint8_t IDType;
189  uint8_t FrameType;
193  uint8_t DataLength;
196  uint8_t Data[8];
198 } CAN_Msg;
199 
203 typedef struct
204 {
205  uint32_t Identifier;
210  uint8_t IDType;
214  uint8_t FrameType;
218  uint8_t FrameFormat;
222  uint8_t BitRateSwitch;
229  uint8_t DataLength;
232  uint8_t Data[64];
233 
234 } CANFD_Msg;
235 
236 /* Exported constants --------------------------------------------------------*/
237 
242 #define IS_CAN_ALL_PERIPH(PERIPH) ((PERIPH) == CAN1)
243 
244 
248 #define CAN_Mode_Normal ((uint8_t)0x00)
249 #define CAN_Mode_Silent ((uint8_t)0x01)
250 #define CAN_Mode_LoopBack ((uint8_t)0x11)
251 #define CAN_Mode_LoopBack_Silent ((uint8_t)0x13)
252 
260 #define CAN_Sample_Once ((uint8_t)0x00)
261 #define CAN_Sample_Three ((uint8_t)0x01)
262 
270 #define IS_CAN_PRESCALER(PRESCALER) (((PRESCALER) >= 2) && ((PRESCALER) <= 128) && (!(PRESCALER % 2)))
271 
279 #define CAN_SJW_1tq ((uint8_t)0x00)
280 #define CAN_SJW_2tq ((uint8_t)0x01)
281 #define CAN_SJW_3tq ((uint8_t)0x02)
282 #define CAN_SJW_4tq ((uint8_t)0x03)
283 
291 #define CAN_SEG1_1tq ((uint8_t)0x00)
292 #define CAN_SEG1_2tq ((uint8_t)0x01)
293 #define CAN_SEG1_3tq ((uint8_t)0x02)
294 #define CAN_SEG1_4tq ((uint8_t)0x03)
295 #define CAN_SEG1_5tq ((uint8_t)0x04)
296 #define CAN_SEG1_6tq ((uint8_t)0x05)
297 #define CAN_SEG1_7tq ((uint8_t)0x06)
298 #define CAN_SEG1_8tq ((uint8_t)0x07)
299 #define CAN_SEG1_9tq ((uint8_t)0x08)
300 #define CAN_SEG1_10tq ((uint8_t)0x09)
301 #define CAN_SEG1_11tq ((uint8_t)0x0A)
302 #define CAN_SEG1_12tq ((uint8_t)0x0B)
303 #define CAN_SEG1_13tq ((uint8_t)0x0C)
304 #define CAN_SEG1_14tq ((uint8_t)0x0D)
305 #define CAN_SEG1_15tq ((uint8_t)0x0E)
306 #define CAN_SEG1_16tq ((uint8_t)0x0F)
307 
315 #define CAN_SEG2_1tq ((uint8_t)0x00)
316 #define CAN_SEG2_2tq ((uint8_t)0x01)
317 #define CAN_SEG2_3tq ((uint8_t)0x02)
318 #define CAN_SEG2_4tq ((uint8_t)0x03)
319 #define CAN_SEG2_5tq ((uint8_t)0x04)
320 #define CAN_SEG2_6tq ((uint8_t)0x05)
321 #define CAN_SEG2_7tq ((uint8_t)0x06)
322 #define CAN_SEG2_8tq ((uint8_t)0x07)
323 
331 #define IS_CANFD_ARBITRATION_PRESCALER(PRESCALER) (((PRESCALER) >= 1) && ((PRESCALER) <= 2048) && (!(PRESCALER % 2)))
332 
340 #define CANFD_ArbitrationSJW_1tq ((uint8_t)0x00)
341 #define CANFD_ArbitrationSJW_2tq ((uint8_t)0x01)
342 #define CANFD_ArbitrationSJW_3tq ((uint8_t)0x02)
343 #define CANFD_ArbitrationSJW_4tq ((uint8_t)0x03)
344 #define CANFD_ArbitrationSJW_5tq ((uint8_t)0x04)
345 #define CANFD_ArbitrationSJW_6tq ((uint8_t)0x05)
346 #define CANFD_ArbitrationSJW_7tq ((uint8_t)0x06)
347 #define CANFD_ArbitrationSJW_8tq ((uint8_t)0x07)
348 #define CANFD_ArbitrationSJW_9tq ((uint8_t)0x08)
349 #define CANFD_ArbitrationSJW_10tq ((uint8_t)0x09)
350 #define CANFD_ArbitrationSJW_11tq ((uint8_t)0x0A)
351 #define CANFD_ArbitrationSJW_12tq ((uint8_t)0x0B)
352 #define CANFD_ArbitrationSJW_13tq ((uint8_t)0x0C)
353 #define CANFD_ArbitrationSJW_14tq ((uint8_t)0x0D)
354 #define CANFD_ArbitrationSJW_15tq ((uint8_t)0x0E)
355 #define CANFD_ArbitrationSJW_16tq ((uint8_t)0x0F)
356 
364 #define CANFD_ArbitrationSEG1_1tq ((uint8_t)0x00)
365 #define CANFD_ArbitrationSEG1_2tq ((uint8_t)0x01)
366 #define CANFD_ArbitrationSEG1_3tq ((uint8_t)0x02)
367 #define CANFD_ArbitrationSEG1_4tq ((uint8_t)0x03)
368 #define CANFD_ArbitrationSEG1_5tq ((uint8_t)0x04)
369 #define CANFD_ArbitrationSEG1_6tq ((uint8_t)0x05)
370 #define CANFD_ArbitrationSEG1_7tq ((uint8_t)0x06)
371 #define CANFD_ArbitrationSEG1_8tq ((uint8_t)0x07)
372 #define CANFD_ArbitrationSEG1_9tq ((uint8_t)0x08)
373 #define CANFD_ArbitrationSEG1_10tq ((uint8_t)0x09)
374 #define CANFD_ArbitrationSEG1_11tq ((uint8_t)0x0A)
375 #define CANFD_ArbitrationSEG1_12tq ((uint8_t)0x0B)
376 #define CANFD_ArbitrationSEG1_13tq ((uint8_t)0x0C)
377 #define CANFD_ArbitrationSEG1_14tq ((uint8_t)0x0D)
378 #define CANFD_ArbitrationSEG1_15tq ((uint8_t)0x0E)
379 #define CANFD_ArbitrationSEG1_16tq ((uint8_t)0x0F)
380 #define CANFD_ArbitrationSEG1_17tq ((uint8_t)0x10)
381 #define CANFD_ArbitrationSEG1_18tq ((uint8_t)0x11)
382 #define CANFD_ArbitrationSEG1_19tq ((uint8_t)0x12)
383 #define CANFD_ArbitrationSEG1_20tq ((uint8_t)0x13)
384 #define CANFD_ArbitrationSEG1_21tq ((uint8_t)0x14)
385 #define CANFD_ArbitrationSEG1_22tq ((uint8_t)0x15)
386 #define CANFD_ArbitrationSEG1_23tq ((uint8_t)0x16)
387 #define CANFD_ArbitrationSEG1_24tq ((uint8_t)0x17)
388 #define CANFD_ArbitrationSEG1_25tq ((uint8_t)0x18)
389 #define CANFD_ArbitrationSEG1_26tq ((uint8_t)0x19)
390 #define CANFD_ArbitrationSEG1_27tq ((uint8_t)0x1A)
391 #define CANFD_ArbitrationSEG1_28tq ((uint8_t)0x1B)
392 #define CANFD_ArbitrationSEG1_29tq ((uint8_t)0x1C)
393 #define CANFD_ArbitrationSEG1_30tq ((uint8_t)0x1D)
394 #define CANFD_ArbitrationSEG1_31tq ((uint8_t)0x1E)
395 #define CANFD_ArbitrationSEG1_32tq ((uint8_t)0x1F)
396 #define CANFD_ArbitrationSEG1_33tq ((uint8_t)0x20)
397 #define CANFD_ArbitrationSEG1_34tq ((uint8_t)0x21)
398 #define CANFD_ArbitrationSEG1_35tq ((uint8_t)0x22)
399 #define CANFD_ArbitrationSEG1_36tq ((uint8_t)0x23)
400 #define CANFD_ArbitrationSEG1_37tq ((uint8_t)0x24)
401 #define CANFD_ArbitrationSEG1_38tq ((uint8_t)0x25)
402 #define CANFD_ArbitrationSEG1_39tq ((uint8_t)0x26)
403 #define CANFD_ArbitrationSEG1_40tq ((uint8_t)0x27)
404 #define CANFD_ArbitrationSEG1_41tq ((uint8_t)0x28)
405 #define CANFD_ArbitrationSEG1_42tq ((uint8_t)0x29)
406 #define CANFD_ArbitrationSEG1_43tq ((uint8_t)0x2A)
407 #define CANFD_ArbitrationSEG1_44tq ((uint8_t)0x2B)
408 #define CANFD_ArbitrationSEG1_45tq ((uint8_t)0x2C)
409 #define CANFD_ArbitrationSEG1_46tq ((uint8_t)0x2D)
410 #define CANFD_ArbitrationSEG1_47tq ((uint8_t)0x2E)
411 #define CANFD_ArbitrationSEG1_48tq ((uint8_t)0x2F)
412 #define CANFD_ArbitrationSEG1_49tq ((uint8_t)0x30)
413 #define CANFD_ArbitrationSEG1_50tq ((uint8_t)0x31)
414 #define CANFD_ArbitrationSEG1_51tq ((uint8_t)0x32)
415 #define CANFD_ArbitrationSEG1_52tq ((uint8_t)0x33)
416 #define CANFD_ArbitrationSEG1_53tq ((uint8_t)0x34)
417 #define CANFD_ArbitrationSEG1_54tq ((uint8_t)0x35)
418 #define CANFD_ArbitrationSEG1_55tq ((uint8_t)0x36)
419 #define CANFD_ArbitrationSEG1_56tq ((uint8_t)0x37)
420 #define CANFD_ArbitrationSEG1_57tq ((uint8_t)0x38)
421 #define CANFD_ArbitrationSEG1_58tq ((uint8_t)0x39)
422 #define CANFD_ArbitrationSEG1_59tq ((uint8_t)0x3A)
423 #define CANFD_ArbitrationSEG1_60tq ((uint8_t)0x3B)
424 #define CANFD_ArbitrationSEG1_61tq ((uint8_t)0x3C)
425 #define CANFD_ArbitrationSEG1_62tq ((uint8_t)0x3D)
426 #define CANFD_ArbitrationSEG1_63tq ((uint8_t)0x3E)
427 #define CANFD_ArbitrationSEG1_64tq ((uint8_t)0x3F)
428 
436 #define CANFD_ArbitrationSEG2_1tq ((uint8_t)0x00)
437 #define CANFD_ArbitrationSEG2_2tq ((uint8_t)0x01)
438 #define CANFD_ArbitrationSEG2_3tq ((uint8_t)0x02)
439 #define CANFD_ArbitrationSEG2_4tq ((uint8_t)0x03)
440 #define CANFD_ArbitrationSEG2_5tq ((uint8_t)0x04)
441 #define CANFD_ArbitrationSEG2_6tq ((uint8_t)0x05)
442 #define CANFD_ArbitrationSEG2_7tq ((uint8_t)0x06)
443 #define CANFD_ArbitrationSEG2_8tq ((uint8_t)0x07)
444 #define CANFD_ArbitrationSEG2_9tq ((uint8_t)0x08)
445 #define CANFD_ArbitrationSEG2_10tq ((uint8_t)0x09)
446 #define CANFD_ArbitrationSEG2_11tq ((uint8_t)0x0A)
447 #define CANFD_ArbitrationSEG2_12tq ((uint8_t)0x0B)
448 #define CANFD_ArbitrationSEG2_13tq ((uint8_t)0x0C)
449 #define CANFD_ArbitrationSEG2_14tq ((uint8_t)0x0D)
450 #define CANFD_ArbitrationSEG2_15tq ((uint8_t)0x0E)
451 #define CANFD_ArbitrationSEG2_16tq ((uint8_t)0x0F)
452 
460 #define IS_CANFD_DATA_PRESCALER(PRESCALER) (((PRESCALER) >= 1) && ((PRESCALER) <= 64) && (!(PRESCALER % 2)))
461 
469 #define CANFD_DataSJW_1tq ((uint8_t)0x00)
470 #define CANFD_DataSJW_2tq ((uint8_t)0x01)
471 #define CANFD_DataSJW_3tq ((uint8_t)0x02)
472 #define CANFD_DataSJW_4tq ((uint8_t)0x03)
473 #define CANFD_DataSJW_5tq ((uint8_t)0x04)
474 #define CANFD_DataSJW_6tq ((uint8_t)0x05)
475 #define CANFD_DataSJW_7tq ((uint8_t)0x06)
476 #define CANFD_DataSJW_8tq ((uint8_t)0x07)
477 #define CANFD_DataSJW_9tq ((uint8_t)0x08)
478 #define CANFD_DataSJW_10tq ((uint8_t)0x09)
479 #define CANFD_DataSJW_11tq ((uint8_t)0x0A)
480 #define CANFD_DataSJW_12tq ((uint8_t)0x0B)
481 #define CANFD_DataSJW_13tq ((uint8_t)0x0C)
482 #define CANFD_DataSJW_14tq ((uint8_t)0x0D)
483 #define CANFD_DataSJW_15tq ((uint8_t)0x0E)
484 #define CANFD_DataSJW_16tq ((uint8_t)0x0F)
485 
493 #define CANFD_DataSEG1_1tq ((uint8_t)0x00)
494 #define CANFD_DataSEG1_2tq ((uint8_t)0x01)
495 #define CANFD_DataSEG1_3tq ((uint8_t)0x02)
496 #define CANFD_DataSEG1_4tq ((uint8_t)0x03)
497 #define CANFD_DataSEG1_5tq ((uint8_t)0x04)
498 #define CANFD_DataSEG1_6tq ((uint8_t)0x05)
499 #define CANFD_DataSEG1_7tq ((uint8_t)0x06)
500 #define CANFD_DataSEG1_8tq ((uint8_t)0x07)
501 #define CANFD_DataSEG1_9tq ((uint8_t)0x08)
502 #define CANFD_DataSEG1_10tq ((uint8_t)0x09)
503 #define CANFD_DataSEG1_11tq ((uint8_t)0x0A)
504 #define CANFD_DataSEG1_12tq ((uint8_t)0x0B)
505 #define CANFD_DataSEG1_13tq ((uint8_t)0x0C)
506 #define CANFD_DataSEG1_14tq ((uint8_t)0x0D)
507 #define CANFD_DataSEG1_15tq ((uint8_t)0x0E)
508 #define CANFD_DataSEG1_16tq ((uint8_t)0x0F)
509 #define CANFD_DataSEG1_17tq ((uint8_t)0x10)
510 #define CANFD_DataSEG1_18tq ((uint8_t)0x11)
511 #define CANFD_DataSEG1_19tq ((uint8_t)0x12)
512 #define CANFD_DataSEG1_20tq ((uint8_t)0x13)
513 #define CANFD_DataSEG1_21tq ((uint8_t)0x14)
514 #define CANFD_DataSEG1_22tq ((uint8_t)0x15)
515 #define CANFD_DataSEG1_23tq ((uint8_t)0x16)
516 #define CANFD_DataSEG1_24tq ((uint8_t)0x17)
517 #define CANFD_DataSEG1_25tq ((uint8_t)0x18)
518 #define CANFD_DataSEG1_26tq ((uint8_t)0x19)
519 #define CANFD_DataSEG1_27tq ((uint8_t)0x1A)
520 #define CANFD_DataSEG1_28tq ((uint8_t)0x1B)
521 #define CANFD_DataSEG1_29tq ((uint8_t)0x1C)
522 #define CANFD_DataSEG1_30tq ((uint8_t)0x1D)
523 #define CANFD_DataSEG1_31tq ((uint8_t)0x1E)
524 #define CANFD_DataSEG1_32tq ((uint8_t)0x1F)
525 
533 #define CANFD_DataSEG2_1tq ((uint8_t)0x00)
534 #define CANFD_DataSEG2_2tq ((uint8_t)0x01)
535 #define CANFD_DataSEG2_3tq ((uint8_t)0x02)
536 #define CANFD_DataSEG2_4tq ((uint8_t)0x03)
537 #define CANFD_DataSEG2_5tq ((uint8_t)0x04)
538 #define CANFD_DataSEG2_6tq ((uint8_t)0x05)
539 #define CANFD_DataSEG2_7tq ((uint8_t)0x06)
540 #define CANFD_DataSEG2_8tq ((uint8_t)0x07)
541 
549 #define IS_CANFD_TransmateDelayCompensationOffset(OFFSET) (((OFFSET) >= 1) && ((OFFSET) <= 128))
550 
558 #define CANFD_ISOFrameFormatSection_BoschCAN ((uint8_t)0x00)
559 #define CANFD_ISOFrameFormatSection_ISO11898 ((uint8_t)0x01)
560 
568 #define CANFD_ArbitrationTimingSection_BT ((uint8_t)0x00)
569 #define CANFD_ArbitrationTimingSection_NBT ((uint8_t)0x01)
570 
578 #define CANFD_DataTimingSection_HOLD ((uint8_t)0x00)
579 #define CANFD_DataTimingSection_DBT ((uint8_t)0x01)
580 
588 #define CANFD_FrameFormat_Classic ((uint8_t)0x00)
589 #define CANFD_FrameFormat_FD ((uint8_t)0x01)
590 
598 #define CAN_Filter_Mode_Dual ((uint8_t)0x00)
599 #define CAN_Filter_Mode_Single ((uint8_t)0x01)
600 
608 #define CAN_Filter_FrameFormat_Standard ((uint8_t)0x00)
609 #define CAN_Filter_FrameFormat_Extended ((uint8_t)0x01)
610 
618 #define CAN_Filter_Type_Data ((uint8_t)0x00)
619 #define CAN_Filter_Type_Remote ((uint8_t)0x01)
620 
628 #define CAN_IDType_Standard ((uint8_t)0x00)
629 #define CAN_IDType_Extended ((uint8_t)0x01)
630 
638 #define CAN_FrameType_Data ((uint8_t)0x00)
639 #define CAN_FrameType_Remote ((uint8_t)0x01)
640 
648 #define CAN_FrameFormat_Class ((uint8_t)0x00)
649 #define CAN_FrameFormat_FD ((uint8_t)0x01)
650 
658 #define CAN_BitRateSwitch_WithoutSwitch ((uint8_t)0x00)
659 #define CAN_BitRateSwitch_Switch ((uint8_t)0x01)
660 
668 #define CAN_ErrorStateIndicator_PassiveErrorNode ((uint8_t)0x00)
669 #define CAN_ErrorStateIndicator_ActiveErrorNode ((uint8_t)0x01)
670 
678 #define CAN_Cmd_TransmitAbort ((uint32_t)0x01U << 9)
679 #define CAN_Cmd_TransmitStart ((uint32_t)0x02U << 9)
680 #define CAN_Cmd_TransmitSingle ((uint32_t)0x03U << 9)
681 
689 #define CAN_TransmitMode_Retransmission ((uint32_t)0x02U << 9)
690 #define CAN_TransmitMode_Single ((uint32_t)0x03U << 9)
691 
699 #define CAN_IT_DOI ((uint32_t)0x01U << 0)
700 #define CAN_IT_BEI ((uint32_t)0x01U << 1)
701 #define CAN_IT_TI ((uint32_t)0x01U << 2)
702 #define CAN_IT_RI ((uint32_t)0x01U << 3)
703 #define CAN_IT_EPI ((uint32_t)0x01U << 4)
704 #define CAN_IT_EWI ((uint32_t)0x01U << 5)
705 #define CAN_IT_ALI ((uint32_t)0x01U << 6)
714 #define CAN_Flag_DOI ((uint32_t)0x01U << 24)
715 #define CAN_Flag_BEI ((uint32_t)0x01U << 25)
716 #define CAN_Flag_TI ((uint32_t)0x01U << 26)
717 #define CAN_Flag_RI ((uint32_t)0x01U << 27)
718 #define CAN_Flag_EPI ((uint32_t)0x01U << 28)
719 #define CAN_Flag_EWI ((uint32_t)0x01U << 29)
720 #define CAN_Flag_ALI ((uint32_t)0x01U << 30)
729 #define CAN_Status_BS ((uint32_t)0x01U << 16)
730 #define CAN_Status_ES ((uint32_t)0x01U << 17)
731 #define CAN_Status_TS ((uint32_t)0x01U << 18)
732 #define CAN_Status_RS ((uint32_t)0x01U << 19)
733 #define CAN_Status_TBS ((uint32_t)0x01U << 21)
734 #define CAN_Status_DSO ((uint32_t)0x01U << 22)
735 #define CAN_Status_RBS ((uint32_t)0x01U << 23)
744 #define CAN_Error_Code_BER ((uint32_t)CAN_ECC_BER)
745 #define CAN_Error_Code_STFER ((uint32_t)CAN_ECC_STFER)
746 #define CAN_Error_Code_CRCER ((uint32_t)CAN_ECC_CRCER)
747 #define CAN_Error_Code_FRMER ((uint32_t)CAN_ECC_FRMER)
748 #define CAN_Error_Code_ACKER ((uint32_t)CAN_ECC_ACKER)
749 #define CAN_Error_Code_EDIR ((uint32_t)CAN_ECC_EDIR)
750 #define CAN_Error_Code_TXWRN ((uint32_t)CAN_ECC_TXWRN)
751 #define CAN_Error_Code_RXERR ((uint32_t)CAN_ECC_RXERR)
752 
760 #define CANFD_Status_Init ((uint32_t)0x00U << 14)
761 #define CANFD_Status_Idle ((uint32_t)0x01U << 14)
762 #define CANFD_Status_Recv ((uint32_t)0x02U << 14)
763 #define CANFD_Status_Send ((uint32_t)0x03U << 14)
764 
772 #define CANFD_Error_BITERR ((uint32_t)0x01U << 8)
773 #define CANFD_Error_CRCERR ((uint32_t)0x01U << 9)
774 #define CANFD_Error_FRMERR ((uint32_t)0x01U << 10)
775 #define CANFD_Error_STFERR ((uint32_t)0x01U << 11)
776 
784 /* Exported macro ------------------------------------------------------------*/
785 /* Exported functions --------------------------------------------------------*/
786 
787 void CAN_DeInit(CAN_TypeDef* CANx);
788 
789 void CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct);
790 void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct);
791 void CAN_Transmit(CAN_TypeDef* CANx, CAN_Msg* Message, uint32_t AutoRetransmissionEnable);
792 void CAN_Receive(CAN_TypeDef* CANx, CAN_Msg* RxMessage);
793 
794 void CANFD_Init(CAN_TypeDef* CANx, CANFD_InitTypeDef* CANFD_InitStruct);
795 void CANFD_StructInit(CANFD_InitTypeDef* CANFD_InitStruct);
796 void CANFD_Transmit(CAN_TypeDef* CANx, CANFD_Msg* TxMessage, uint32_t AutoRetransmissionEnable);
797 void CANFD_Receive(CAN_TypeDef* CANx, CANFD_Msg* RxMessage);
799 uint8_t CANFD_GetDataErrorCount(CAN_TypeDef* CANx);
800 FlagStatus CANFD_GetStatus(CAN_TypeDef* CANx, uint32_t CANFD_Status);
801 FlagStatus CANFD_GetError(CAN_TypeDef* CANx, uint32_t CANFD_Error);
803 
804 void CAN_FilterInit(CAN_TypeDef* CANx, CAN_FilterInitTypeDef* CAN_FilterInitStruct);
805 void CAN_FilterStructInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct);
806 void CAN_Reset(CAN_TypeDef* CANx, FunctionalState NewState);
807 void CAN_SendCmd(CAN_TypeDef* CANx, uint32_t CAN_Cmd);
808 void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState);
809 void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_Flag);
810 
811 FlagStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_Flag);
812 FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_Status);
814 uint8_t CAN_GetMessageCount(CAN_TypeDef* CANx);
817 
826 #ifdef __cplusplus
827 }
828 #endif
829 
830 #endif /* __MG32F157_CAN_H */
831 
void CAN_Transmit(CAN_TypeDef *CANx, CAN_Msg *Message, uint32_t AutoRetransmissionEnable)
Initiates the transmission of a message in class mode.
Definition: mg32f157_can.c:440
uint8_t Filter2_Type
Definition: mg32f157_can.h:161
FlagStatus CAN_GetFlagStatus(CAN_TypeDef *CANx, uint32_t CAN_Status)
Checks whether the specified CAN status flag is set or not.
Definition: mg32f157_can.c:782
uint8_t DataLength
Definition: mg32f157_can.h:229
uint8_t FrameFormat
Definition: mg32f157_can.h:218
uint8_t FrameType
Definition: mg32f157_can.h:214
uint8_t CANFD_GetArbitrationErrorCount(CAN_TypeDef *CANx)
Checks CAN arbitrations error count.
Definition: mg32f157_can.c:821
uint8_t BitRateSwitch
Definition: mg32f157_can.h:222
uint8_t FD_DataSEG2
Definition: mg32f157_can.h:113
void CAN_Reset(CAN_TypeDef *CANx, FunctionalState NewState)
Set peripheral CAN to reset mode.
Definition: mg32f157_can.c:400
void CAN_SendCmd(CAN_TypeDef *CANx, uint32_t CAN_Cmd)
Use peripheral CAN to send the transmission command.
Definition: mg32f157_can.c:425
uint8_t FD_TransmateDelayCompensationCmd
Definition: mg32f157_can.h:116
void CAN_FilterStructInit(CAN_FilterInitTypeDef *CAN_FilterInitStruct)
Fills each CANFD_InitStruct member with its default value.
Definition: mg32f157_can.c:383
uint8_t CAN_Mode
Definition: mg32f157_can.h:65
void CANFD_StructInit(CANFD_InitTypeDef *CANFD_InitStruct)
Fills each CANFD_InitTypeDef member with its default value.
Definition: mg32f157_can.c:348
void CAN_Init(CAN_TypeDef *CANx, CAN_InitTypeDef *CAN_InitStruct)
Initializes the CAN peripheral according to the specified parameters in the CAN_InitStruct.
Definition: mg32f157_can.c:91
uint8_t AutoRetransmiteCmd
Definition: mg32f157_can.h:71
CAN Message structure definition.
Definition: mg32f157_can.h:178
uint8_t FD_DataSEG1
Definition: mg32f157_can.h:110
uint8_t CAN_SJW
Definition: mg32f157_can.h:48
uint8_t FD_TransmateDelayCompensationOffset
Definition: mg32f157_can.h:119
uint8_t FrameType
Definition: mg32f157_can.h:189
void CAN_ITConfig(CAN_TypeDef *CANx, uint32_t CAN_IT, FunctionalState NewState)
Enables or disables the specified CANx interrupts.
Definition: mg32f157_can.c:697
uint8_t CAN_Sample
Definition: mg32f157_can.h:39
uint8_t CAN_Mode
Definition: mg32f157_can.h:36
uint32_t Filter2_Mask
Definition: mg32f157_can.h:170
uint16_t FD_ArbitrationPrescaler
Definition: mg32f157_can.h:88
uint8_t Filter1_RTRCmd
Definition: mg32f157_can.h:152
uint8_t CAN_Sample
Definition: mg32f157_can.h:68
uint8_t CANFD_GetDataErrorCount(CAN_TypeDef *CANx)
Checks CAN data error count.
Definition: mg32f157_can.c:836
uint32_t Filter1_Code
Definition: mg32f157_can.h:155
uint8_t CANFD_GetSecondarySamplePosition(CAN_TypeDef *CANx)
Checks CAN FD Secondary Sample Position.
Definition: mg32f157_can.c:908
FlagStatus CANFD_GetStatus(CAN_TypeDef *CANx, uint32_t CANFD_Status)
Checks CAN FD running status.
Definition: mg32f157_can.c:857
uint8_t CAN_SEG2
Definition: mg32f157_can.h:56
FlagStatus CAN_GetITStatus(CAN_TypeDef *CANx, uint32_t CAN_Flag)
Checks whether the specified CAN flag is set or not.
Definition: mg32f157_can.c:725
uint8_t CAN_GetArbitrationLosePosition(CAN_TypeDef *CANx)
Checks CAN arbitrations lost capture position.
Definition: mg32f157_can.c:809
Definition: mg32f157.h:355
uint8_t CAN_SEG1
Definition: mg32f157_can.h:82
CAN Init structure definition.
Definition: mg32f157_can.h:34
CAN Filter Config structure definition.
Definition: mg32f157_can.h:141
uint32_t Identifier
Definition: mg32f157_can.h:205
uint8_t CAN_GetTransmitErrorCount(CAN_TypeDef *CANx)
Get CAN Transmit Error Count.
Definition: mg32f157_can.c:944
uint8_t Filter1_Type
Definition: mg32f157_can.h:149
uint8_t FD_DataSJW
Definition: mg32f157_can.h:105
void CAN_DeInit(CAN_TypeDef *CANx)
Deinitializes the CAN peripheral registers to their default reset values.
Definition: mg32f157_can.c:71
uint8_t FD_ArbitrationSJW
Definition: mg32f157_can.h:91
uint8_t FD_ArbitrationTimingSection
Definition: mg32f157_can.h:128
uint8_t FD_RestrictedOperationCmd
Definition: mg32f157_can.h:122
uint8_t FD_ISOFrameFormatSection
Definition: mg32f157_can.h:125
uint8_t CAN_Prescaler
Definition: mg32f157_can.h:74
uint8_t FD_FrameFormat
Definition: mg32f157_can.h:134
uint8_t CAN_SEG2
Definition: mg32f157_can.h:85
uint32_t Filter2_Code
Definition: mg32f157_can.h:167
CANFD Message structure definition.
Definition: mg32f157_can.h:203
void CAN_ClearITPendingBit(CAN_TypeDef *CANx, uint32_t CAN_Flag)
Clears the CAN's pending flags.
Definition: mg32f157_can.c:761
uint8_t CAN_GetMessageCount(CAN_TypeDef *CANx)
Get CAN number of framed in the rxbuf.
Definition: mg32f157_can.c:926
uint8_t FD_ArbitrationSEG1
Definition: mg32f157_can.h:96
uint32_t Identifier
Definition: mg32f157_can.h:180
uint8_t CAN_GetReceiveErrorCount(CAN_TypeDef *CANx)
Get CAN Receive Error Count.
Definition: mg32f157_can.c:962
CANFD Init structure definition.
Definition: mg32f157_can.h:63
void CANFD_Init(CAN_TypeDef *CANx, CANFD_InitTypeDef *CANFD_InitStruct)
Initializes the CAN peripheral to FD Mode according to the specified parameters in the CAN_InitStruct...
Definition: mg32f157_can.c:139
void CAN_Receive(CAN_TypeDef *CANx, CAN_Msg *RxMessage)
Receives a message in class mode.
Definition: mg32f157_can.c:495
uint8_t FD_ArbitrationSEG2
Definition: mg32f157_can.h:99
uint8_t FD_DataPrescaler
Definition: mg32f157_can.h:102
uint8_t Filter_FrameFormat
Definition: mg32f157_can.h:146
void CANFD_Receive(CAN_TypeDef *CANx, CANFD_Msg *RxMessage)
Receives a message in FD mode.
Definition: mg32f157_can.c:613
uint32_t Filter1_Mask
Definition: mg32f157_can.h:158
uint8_t FD_DataTimingSection
Definition: mg32f157_can.h:131
uint8_t Filter_Mode
Definition: mg32f157_can.h:143
uint8_t IDType
Definition: mg32f157_can.h:210
void CAN_FilterInit(CAN_TypeDef *CANx, CAN_FilterInitTypeDef *CAN_FilterInitStruct)
Initializes the CAN peripheral according to the specified. parameters in the CAN_FilterInitTypeDef.
Definition: mg32f157_can.c:224
uint8_t IDType
Definition: mg32f157_can.h:185
uint8_t CAN_Prescaler
Definition: mg32f157_can.h:45
uint8_t CAN_SEG1
Definition: mg32f157_can.h:53
FlagStatus CANFD_GetError(CAN_TypeDef *CANx, uint32_t CANFD_Error)
Checks CAN FD error.
Definition: mg32f157_can.c:881
uint8_t Filter2_RTRCmd
Definition: mg32f157_can.h:164
uint8_t ErrorStateIndicator
Definition: mg32f157_can.h:226
uint8_t DataLength
Definition: mg32f157_can.h:193
void CAN_StructInit(CAN_InitTypeDef *CAN_InitStruct)
Fills each CAN_InitStruct member with its default value.
Definition: mg32f157_can.c:329
uint8_t AutoRetransmiteCmd
Definition: mg32f157_can.h:42
void CANFD_Transmit(CAN_TypeDef *CANx, CANFD_Msg *TxMessage, uint32_t AutoRetransmissionEnable)
Initiates the transmission of a message in FD mode.
Definition: mg32f157_can.c:550
uint8_t CAN_SJW
Definition: mg32f157_can.h:77