5 #include "hal_machperiph.h"
7 #include "system_def.h"
8 #include "can/canmsg.h"
16 #define CAN1_REGS_BASE 0x40044000UL
17 #define CAN2_REGS_BASE 0x40048000UL
19 #define CAN_MOD_o 0x0000
20 #define CAN_CMR_o 0x0004
21 #define CAN_GSR_o 0x0008
22 #define CAN_ICR_o 0x000C
23 #define CAN_IER_o 0x0010
24 #define CAN_BTR_o 0x0014
25 #define CAN_EWL_o 0x0018
26 #define CAN_SR_o 0x001C
27 #define CAN_RFS_o 0x0020
28 #define CAN_RID_o 0x0024
29 #define CAN_RDA_o 0x0028
30 #define CAN_RDB_o 0x002C
31 #define CAN_TFI1_o 0x0030
32 #define CAN_TID1_o 0x0034
33 #define CAN_TDA1_o 0x0038
34 #define CAN_TDB1_o 0x003C
35 #define CAN_TFI2_o 0x0040
36 #define CAN_TID2_o 0x0044
37 #define CAN_TDA2_o 0x0048
38 #define CAN_TDB2_o 0x004C
39 #define CAN_TFI3_o 0x0050
40 #define CAN_TID3_o 0x0054
41 #define CAN_TDA3_o 0x0058
42 #define CAN_TDB3_o 0x005C
44 //----------------------------------
46 #define CAN1MOD (*(uint32_t*)(CAN1_REGS_BASE+CAN_MOD_o))
47 #define CAN1CMR (*(uint32_t*)(CAN1_REGS_BASE+CAN_CMR_o))
48 #define CAN1GSR (*(uint32_t*)(CAN1_REGS_BASE+CAN_GSR_o))
49 #define CAN1ICR (*(uint32_t*)(CAN1_REGS_BASE+CAN_ICR_o))
50 #define CAN1IER (*(uint32_t*)(CAN1_REGS_BASE+CAN_IER_o))
51 #define CAN1BTR (*(uint32_t*)(CAN1_REGS_BASE+CAN_BTR_o))
52 #define CAN1EWL (*(uint32_t*)(CAN1_REGS_BASE+CAN_EWL_o))
53 #define CAN1SR (*(uint32_t*)(CAN1_REGS_BASE+CAN_SR_o))
54 #define CAN1RFS (*(uint32_t*)(CAN1_REGS_BASE+CAN_RFS_o))
55 #define CAN1RID (*(uint32_t*)(CAN1_REGS_BASE+CAN_RID_o))
56 #define CAN1RDA (*(uint32_t*)(CAN1_REGS_BASE+CAN_RDA_o))
57 #define CAN1RDB (*(uint32_t*)(CAN1_REGS_BASE+CAN_RDB_o))
58 #define CAN1TFI1 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TFI1_o))
59 #define CAN1TID1 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TID1_o))
60 #define CAN1TDA1 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TDA1_o))
61 #define CAN1TDB1 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TDB1_o))
62 #define CAN1TFI2 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TFI2_o))
63 #define CAN1TID2 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TID2_o))
64 #define CAN1TDA2 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TDA2_o))
65 #define CAN1TDB2 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TDB2_o))
66 #define CAN1TFI3 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TFI3_o))
67 #define CAN1TID3 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TID3_o))
68 #define CAN1TDA3 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TDA3_o))
69 #define CAN1TDB3 (*(uint32_t*)(CAN1_REGS_BASE+CAN_TDB3_o))
72 //----------------------------------
74 #define PCONP SC->PCONP
75 #define PCLKSEL0 SC->PCLKSEL0
77 #define PINSEL0 PINCON->PINSEL0
78 #define PINMODE0 PINCON->PINMODE0
79 #define PINMODE_OD0 PINCON->PINMODE_OD0
81 #define PCCAN1 (1<<13) // CAN Controller 1 power/clock control bit.
82 #define PCCAN2 (1<<14) // CAN Controller 2 power/clock control bit.
84 #define PCLK_CAN1_MASK ((1<<27)|(1<<26))
85 #define PCLK_CAN2_MASK ((1<<29)|(1<<28))
86 #define PCLK_ACF_MASK ((1<<31)|(1<<30))
88 #define CAN1_RX_MASK ((1<<1)|(1<<0))
89 #define CAN1_TX_MASK ((1<<3)|(1<<2))
91 // CAN1_RX_BIT a CAN1_TX_BIT jiz definovany v system_def.h
94 void CAN_init(uint32_t baudrate);
95 void CAN_send(canmsg_t* msg);
101 #endif // LPC17XX_CAN_H_