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.
Выводы
| Вывод (PDIP, SOIC) | Обозначение | Назначение |
|---|---|---|
| 1, 2 | TXCAN, RXCAN | выход и вход к трансиверу CAN |
| 3 | CLKOUT/SOF | выход тактовой частоты с делителем 1, 2, 4 или 8 либо сигнал начала кадра |
| 4–6 | TX0RTS–TX2RTS | запрос передачи буфера 0–2 по уровню или обычный вход; подтяжка 100 кОм к VDD |
| 7, 8 | OSC2, OSC1 | кварц или внешний генератор на OSC1 |
| 9, 18 | VSS, VDD | общий провод и питание |
| 10, 11 | RX1BF, RX0BF | «буфер приёма заполнен» или обычные выходы |
| 12 | INT | выход прерывания, активный низкий |
| 13–16 | SCK, SI, SO, CS | SPI: такт, данные в микросхему, данные из микросхемы, выбор |
| 17 | RESET | сброс, активный низкий |
В корпусе 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; оба способа равноценны.
Маски и фильтры
Каждый принятый без ошибок кадр проверяется фильтрами приёма:
| Буфер | Маска | Фильтры | Приоритет |
|---|---|---|---|
| RXB0 | RXM0 | RXF0, RXF1 | выше: кадр проверяется сначала для RXB0 |
| RXB1 | RXM1 | RXF2–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
| Команда | Байт | Назначение |
|---|---|---|
| RESET | 0xC0 | сброс, переход в режим конфигурации |
| READ | 0x03 | чтение регистров с заданного адреса |
| READ RX BUFFER | 0x90 + 0nm0 | чтение буфера приёма с одного из четырёх мест, флаг RXnIF снимается при подъёме CS |
| WRITE | 0x02 | запись регистров |
| LOAD TX BUFFER | 0x40 + 0abc | запись в буфер передачи с одного из шести мест |
| RTS | 0x80 + 0nnn | запрос передачи буферов 0–2 |
| READ STATUS | 0xA0 | быстрый опрос флагов приёма и передачи |
| RX STATUS | 0xB0 | какой фильтр сработал и тип кадра |
| BIT MODIFY | 0x05 | установка и сброс отдельных битов — только у части регистров |
Данные защёлкиваются по фронту 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) и хотя бы ещё один узел, который подтвердит кадр.
Источники
- 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
- NXP (Philips). TJA1050 High speed CAN transceiver, product specification (22 October 2003) — архивная копия официального файла; трансивер популярных модулей с MCP2515: питание 4,75–5,25 В, вход TXD — единица от 2,0 В, выход RXD — до уровня питания; используется для разбора совместимости уровней
Нашли ошибку?
Смотрите также
- Интерфейсные микросхемыРасширители портов, трансиверы, Ethernet, 4–20 мА: параметры, карточки
- CANCAN_H и CAN_L, терминаторы, кадр, арбитраж, ошибки, тайминг, MCP2515
- Битовый тайминг CANCAN_BTR для STM32, CNF1–CNF3 для MCP2515, точка выборки
- Конструктор кадра CANCAN и CAN FD по битам: CRC-15, CRC-17 и CRC-21, битстаффинг, длина кадра
- Фильтр приёма CANАппаратный отбор кадров CAN по идентификатору: маска или список
- TJA1050 и TJA1051Трансиверы CAN на 5 В: выводы, VIO у TJA1051T/3, уровни TXD и RXD, защиты
- SN65HVD230 и MCP2551Трансиверы CAN на 3,3 и 5 В: выводы, режимы RS, уровни, отличия
- SPISCLK, MOSI, MISO, CS, режимы 0–3, daisy chain, частота, SPI в AVR
- PDIP-18 (DIP-18)Шаг 2,54 мм, ряды через 7,62 мм, длина 22,35–23,37 мм, чертёж в дюймах
- SOIC-18 широкийШаг 1,27 мм, корпус 11,55 × 7,50 мм, по выводам 10,30 мм, высота до 2,65 мм
- CAN-контроллерУзел протокола CAN: кадры, арбитраж, ошибки, битовое время, фильтры
- Как подключить Arduino к разъёму OBD-II по CAN?Контакты 6 и 14, 500 или 250 кбит/с, MCP2515 и трансивер; начинать с прослушивания