From db5e77992dd4547035cb2a4d43f9aa525ddf2eeb Mon Sep 17 00:00:00 2001 From: Tsipizidis Charalampos Date: Tue, 10 Mar 2015 10:05:44 +0200 Subject: [PATCH] Add GMLAN Baudrates support --- README.md | 28 +++++++++++++++------------- mcp_can.cpp | 12 ++++++++++++ mcp_can_dfs.h | 31 ++++++++++++++++++++++--------- 3 files changed, 49 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 6af167d..d0906c1 100644 --- a/README.md +++ b/README.md @@ -27,19 +27,21 @@ This function is used to initialize the baudrate of the CAN Bus system. The available baudrates are listed as follws: - - #define CAN_5KBPS 1 - #define CAN_10KBPS 2 - #define CAN_20KBPS 3 - #define CAN_40KBPS 4 - #define CAN_50KBPS 5 - #define CAN_80KBPS 6 - #define CAN_100KBPS 7 - #define CAN_125KBPS 8 - #define CAN_200KBPS 9 - #define CAN_250KBPS 10 - #define CAN_500KBPS 11 - #define CAN_1000KBPS 12 + #define CAN_5KBPS 1 + #define CAN_10KBPS 2 + #define CAN_20KBPS 3 + #define CAN_31K25BPS 4 + #define CAN_33KBPS 5 + #define CAN_40KBPS 6 + #define CAN_50KBPS 7 + #define CAN_80KBPS 8 + #define CAN_95KBPS 9 + #define CAN_100KBPS 10 + #define CAN_125KBPS 11 + #define CAN_200KBPS 12 + #define CAN_250KBPS 13 + #define CAN_500KBPS 14 + #define CAN_1000KBPS 15
diff --git a/mcp_can.cpp b/mcp_can.cpp index d0a9b16..1f73ed8 100644 --- a/mcp_can.cpp +++ b/mcp_can.cpp @@ -185,6 +185,12 @@ INT8U MCP_CAN::mcp2515_configRate(const INT8U canSpeed) cfg1 = MCP_16MHz_31k25BPS_CFG1; cfg2 = MCP_16MHz_31k25BPS_CFG2; cfg3 = MCP_16MHz_31k25BPS_CFG3; + break; + + case (CAN_33KBPS): + cfg1 = MCP_16MHz_33kBPS_CFG1; + cfg2 = MCP_16MHz_33kBPS_CFG2; + cfg3 = MCP_16MHz_33kBPS_CFG3; break; case (CAN_40KBPS): @@ -203,6 +209,12 @@ INT8U MCP_CAN::mcp2515_configRate(const INT8U canSpeed) cfg1 = MCP_16MHz_80kBPS_CFG1; cfg2 = MCP_16MHz_80kBPS_CFG2; cfg3 = MCP_16MHz_80kBPS_CFG3; + break; + + case (CAN_95KBPS): + cfg1 = MCP_16MHz_95kBPS_CFG1; + cfg2 = MCP_16MHz_95kBPS_CFG2; + cfg3 = MCP_16MHz_95kBPS_CFG3; break; case (CAN_100KBPS): /* 100KBPS */ diff --git a/mcp_can_dfs.h b/mcp_can_dfs.h index c50d1b2..a5e6029 100644 --- a/mcp_can_dfs.h +++ b/mcp_can_dfs.h @@ -276,6 +276,11 @@ #define MCP_16MHz_100kBPS_CFG3 (0x07) */ +#define MCP_16MHz_95kBPS_CFG1 (0x03) +#define MCP_16MHz_95kBPS_CFG2 (0xAD) +#define MCP_16MHz_95kBPS_CFG3 (0x07) + + #define MCP_16MHz_80kBPS_CFG1 (0x03) #define MCP_16MHz_80kBPS_CFG2 (0xFF) #define MCP_16MHz_80kBPS_CFG3 (0x87) @@ -288,6 +293,12 @@ #define MCP_16MHz_40kBPS_CFG2 (0xFF) #define MCP_16MHz_40kBPS_CFG3 (0x87) +#define MCP_16MHz_33kBPS_CFG1 (0x09) +#define MCP_16MHz_33kBPS_CFG2 (0xBE) +#define MCP_16MHz_33kBPS_CFG3 (0x07) + + + #define MCP_16MHz_31k25BPS_CFG1 (0x0F) #define MCP_16MHz_31k25BPS_CFG2 (0xF1) #define MCP_16MHz_31k25BPS_CFG3 (0x85) @@ -344,15 +355,17 @@ #define CAN_10KBPS 2 #define CAN_20KBPS 3 #define CAN_31K25BPS 4 -#define CAN_40KBPS 5 -#define CAN_50KBPS 6 -#define CAN_80KBPS 7 -#define CAN_100KBPS 8 -#define CAN_125KBPS 9 -#define CAN_200KBPS 10 -#define CAN_250KBPS 11 -#define CAN_500KBPS 12 -#define CAN_1000KBPS 13 +#define CAN_33KBPS 5 +#define CAN_40KBPS 6 +#define CAN_50KBPS 7 +#define CAN_80KBPS 8 +#define CAN_95KBPS 9 +#define CAN_100KBPS 10 +#define CAN_125KBPS 11 +#define CAN_200KBPS 12 +#define CAN_250KBPS 13 +#define CAN_500KBPS 14 +#define CAN_1000KBPS 15 #define CAN_OK (0) #define CAN_FAILINIT (1)