首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有两个Arduino / MCP2515节点的CAN总线网络能工作吗?

有两个Arduino / MCP2515节点的CAN总线网络能工作吗?
EN

Stack Overflow用户
提问于 2017-11-19 01:18:08
回答 1查看 1K关注 0票数 1

我想使用Arduino Pro Minis和MCP2515卡建立一个由多个节点组成的CAN网络。但我不能让收银员去工作。

代码语言:javascript
复制
#include <mcp_can.h>
#include <SPI.h>

long unsigned int  rxId;
unsigned char      len = 0;
unsigned char      rxBuf[8];
char               msgString[128];
#define  CAN0_INT  2                    // Set INT to pin 2
MCP_CAN            CAN0(10);            // Set CS to pin 10

void setup() {
    Serial.begin(115200);       
    //  Initialize MCP2515 running at 8MHz with a baudrate of 125kb/s
    //  and the masks and filters disabled.
    while (CAN_OK != CAN0.begin(MCP_ANY, CAN_125KBPS, MCP_8MHZ)) {
        Serial.println("CAN BUS Module Failed to Initialize.");
    } 
    Serial.println("MCP2515 Initialized Successfully!");
    CAN0.setMode(MCP_NORMAL);
    pinMode(CAN0_INT, INPUT);        // Configuring pin for /INT input
}

void loop() {
    if(!digitalRead(CAN0_INT)) {  // If CAN0_INT is low, read receive buffer
        CAN0.readMsgBuf(&rxId, &len, rxBuf);   // Read data: len = data length, buf = data byte(s)

        if((rxId & 0x80000000) == 0x80000000)  // Is ID standard (11 bits) or extended (29 bits)?
            sprintf(msgString, "Extended ID: 0x%.8lX  DLC: %1d  Data:", (rxId & 0x1FFFFFFF), len);
        else
            sprintf(msgString, "Standard ID: 0x%.3lX   DLC: %1d  Data:", rxId, len);
        Serial.print(msgString);

        if((rxId & 0x40000000) == 0x40000000) {    // Is message a remote request frame?
            sprintf(msgString, " REMOTE REQUEST FRAME");
            Serial.print(msgString);
        } else {
            for(byte i = 0; i<len; i++) {
                sprintf(msgString, " 0x%.2X", rxBuf[i]);
                Serial.print(msgString);
            }
        }        
        Serial.println();
    }
}

但是,我得到的只是错误消息,包括以下内容:

代码语言:javascript
复制
Entering Configuration Mode Failure

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-11-20 00:44:08

我的电路开始工作了。两个节点的CAN总线正在通信。

我找到了这个站点并做了一些修改:

  1. 我的Arduino ProMini MISI,MISO引脚与SI没有对齐,所以在MCP2515s上有引脚。
  2. 我使用了CAN_BUS_Shield库。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47372817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档