22
33// board-specific stuff shared between bootloader and firmware
44
5+ static const CANConfig canConfig125 =
6+ {
7+ CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_TXFP ,
8+ /*
9+ For 32MHz http://www.bittiming.can-wiki.info/ gives us Pre-scaler=16, Seq 1=13 and Seq 2=2. Subtract '1' for register values
10+ */
11+ CAN_BTR_SJW (0 ) | CAN_BTR_BRP (16 - 1 ) | CAN_BTR_TS1 (13 - 1 ) | CAN_BTR_TS2 (2 - 1 ),
12+ };
13+
14+ static const CANConfig canConfig250 =
15+ {
16+ CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_TXFP ,
17+ /*
18+ For 32MHz http://www.bittiming.can-wiki.info/ gives us Pre-scaler=8, Seq 1=13 and Seq 2=2. Subtract '1' for register values
19+ */
20+ CAN_BTR_SJW (0 ) | CAN_BTR_BRP (8 - 1 ) | CAN_BTR_TS1 (13 - 1 ) | CAN_BTR_TS2 (2 - 1 ),
21+ };
22+
523static const CANConfig canConfig500 =
624{
725 CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_TXFP ,
@@ -11,6 +29,27 @@ static const CANConfig canConfig500 =
1129 CAN_BTR_SJW (0 ) | CAN_BTR_BRP (4 - 1 ) | CAN_BTR_TS1 (13 - 1 ) | CAN_BTR_TS2 (2 - 1 ),
1230};
1331
14- const CANConfig& GetCanConfig (uint8_t mode) {
32+ static const CANConfig canConfig1000 =
33+ {
34+ CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_TXFP ,
35+ /*
36+ For 32MHz http://www.bittiming.can-wiki.info/ gives us Pre-scaler=2, Seq 1=13 and Seq 2=2. Subtract '1' for register values
37+ */
38+ CAN_BTR_SJW (0 ) | CAN_BTR_BRP (2 - 1 ) | CAN_BTR_TS1 (13 - 1 ) | CAN_BTR_TS2 (2 - 1 ),
39+ };
40+
41+ const CANConfig& GetCanConfig (CanBaudRate baudRate) {
42+ switch (baudRate) {
43+ case CanBaudRate::Baud500Kbps:
44+ return canConfig500;
45+ case CanBaudRate::Baud1Mbps:
46+ return canConfig1000;
47+ case CanBaudRate::Baud125Kbps:
48+ return canConfig125;
49+ case CanBaudRate::Baud250Kbps:
50+ return canConfig250;
51+ }
52+
53+ // default to 500kbps
1554 return canConfig500;
1655}
0 commit comments