diff --git a/src/mcp2515_can.cpp b/src/mcp2515_can.cpp index 93b9a3d..d8a9c82 100644 --- a/src/mcp2515_can.cpp +++ b/src/mcp2515_can.cpp @@ -533,6 +533,121 @@ byte mcp2515_can::mcp2515_configRate(const byte canSpeed, const byte clock) { } break; + case (MCP_12MHz) : + switch (canSpeed) { + case (CAN_5KBPS) : + cfg1 = MCP_12MHz_5kBPS_CFG1; + cfg2 = MCP_12MHz_5kBPS_CFG2; + cfg3 = MCP_12MHz_5kBPS_CFG3; + break; + + case (CAN_10KBPS) : + cfg1 = MCP_12MHz_10kBPS_CFG1; + cfg2 = MCP_12MHz_10kBPS_CFG2; + cfg3 = MCP_12MHz_10kBPS_CFG3; + break; + + case (CAN_20KBPS) : + cfg1 = MCP_12MHz_20kBPS_CFG1; + cfg2 = MCP_12MHz_20kBPS_CFG2; + cfg3 = MCP_12MHz_20kBPS_CFG3; + break; + + case (CAN_25KBPS) : + cfg1 = MCP_12MHz_25kBPS_CFG1; + cfg2 = MCP_12MHz_25kBPS_CFG2; + cfg3 = MCP_12MHz_25kBPS_CFG3; + break; + + case (CAN_31K25BPS) : + cfg1 = MCP_12MHz_31k25BPS_CFG1; + cfg2 = MCP_12MHz_31k25BPS_CFG2; + cfg3 = MCP_12MHz_31k25BPS_CFG3; + break; + + case (CAN_33KBPS) : + cfg1 = MCP_12MHz_33kBPS_CFG1; + cfg2 = MCP_12MHz_33kBPS_CFG2; + cfg3 = MCP_12MHz_33kBPS_CFG3; + break; + + case (CAN_40KBPS) : + cfg1 = MCP_12MHz_40kBPS_CFG1; + cfg2 = MCP_12MHz_40kBPS_CFG2; + cfg3 = MCP_12MHz_40kBPS_CFG3; + break; + + case (CAN_50KBPS) : + cfg1 = MCP_12MHz_50kBPS_CFG1; + cfg2 = MCP_12MHz_50kBPS_CFG2; + cfg3 = MCP_12MHz_50kBPS_CFG3; + break; + + case (CAN_80KBPS) : + cfg1 = MCP_12MHz_80kBPS_CFG1; + cfg2 = MCP_12MHz_80kBPS_CFG2; + cfg3 = MCP_12MHz_80kBPS_CFG3; + break; + + case (CAN_83K3BPS) : + cfg1 = MCP_12MHz_83k3BPS_CFG1; + cfg2 = MCP_12MHz_83k3BPS_CFG2; + cfg3 = MCP_12MHz_83k3BPS_CFG3; + break; + + case (CAN_95KBPS) : + cfg1 = MCP_12MHz_95kBPS_CFG1; + cfg2 = MCP_12MHz_95kBPS_CFG2; + cfg3 = MCP_12MHz_95kBPS_CFG3; + break; + + case (CAN_100KBPS) : + cfg1 = MCP_12MHz_100kBPS_CFG1; + cfg2 = MCP_12MHz_100kBPS_CFG2; + cfg3 = MCP_12MHz_100kBPS_CFG3; + break; + + case (CAN_125KBPS) : + cfg1 = MCP_12MHz_125kBPS_CFG1; + cfg2 = MCP_12MHz_125kBPS_CFG2; + cfg3 = MCP_12MHz_125kBPS_CFG3; + break; + + case (CAN_200KBPS) : + cfg1 = MCP_12MHz_200kBPS_CFG1; + cfg2 = MCP_12MHz_200kBPS_CFG2; + cfg3 = MCP_12MHz_200kBPS_CFG3; + break; + + case (CAN_250KBPS) : + cfg1 = MCP_12MHz_250kBPS_CFG1; + cfg2 = MCP_12MHz_250kBPS_CFG2; + cfg3 = MCP_12MHz_250kBPS_CFG3; + break; + + case (CAN_500KBPS) : + cfg1 = MCP_12MHz_500kBPS_CFG1; + cfg2 = MCP_12MHz_500kBPS_CFG2; + cfg3 = MCP_12MHz_500kBPS_CFG3; + break; + + case (CAN_666KBPS) : + cfg1 = MCP_12MHz_666kBPS_CFG1; + cfg2 = MCP_12MHz_666kBPS_CFG2; + cfg3 = MCP_12MHz_666kBPS_CFG3; + break; + + case (CAN_1000KBPS) : + cfg1 = MCP_12MHz_1000kBPS_CFG1; + cfg2 = MCP_12MHz_1000kBPS_CFG2; + cfg3 = MCP_12MHz_1000kBPS_CFG3; + break; + + default: + set = 0; + break; + } + break; case (MCP_8MHz) : switch (canSpeed) { case (CAN_5KBPS) : diff --git a/src/mcp2515_can_dfs.h b/src/mcp2515_can_dfs.h index 025a44f..4bfc274 100644 --- a/src/mcp2515_can_dfs.h +++ b/src/mcp2515_can_dfs.h @@ -350,6 +350,80 @@ #define MCP_16MHz_5kBPS_CFG3 (0x87) +// speed 12M + +#define MCP_12MHz_1000kBPS_CFG1 (0x00)// +#define MCP_12MHz_1000kBPS_CFG2 (0x88)// +#define MCP_12MHz_1000kBPS_CFG3 (0x01)// + +#define MCP_12MHz_666kBPS_CFG1 (0x00)// +#define MCP_12MHz_666kBPS_CFG2 (0x92)// +#define MCP_12MHz_666kBPS_CFG3 (0x01)// + +#define MCP_12MHz_500kBPS_CFG1 (0x00) +#define MCP_12MHz_500kBPS_CFG2 (0x9B) +#define MCP_12MHz_500kBPS_CFG3 (0x02) + +#define MCP_12MHz_250kBPS_CFG1 (0x00)// +#define MCP_12MHz_250kBPS_CFG2 (0xBF)// +#define MCP_12MHz_250kBPS_CFG3 (0x06)/// + +#define MCP_12MHz_200kBPS_CFG1 (0x01)// +#define MCP_12MHz_200kBPS_CFG2 (0xA4)// +#define MCP_12MHz_200kBPS_CFG3 (0x03)// + +#define MCP_12MHz_125kBPS_CFG1 (0x01)// +#define MCP_12MHz_125kBPS_CFG2 (0xBF)// +#define MCP_12MHz_125kBPS_CFG3 (0x06)// + +#define MCP_12MHz_100kBPS_CFG1 (0x02)// +#define MCP_12MHz_100kBPS_CFG2 (0xB6)// +#define MCP_12MHz_100kBPS_CFG3 (0x04)// + +#define MCP_12MHz_95kBPS_CFG1 (0x02)// +#define MCP_12MHz_95kBPS_CFG2 (0xBE)// +#define MCP_12MHz_95kBPS_CFG3 (0x04)// + +#define MCP_12MHz_83k3BPS_CFG1 (0x03)// +#define MCP_12MHz_83k3BPS_CFG2 (0xB5)// +#define MCP_12MHz_83k3BPS_CFG3 (0x03)// + +#define MCP_12MHz_80kBPS_CFG1 (0x04)// +#define MCP_12MHz_80kBPS_CFG2 (0xA4)// +#define MCP_12MHz_80kBPS_CFG3 (0x03)// + +#define MCP_12MHz_50kBPS_CFG1 (0x05)// +#define MCP_12MHz_50kBPS_CFG2 (0xB6)// +#define MCP_12MHz_50kBPS_CFG3 (0x04)// + +#define MCP_12MHz_40kBPS_CFG1 (0x09)// +#define MCP_12MHz_40kBPS_CFG2 (0xA4)// +#define MCP_12MHz_40kBPS_CFG3 (0x03)// + +#define MCP_12MHz_33kBPS_CFG1 (0x0C)// +#define MCP_12MHz_33kBPS_CFG2 (0xA4)// +#define MCP_12MHz_33kBPS_CFG3 (0x02)// + +#define MCP_12MHz_31k25BPS_CFG1 (0x0B)// +#define MCP_12MHz_31k25BPS_CFG2 (0xAC)// +#define MCP_12MHz_31k25BPS_CFG3 (0x03)// + +#define MCP_12MHz_25kBPS_CFG1 (0X0B)// +#define MCP_12MHz_25kBPS_CFG2 (0XB6)// +#define MCP_12MHz_25kBPS_CFG3 (0X04)// + +#define MCP_12MHz_20kBPS_CFG1 (0x0C)// +#define MCP_12MHz_20kBPS_CFG2 (0xBF)// +#define MCP_12MHz_20kBPS_CFG3 (0x05)// + +#define MCP_12MHz_10kBPS_CFG1 (0x18)// +#define MCP_12MHz_10kBPS_CFG2 (0xBF)// +#define MCP_12MHz_10kBPS_CFG3 (0x06)// + +#define MCP_12MHz_5kBPS_CFG1 (0x31)// +#define MCP_12MHz_5kBPS_CFG2 (0xBF)// +#define MCP_12MHz_5kBPS_CFG3 (0x06)// + // speed 8M diff --git a/src/mcp_can.h b/src/mcp_can.h index 33fc7d5..d0e535a 100644 --- a/src/mcp_can.h +++ b/src/mcp_can.h @@ -20,6 +20,7 @@ typedef enum { MCP_NO_MHz, /* apply to MCP2515 */ MCP_16MHz, + MCP_12MHz, MCP_8MHz, /* apply to MCP2518FD */ MCP2518FD_40MHz = MCP_16MHz /* To compatible MCP2515 shield */,