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)
 
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 canConfig1000
 

Function Documentation

◆ __attribute__()

static __attribute__ ( (unused)  )
static

Definition at line 253 of file stm32_can.cpp.

253 {
254 return false;
255}

◆ canHwInfo()

void canHwInfo ( CANDriver *  cand)

Definition at line 314 of file stm32_can.cpp.

314 {
315 if (cand == NULL)
316 return;
317
318 if (cand->state != CAN_READY) {
319 efiPrintf("Interface is not ready");
320 return;
321 }
322
323#if STM32_CAN_USE_CAN1 || STM32_CAN_USE_CAN2
324 if (cand->can == NULL) {
325 efiPrintf("No device assigned!");
326 }
327
328 uint32_t esr = cand->can->ESR;
329 efiPrintf("Receive error counter %ld", (esr >> 24) & 0xff);
330 efiPrintf("Transmit error counter %ld", (esr >> 16) & 0xff);
331 efiPrintf("Last error %ld", (esr >> 4) & 0x7);
332 efiPrintf("Flags: %s %s %s",
333 (esr & 0x4) ? "BOFF" : "",
334 (esr & 0x2) ? "EPVF" : "",
335 (esr & 0x1) ? "EWGF" : "");
336#endif
337}
esr("WBO: ESR", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 1948, 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 272 of file stm32_can.cpp.

272 {
273 if (pinRx == Gpio::Unassigned || pinTx == Gpio::Unassigned) {
274 return nullptr;
275 }
276#if STM32_CAN_USE_CAN1 || STM32_CAN_USE_FDCAN1
277 if (isValidCan1RxPin(pinRx) && isValidCan1TxPin(pinTx))
278 return &CAND1;
279#endif
280#if STM32_CAN_USE_CAN2 || STM32_CAN_USE_FDCAN2
281 if (isValidCan2RxPin(pinRx) && isValidCan2TxPin(pinTx))
282 return &CAND2;
283#endif
284#if STM32_CAN_USE_CAN3 || STM32_CAN_USE_FDCAN3
285 if (isValidCan3RxPin(pinRx) && isValidCan3TxPin(pinTx))
286 return &CAND3;
287#endif
288 criticalError("invalid CAN pins tx %s and rx %s", hwPortname(pinTx), hwPortname(pinRx));
289 return nullptr;
290}
@ 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 292 of file stm32_can.cpp.

292 {
293 switch (rate) {
294 case B33KBPS:
295 return &canConfig33;
296 case B50KBPS:
297 return &canConfig50;
298 case B83KBPS:
299 return &canConfig83;
300 case B100KBPS:
301 return &canConfig100;
302 case B125KBPS:
303 return &canConfig125;
304 case B250KBPS:
305 return &canConfig250;
306 case B1MBPS:
307 return &canConfig1000;
308 case B500KBPS:
309 default:
310 return &canConfig500;
311 }
312}
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 canConfig100
static const CANConfig canConfig33
Definition stm32_can.cpp:95

Referenced by CanInit().

Here is the caller graph for this function:

◆ isValidCan1RxPin()

static bool isValidCan1RxPin ( brain_pin_e  pin)
static

Definition at line 217 of file stm32_can.cpp.

217 {
218 return pin == Gpio::A11 || pin == Gpio::B8 || pin == Gpio::D0;
219}
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 221 of file stm32_can.cpp.

221 {
222 return pin == Gpio::A12 || pin == Gpio::B9 || pin == Gpio::D1;
223}

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

225 {
226 return pin == Gpio::B5 || pin == Gpio::B12;
227}

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

229 {
230 return pin == Gpio::B6 || pin == Gpio::B13;
231}

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

235 {
236 return pin == Gpio::A8 || pin == Gpio::B3;
237}

Referenced by detectCanDevice().

Here is the caller graph for this function:

◆ isValidCan3TxPin()

static bool isValidCan3TxPin ( brain_pin_e  pin)
static

Definition at line 239 of file stm32_can.cpp.

239 {
240 return pin == Gpio::A15 || pin == Gpio::B4;
241}

Referenced by detectCanDevice().

Here is the caller graph for this function:

◆ isValidCanRxPin()

bool isValidCanRxPin ( brain_pin_e  pin)

Definition at line 268 of file stm32_can.cpp.

268 {
269 return isValidCan1RxPin(pin) || isValidCan2RxPin(pin) /* || isValidCan3RxPin(pin) */;
270}
Here is the call graph for this function:

◆ isValidCanTxPin()

bool isValidCanTxPin ( brain_pin_e  pin)

Definition at line 262 of file stm32_can.cpp.

262 {
263 // Note: different AF for CAN3 and CANFD3, so check for CAN1/CANFD1 and CAN2/CANFD2 only
264 // see startCanPins()
265 return isValidCan1TxPin(pin) || isValidCan2TxPin(pin) /* || isValidCan3TxPin(pin) */;
266}
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 110 of file stm32_can.cpp.

110 {
111 .mcr = STM32FxMCR,
112 .btr = CAN_BTR_100
113};

Referenced by findCanConfig().

◆ canConfig1000

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

Definition at line 130 of file stm32_can.cpp.

130 {
131 .mcr = STM32FxMCR,
132 .btr = CAN_BTR_1k0
133};

Referenced by findCanConfig().

◆ canConfig125

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

Definition at line 115 of file stm32_can.cpp.

115 {
116 .mcr = STM32FxMCR,
117 .btr = CAN_BTR_125
118};

Referenced by findCanConfig().

◆ canConfig250

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

Definition at line 120 of file stm32_can.cpp.

120 {
121 .mcr = STM32FxMCR,
122 .btr = CAN_BTR_250
123};

Referenced by findCanConfig().

◆ canConfig33

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

Definition at line 95 of file stm32_can.cpp.

95 {
96 .mcr = STM32FxMCR,
97 .btr = CAN_BTR_33
98};

Referenced by findCanConfig().

◆ canConfig50

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

Definition at line 100 of file stm32_can.cpp.

100 {
101 .mcr = STM32FxMCR,
102 .btr = CAN_BTR_50
103};

Referenced by findCanConfig().

◆ canConfig500

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

Definition at line 125 of file stm32_can.cpp.

125 {
126 .mcr = STM32FxMCR,
127 .btr = CAN_BTR_500
128};

Referenced by findCanConfig().

◆ canConfig83

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

Definition at line 105 of file stm32_can.cpp.

105 {
106 .mcr = STM32FxMCR,
107 .btr = CAN_BTR_83
108};

Referenced by findCanConfig().

Go to the source code of this file.