Перейти к содержанию

MCP2515 — автономный контроллер CAN 2.0B с интерфейсом SPI

MCP2515 даёт шину CAN микроконтроллеру, у которого своего контроллера CAN нет, — Arduino Uno, Raspberry Pi, многим AVR и PIC. Кадры собирает и проверяет сама микросхема, программа только пишет и читает буферы по SPI. Разбираем по даташиту Microchip выводы, кварц и предел скорости, маски и фильтры, режимы и электрические характеристики.

Обновлено Редакция GAW

MCP2515 (Microchip) — контроллер протокола CAN 2.0B: он формирует и разбирает стандартные (11 бит) и расширенные (29 бит) кадры данных и удалённые кадры до 1 Мбит/с, считает CRC, ведёт счётчики ошибок и сам повторяет передачу. Трансивера в микросхеме нет: выводы TXCAN и RXCAN подключают к отдельному трансиверу — TJA1050, TJA1051, SN65HVD230 или MCP2551. Устройство шины, схема узла и пример инициализации регистров — в статье «Шина CAN».

Коротко

  • CAN — 2.0B до 1 Мбит/с, три буфера передачи, два буфера приёма, 2 маски и 6 фильтров по 29 бит; CAN FD не поддерживается.
  • SPI — до 10 МГц, режимы 0,0 и 1,1; 9 команд, включая быстрое чтение буфера и BIT MODIFY.
  • Питание — 2,7–5,5 В; ток до 10 мА в работе, до 5 мкА во сне (−40…+85 °C).
  • Генератор — кварц или внешний сигнал 1–25 МГц, до 40 МГц при питании 4,5–5,5 В.
  • Корпуса — PDIP-18, SOIC-18, TSSOP-20, QFN-20 4 × 4 мм; исполнения до +85 и +125 °C, AEC-Q100.

Выводы

MCP2515, вид сверху: 1 TXCAN, 2 RXCAN, 3 CLKOUT/SOF, 4 TX0RTS, 5 TX1RTS, 6 TX2RTS, 7 OSC2, 8 OSC1, 9 VSS, 10 RX1BF, 11 RX0BF, 12 INT, 13 SCK, 14 SI, 15 SO, 16 CS, 17 RESET, 18 VDDMCP25151TXCAN2RXCAN3CLKOUT4TX0RTS5TX1RTS6TX2RTS7OSC28OSC19VSS10RX1BF11RX0BF12INT13SCK14SI15SO16CS17RESET18VDDвид сверху
MCP2515 в корпусе PDIP-18 или SOIC-18, вид сверху
Вывод (PDIP, SOIC)ОбозначениеНазначение
1, 2TXCAN, RXCANвыход и вход к трансиверу CAN
3CLKOUT/SOFвыход тактовой частоты с делителем 1, 2, 4 или 8 либо сигнал начала кадра
4–6TX0RTS–TX2RTSзапрос передачи буфера 0–2 по уровню или обычный вход; подтяжка 100 кОм к VDD
7, 8OSC2, OSC1кварц или внешний генератор на OSC1
9, 18VSS, VDDобщий провод и питание
10, 11RX1BF, RX0BF«буфер приёма заполнен» или обычные выходы
12INTвыход прерывания, активный низкий
13–16SCK, SI, SO, CSSPI: такт, данные в микросхему, данные из микросхемы, выбор
17RESETсброс, активный низкий

В корпусе TSSOP-20 после TX1RTS идёт неподключённый вывод 6, поэтому номера с TX2RTS сдвигаются на один, а вывод 15 тоже не подключён (табл. 1-1 даташита). В корпусе QFN-20 нумерация другая, площадку под корпусом соединяют с VSS. Чертёж TSSOP-20 — на странице корпуса TSSOP-20.

Кварц, такт и предельная скорость

Квант времени CAN — TQ = 2 · (BRP + 1) / FOSC, где BRP — делитель 0–63 из регистра CNF1; самый короткий квант — 2 периода генератора. Бит состоит из сегментов: синхронизация 1 TQ, распространение 1–8 TQ, фаза 1 — 1–8 TQ, фаза 2 — 2–8 TQ. Отсюда наш расчёт предельной скорости по кварцу при самом коротком бите из 5 квантов:

КварцСамый короткий TQНаибольшая скорость1 Мбит/с
8 МГц250 нс800 кбит/снедоступна
16 МГц125 нс1,6 Мбит/с (ограничена протоколом 1 Мбит/с)8 TQ на бит
20 МГц100 нсограничена протоколом10 TQ на бит

