Skip to content

Commit 1a96fc4

Browse files
authored
Add more line speeds to mcp2515.go (#626)
mcp2515: adding the possibility to configure lower line speeds on the CAN bus.
1 parent 3fabdc5 commit 1a96fc4

File tree

1 file changed

+112
-1
lines changed

1 file changed

+112
-1
lines changed

mcp2515/mcp2515.go

+112-1
Original file line numberDiff line numberDiff line change
@@ -236,16 +236,83 @@ func (d *Device) getMode() (byte, error) {
236236
}
237237

238238
func (d *Device) configRate(speed, clock byte) error {
239-
// TODO: add another baudrate
240239
var cfg1, cfg2, cfg3 byte
241240
set := true
242241
switch clock {
243242
case Clock16MHz:
244243
switch speed {
244+
case CAN5kBps:
245+
cfg1 = mcp16mHz5kBpsCfg1
246+
cfg2 = mcp16mHz5kBpsCfg2
247+
cfg3 = mcp16mHz5kBpsCfg3
248+
case CAN10kBps:
249+
cfg1 = mcp16mHz10kBpsCfg1
250+
cfg2 = mcp16mHz10kBpsCfg2
251+
cfg3 = mcp16mHz10kBpsCfg3
252+
case CAN20kBps:
253+
cfg1 = mcp16mHz20kBpsCfg1
254+
cfg2 = mcp16mHz20kBpsCfg2
255+
cfg3 = mcp16mHz20kBpsCfg3
256+
case CAN25kBps:
257+
cfg1 = mcp16mHz25kBpsCfg1
258+
cfg2 = mcp16mHz25kBpsCfg2
259+
cfg3 = mcp16mHz25kBpsCfg3
260+
case CAN31k25Bps:
261+
cfg1 = mcp16mHz31k25BpsCfg1
262+
cfg2 = mcp16mHz31k25BpsCfg2
263+
cfg3 = mcp16mHz31k25BpsCfg3
264+
case CAN33kBps:
265+
cfg1 = mcp16mHz33kBpsCfg1
266+
cfg2 = mcp16mHz33kBpsCfg2
267+
cfg3 = mcp16mHz33kBpsCfg3
268+
case CAN40kBps:
269+
cfg1 = mcp16mHz40kBpsCfg1
270+
cfg2 = mcp16mHz40kBpsCfg2
271+
cfg3 = mcp16mHz40kBpsCfg3
272+
case CAN47kBps:
273+
cfg1 = mcp16mHz47kBpsCfg1
274+
cfg2 = mcp16mHz47kBpsCfg2
275+
cfg3 = mcp16mHz47kBpsCfg3
276+
case CAN50kBps:
277+
cfg1 = mcp16mHz50kBpsCfg1
278+
cfg2 = mcp16mHz50kBpsCfg2
279+
cfg3 = mcp16mHz50kBpsCfg3
280+
case CAN80kBps:
281+
cfg1 = mcp16mHz80kBpsCfg1
282+
cfg2 = mcp16mHz80kBpsCfg2
283+
cfg3 = mcp16mHz80kBpsCfg3
284+
case CAN83k3Bps:
285+
cfg1 = mcp16mHz83k3BpsCfg1
286+
cfg2 = mcp16mHz83k3BpsCfg2
287+
cfg3 = mcp16mHz83k3BpsCfg3
288+
case CAN95kBps:
289+
cfg1 = mcp16mHz95kBpsCfg1
290+
cfg2 = mcp16mHz95kBpsCfg2
291+
cfg3 = mcp16mHz95kBpsCfg3
292+
case CAN100kBps:
293+
cfg1 = mcp16mHz100kBpsCfg1
294+
cfg2 = mcp16mHz100kBpsCfg2
295+
cfg3 = mcp16mHz100kBpsCfg3
296+
case CAN125kBps:
297+
cfg1 = mcp16mHz125kBpsCfg1
298+
cfg2 = mcp16mHz125kBpsCfg2
299+
cfg3 = mcp16mHz125kBpsCfg3
300+
case CAN200kBps:
301+
cfg1 = mcp16mHz200kBpsCfg1
302+
cfg2 = mcp16mHz200kBpsCfg2
303+
cfg3 = mcp16mHz200kBpsCfg3
304+
case CAN250kBps:
305+
cfg1 = mcp16mHz250kBpsCfg1
306+
cfg2 = mcp16mHz250kBpsCfg2
307+
cfg3 = mcp16mHz250kBpsCfg3
245308
case CAN500kBps:
246309
cfg1 = mcp16mHz500kBpsCfg1
247310
cfg2 = mcp16mHz500kBpsCfg2
248311
cfg3 = mcp16mHz500kBpsCfg3
312+
case CAN666kBps:
313+
cfg1 = mcp16mHz666kBpsCfg1
314+
cfg2 = mcp16mHz666kBpsCfg2
315+
cfg3 = mcp16mHz666kBpsCfg3
249316
case CAN1000kBps:
250317
cfg1 = mcp16mHz1000kBpsCfg1
251318
cfg2 = mcp16mHz1000kBpsCfg2
@@ -255,6 +322,50 @@ func (d *Device) configRate(speed, clock byte) error {
255322
}
256323
case Clock8MHz:
257324
switch speed {
325+
case CAN5kBps:
326+
cfg1 = mcp8mHz5kBpsCfg1
327+
cfg2 = mcp8mHz5kBpsCfg2
328+
cfg3 = mcp8mHz5kBpsCfg3
329+
case CAN10kBps:
330+
cfg1 = mcp8mHz10kBpsCfg1
331+
cfg2 = mcp8mHz10kBpsCfg2
332+
cfg3 = mcp8mHz10kBpsCfg3
333+
case CAN20kBps:
334+
cfg1 = mcp8mHz20kBpsCfg1
335+
cfg2 = mcp8mHz20kBpsCfg2
336+
cfg3 = mcp8mHz20kBpsCfg3
337+
case CAN31k25Bps:
338+
cfg1 = mcp8mHz31k25BpsCfg1
339+
cfg2 = mcp8mHz31k25BpsCfg2
340+
cfg3 = mcp8mHz31k25BpsCfg3
341+
case CAN40kBps:
342+
cfg1 = mcp8mHz40kBpsCfg1
343+
cfg2 = mcp8mHz40kBpsCfg2
344+
cfg3 = mcp8mHz40kBpsCfg3
345+
case CAN50kBps:
346+
cfg1 = mcp8mHz50kBpsCfg1
347+
cfg2 = mcp8mHz50kBpsCfg2
348+
cfg3 = mcp8mHz50kBpsCfg3
349+
case CAN80kBps:
350+
cfg1 = mcp8mHz80kBpsCfg1
351+
cfg2 = mcp8mHz80kBpsCfg2
352+
cfg3 = mcp8mHz80kBpsCfg3
353+
case CAN100kBps:
354+
cfg1 = mcp8mHz100kBpsCfg1
355+
cfg2 = mcp8mHz100kBpsCfg2
356+
cfg3 = mcp8mHz100kBpsCfg3
357+
case CAN125kBps:
358+
cfg1 = mcp8mHz125kBpsCfg1
359+
cfg2 = mcp8mHz125kBpsCfg2
360+
cfg3 = mcp8mHz125kBpsCfg3
361+
case CAN200kBps:
362+
cfg1 = mcp8mHz200kBpsCfg1
363+
cfg2 = mcp8mHz200kBpsCfg2
364+
cfg3 = mcp8mHz200kBpsCfg3
365+
case CAN250kBps:
366+
cfg1 = mcp8mHz250kBpsCfg1
367+
cfg2 = mcp8mHz250kBpsCfg2
368+
cfg3 = mcp8mHz250kBpsCfg3
258369
case CAN500kBps:
259370
cfg1 = mcp8mHz500kBpsCfg1
260371
cfg2 = mcp8mHz500kBpsCfg2

0 commit comments

Comments
 (0)