Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SEEED_CAN by
seeed_can_defs.h
00001 /* seeed_can_defs.h 00002 * Copyright (c) 2013 Sophie Dexter 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #ifndef SEEED_CAN_DEFS_H 00017 #define SEEED_CAN_DEFS_H 00018 00019 #include "mbed.h" 00020 00021 #ifdef __cplusplus 00022 extern "C" { 00023 #endif 00024 00025 /** FRDM-KL25Z port pins used by Seeed Studios CAN-BUS Shield 00026 */ 00027 #define SEEED_CAN_CS PTD0 00028 #define SEEED_CAN_CLK PTD1 00029 #define SEEED_CAN_MOSI PTD2 00030 #define SEEED_CAN_MISO PTD3 00031 #define SEEED_CAN_IRQ PTD4 00032 #define SEEED_CAN_IO9 PTD5 00033 /** Define MCP2515 register addresses 00034 */ 00035 #define MCP_RXF0SIDH 0x00 00036 #define MCP_RXF0SIDL 0x01 00037 #define MCP_RXF0EID8 0x02 00038 #define MCP_RXF0EID0 0x03 00039 #define MCP_RXF1SIDH 0x04 00040 #define MCP_RXF1SIDL 0x05 00041 #define MCP_RXF1EID8 0x06 00042 #define MCP_RXF1EID0 0x07 00043 #define MCP_RXF2SIDH 0x08 00044 #define MCP_RXF2SIDL 0x09 00045 #define MCP_RXF2EID8 0x0A 00046 #define MCP_RXF2EID0 0x0B 00047 #define MCP_CANSTAT 0x0E 00048 #define MCP_CANCTRL 0x0F 00049 #define MCP_RXF3SIDH 0x10 00050 #define MCP_RXF3SIDL 0x11 00051 #define MCP_RXF3EID8 0x12 00052 #define MCP_RXF3EID0 0x13 00053 #define MCP_RXF4SIDH 0x14 00054 #define MCP_RXF4SIDL 0x15 00055 #define MCP_RXF4EID8 0x16 00056 #define MCP_RXF4EID0 0x17 00057 #define MCP_RXF5SIDH 0x18 00058 #define MCP_RXF5SIDL 0x19 00059 #define MCP_RXF5EID8 0x1A 00060 #define MCP_RXF5EID0 0x1B 00061 #define MCP_TEC 0x1C 00062 #define MCP_REC 0x1D 00063 #define MCP_RXM0SIDH 0x20 00064 #define MCP_RXM0SIDL 0x21 00065 #define MCP_RXM0EID8 0x22 00066 #define MCP_RXM0EID0 0x23 00067 #define MCP_RXM1SIDH 0x24 00068 #define MCP_RXM1SIDL 0x25 00069 #define MCP_RXM1EID8 0x26 00070 #define MCP_RXM1EID0 0x27 00071 #define MCP_CNF3 0x28 00072 #define MCP_CNF2 0x29 00073 #define MCP_CNF1 0x2A 00074 #define MCP_CANINTE 0x2B 00075 #define MCP_CANINTF 0x2C 00076 #define MCP_EFLG 0x2D 00077 #define MCP_TXB0CTRL 0x30 00078 #define MCP_TXB1CTRL 0x40 00079 #define MCP_TXB2CTRL 0x50 00080 #define MCP_RXB0CTRL 0x60 00081 #define MCP_RXB0SIDH 0x61 00082 #define MCP_RXB1CTRL 0x70 00083 #define MCP_RXB1SIDH 0x71 00084 /** Define MCP2515 SPI Instructions 00085 */ 00086 #define MCP_WRITE 0x02 00087 00088 #define MCP_READ 0x03 00089 00090 #define MCP_BITMOD 0x05 00091 00092 #define MCP_WRITE_TX0 0x40 00093 #define MCP_WRITE_TX1 0x42 00094 #define MCP_WRITE_TX2 0x44 00095 00096 #define MCP_RTS_TX0 0x81 00097 #define MCP_RTS_TX1 0x82 00098 #define MCP_RTS_TX2 0x84 00099 #define MCP_RTS_ALL 0x87 00100 00101 #define MCP_READ_RX0 0x90 00102 #define MCP_READ_RX1 0x94 00103 00104 #define MCP_READ_STATUS 0xA0 00105 00106 #define MCP_RX_STATUS 0xB0 00107 00108 #define MCP_RESET 0xC0 00109 00110 //#define TIMEOUTVALUE 50 00111 //#define MCP_SIDH 0 00112 //#define MCP_SIDL 1 00113 //#define MCP_EID8 2 00114 //#define MCP_EID0 3 00115 00116 #define MCP_TXB_EXIDE_M 0x08 /* In TXBnSIDL */ 00117 #define MCP_DLC_MASK 0x0F /* 4 LSBits */ 00118 #define MCP_RTR_MASK 0x40 /* (1<<6) Bit 6 */ 00119 00120 #define MCP_RXB_RX_ANY 0x60 00121 #define MCP_RXB_RX_EXT 0x40 00122 #define MCP_RXB_RX_STD 0x20 00123 #define MCP_RXB_RX_STDEXT 0x00 00124 #define MCP_RXB_RX_MASK 0x60 00125 #define MCP_RXB_BUKT_MASK (1<<2) 00126 /** Bits in the TXBnCTRL registers. 00127 */ 00128 #define MCP_TXB_TXBUFE_M 0x80 00129 #define MCP_TXB_ABTF_M 0x40 00130 #define MCP_TXB_MLOA_M 0x20 00131 #define MCP_TXB_TXERR_M 0x10 00132 #define MCP_TXB_TXREQ_M 0x08 00133 #define MCP_TXB_TXIE_M 0x04 00134 #define MCP_TXB_TXP10_M 0x03 00135 00136 #define MCP_TXB_RTR_M 0x40 /* In TXBnDLC */ 00137 #define MCP_RXB_IDE_M 0x08 /* In RXBnSIDL */ 00138 #define MCP_RXB_RTR_M 0x40 /* In RXBnDLC */ 00139 00140 /** STATUS Command Values 00141 */ 00142 #define MCP_STAT_RXIF_MASK (0x03) 00143 #define MCP_STAT_RX0IF (1<<0) 00144 #define MCP_STAT_RX1IF (1<<1) 00145 #define MCP_STAT_TX0REQ (1<<2) 00146 #define MCP_STAT_TX0IF (1<<3) 00147 #define MCP_STAT_TX1REQ (1<<4) 00148 #define MCP_STAT_TX1IF (1<<5) 00149 #define MCP_STAT_TX2REQ (1<<6) 00150 #define MCP_STAT_TX2IF (1<<7) 00151 00152 /** RX STATUS Command Values 00153 */ 00154 #define MCP_RXSTAT_RXF_MASK (7<<0) 00155 #define MCP_RXSTAT_RXF0 (0<<0) 00156 #define MCP_RXSTAT_RXF1 (1<<0) 00157 #define MCP_RXSTAT_RXF2 (2<<0) 00158 #define MCP_RXSTAT_RXF3 (3<<0) 00159 #define MCP_RXSTAT_RXF4 (4<<0) 00160 #define MCP_RXSTAT_RXF5 (5<<0) 00161 #define MCP_RXSTAT_RXROF0 (6<<0) // RXF0 rollover to RXB1 00162 #define MCP_RXSTAT_RXROF1 (7<<0) // RXF1 rollover to RXB1 00163 #define MCP_RXSTAT_RTR (1<<3) 00164 #define MCP_RXSTAT_IDE (1<<4) 00165 #define MCP_RXSTAT_RXB_MASK (3<<6) 00166 #define MCP_RXSTAT_NONE (0<<6) 00167 #define MCP_RXSTAT_RXB0 (1<<6) 00168 #define MCP_RXSTAT_RXB1 (2<<6) 00169 #define MCP_RXSTAT_BOTH (3<<6) 00170 00171 /** EFLG Register Values 00172 */ 00173 #define MCP_EFLG_ALLMASK (0xFF) // All Bits 00174 #define MCP_EFLG_ERRORMASK (0xF8) // 5 MS-Bits 00175 #define MCP_EFLG_WARNMASK (0x07) // 3 LS-Bits 00176 #define MCP_EFLG_EWARN (1<<0) 00177 #define MCP_EFLG_RXWAR (1<<1) 00178 #define MCP_EFLG_TXWAR (1<<2) 00179 #define MCP_EFLG_RXEP (1<<3) 00180 #define MCP_EFLG_TXEP (1<<4) 00181 #define MCP_EFLG_TXBO (1<<5) 00182 #define MCP_EFLG_RX0OVR (1<<6) 00183 #define MCP_EFLG_RX1OVR (1<<7) 00184 00185 /** CANCTRL Register Values 00186 */ 00187 #define CLKOUT_PS1 (0<<0) 00188 #define CLKOUT_PS2 (1<<0) 00189 #define CLKOUT_PS4 (2<<0) 00190 #define CLKOUT_PS8 (3<<0) 00191 #define CLKOUT_ENABLE (1<<2) 00192 #define CLKOUT_DISABLE (0<<2) 00193 #define MODE_ONESHOT (1<<3) 00194 #define ABORT_TX (1<<4) 00195 #define MODE_NORMAL (0<<5) 00196 #define MODE_SLEEP (1<<5) 00197 #define MODE_LOOPBACK (2<<5) 00198 #define MODE_LISTENONLY (3<<5) 00199 #define MODE_CONFIG (4<<5) 00200 #define MODE_POWERUP (7<<5) 00201 #define MODE_MASK (7<<5) 00202 00203 /** Bit Rate timing 00204 */ 00205 #define MCP_CLOCK_FREQ 16000000 // 16 MHz Crystal frequency 00206 #define CAN_SYNCSEG 1 // CAN-BUS Sync segment is always 1 Time Quantum 00207 #define CAN_MAX_RATE MCP_CLOCK_FREQ/(2 * MCP_MIN_TIME_QUANTA) 00208 #define CAN_MIN_RATE MCP_CLOCK_FREQ/(2 * MCP_MAX_PRESCALER * MCP_MAX_TIME_QUANTA) 00209 #define MCP_MAX_TIME_QUANTA 25 00210 #define MCP_MIN_TIME_QUANTA 8 00211 #define MCP_MAX_PRESCALER 64 00212 #define MCP_MIN_PRESCALER 1 00213 /** CNF1 Register Values 00214 */ 00215 #define SJW1 (0<<6) 00216 #define SJW2 (1<<6) 00217 #define SJW3 (2<<6) 00218 #define SJW4 (3<<6) 00219 /** CNF2 Register Values 00220 */ 00221 #define BTLMODE (1<<7) 00222 #define SAMPLE_1X (0<<4) 00223 #define SAMPLE_3X (1<<4) 00224 /** CNF3 Register Values 00225 */ 00226 #define WAKFIL_ENABLE (1<<4) 00227 #define WAKFIL_DISABLE (0<<4) 00228 #define SOF_ENABLE (1<<7) 00229 #define SOF_DISABLE (0<<7) 00230 /** CANINTF Register Bits 00231 */ 00232 #define MCP_NO_INTS (0x00) // Disable all interrupts 00233 #define MCP_ALL_INTS (0xFF) // All Bits 00234 #define MCP_RX_INTS (MCP_RX1IF | MCP_RX0IF) // Enable all receive interrupts 00235 #define MCP_TX_INTS (MCP_TX2IF | MCP_TX1IF | MCP_TX0IF) // Enable all transmit interrupts 00236 #define MCP_RX0IF (1<<0) 00237 #define MCP_RX1IF (1<<1) 00238 #define MCP_TX0IF (1<<2) 00239 #define MCP_TX1IF (1<<3) 00240 #define MCP_TX2IF (1<<4) 00241 #define MCP_ERRIF (1<<5) 00242 #define MCP_WAKIF (1<<6) 00243 #define MCP_MERRF (1<<7) 00244 00245 //#define MCP_RXBUF_0 (MCP_RXB0SIDH) 00246 //#define MCP_RXBUF_1 (MCP_RXB1SIDH) 00247 00248 #ifdef __cplusplus 00249 }; 00250 #endif 00251 00252 #endif // SEEED_CAN_DEFS_H 00253 /********************************************************************************************************* 00254 END FILE 00255 *********************************************************************************************************/
Generated on Tue Jul 12 2022 19:07:56 by
1.7.2
