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

Functions

constexpr uint32_t CAN_NBTP_H7 (uint32_t sjw, uint32_t prescaler, uint32_t seg1, uint32_t seg2)
 
constexpr uint32_t CAN_DBTP_H7 (uint32_t sjw, uint32_t prescaler, uint32_t seg1, uint32_t seg2)
 
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)
 
static __attribute__ ((unused)) bool isValidCan3RxPin(brain_pin_e)
 
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 canConfig666
 
static const CANConfig canConfig1000
 

Function Documentation

◆ __attribute__()

static __attribute__ ( (unused)  )
static

Definition at line 290 of file stm32_can.cpp.

290 {
291 return false;
292}

◆ CAN_DBTP_H7()

constexpr uint32_t CAN_DBTP_H7 ( uint32_t  sjw,
uint32_t  prescaler,
uint32_t  seg1,
uint32_t  seg2 
)
constexpr

Definition at line 58 of file stm32_can.cpp.

58 {
59 return ((prescaler-1) << 16) | ((seg1-1) << 8) | ((seg2-1)<<4) | (sjw-1);
60}

◆ CAN_NBTP_H7()

constexpr uint32_t CAN_NBTP_H7 ( uint32_t  sjw,
uint32_t  prescaler,
uint32_t  seg1,
uint32_t  seg2 
)
constexpr

Definition at line 55 of file stm32_can.cpp.

55 {
56 return ((sjw-1)<<24) | ((prescaler-1)<<16) | ((seg1-1)<<8) | (seg2-1);
57}

◆ canHwInfo()

void canHwInfo ( CANDriver *  cand)

Definition at line 353 of file stm32_can.cpp.

