pyupm_mcp2515 module¶
-
class
pyupm_mcp2515.
MCP2515
(bus, csPin)[source]¶ Bases:
object
API for the MCP2515 CAN bus controller.
ID: mcp2515
Name: CAN Bus Controller
Manufacturer: seeed
Connection: spi gpio
Link:https://www.seeedstudio.com/CANBUS-Shield-p-2256.html The MCP2515 is a stand-alone CAN controller developed to simplify applications that require interfacing with a CAN bus.
This driver was developed using the Grove CAN bus shield version 1.2.
An example using the loopback mode.A simple transmit and receive example.
C++ includes: mcp2515.hpp
-
abortTX
(bufnum)[source]¶ void abortTX(MCP2515_TX_BUFFER_T bufnum)
Abort a transmission that has been queued, but not yet completed. This will also free up the TX buffer for future use. Note, if you abort a transmission, but transmission has already started, this call will have no effect, and the buffer will complete transmission.
bufnum: The buffer to abort. One of the MCP2515_TX_BUFFER_T values.
-
clearErrorFlags
(flags)[source]¶ void clearErrorFlags(uint8_t flags)
Clear error flags. Note, some flags cannot be cleared until the underlying issues is resolved.
A bitmask of values from MCP2515_EFLG_BITS_T, indicating which error flags to clear.
-
clearIntrFlags
(flags)[source]¶ void clearIntrFlags(uint8_t flags)
This function allows you to clear specific interrupt flags. See the datasheet. Some flags cannot be cleared until the underlying cause has been corrected.
flags: A bitmask of interrupt flags to clear, from MCP2515_CANINT_BITS_T values.
-
findFreeTXBuffer
()[source]¶ MCP2515_TX_BUFFER_T findFreeTXBuffer()
Find a free TX buffer and return it.
One of the MCP2515_TX_BUFFER_T values. If no buffers are available, MCP2515_TX_NO_BUFFERS will be returned.
-
getErrorFlags
()[source]¶ uint8_t getErrorFlags()
Retrieve the error flags register
A bitmask that will be filled with values from MCP2515_EFLG_BITS_T, indicating which error flags are set.
-
getIntrFlags
()[source]¶ uint8_t getIntrFlags()
Retrieve the interrupt flags register.
A bitmask that will be filled with values from MCP2515_CANINT_BITS_T, indicating which interrupt flags are set.
-
getRXMsg
(bufnum)[source]¶ upm_result_t getRXMsg(MCP2515_RX_BUFFER_T bufnum)
This function retrieves a message from the specified RX buffer. The message ( MCP2515_MSG_T) contains all of the data in the packet, including id, rtr, ext, payload and payload length. In addition, after retrieving the message, the RX buffer is freed to receive further data from the CAN bus. The message is stored within the class.
bufnum: The buffer to retrieve. One of the MCP2515_RX_BUFFER_T values.
-
installISR
(pin, isr, arg)[source]¶ void installISR(int pin, void(*isr)(void *), void *arg)
Installs an interrupt service routine (ISR) to be called when an interrupt occurs.
pin: GPIO pin to use as the interrupt pin.
isr: Pointer to a function to be called on interrupt.
arg: Pointer to an object to be supplied as an argument to the ISR.
-
isTXBufferFree
(bufnum)[source]¶ bool isTXBufferFree(MCP2515_TX_BUFFER_T bufnum)
Determine whether a TX buffer is available for use or not. A TX buffer is unavailable if a transmit request is pending on it, but transmission has not yet completed.
bufnum: The buffer to check. One of the MCP2515_TX_BUFFER_T values.
True if the buffer is availabe, false otherwise.
-
loadTXBuffer
(bufnum, id, ext, rtr, payload)[source]¶ void loadTXBuffer(MCP2515_TX_BUFFER_T bufnum, int id, bool ext, bool rtr, std::string payload)
Load a transmit buffer with the id, payload, and other information. This function does not actually transmit the buffer. There are 3 TX buffers available. The buffer must be free (ie: not awaiting transmit) before it can be loaded. Once a TX buffer has been successfully loaded, it can be transmitted with the TransmitBuffer() method.
bufnum: The buffer to load. One of the MCP2515_TX_BUFFER_T values.
id: The integer representation of the CAN bus ID.
ext: True if the ID is an extended identifier, false otherwise.
rtr: True if this is a Remote Transfer Request, false otherwise.
payload: A string containing the payload bytes. Maximum length is 8.
-
msgGetEXT
()[source]¶ bool msgGetEXT()
This method returns the EXT (extended ID) flag of a received message. It will only be valid after a successful completion of rxGetMsg().
True if the message has an extended ID, false otherwise.
-
msgGetFilterNum
()[source]¶ int msgGetFilterNum()
This method returns the filter number that caused the message to be stored in the RX buffer. It will only be valid after a successful completion of rxGetMsg().
The filter number that was matched.
-
msgGetID
()[source]¶ int msgGetID()
This method returns the id of a received message. It will only be valid after a successful completion of rxGetMsg().
ID of the last received message.
-
msgGetPayload
()[source]¶ std::string msgGetPayload()
This method returns the contents of the payload in the last received message. It will only be valid after a successful completion of rxGetMsg().
String containing the payload.
-
msgGetPayloadLen
()[source]¶ int msgGetPayloadLen()
This method returns the length of the payload of the RX buffer. It will only be valid after a successful completion of rxGetMsg().
Length of the payload in bytes, max 8.
-
msgGetRTR
()[source]¶ bool msgGetRTR()
This method returns the RTR flag of a received message. It will only be valid after a successful completion of rxGetMsg().
True if the message has the RTR flag set, false otherwise.
-
printMsg
()[source]¶ void printMsg()
This is a utility function prints the current (last received) messages decoded contents. This is of primary importance for debugging, and to simplify the examples somewhat.
The output will look similar to:
id 00000000 ext 0 rtr 0 filt 0 len 8 payload: 0xc8 0x01 0x02 0x03 0x04 0x05 0x06 0x07
-
rxStatusFiltermatch
()[source]¶ MCP2515_FILTERMATCH_T rxStatusFiltermatch()
Return the filter that matched an RX buffer. RXB0 has the highest priority, so if both RX buffers are full, this function will only return data for the packet in RXB0. This information is retrieved using the MCP2515_CMD_RX_STATUS command.
One of the MCP2515_FILTERMATCH_T values.
-
rxStatusMsgType
()[source]¶ MCP2515_MSGTYPE_T rxStatusMsgType()
Return the message type present in one of the RX buffers. RXB0 has the highest priority, so if both RX buffers are full, this function will only return data for the packet in RXB0. This information is retrieved using the MCP2515_CMD_RX_STATUS command.
One of the MCP2515_MSGTYPE_T values.
-
rxStatusMsgs
()[source]¶ MCP2515_RXMSG_T rxStatusMsgs()
Return a bitmask indicating which of the 2 RX buffers have packets waiting in them. This can be 0 (no packets), 1(RXB0), 2(RXB1), or 3 (RXB0 and RXB1). This information is retrieved using the MCP2515_CMD_RX_STATUS command.
A bitmask indicating which RX buffers (if any) have packets in them. One of the MCP2515_RXMSG_T values.
-
setFilter
(filter, ext, id)[source]¶ void setFilter(MCP2515_RX_FILTER_T filter, bool ext, int id)
This function allows you to set one of the 6 RX filters available. Filters 0 and 1 are for RXB0 only, while filters 2-5 are for RXB1. See the datasheet for details on how these filters (along with the masks) are used to select candidate CAN bus data for retrieval from the CAN bus.
These can only be set when the device is in CONFIG mode.
filter: One of the 6 MCP2515_RX_FILTER_T values.
ext: True if the id is extended, false for standard.
id: Integer representation of a CAN bus ID.
-
setIntrEnables
(enables)[source]¶ void setIntrEnables(uint8_t enables)
Set the interrupt enables register.
enables: A bitmask of interrupts to enable from MCP2515_CANINT_BITS_T.
-
setIntrFlags
(flags)[source]¶ void setIntrFlags(uint8_t flags)
This function allows you to set specific interrupt flags. If the corresponding interrupt enable is set, an interrupt will be generated.
flags: A bitmask of interrupt flags to set, from MCP2515_CANINT_BITS_T values.
-
setMask
(mask, ext, id)[source]¶ void setMask(MCP2515_RX_MASK_T mask, bool ext, int id)
This function allows you to set one of the 2 RX masks. Mask 0 is for RXB0, mask 1 is for RXB1. The masks specify which bits in the filters are used for matching CAN bus data. See the datasheet for details on how these masks (along with the filters) are used to select candidate CAN bus data for retrieval from the CAN bus.
These can only be set when the device is in CONFIG mode.
mask: One of the 2 MCP2515_RX_MASK_T values.
ext: True if the id is extended, false for standard.
id: Integer representation of a CAN bus ID.
-
setOpmode
(opmode)[source]¶ void setOpmode(MCP2515_OPMODE_T opmode)
Set the operating mode of the device. After initialization, the device mode will be set to NORMAL. Note that some operations require the device to be placed into CONFIG mode. This function will wait until the selected mode has been entered.
opmode: One of the MCP2515_OPMODE_T values.
-
setRXBufferMode
(bufnum, rxm)[source]¶ void setRXBufferMode(MCP2515_RX_BUFFER_T bufnum, MCP2515_RXMODE_T rxm)
Set the mode for an RX buffer. The mode specifies, at a high level, what packets should be captured from the bus and placed into an RX buffer. See the datasheet for details, but the default, MCP2515_RXMODE_ANY_FILTER, should be sufficient in most cases. It is also possible to use this to restrict the types of CAN ids accepted (extended only, standard only) as well as a debug ANY_NOFILTER mode.
bufnum: The buffer to set the mode for. One of the MCP2515_RX_BUFFER_T values.
rxm: The mode to set. One of the MCP2515_RXMODE_T values.
-
setSpeed
(speed)[source]¶ void setSpeed(MCP2515_SPEED_T speed)
Set the baud rate of the CAN bus. All devices on a given CAN bus must be operating at the correct speed. The device must be switched into CONFIG mode bofore this function will have any effect. On initialization, the default CAN bus speed will be set to 50Kbps.
speed: One of the MCP2515_SPEED_T values.
-
setTXBufferPriority
(bufnum, priority)[source]¶ void setTXBufferPriority(MCP2515_TX_BUFFER_T bufnum, MCP2515_TXP_T priority)
Set the transmit priority of a TX buffer. Higher priority buffers are always transmitted before lower priority buffers. This function can be called on a buffer at any time prior to actual transmission.
bufnum: The buffer to set priority for. One of the MCP2515_TX_BUFFER_T values.
priority: The priority to set for the buffer. One of the MCP2515_TXP_T values.
-
transmitBuffer
(bufnum, wait)[source]¶ void transmitBuffer(MCP2515_TX_BUFFER_T bufnum, bool wait)
Transmit a buffer already loaded by loadTXBuffer().
bufnum: The buffer to transmit. One of the MCP2515_TX_BUFFER_T values.
wait: True if the function should wait until transmission is complete before returning, false otherwise.
-