Практический выбор сегментов и точки выборки — в калькуляторе битового тайминга CAN: он считает регистры CNF1–CNF3 именно для MCP2515. Microchip допускает керамический резонатор только примерно до 125 кбит/с, на больших скоростях нужен кварц: разброс частот генераторов между узлами — не больше 1,7 %.

Ёмкости кварца из табл. 8-2 даташита (проверены Microchip на запуск, не оптимизированы): 4 МГц — 27 пФ, 8 МГц — 22 пФ, 20 МГц — 15 пФ; для резонатора 16 МГц — 22 пФ. Как рассчитать их для своего кварца — в калькуляторе нагрузочных конденсаторов.

После включения питания, сброса и выхода из сна MCP2515 выжидает 128 тактов генератора, пока не установится кварц; до этого обращаться к нему по SPI нельзя. Вывод CLKOUT после сброса выдаёт частоту кварца, делённую на 8, — его можно использовать как такт для микроконтроллера. Сброс нужен после каждого включения — выводом RESET (низкий уровень не короче 2 мкс) или командой RESET по SPI; оба способа равноценны.

Маски и фильтры

Каждый принятый без ошибок кадр проверяется фильтрами приёма:

БуферМаскаФильтрыПриоритет
RXB0RXM0RXF0, RXF1выше: кадр проверяется сначала для RXB0
RXB1RXM1RXF2–RXF5ниже

Правило бита (табл. 4-2): если бит маски 0 — бит идентификатора принимается любым; если 1 — он должен совпасть с битом фильтра. Маски и фильтры охватывают все 29 бит расширенного идентификатора; для стандартного кадра данных старшие 11 бит сравниваются с идентификатором, а младшие 16 — с первыми двумя байтами данных. Записывать маски и фильтры можно только в режиме конфигурации. Если включить перенос (бит BUKT регистра RXB0CTRL), второй кадр при занятом RXB0 уходит в RXB1 без потери, независимо от фильтров RXB1.

Разобрать идентификатор и поля кадра по битам можно в калькуляторе кадра CAN.

Режимы

РежимREQOPЧто делает
Конфигурация100после сброса; только здесь пишутся CNF1–CNF3, маски, фильтры и TXRTSCTRL; счётчики ошибок обнуляются
Нормальный000приём, передача, подтверждение и кадры ошибок — единственный режим работы на шине
Сон001генератор остановлен, SPI доступен; пробуждение по активности на шине, если разрешено прерывание WAKIE; после пробуждения — режим только приёма
Только приём011принимает все кадры, в том числе с ошибками, ничего не передаёт и не подтверждает — для анализатора шины и подбора скорости
Петля010кадры из буферов передачи сразу попадают в буферы приёма, TXCAN в рецессиве — проверка программы без шины

Режим запрашивают битами REQOP[2:0] регистра CANCTRL и проверяют по битам OPMOD регистра CANSTAT: переход происходит не мгновенно.

Команды SPI

КомандаБайтНазначение
RESET0xC0сброс, переход в режим конфигурации
READ0x03чтение регистров с заданного адреса
READ RX BUFFER0x90 + 0nm0чтение буфера приёма с одного из четырёх мест, флаг RXnIF снимается при подъёме CS
WRITE0x02запись регистров
LOAD TX BUFFER0x40 + 0abcзапись в буфер передачи с одного из шести мест
RTS0x80 + 0nnnзапрос передачи буферов 0–2
READ STATUS0xA0быстрый опрос флагов приёма и передачи
RX STATUS0xB0какой фильтр сработал и тип кадра
BIT MODIFY0x05установка и сброс отдельных битов — только у части регистров

Данные защёлкиваются по фронту SCK, выход SO меняется по спаду; CS держат в нуле всю команду. Тайминги SPI (табл. 13-6): такт до 10 МГц, высокий и низкий уровень SCK — не короче 45 нс, установка CS — 50 нс.

Электрические характеристики

По табл. 13-1 при питании 2,7–5,5 В:

ПараметрЗначение
Питание2,7–5,5 В, регистры сохраняются от 2,4 В
Единица на RXCANот 2 В до VDD + 1 В
Единица на SCK, CS, SI, TXnRTSот 0,7 · VDD
Ноль на SCK, CS, SIдо 0,4 · VDD
Единица и ноль на OSC1 и RESETот 0,85 · VDD и до 0,3 · VDD (OSC1), до 0,15 · VDD (RESET)
Выход SO, CLKOUTноль ≤ 0,6 В при 2,1 мА, единица ≥ VDD − 0,5 В при 400 мкА (VDD = 4,5 В)
Ток в работедо 10 мА при 5,5 В, 25 МГц, SPI 1 МГц
Ток во снедо 5 мкА (−40…+85 °C), до 8 мкА (до +125 °C)

