0

我正在尝试使用 arduino uno(2 个单元)和 sparkfun canbus shield(2 个单元)演示 CAN 总线通信。我正在尝试发送 sparkfun canbus 库中给出的基本示例。

我在串行监视器上收到“Can init Ok”消息,但没有显示任何消息。任何人都可以帮助我吗?

提前致谢

我的发射器代码:

include <Canbus.h>
#include <defaults.h>
#include <global.h>
#include <mcp2515.h>
#include <mcp2515_defs.h>

//********************************Setup Loop*********************************//

void setup() {
  Serial.begin(9600);
  Serial.println("CAN Write - Testing transmission of CAN Bus messages");
  delay(1000);
  
  if(Canbus.init(CANSPEED_500))  //Initialise MCP2515 CAN controller at the specified speed
    Serial.println("CAN Init ok");
  else
    Serial.println("Can't init CAN");
    
  delay(1000);
}

//********************************Main Loop*********************************//

void loop() 
{
tCAN message;

        message.id = 0x631; //formatted in HEX
        message.header.rtr = 0;
        message.header.length = 8; //formatted in DEC
        message.data[0] = 0x40;
    message.data[1] = 0x05;
    message.data[2] = 0x30;
    message.data[3] = 0xFF; //formatted in HEX
    message.data[4] = 0x00;
    message.data[5] = 0x40;
    message.data[6] = 0x00;
    message.data[7] = 0x00;

mcp2515_bit_modify(CANCTRL, (1<<REQOP2)|(1<<REQOP1)|(1<<REQOP0), 0);
mcp2515_send_message(&message);

delay(1000);
}

我的接收者代码是

#include <Canbus.h>
#include <defaults.h>
#include <global.h>
#include <mcp2515.h>
#include <mcp2515_defs.h>

//********************************Setup Loop*********************************//

void setup() {
  Serial.begin(9600); // For debug use
  Serial.println("CAN Read - Testing receival of CAN Bus message");  
  delay(1000);
  
  if(Canbus.init(CANSPEED_500))  //Initialise MCP2515 CAN controller at the specified speed
    Serial.println("CAN Init ok");
  else
    Serial.println("Can't init CAN");
    
  delay(1000);
}

//********************************Main Loop*********************************//

void loop(){

  tCAN message;
if (mcp2515_check_message()) 
    {
    if (mcp2515_get_message(&message)) 
    {
        //if(message.id == 0x620 and message.data[2] == 0xFF)  //uncomment when you want to filter
             //{
               
               Serial.print("ID: ");
               Serial.print(message.id,HEX);
               Serial.print(", ");
               Serial.print("Data: ");
               Serial.print(message.header.length,DEC);
               for(int i=0;i<message.header.length;i++) 
                {   
                  Serial.print(message.data[i],HEX);
                  Serial.print(" ");
                }
               Serial.println("");
             //}
           }}

我的引脚连接是:发射器端:Arduino uno ---- canbus sheild

D8-D13 ------------ D8-D13

接地 ----------------- 接地 5v -------- 5v D2 --------- --------- D2 ioref ------------- ioref 重置 ------------ 重置

接收方:

Arduino uno ---- canbus 屏蔽 D8-D13 ------------ D8-D13 Gnd ----- gnd 5v ---- --------------- 5v D2 ------ D2 ioref ------------- ioref reset ------------ 发送器与接收器之间的重置连接是通过 CAN_L 和 CAN_H 和 Gnd

4

0 回答 0