Build-able
This commit is contained in:
29
mcp2515.c
29
mcp2515.c
@@ -90,7 +90,7 @@ void MCP2515_Read_Rx(MCP2515_HandleTypeDef* hcan, REGISTER reg, uint8_t values[]
|
||||
HAL_GPIO_WritePin(hcan->cs_port, hcan->cs_pin, GPIO_PIN_SET);
|
||||
}
|
||||
|
||||
CAN_Error MCP2515_Set_Mode(MCP2515_HandleTypeDef* hcan, CANCTRL_REQOP_MODE mode) {
|
||||
CAN_Error MCP2515_Set_Mode(MCP2515_HandleTypeDef* hcan, MCP2515_Mode_t mode) {
|
||||
unsigned long endTime = HAL_GetTick() + 10;
|
||||
uint8_t modeMatch = 0;
|
||||
while (HAL_GetTick() < endTime) {
|
||||
@@ -251,26 +251,6 @@ CAN_Error MCP2515_Reset(MCP2515_HandleTypeDef* hcan) {
|
||||
return ERROR_OK;
|
||||
}
|
||||
|
||||
CAN_Error MCP2515_Set_Mode(MCP2515_HandleTypeDef* hcan, MCP2515_Mode_t mode) {
|
||||
switch (mode) {
|
||||
case MODE_LISTEN_ONLY:
|
||||
return MCP2515_Set_Mode(hcan, CANCTRL_REQOP_LISTENONLY);
|
||||
break;
|
||||
case MODE_LOOPBACK:
|
||||
return MCP2515_Set_Mode(hcan, CANCTRL_REQOP_LOOPBACK);
|
||||
break;
|
||||
case MODE_SLEEP:
|
||||
return MCP2515_Set_Mode(hcan, CANCTRL_REQOP_SLEEP);
|
||||
break;
|
||||
case MODE_NORMAL:
|
||||
return MCP2515_Set_Mode(hcan, CANCTRL_REQOP_NORMAL);
|
||||
break;
|
||||
default:
|
||||
return MCP2515_Set_Mode(hcan, CANCTRL_REQOP_NORMAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CAN_Error MCP2515_Set_Pin_Control(MCP2515_HandleTypeDef* hcan, bool B1BFS, bool B0BFS, bool B1BFE, bool B0BFE, bool B1BFM, bool B0BFM) {
|
||||
CAN_Error error = MCP2515_Set_Config_Mode(hcan);
|
||||
if (error != ERROR_OK) {
|
||||
@@ -571,6 +551,13 @@ CAN_Error MCP2515_Set_Bitrate_Clock(MCP2515_HandleTypeDef* hcan, CAN_SPEED canSp
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
CAN_Error MCP2515_Set_Transmit_Priority(MCP2515_HandleTypeDef* hcan, MCP2515_Priority_t txb0, MCP2515_Priority_t txb1, MCP2515_Priority_t txb2)
|
||||
{
|
||||
MCP2515_Set_Register(hcan, MCP_TXB0CTRL, txb0);
|
||||
MCP2515_Set_Register(hcan, MCP_TXB1CTRL, txb1);
|
||||
MCP2515_Set_Register(hcan, MCP_TXB2CTRL, txb2);
|
||||
}
|
||||
|
||||
void MCP2515_Request_To_Send(MCP2515_HandleTypeDef* hcan, uint8_t instruction) {
|
||||
HAL_GPIO_WritePin(hcan->cs_port, hcan->cs_pin, GPIO_PIN_RESET);
|
||||
MCP2515_SPI_transfer(hcan, instruction);
|
||||
|
||||
15
mcp2515.h
15
mcp2515.h
@@ -2,6 +2,7 @@
|
||||
#define APPLICATION_USER_INC_MCP2515_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stm32f0xx_hal.h>
|
||||
|
||||
typedef enum {
|
||||
@@ -51,12 +52,19 @@ typedef enum { TXB0 = 0, TXB1 = 1, TXB2 = 2 } TXBn;
|
||||
typedef enum { RXB0 = 0, RXB1 = 1 } RXBn;
|
||||
|
||||
typedef enum {
|
||||
MODE_LISTEN_ONLY,
|
||||
MODE_NORMAL,
|
||||
MODE_SLEEP,
|
||||
MODE_LOOPBACK,
|
||||
MODE_NORMAL
|
||||
MODE_LISTEN_ONLY
|
||||
} MCP2515_Mode_t;
|
||||
|
||||
typedef enum {
|
||||
PRIORITY_LOW,
|
||||
PRIORITY_NORMAL,
|
||||
PRIORITY_HIGH,
|
||||
PRIORITY_HIGHEST,
|
||||
} MCP2515_Priority_t;
|
||||
|
||||
typedef struct {
|
||||
SPI_HandleTypeDef* hspi;
|
||||
GPIO_TypeDef* cs_port;
|
||||
@@ -74,8 +82,11 @@ CAN_Error MCP2515_Reset(MCP2515_HandleTypeDef* hcan);
|
||||
uint8_t MCP2515_Get_Status(MCP2515_HandleTypeDef* hcan);
|
||||
|
||||
CAN_Error MCP2515_Set_Mode(MCP2515_HandleTypeDef* hcan, MCP2515_Mode_t mode);
|
||||
CAN_Error MCP2515_Set_Pin_Control(MCP2515_HandleTypeDef* hcan, bool B1BFS, bool B0BFS, bool B1BFE, bool B0BFE, bool B1BFM, bool B0BFM);
|
||||
CAN_Error MCP2515_Set_Interrupt(MCP2515_HandleTypeDef* hcan, bool MERRIE, bool WAKIE, bool ERRIE, bool TX2IE, bool TX1IE, bool TX0IE, bool RX1IE, bool RX0IE);
|
||||
|
||||
CAN_Error MCP2515_Set_Bitrate_Clock(MCP2515_HandleTypeDef* hcan, CAN_SPEED canSpeed, CAN_CLOCK canClock);
|
||||
CAN_Error MCP2515_Set_Transmit_Priority(MCP2515_HandleTypeDef* hcan, MCP2515_Priority_t txb0, MCP2515_Priority_t txb1, MCP2515_Priority_t txb2);
|
||||
|
||||
CAN_Error MCP2515_Set_Filter_Mask(MCP2515_HandleTypeDef* hcan, MASK mask, uint8_t ext, uint32_t ulData);
|
||||
CAN_Error MCP2515_Set_Filter(MCP2515_HandleTypeDef* hcan, RXF num, uint8_t ext, uint32_t ulData);
|
||||
|
||||
@@ -210,6 +210,7 @@ typedef enum {
|
||||
MCP_RXF2EID8 = 0x0A,
|
||||
MCP_RXF2EID0 = 0x0B,
|
||||
MCP_BFPCTRL = 0x0C,
|
||||
MCP_TXRTSCTR = 0x0D,
|
||||
MCP_CANSTAT = 0x0E,
|
||||
MCP_CANCTRL = 0x0F,
|
||||
MCP_RXF3SIDH = 0x10,
|
||||
|
||||
Reference in New Issue
Block a user