Предельные режимы (разд. 13.1): питание до 7,0 В, любой вывод — от −0,6 В до VDD + 1,0 В.

Модуль MCP2515 с TJA1050

Самый распространённый модуль — MCP2515 вместе с трансивером TJA1050. TJA1050 питается только от 4,75–5,25 В, вход TXD у него видит единицу от 2,0 В, а выход RXD поднимается до уровня питания. Наш вывод по таблицам двух даташитов: если весь модуль питается от 5 В, на 5 В оказывается и линия SO (MISO) MCP2515, поэтому к микроконтроллеру на 3,3 В без допуска 5 В его подключают через согласование уровней или питают MCP2515 отдельно от 3,3 В. Вход RXCAN у MCP2515 видит единицу уже от 2 В, так что сам контроллер можно питать от 3,3 В рядом с 5-вольтовым трансивером — но RXD трансивера тогда выдаёт больше VDD + 1 В = 4,3 В, предела входа RXCAN, и нужен делитель или трансивер с VIO. Подробно о выборе трансивера — в карточке TJA1050 и TJA1051.

Частоту кварца на модуле читают по маркировке на его корпусе и указывают в программе: если библиотека считает кварц 16 МГц, а стоит 8 МГц, все скорости окажутся вдвое ниже, и узел заполнит шину кадрами ошибок.

Аналоги

Microchip в даташите MCP2515 замен не называет; кадры CAN FD он не понимает, для них нужен контроллер с поддержкой FD — о различиях в статье «CAN FD». Микроконтроллеры со встроенным CAN (STM32 с bxCAN, ESP32 с TWAI) обходятся без отдельного контроллера — им нужен только трансивер.

Частые вопросы

Какой кварц нужен MCP2515 и как он влияет на скорость?

Подходит кварц от 1 до 25 МГц при любом питании 2,7–5,5 В и до 40 МГц при 4,5–5,5 В. Самый короткий квант времени — 2 периода генератора, а бит CAN не может быть короче 5 квантов. Наш расчёт: с кварцем 8 МГц квант не короче 250 нс, бит — не короче 1,25 мкс, то есть скорость не выше 800 кбит/с; для 1 Мбит/с нужен кварц от 10 МГц, обычно берут 16 МГц.

Можно ли питать MCP2515 от 3,3 В?

Да, рабочий диапазон 2,7–5,5 В. Тогда уровни SPI совпадают с микроконтроллером на 3,3 В, но кварц должен быть не выше 25 МГц. Трансивер к нему нужен с логикой 3,3 В: SN65HVD230 или трансивер с выводом VIO, например TJA1051T/3.

Сколько фильтров у MCP2515?

Две маски и шесть фильтров по 29 бит. Буфер RXB0 — с маской RXM0 и фильтрами RXF0, RXF1, буфер RXB1 — с маской RXM1 и фильтрами RXF2–RXF5. Бит маски 0 означает «не проверять этот бит идентификатора». Для стандартных кадров данных фильтр может проверять ещё первые два байта данных.

Почему MCP2515 не отправляет кадры в режиме Loopback на шину?

Так задумано: в режиме Loopback кадры из буферов передачи сразу попадают в буферы приёма, вывод TXCAN остаётся в рецессивном состоянии, подтверждение не требуется. Это режим проверки программы без шины. Для обмена с другими узлами нужен нормальный режим (REQOP = 000) и хотя бы ещё один узел, который подтвердит кадр.

Источники

  1. Microchip. MCP2515 Stand-Alone CAN Controller with SPI Interface (DS20001801K, 2003–2021) — с. 1 — возможности, корпуса; табл. 1-1 — выводы PDIP/SOIC, TSSOP, QFN; разд. 4.2 — приоритет буферов и перенос в RXB1; разд. 4.5, табл. 4-2 — маски и фильтры; разд. 5 — битовый тайминг: TQ = 2·(BRP + 1)/FOSC, сегменты 1–8 TQ, PS2 от 2 TQ, допуск генератора 1,7 %; разд. 8 — кварц, табл. 8-2 (4 МГц — 27 пФ, 8 МГц — 22 пФ, 20 МГц — 15 пФ), задержка 128 тактов, CLKOUT; разд. 9 — сброс не меньше 2 мкс; разд. 10 — режимы; табл. 12-1 — команды SPI; разд. 13 — предельные режимы, табл. 13-1, 13-2, 13-6
  2. NXP (Philips). TJA1050 High speed CAN transceiver, product specification (22 October 2003) — архивная копия официального файла; трансивер популярных модулей с MCP2515: питание 4,75–5,25 В, вход TXD — единица от 2,0 В, выход RXD — до уровня питания; используется для разбора совместимости уровней

Нашли ошибку?