ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
mcp2515_defs.h
Go to the documentation of this file.
1#pragma once
2
3namespace esphome::mcp2515 {
4
5static const uint8_t CANCTRL_REQOP = 0xE0;
6static const uint8_t CANCTRL_ABAT = 0x10;
7static const uint8_t CANCTRL_OSM = 0x08;
8static const uint8_t CANCTRL_CLKEN = 0x04;
9static const uint8_t CANCTRL_CLKPRE = 0x03;
10
19
20enum TxbNCtrl : uint8_t {
21 TXB_ABTF = 0x40,
22 TXB_MLOA = 0x20,
23 TXB_TXERR = 0x10,
24 TXB_TXREQ = 0x08,
25 TXB_TXIE = 0x04,
26 TXB_TXP = 0x03
27};
28
46
47enum REGISTER : uint8_t {
74 MCP_TEC = 0x1C,
75 MCP_REC = 0x1D,
84 MCP_CNF3 = 0x28,
85 MCP_CNF2 = 0x29,
86 MCP_CNF1 = 0x2A,
89 MCP_EFLG = 0x2D,
124 MCP_RXB1DATA = 0x76
126
127static const uint8_t CANSTAT_OPMOD = 0xE0;
128static const uint8_t CANSTAT_ICOD = 0x0E;
129
130static const uint8_t CNF3_SOF = 0x80;
131
132// applies to RXBn_SIDL, TXBn_SIDL and RXFn_SIDL
133static const uint8_t SIDL_EXIDE_MASK = 0x08;
134
135static const uint8_t DLC_MASK = 0x0F;
136static const uint8_t RTR_MASK = 0x40;
137
138static const uint8_t RXB_CTRL_RXM_STD = 0x20;
139static const uint8_t RXB_CTRL_RXM_EXT = 0x40;
140static const uint8_t RXB_CTRL_RXM_STDEXT = 0x00;
141static const uint8_t RXB_CTRL_RXM_MASK = 0x60;
142static const uint8_t RXB_CTRL_RTR = 0x08;
143static const uint8_t RXB_0_CTRL_BUKT = 0x04;
144
145static const uint8_t MCP_SIDH = 0;
146static const uint8_t MCP_SIDL = 1;
147static const uint8_t MCP_EID8 = 2;
148static const uint8_t MCP_EID0 = 3;
149static const uint8_t MCP_DLC = 4;
150static const uint8_t MCP_DATA = 5;
151
152/*
153 * Speed 8M
154 */
155static const uint8_t MCP_8MHZ_1000KBPS_CFG1 = 0x00;
156static const uint8_t MCP_8MHZ_1000KBPS_CFG2 = 0x80;
157static const uint8_t MCP_8MHZ_1000KBPS_CFG3 = 0x80;
158
159static const uint8_t MCP_8MHZ_500KBPS_CFG1 = 0x00;
160static const uint8_t MCP_8MHZ_500KBPS_CFG2 = 0x90;
161static const uint8_t MCP_8MHZ_500KBPS_CFG3 = 0x82;
162
163static const uint8_t MCP_8MHZ_250KBPS_CFG1 = 0x00;
164static const uint8_t MCP_8MHZ_250KBPS_CFG2 = 0xB1;
165static const uint8_t MCP_8MHZ_250KBPS_CFG3 = 0x85;
166
167static const uint8_t MCP_8MHZ_200KBPS_CFG1 = 0x00;
168static const uint8_t MCP_8MHZ_200KBPS_CFG2 = 0xB4;
169static const uint8_t MCP_8MHZ_200KBPS_CFG3 = 0x86;
170
171static const uint8_t MCP_8MHZ_125KBPS_CFG1 = 0x01;
172static const uint8_t MCP_8MHZ_125KBPS_CFG2 = 0xB1;
173static const uint8_t MCP_8MHZ_125KBPS_CFG3 = 0x85;
174
175static const uint8_t MCP_8MHZ_100KBPS_CFG1 = 0x01;
176static const uint8_t MCP_8MHZ_100KBPS_CFG2 = 0xB4;
177static const uint8_t MCP_8MHZ_100KBPS_CFG3 = 0x86;
178
179static const uint8_t MCP_8MHZ_80KBPS_CFG1 = 0x01;
180static const uint8_t MCP_8MHZ_80KBPS_CFG2 = 0xBF;
181static const uint8_t MCP_8MHZ_80KBPS_CFG3 = 0x87;
182
183static const uint8_t MCP_8MHZ_50KBPS_CFG1 = 0x03;
184static const uint8_t MCP_8MHZ_50KBPS_CFG2 = 0xB4;
185static const uint8_t MCP_8MHZ_50KBPS_CFG3 = 0x86;
186
187static const uint8_t MCP_8MHZ_40KBPS_CFG1 = 0x03;
188static const uint8_t MCP_8MHZ_40KBPS_CFG2 = 0xBF;
189static const uint8_t MCP_8MHZ_40KBPS_CFG3 = 0x87;
190
191static const uint8_t MCP_8MHZ_33K3BPS_CFG1 = 0x47;
192static const uint8_t MCP_8MHZ_33K3BPS_CFG2 = 0xE2;
193static const uint8_t MCP_8MHZ_33K3BPS_CFG3 = 0x85;
194
195static const uint8_t MCP_8MHZ_31K25BPS_CFG1 = 0x07;
196static const uint8_t MCP_8MHZ_31K25BPS_CFG2 = 0xA4;
197static const uint8_t MCP_8MHZ_31K25BPS_CFG3 = 0x84;
198
199static const uint8_t MCP_8MHZ_20KBPS_CFG1 = 0x07;
200static const uint8_t MCP_8MHZ_20KBPS_CFG2 = 0xBF;
201static const uint8_t MCP_8MHZ_20KBPS_CFG3 = 0x87;
202
203static const uint8_t MCP_8MHZ_10KBPS_CFG1 = 0x0F;
204static const uint8_t MCP_8MHZ_10KBPS_CFG2 = 0xBF;
205static const uint8_t MCP_8MHZ_10KBPS_CFG3 = 0x87;
206
207static const uint8_t MCP_8MHZ_5KBPS_CFG1 = 0x1F;
208static const uint8_t MCP_8MHZ_5KBPS_CFG2 = 0xBF;
209static const uint8_t MCP_8MHZ_5KBPS_CFG3 = 0x87;
210
211/*
212 * Speed 12M
213 */
214
215static const uint8_t MCP_12MHZ_1000KBPS_CFG1 = 0x00;
216static const uint8_t MCP_12MHZ_1000KBPS_CFG2 = 0x88;
217static const uint8_t MCP_12MHZ_1000KBPS_CFG3 = 0x81;
218
219static const uint8_t MCP_12MHZ_500KBPS_CFG1 = 0x00;
220static const uint8_t MCP_12MHZ_500KBPS_CFG2 = 0x9B;
221static const uint8_t MCP_12MHZ_500KBPS_CFG3 = 0x82;
222
223static const uint8_t MCP_12MHZ_250KBPS_CFG1 = 0x01;
224static const uint8_t MCP_12MHZ_250KBPS_CFG2 = 0x9B;
225static const uint8_t MCP_12MHZ_250KBPS_CFG3 = 0x82;
226
227static const uint8_t MCP_12MHZ_200KBPS_CFG1 = 0x01;
228static const uint8_t MCP_12MHZ_200KBPS_CFG2 = 0xA4;
229static const uint8_t MCP_12MHZ_200KBPS_CFG3 = 0x83;
230
231static const uint8_t MCP_12MHZ_125KBPS_CFG1 = 0x03;
232static const uint8_t MCP_12MHZ_125KBPS_CFG2 = 0x9B;
233static const uint8_t MCP_12MHZ_125KBPS_CFG3 = 0x82;
234
235static const uint8_t MCP_12MHZ_100KBPS_CFG1 = 0x03;
236static const uint8_t MCP_12MHZ_100KBPS_CFG2 = 0xA4;
237static const uint8_t MCP_12MHZ_100KBPS_CFG3 = 0x83;
238
239static const uint8_t MCP_12MHZ_80KBPS_CFG1 = 0x04;
240static const uint8_t MCP_12MHZ_80KBPS_CFG2 = 0xA4;
241static const uint8_t MCP_12MHZ_80KBPS_CFG3 = 0x83;
242
243static const uint8_t MCP_12MHZ_50KBPS_CFG1 = 0x07;
244static const uint8_t MCP_12MHZ_50KBPS_CFG2 = 0xA4;
245static const uint8_t MCP_12MHZ_50KBPS_CFG3 = 0x83;
246
247static const uint8_t MCP_12MHZ_40KBPS_CFG1 = 0x09;
248static const uint8_t MCP_12MHZ_40KBPS_CFG2 = 0xA4;
249static const uint8_t MCP_12MHZ_40KBPS_CFG3 = 0x83;
250
251static const uint8_t MCP_12MHZ_33K3BPS_CFG1 = 0x08;
252static const uint8_t MCP_12MHZ_33K3BPS_CFG2 = 0xB6;
253static const uint8_t MCP_12MHZ_33K3BPS_CFG3 = 0x84;
254
255static const uint8_t MCP_12MHZ_20KBPS_CFG1 = 0x0E;
256static const uint8_t MCP_12MHZ_20KBPS_CFG2 = 0xB6;
257static const uint8_t MCP_12MHZ_20KBPS_CFG3 = 0x84;
258
259static const uint8_t MCP_12MHZ_10KBPS_CFG1 = 0x31;
260static const uint8_t MCP_12MHZ_10KBPS_CFG2 = 0x9B;
261static const uint8_t MCP_12MHZ_10KBPS_CFG3 = 0x82;
262
263static const uint8_t MCP_12MHZ_5KBPS_CFG1 = 0x3B;
264static const uint8_t MCP_12MHZ_5KBPS_CFG2 = 0xB6;
265static const uint8_t MCP_12MHZ_5KBPS_CFG3 = 0x84;
266
267/*
268 * speed 16M
269 */
270static const uint8_t MCP_16MHZ_1000KBPS_CFG1 = 0x00;
271static const uint8_t MCP_16MHZ_1000KBPS_CFG2 = 0xD0;
272static const uint8_t MCP_16MHZ_1000KBPS_CFG3 = 0x82;
273
274static const uint8_t MCP_16MHZ_500KBPS_CFG1 = 0x00;
275static const uint8_t MCP_16MHZ_500KBPS_CFG2 = 0xF0;
276static const uint8_t MCP_16MHZ_500KBPS_CFG3 = 0x86;
277
278static const uint8_t MCP_16MHZ_250KBPS_CFG1 = 0x41;
279static const uint8_t MCP_16MHZ_250KBPS_CFG2 = 0xF1;
280static const uint8_t MCP_16MHZ_250KBPS_CFG3 = 0x85;
281
282static const uint8_t MCP_16MHZ_200KBPS_CFG1 = 0x01;
283static const uint8_t MCP_16MHZ_200KBPS_CFG2 = 0xFA;
284static const uint8_t MCP_16MHZ_200KBPS_CFG3 = 0x87;
285
286static const uint8_t MCP_16MHZ_125KBPS_CFG1 = 0x03;
287static const uint8_t MCP_16MHZ_125KBPS_CFG2 = 0xF0;
288static const uint8_t MCP_16MHZ_125KBPS_CFG3 = 0x86;
289
290static const uint8_t MCP_16MHZ_100KBPS_CFG1 = 0x03;
291static const uint8_t MCP_16MHZ_100KBPS_CFG2 = 0xFA;
292static const uint8_t MCP_16MHZ_100KBPS_CFG3 = 0x87;
293
294static const uint8_t MCP_16MHZ_80KBPS_CFG1 = 0x03;
295static const uint8_t MCP_16MHZ_80KBPS_CFG2 = 0xFF;
296static const uint8_t MCP_16MHZ_80KBPS_CFG3 = 0x87;
297
298static const uint8_t MCP_16MHZ_83K3BPS_CFG1 = 0x03;
299static const uint8_t MCP_16MHZ_83K3BPS_CFG2 = 0xBE;
300static const uint8_t MCP_16MHZ_83K3BPS_CFG3 = 0x07;
301
302static const uint8_t MCP_16MHZ_50KBPS_CFG1 = 0x07;
303static const uint8_t MCP_16MHZ_50KBPS_CFG2 = 0xFA;
304static const uint8_t MCP_16MHZ_50KBPS_CFG3 = 0x87;
305
306static const uint8_t MCP_16MHZ_40KBPS_CFG1 = 0x07;
307static const uint8_t MCP_16MHZ_40KBPS_CFG2 = 0xFF;
308static const uint8_t MCP_16MHZ_40KBPS_CFG3 = 0x87;
309
310static const uint8_t MCP_16MHZ_33K3BPS_CFG1 = 0x4E;
311static const uint8_t MCP_16MHZ_33K3BPS_CFG2 = 0xF1;
312static const uint8_t MCP_16MHZ_33K3BPS_CFG3 = 0x85;
313
314static const uint8_t MCP_16MHZ_20KBPS_CFG1 = 0x0F;
315static const uint8_t MCP_16MHZ_20KBPS_CFG2 = 0xFF;
316static const uint8_t MCP_16MHZ_20KBPS_CFG3 = 0x87;
317
318static const uint8_t MCP_16MHZ_10KBPS_CFG1 = 0x1F;
319static const uint8_t MCP_16MHZ_10KBPS_CFG2 = 0xFF;
320static const uint8_t MCP_16MHZ_10KBPS_CFG3 = 0x87;
321
322static const uint8_t MCP_16MHZ_5KBPS_CFG1 = 0x3F;
323static const uint8_t MCP_16MHZ_5KBPS_CFG2 = 0xFF;
324static const uint8_t MCP_16MHZ_5KBPS_CFG3 = 0x87;
325
326/*
327 * speed 20M
328 */
329static const uint8_t MCP_20MHZ_1000KBPS_CFG1 = 0x00;
330static const uint8_t MCP_20MHZ_1000KBPS_CFG2 = 0xD9;
331static const uint8_t MCP_20MHZ_1000KBPS_CFG3 = 0x82;
332
333static const uint8_t MCP_20MHZ_500KBPS_CFG1 = 0x00;
334static const uint8_t MCP_20MHZ_500KBPS_CFG2 = 0xFA;
335static const uint8_t MCP_20MHZ_500KBPS_CFG3 = 0x87;
336
337static const uint8_t MCP_20MHZ_250KBPS_CFG1 = 0x41;
338static const uint8_t MCP_20MHZ_250KBPS_CFG2 = 0xFB;
339static const uint8_t MCP_20MHZ_250KBPS_CFG3 = 0x86;
340
341static const uint8_t MCP_20MHZ_200KBPS_CFG1 = 0x01;
342static const uint8_t MCP_20MHZ_200KBPS_CFG2 = 0xFF;
343static const uint8_t MCP_20MHZ_200KBPS_CFG3 = 0x87;
344
345static const uint8_t MCP_20MHZ_125KBPS_CFG1 = 0x03;
346static const uint8_t MCP_20MHZ_125KBPS_CFG2 = 0xFA;
347static const uint8_t MCP_20MHZ_125KBPS_CFG3 = 0x87;
348
349static const uint8_t MCP_20MHZ_100KBPS_CFG1 = 0x04;
350static const uint8_t MCP_20MHZ_100KBPS_CFG2 = 0xFA;
351static const uint8_t MCP_20MHZ_100KBPS_CFG3 = 0x87;
352
353static const uint8_t MCP_20MHZ_83K3BPS_CFG1 = 0x04;
354static const uint8_t MCP_20MHZ_83K3BPS_CFG2 = 0xFE;
355static const uint8_t MCP_20MHZ_83K3BPS_CFG3 = 0x87;
356
357static const uint8_t MCP_20MHZ_80KBPS_CFG1 = 0x04;
358static const uint8_t MCP_20MHZ_80KBPS_CFG2 = 0xFF;
359static const uint8_t MCP_20MHZ_80KBPS_CFG3 = 0x87;
360
361static const uint8_t MCP_20MHZ_50KBPS_CFG1 = 0x09;
362static const uint8_t MCP_20MHZ_50KBPS_CFG2 = 0xFA;
363static const uint8_t MCP_20MHZ_50KBPS_CFG3 = 0x87;
364
365static const uint8_t MCP_20MHZ_40KBPS_CFG1 = 0x09;
366static const uint8_t MCP_20MHZ_40KBPS_CFG2 = 0xFF;
367static const uint8_t MCP_20MHZ_40KBPS_CFG3 = 0x87;
368
369static const uint8_t MCP_20MHZ_33K3BPS_CFG1 = 0x0B;
370static const uint8_t MCP_20MHZ_33K3BPS_CFG2 = 0xFF;
371static const uint8_t MCP_20MHZ_33K3BPS_CFG3 = 0x87;
372
373} // namespace esphome::mcp2515