rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Functions | Variables
stm32_can.cpp File Reference

Functions

static bool isValidCan1RxPin (brain_pin_e pin)
 
static bool isValidCan1TxPin (brain_pin_e pin)
 
static bool isValidCan2RxPin (brain_pin_e pin)
 
static bool isValidCan2TxPin (brain_pin_e pin)
 
static bool isValidCan3RxPin (brain_pin_e pin)
 
static bool isValidCan3TxPin (brain_pin_e pin)
 
bool isValidCanTxPin (brain_pin_e pin)
 
bool isValidCanRxPin (brain_pin_e pin)
 
CANDriver * detectCanDevice (brain_pin_e pinRx, brain_pin_e pinTx)
 
const CANConfig * findCanConfig (can_baudrate_e rate)
 
void canHwInfo (CANDriver *cand)
 

Variables

static const CANConfig canConfig33
 
static const CANConfig canConfig50
 
static const CANConfig canConfig83
 
static const CANConfig canConfig100
 
static const CANConfig canConfig125
 
static const CANConfig canConfig250
 
static const CANConfig canConfig500
 
static const CANConfig canConfig1000
 

Function Documentation

◆ canHwInfo()

void canHwInfo ( CANDriver *  cand)

Definition at line 291 of file stm32_can.cpp.

291 {
292 if (cand == NULL)
293 return;
294
295 if (cand->state != CAN_READY) {
296 efiPrintf("Interface is not ready");
297 return;
298 }
299
300#if STM32_CAN_USE_CAN1 || STM32_CAN_USE_CAN2
301 if (cand->can == NULL) {
302 efiPrintf("No device assigned!");
303 }
304
305 uint32_t esr = cand->can->ESR;
306 efiPrintf("Receive error counter %ld", (esr >> 24) & 0xff);
307 efiPrintf("Transmit error counter %ld", (esr >> 16) & 0xff);
308 efiPrintf("Last error %ld", (esr >> 4) & 0x7);
309 efiPrintf("Flags: %s %s %s",
310 (esr & 0x4) ? "BOFF" : "",
311 (esr & 0x2) ? "EPVF" : "",
312 (esr & 0x1) ? "EWGF" : "");
313#endif
314}
esr("WBO: ESR", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1940, 1.0, 0.0, 10000.0, "ohm")
Here is the call graph for this function:

◆ detectCanDevice()

CANDriver * detectCanDevice ( brain_pin_e  pinRx,
brain_pin_e  pinTx 
)

Definition at line 249 of file stm32_can.cpp.

249 {
250 if (pinRx == Gpio::Unassigned || pinTx == Gpio::Unassigned) {
251 return nullptr;
252 }
253#if STM32_CAN_USE_CAN1 || STM32_CAN_USE_FDCAN1
254 if (isValidCan1RxPin(pinRx) && isValidCan1TxPin(pinTx))
255 return &CAND1;
256#endif
257#if STM32_CAN_USE_CAN2 || STM32_CAN_USE_FDCAN2
258 if (isValidCan2RxPin(pinRx) && isValidCan2TxPin(pinTx))
259 return &CAND2;
260#endif
261#if STM32_CAN_USE_CAN3 || STM32_CAN_USE_FDCAN3
262 if (isValidCan3RxPin(pinRx) && isValidCan3TxPin(pinTx))
263 return &CAND3;
264#endif
265 criticalError("invalid CAN pins tx %s and rx %s", hwPortname(pinTx), hwPortname(pinRx));
266 return nullptr;
267}
@ Unassigned
const char * hwPortname(brain_pin_e brainPin)
static bool isValidCan2RxPin(brain_pin_e pin)
static bool isValidCan3RxPin(brain_pin_e pin)
static bool isValidCan1RxPin(brain_pin_e pin)
static bool isValidCan2TxPin(brain_pin_e pin)
static bool isValidCan3TxPin(brain_pin_e pin)
static bool isValidCan1TxPin(brain_pin_e pin)
Here is the call graph for this function:

◆ findCanConfig()

const CANConfig * findCanConfig ( can_baudrate_e  rate)

Definition at line 269 of file stm32_can.cpp.

269 {
270 switch (rate) {
271 case B33KBPS:
272 return &canConfig33;
273 case B50KBPS:
274 return &canConfig50;
275 case B83KBPS:
276 return &canConfig83;
277 case B100KBPS:
278 return &canConfig100;
279 case B125KBPS:
280 return &canConfig125;
281 case B250KBPS:
282 return &canConfig250;
283 case B1MBPS:
284 return &canConfig1000;
285 case B500KBPS:
286 default:
287 return &canConfig500;
288 }
289}
uint32_t rate
Definition bluetooth.cpp:39
static const CANConfig canConfig500
static const CANConfig canConfig125
static const CANConfig canConfig1000
static const CANConfig canConfig83
static const CANConfig canConfig50
Definition stm32_can.cpp:98
static const CANConfig canConfig250
static const CANConfig canConfig100
static const CANConfig canConfig33
Definition stm32_can.cpp:93

