
MCP2515 CAN Module
Microchip (MCP2515; изготовитель платы не указан) · MCP2515; пример для модуля с кварцем 8 МГц и TJA1050 на 5 В
Подключение контроллера CAN 2.0 к микроконтроллеру через SPI.
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает MCP2515; пример для модуля с кварцем 8 МГц и TJA1050 на 5 В
MCP2515 выполняет функции контроллера CAN и обменивается данными с микроконтроллером по SPI. Для физической линии CANH/CANL ему нужен отдельный трансивер. В распространённых модулях это TJA1050, но существуют другие схемы, напряжения питания и кварцы.
Пример относится только к 5-вольтовой плате с кварцем 8 МГц. Частоту определяют по маркировке кварца и схеме: неверный выбор 8/16 МГц меняет реальную скорость CAN. Микросхема MCP2515 допускает иное питание, однако это не делает готовый модуль с TJA1050 модулем на 3,3 В. Размеры, порядок гребёнки и наличие 120-омного резистора проверяются у конкретной платы.
Первый запуск выполняется во внутреннем loopback без подключения CANH/CANL. Он проверяет обмен с контроллером, но не подтверждает исправность трансивера и проводки линии. Для реальной CAN-сети нужны совпадающая скорость, второй активный узел для ACK и терминация на концах. MCP2515 работает с классическим CAN, а не CAN FD.
Модуль HW-184 MCP2515: вариант 8 МГц с TJA1050 и питанием 5 В по описанию AJmaker. Фото AJmaker; фон удалён без реконструкции платы. Маркировка кварца на фото не читается; параметры подтверждает карточка продавца. Разрешение на повторное использование фото не подтверждено.
Источник изображения: ajmaker.pl, исходный файл. Условия повторного использования не установлены; открытая лицензия не заявляется. Фон отделён, выполнено равномерное масштабирование; реальные детали платы не перерисованы.
MCP2515/TJA1050 8 МГц: подключение к Uno R3 для внутреннего loopback. INT и обе CAN-клеммы не подключены. Авторская схема SLDV LAB.
Характеристики
- Формат контроллера
- CAN 2.0B; стандартные и расширенные идентификаторы
- Максимальные данные классического кадра
- 8 байт
- Кварц выбранного примера
- 8 МГц
- Интерфейс
- SPI
- Питание модуля
- В примере модуль MCP2515 + TJA1050 питается от 5 В и подключён к Uno R3 с логикой 5 В; напрямую к ESP32 этот вариант не подключать.
ПРАКТИКА
Подключение
| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| VCC | 5V | Arduino Uno R3; только описанное 5-вольтовое исполнение. |
| GND | GND | Общая земля. |
| SCK | D13 | SPI Uno R3. |
| SI / MOSI | D11 | Данные от Uno к модулю. |
| SO / MISO | D12 | Данные от модуля к Uno; уровень 5 В. |
| CS | D10 | Указан в конструкторе MCP2515. |
| INT | Не подключать | Пример опрашивает состояние по SPI. |
| CANH / CANL | Не подключать | Только внутренний loopback; не соединять CANH с CANL. |
Подходит для Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги интегрировать MCP2515 CAN Module. Сначала уточни точную плату модуля, контроллер, среду, питание и задачу. Проверь схему, логические уровни и маркировку контактов; затем дай согласованные подключение, зависимости и полный минимальный пример с обработкой ошибок. Объясни безопасную первичную проверку и ожидаемый результат. До примера запроси маркировку кварца и CAN-трансивера. Не переноси питание и уровни чипа MCP2515 на весь модуль.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Плата и ядро
Arduino Uno R3; Arduino AVR Boards 1.8.6Распиновка относится к ATmega328P Uno R3; не Uno R4 и не ESP32.
- Библиотека
autowp arduino-mcp2515 1.3.1Заголовок mcp2515.h; SPI входит в ядро Arduino.
- Кварц и скорость
CAN_125KBPS, MCP_8MHZ8 МГц обязательно сверить на конкретном модуле.
- Начальный режим
setLoopbackMode()Не подключать к внешней CAN-сети для этого теста.
Arduino: полный внутренний loopback MCP2515
cpp#include <SPI.h>
#include <mcp2515.h>
MCP2515 can(10);
void stop(const char *message) {
Serial.println(message);
while (true) delay(1000);
}
void setup() {
Serial.begin(115200);
SPI.begin();
if (can.reset() != MCP2515::ERROR_OK) stop("Reset failed");
if (can.setBitrate(CAN_125KBPS, MCP_8MHZ) != MCP2515::ERROR_OK)
stop("Bitrate setup failed");
if (can.setLoopbackMode() != MCP2515::ERROR_OK) stop("Loopback failed");
can_frame sent = {};
sent.can_id = 0x123;
sent.can_dlc = 2;
sent.data[0] = 0x55;
sent.data[1] = 0xAA;
if (can.sendMessage(&sent) != MCP2515::ERROR_OK) stop("Send failed");
can_frame received = {};
const uint32_t started = millis();
while (millis() - started < 1000) {
if (can.readMessage(&received) == MCP2515::ERROR_OK) {
bool ok = received.can_id == sent.can_id && received.can_dlc == 2
&& received.data[0] == 0x55 && received.data[1] == 0xAA;
stop(ok ? "Loopback OK" : "Unexpected frame");
}
}
stop("Receive timeout");
}
void loop() {}
Полный скетч: Uno R3, Arduino AVR Boards 1.8.6, autowp arduino-mcp2515 1.3.1. Сверено по заголовку API; компиляция и аппаратный тест не выполнялись. Внешний трансивер этим режимом не проверяется.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


