Jag har skrivit av Arduino C++ kod till STM32 C-kod från https://github.com/coryjfowler/MCP_CAN_lib
Jag har kopplat ihop en servomotor med CAN-buskortet, men inget händer. Jag har tyvärr inget skåp att analysera signalerna i. Så jag tänkte dela med mig av koden till er om ni vill testa den och återkoppla om det fungerar.
Koden har samma funktionalitet som Arduino C++ koden. Vad tror ni?
Minimalt exempel:
Kod: Markera allt
#include "MCP2515/mcp2515.h"
SPI_HandleTypeDef hspi2;
UART_HandleTypeDef huart2;
MCP2515_SPI spi;
// Init MCP2515
MCP_CAN_start(&spi, &hspi2, CAN_CS_GPIO_Port, CAN_CS_Pin);
MCP_CAN_begin(&spi, MCP_ANY, CAN_250KBPS, MCP_16MHZ);
MCP_CAN_setMode(&spi, MCP_NORMAL);
// message
uint8_t message[8] = {0x00, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
uint32_t address = 0x0CFE3022;
uint8_t i = 0;
while (1)
{
message[0] = i;
i++;
if(i >= 249)
i = 0;
uint8_t sndStat = MCP_CAN_sendMsgBuf_ext(&spi, address, 1, 8, message); // Send with extended
if(sndStat == CAN_OK){
uint8_t status[8] = "Success!";
HAL_UART_Transmit(&huart2, status, sizeof(status), 10);
} else {
uint8_t status[6] = "Fail!";
HAL_UART_Transmit(&huart2, status, sizeof(status), 10);
}
HAL_Delay(200);
}