Referenced by CanInit().

Here is the caller graph for this function:

◆ isValidCan1RxPin()

static bool isValidCan1RxPin ( brain_pin_e  pin)
static

Definition at line 215 of file stm32_can.cpp.

215 {
216 return pin == Gpio::A11 || pin == Gpio::B8 || pin == Gpio::D0;
217}
brain_pin_e pin
Definition stm32_adc.cpp:15

Referenced by detectCanDevice(), and isValidCanRxPin().

Here is the caller graph for this function:

◆ isValidCan1TxPin()

static bool isValidCan1TxPin ( brain_pin_e  pin)
static

Definition at line 219 of file stm32_can.cpp.

219 {
220 return pin == Gpio::A12 || pin == Gpio::B9 || pin == Gpio::D1;
221}

Referenced by detectCanDevice(), and isValidCanTxPin().

Here is the caller graph for this function:

◆ isValidCan2RxPin()

static bool isValidCan2RxPin ( brain_pin_e  pin)
static

Definition at line 223 of file stm32_can.cpp.

223 {
224 return pin == Gpio::B5 || pin == Gpio::B12;
225}

Referenced by detectCanDevice(), and isValidCanRxPin().

Here is the caller graph for this function:

◆ isValidCan2TxPin()

static bool isValidCan2TxPin ( brain_pin_e  pin)
static

Definition at line 227 of file stm32_can.cpp.

227 {
228 return pin == Gpio::B6 || pin == Gpio::B13;
229}

Referenced by detectCanDevice(), and isValidCanTxPin().

Here is the caller graph for this function:

◆ isValidCan3RxPin()

static bool isValidCan3RxPin ( brain_pin_e  pin)
static

Definition at line 232 of file stm32_can.cpp.

232 {
233 return pin == Gpio::A8 || pin == Gpio::B3;
234}

Referenced by detectCanDevice().

Here is the caller graph for this function:

◆ isValidCan3TxPin()

static bool isValidCan3TxPin ( brain_pin_e  pin)
static

Definition at line 236 of file stm32_can.cpp.

236 {
237 return pin == Gpio::A15 || pin == Gpio::B4;
238}

Referenced by detectCanDevice().

Here is the caller graph for this function:

◆ isValidCanRxPin()

bool isValidCanRxPin ( brain_pin_e  pin)

Definition at line 245 of file stm32_can.cpp.

245 {
247}
Here is the call graph for this function:

◆ isValidCanTxPin()

bool isValidCanTxPin ( brain_pin_e  pin)

Definition at line 241 of file stm32_can.cpp.

241 {
243}
Here is the call graph for this function:

Variable Documentation

◆ canConfig100

static const CANConfig canConfig100
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_100
}

Definition at line 108 of file stm32_can.cpp.

108 {
109 .mcr = STM32FxMCR,
110 .btr = CAN_BTR_100
111};

Referenced by findCanConfig().

◆ canConfig1000

static const CANConfig canConfig1000
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_1k0
}

Definition at line 128 of file stm32_can.cpp.

128 {
129 .mcr = STM32FxMCR,
130 .btr = CAN_BTR_1k0
131};

Referenced by findCanConfig().

◆ canConfig125

static const CANConfig canConfig125
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_125
}

Definition at line 113 of file stm32_can.cpp.

113 {
114 .mcr = STM32FxMCR,
115 .btr = CAN_BTR_125
116};

Referenced by findCanConfig().

◆ canConfig250

static const CANConfig canConfig250
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_250
}

Definition at line 118 of file stm32_can.cpp.

118 {
119 .mcr = STM32FxMCR,
120 .btr = CAN_BTR_250
121};

Referenced by findCanConfig().

◆ canConfig33

static const CANConfig canConfig33
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_33
}

Definition at line 93 of file stm32_can.cpp.

93 {
94 .mcr = STM32FxMCR,
95 .btr = CAN_BTR_33
96};

Referenced by findCanConfig().

◆ canConfig50

static const CANConfig canConfig50
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_50
}

Definition at line 98 of file stm32_can.cpp.

98 {
99 .mcr = STM32FxMCR,
100 .btr = CAN_BTR_50
101};

Referenced by findCanConfig().

◆ canConfig500

static const CANConfig canConfig500
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_500
}

Definition at line 123 of file stm32_can.cpp.

123 {
124 .mcr = STM32FxMCR,
125 .btr = CAN_BTR_500
126};

Referenced by findCanConfig().

◆ canConfig83

static const CANConfig canConfig83
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_83
}

Definition at line 103 of file stm32_can.cpp.

103 {
104 .mcr = STM32FxMCR,
105 .btr = CAN_BTR_83
106};

Referenced by findCanConfig().

Go to the source code of this file.