353 {
354 if (cand == NULL)
355 return;
356
357 if (cand->state != CAN_READY) {
358 efiPrintf("Interface is not ready");
359 return;
360 }
361
362#if STM32_CAN_USE_CAN1 || STM32_CAN_USE_CAN2
363 if (cand->can == NULL) {
364 efiPrintf("No device assigned!");
365 }
366
367 uint32_t esr = cand->can->ESR;
368 efiPrintf("Receive error counter %ld", (esr >> 24) & 0xff);
369 efiPrintf("Transmit error counter %ld", (esr >> 16) & 0xff);
370 efiPrintf("Last error %ld", (esr >> 4) & 0x7);
371 efiPrintf("Flags: %s %s %s",
372 (esr & 0x4) ? "BOFF" : "",
373 (esr & 0x2) ? "EPVF" : "",
374 (esr & 0x1) ? "EWGF" : "");
375#endif
376}
esr("WBO: ESR", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1956, 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 309 of file stm32_can.cpp.

309 {
310 if (pinRx == Gpio::Unassigned || pinTx == Gpio::Unassigned) {
311 return nullptr;
312 }
313#if STM32_CAN_USE_CAN1 || STM32_CAN_USE_FDCAN1
314 if (isValidCan1RxPin(pinRx) && isValidCan1TxPin(pinTx))
315 return &CAND1;
316#endif
317#if STM32_CAN_USE_CAN2 || STM32_CAN_USE_FDCAN2
318 if (isValidCan2RxPin(pinRx) && isValidCan2TxPin(pinTx))
319 return &CAND2;
320#endif
321#if STM32_CAN_USE_CAN3 || STM32_CAN_USE_FDCAN3
322 if (isValidCan3RxPin(pinRx) && isValidCan3TxPin(pinTx))
323 return &CAND3;
324#endif
325 criticalError("invalid CAN pins tx %s and rx %s", hwPortname(pinTx), hwPortname(pinRx));
326 return nullptr;
327}
@ 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 329 of file stm32_can.cpp.

329 {
330 switch (rate) {
331 case B33KBPS:
332 return &canConfig33;
333 case B50KBPS:
334 return &canConfig50;
335 case B83KBPS:
336 return &canConfig83;
337 case B100KBPS:
338 return &canConfig100;
339 case B125KBPS:
340 return &canConfig125;
341 case B250KBPS:
342 return &canConfig250;
343 case B666KBPS:
344 return &canConfig666;
345 case B1MBPS:
346 return &canConfig1000;
347 case B500KBPS:
348 default:
349 return &canConfig500;
350 }
351}
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
static const CANConfig canConfig250
static const CANConfig canConfig666
static const CANConfig canConfig100
static const CANConfig canConfig33

Referenced by CanInit().

Here is the caller graph for this function:

◆ isValidCan1RxPin()

static bool isValidCan1RxPin ( brain_pin_e  pin)
static

Definition at line 254 of file stm32_can.cpp.

254 {
255 return pin == Gpio::A11 || pin == Gpio::B8 || pin == Gpio::D0;
256}
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 258 of file stm32_can.cpp.

258 {
259 return pin == Gpio::A12 || pin == Gpio::B9 || pin == Gpio::D1;
260}

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 262 of file stm32_can.cpp.

262 {
263 return pin == Gpio::B5 || pin == Gpio::B12;
264}

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 266 of file stm32_can.cpp.

266 {
267 return pin == Gpio::B6 || pin == Gpio::B13;
268}

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 272 of file stm32_can.cpp.

272 {
273 return pin == Gpio::A8 || pin == Gpio::B3;
274}

Referenced by detectCanDevice().

Here is the caller graph for this function:

◆ isValidCan3TxPin()

static bool isValidCan3TxPin ( brain_pin_e  pin)
static

Definition at line 276 of file stm32_can.cpp.

276 {
277 return pin == Gpio::A15 || pin == Gpio::B4;
278}

Referenced by detectCanDevice().

Here is the caller graph for this function:

◆ isValidCanRxPin()

bool isValidCanRxPin ( brain_pin_e  pin)

Definition at line 305 of file stm32_can.cpp.

305 {
306 return isValidCan1RxPin(pin) || isValidCan2RxPin(pin) /* || isValidCan3RxPin(pin) */;
307}
Here is the call graph for this function:

◆ isValidCanTxPin()

bool isValidCanTxPin ( brain_pin_e  pin)

Definition at line 299 of file stm32_can.cpp.

299 {
300 // Note: different AF for CAN3 and CANFD3, so check for CAN1/CANFD1 and CAN2/CANFD2 only
301 // see startCanPins()
302 return isValidCan1TxPin(pin) || isValidCan2TxPin(pin) /* || isValidCan3TxPin(pin) */;
303}
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 132 of file stm32_can.cpp.

132 {
133 .mcr = STM32FxMCR,
134 .btr = CAN_BTR_100
135};

Referenced by findCanConfig().

◆ canConfig1000

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

Definition at line 157 of file stm32_can.cpp.

157 {
158 .mcr = STM32FxMCR,
159 .btr = CAN_BTR_1k0
160};

Referenced by findCanConfig().

◆ canConfig125

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

Definition at line 137 of file stm32_can.cpp.

137 {
138 .mcr = STM32FxMCR,
139 .btr = CAN_BTR_125
140};

Referenced by findCanConfig().

◆ canConfig250

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

Definition at line 142 of file stm32_can.cpp.

142 {
143 .mcr = STM32FxMCR,
144 .btr = CAN_BTR_250
145};

Referenced by findCanConfig().

◆ canConfig33

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

Definition at line 117 of file stm32_can.cpp.

117 {
118 .mcr = STM32FxMCR,
119 .btr = CAN_BTR_33
120};

Referenced by findCanConfig().

◆ canConfig50

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

Definition at line 122 of file stm32_can.cpp.

122 {
123 .mcr = STM32FxMCR,
124 .btr = CAN_BTR_50
125};

Referenced by findCanConfig().

◆ canConfig500

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

Definition at line 147 of file stm32_can.cpp.

147 {
148 .mcr = STM32FxMCR,
149 .btr = CAN_BTR_500
150};

Referenced by findCanConfig().

◆ canConfig666

static const CANConfig canConfig666
static
Initial value:
= {
.mcr = STM32FxMCR,
.btr = CAN_BTR_666
}

Definition at line 152 of file stm32_can.cpp.

152 {
153 .mcr = STM32FxMCR,
154 .btr = CAN_BTR_666
155};

Referenced by findCanConfig().

◆ canConfig83

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

Definition at line 127 of file stm32_can.cpp.

127 {
128 .mcr = STM32FxMCR,
129 .btr = CAN_BTR_83
130};

Referenced by findCanConfig().

Go to the source code of this file.