@@ -30,7 +30,8 @@ void HuaweiCanCommunicationTask(void* parameter) {
30
30
}
31
31
}
32
32
33
- bool HuaweiCanCommClass::init (uint8_t huawei_miso, uint8_t huawei_mosi, uint8_t huawei_clk, uint8_t huawei_irq, uint8_t huawei_cs) {
33
+ bool HuaweiCanCommClass::init (uint8_t huawei_miso, uint8_t huawei_mosi, uint8_t huawei_clk,
34
+ uint8_t huawei_irq, uint8_t huawei_cs, uint32_t frequency) {
34
35
SPI = new SPIClass (HSPI);
35
36
SPI->begin (huawei_clk, huawei_miso, huawei_mosi, huawei_cs);
36
37
pinMode (huawei_cs, OUTPUT);
@@ -39,8 +40,14 @@ bool HuaweiCanCommClass::init(uint8_t huawei_miso, uint8_t huawei_mosi, uint8_t
39
40
pinMode (huawei_irq, INPUT_PULLUP);
40
41
_huaweiIrq = huawei_irq;
41
42
43
+ auto mcp_frequency = MCP_8MHZ;
44
+ if (16000000UL == frequency) { mcp_frequency = MCP_16MHZ; }
45
+ else if (8000000UL != frequency) {
46
+ MessageOutput.printf (" Huawei CAN: unknown frequency %d Hz, using 8 MHz\r\n " , mcp_frequency);
47
+ }
48
+
42
49
_CAN = new MCP_CAN (SPI, huawei_cs);
43
- if (!_CAN->begin (MCP_STDEXT, CAN_125KBPS, MCP_8MHZ ) == CAN_OK) {
50
+ if (!_CAN->begin (MCP_STDEXT, CAN_125KBPS, mcp_frequency ) == CAN_OK) {
44
51
return false ;
45
52
}
46
53
@@ -198,7 +205,7 @@ void HuaweiCanClass::init(uint8_t huawei_miso, uint8_t huawei_mosi, uint8_t huaw
198
205
return ;
199
206
}
200
207
201
- if (!HuaweiCanComm.init (huawei_miso, huawei_mosi, huawei_clk, huawei_irq, huawei_cs)) {
208
+ if (!HuaweiCanComm.init (huawei_miso, huawei_mosi, huawei_clk, huawei_irq, huawei_cs, config. Huawei_CAN_Controller_Frequency )) {
202
209
MessageOutput.println (" [HuaweiCanClass::init] Error Initializing Huawei CAN communication..." );
203
210
return ;
204
211
};
0 commit comments