Ich lese derzeit den GY61 3-Achsbeschleunigungssensor mit einem Nucleo-F072RB aus und übersende die Daten per CAN Bus an einen Arduino UNO R3 mit MCP2515 CAN Shield. Die Übertragung funktioniert soweit, jedoch gibt der Arduino kein ACK Bit aus, wodurch der stm32 nach der ersten Nachricht aufhört. Verwendet wird die arduino-mcp2515 lib mit folgendem Code:
#include <mcp2515.h>
struct can_frame canMsg;
MCP2515 mcp2515(10);
void setup() {
Serial.begin(115200);
mcp2515.reset();
mcp2515.setBitrate(CAN_125KBPS, MCP_8MHZ);
mcp2515.setNormalMode();
Serial.println("------- CAN Read ----------");
Serial.println("ID DLC DATA");
}
void loop() {
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
Serial.print(canMsg.can_id, HEX); // print ID
Serial.print(" ");
Serial.print(canMsg.can_dlc, HEX); // print DLC
Serial.print(" ");
for (int i = 0; i < canMsg.can_dlc; i++) { // print the data
Serial.print(canMsg.data[i], HEX);
Serial.print(" ");
}
Serial.println();
}
}
Folgend der Schaltplan:
Sowie ein Screenshot des Logic Analyzers und des Arduino Monitors:
Leider finde ich keinen Fehler und würde mich über Ratschläge freuen.