Loading...
Searching...
No Matches
mcp2515.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 OTA keys S.A.
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
20
21#include "mcp2515_defines.h"
22#include "candev_mcp2515.h"
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
32 MODE_NORMAL = MCP2515_CANSTAT_OPMOD_NORMAL,
33 MODE_SLEEP = MCP2515_CANSTAT_OPMOD_SLEEP,
34 MODE_LOOPBACK = MCP2515_CANSTAT_OPMOD_LOOPBACK,
35 MODE_LISTEN_ONLY = MCP2515_CANSTAT_OPMOD_LISTEN_ONLY,
36 MODE_CONFIG = MCP2515_CANSTAT_OPMOD_CONFIGURATION,
37 MODE_UNKNOWN = -1
38};
39
44 INT_RX0 = MCP2515_CANINTF_RX0IF,
45 INT_RX1 = MCP2515_CANINTF_RX1IF,
46 INT_TX0 = MCP2515_CANINTF_TX0IF,
47 INT_TX1 = MCP2515_CANINTF_TX1IF,
48 INT_TX2 = MCP2515_CANINTF_TX2IF,
49 INT_ERROR = MCP2515_CANINTF_ERRIF,
50 INT_WAKEUP = MCP2515_CANINTF_WAKIF,
51 INT_MESSAGE_ERROR = MCP2515_CANINTF_MERRF,
52};
53
58 ERR_WARNING = MCP2515_EFLG_EWARN,
59 ERR_RX_WARNING = MCP2515_EFLG_RXWAR,
60 ERR_TX_WARNING = MCP2515_EFLG_TXWAR,
61 ERR_RX_PASSIVE = MCP2515_EFLG_RXEP,
62 ERR_TX_PASSIVE = MCP2515_EFLG_TXEP,
63 ERR_TX_BUS_OFF = MCP2515_EFLG_TXBO,
64 ERR_RX_0_OVERFLOW = MCP2515_EFLG_RX0OVR,
65 ERR_RX_1_OVERFLOW = MCP2515_EFLG_RX1OVR,
66};
67
69#define MCP2515_WKUP_SRC_INTERNAL 1
70
72#ifndef MCP2515_RECV_FILTER_EN
73#define MCP2515_RECV_FILTER_EN 0
74#endif
75
92int mcp2515_init(candev_mcp2515_t *dev, void (*irq_cb)(void *));
93
102
112
123int mcp2515_send(candev_mcp2515_t *dev, const struct can_frame *frame,
124 int mailbox);
125
137 int mailbox);
138
148int mcp2515_abort(candev_mcp2515_t *dev, int mailbox);
149
158
168 enum mcp2515_mode mode);
169
176
185
196
207
219
228
260int mcp2515_set_filter(candev_mcp2515_t *dev, int filter_id, uint32_t filter);
261
289int mcp2515_set_mask(candev_mcp2515_t *dev, int mailbox, uint32_t mask);
290
291#ifdef __cplusplus
292}
293#endif
294
Definition of the implementation of the CAN controller driver.
struct candev_mcp2515 candev_mcp2515_t
MCP2515 candev descriptor.
int mcp2515_tx_err_occurred(candev_mcp2515_t *dev, int mailbox)
Get if an tx error occurred on MCP2515.
mcp2515_error
MCP2515 error.
Definition mcp2515.h:57
int mcp2515_abort(candev_mcp2515_t *dev, int mailbox)
Abort communication.
int mcp2515_send(candev_mcp2515_t *dev, const struct can_frame *frame, int mailbox)
Send frame through the corresponding tx mailbox.
int mcp2515_set_mask(candev_mcp2515_t *dev, int mailbox, uint32_t mask)
Set the @ mask to the mailbox.
int mcp2515_receive(candev_mcp2515_t *dev, struct can_frame *frame, int mailbox)
Receive frame from the corresponding rx mailbox.
void mcp2515_reset(candev_mcp2515_t *dev)
Reset MCP2515 device with dedicated pin.
enum mcp2515_mode mcp2515_get_mode(candev_mcp2515_t *dev)
Get MCP2515 mode of operation.
int mcp2515_init(candev_mcp2515_t *dev, void(*irq_cb)(void *))
Initialize pins and SPI interface.
void mcp2515_wake_up(candev_mcp2515_t *dev)
Wake up MCP2515.
enum mcp2515_mode mcp2515_set_mode(candev_mcp2515_t *dev, enum mcp2515_mode mode)
Set MCP2515 mode of operation.
int mcp2515_init_irqs(candev_mcp2515_t *dev)
Initialize MCP2515 interrupts.
int mcp2515_clear_irq(candev_mcp2515_t *dev, enum mcp2515_interrupt irq)
Clear MCP2515 interrupt.
mcp2515_mode
MCP2515 mode.
Definition mcp2515.h:31
mcp2515_interrupt
MCP2515 interrupt.
Definition mcp2515.h:43
int mcp2515_configure_bittiming(candev_mcp2515_t *dev)
Configure the bit timing of the MCP2515.
int mcp2515_set_filter(candev_mcp2515_t *dev, int filter_id, uint32_t filter)
Set the @ filter_id to the position in the mailbox.
uint8_t mcp2515_get_errors(candev_mcp2515_t *dev)
Get the error flags.
enum mcp2515_interrupt mcp2515_get_irq(candev_mcp2515_t *dev)
Get MCP2515 interrupt type.
Driver for the Microchip MCP2515 can controller.
Controller Area Network frame.
Definition can.h:100