В общем есть плата nucleo-144 h743zi2. И в ней есть CAN интерфейс, через который мне нужно реализовать протокол передачи.
В связке Uno + mcp2515 протокол был отработан и все работает как часы. Теперь надо все перенести на nucleo, и что не маловажно - это использование Arduino IDE.
В общем я ходил смотрел включал выключал порты на которых есть can интерфейс, но ничего не получилось.
Подумал я что надо бы попробовать подключить модуль mcp2515 через SPI. И тут встал вопрос а как же эти порты SPI мне обьявить в той же Arduino IDE?
Может у кого то есть примеры для других камней? или есть подсказка как и что именно с этой платой.
Я знаю что, вы скажите - пиши на STM32CUBEIde ( ребята, пока я в процессе обучения, сложный он, менее понятный)
Код: Выделить всё
#include <SPI.h>
#include <mcp2515.h>
#define MOSI PB5
#define MISO PB4
#define SCLK PB3
#define ledPin PC13
#define buttonPin PA0
byte data;
struct can_frame canMsg;
struct can_frame canMsg1;
struct can_frame canMsg2;
MCP2515 mcp2515(PA4);
void setup ()
{
while (!Serial);
Serial.begin(115200);
mcp2515.reset();
mcp2515.setBitrate(CAN_1000KBPS, MCP_8MHZ);
mcp2515.setNormalMode ();
//mcp2515.setLoopbackMode();
//mcp2515.setListenOnlyMode();
Serial.println("Example: Write to CAN");
canMsg1.can_id = 0x142;
canMsg1.can_dlc = 8;
canMsg1.data[0] = 0x88; //старт мотор
canMsg1.data[1] = 0x00;
canMsg1.data[2] = 0x00;
canMsg1.data[3] = 0x00;
canMsg1.data[4] = 0x00;
canMsg1.data[5] = 0x00;
canMsg1.data[6] = 0x00;
canMsg1.data[7] = 0x00;
canMsg2.can_id = 0x142;
canMsg2.can_dlc = 8;
canMsg2.data[0] = 0xA1;
canMsg2.data[1] = 0x00;
canMsg2.data[2] = 0x00;
canMsg2.data[3] = 0x00;
canMsg2.data[4] = 0x00;
canMsg2.data[5] = 0x50;
canMsg2.data[6] = 0x00;
canMsg2.data[7] = 0x00;
mcp2515.sendMessage(&canMsg1);
}
void loop(void)
{
mcp2515.sendMessage(&canMsg2);
Serial.println("Messages sent");
if (mcp2515.readMessage(&canMsg1) == MCP2515::ERROR_OK) {
Serial.print(canMsg.can_id, HEX); // print ID
Serial.print(" ");
for (int i = 0; i<10; i++) { // print the data
Serial.print(canMsg.data[i],HEX);
Serial.print(" ");
}
Serial.println();
}
delay(1000);
}


