Какие правильные контакты для TWAI (CAN) на ESP32?

по сравнению с фотографиями микрочипа:

pic16f не имеет встроенного периферийного устройства CAN. поэтому вам нужен контроллер SPI - CAN (например, MCP2515).

некоторые PIC18f имеют встроенный CAN - контроллер и нуждаются только в CAN - приемопередатчике. В этих случаях используются эксклюзивные контакты TX и RX.

Существуют ли конкретные контакты для использования в качестве CAN-шины на esp32? периферийные устройства, такие как adc, i2c и другие, должны использовать определенные контакты. Происходит ли это и с CAN?

Я использую следующую конфигурацию: 2 платы ESP32 devboard - arduino on PlatformIO Вывод 5 как TX и вывод 4 как RX (уже в библиотеке CAN), 2 Модуля приемопередатчика Sn65hvd230

Я искал информацию об этом в документации, но не смог ее найти.

Я ценю любую помощь.

, 👍3

Обсуждение

Вы можете использовать любые контакты (в разумных пределах). Какие контакты вы велели использовать в своем коде?, @Majenko

Вы можете [отредактировать свой вопрос](https://arduino.stackexchange.com/posts/81209/edit), чтобы заполнить детали, которые запрашиваются здесь., @timemage


2 ответа


Лучший ответ:

5

Я искал информацию об этом в документации, но не смог ее найти.

Ну, в некоторых их документах говорится:

Интерфейс контроллера TWAI состоит из 4 сигнальных линий, известных как TX, RX, BUS-OFF и CLKOUT. Эти четыре сигнальные линии могут быть проложены через матрицу GPIO к GPIO-колодкам ESP32.

И это, по-видимому, подкрепляется их примерами, которые используют TWAI_GENERAL_CONFIG_DEFAULT для создания структуры с аргументами, заполняющими поля, использующие gpoi_num_t.

Документация по матрице GPIO обычно содержится в техническом справочнике ESP32. Он описан там следующим образом:

Чип ESP32 оснащен 34 физическими GPIO - площадками. Каждая панель может использоваться как универсальный ввод-вывод или подключаться к внутреннему периферийному сигналу. IO_MUX, RTC IO_MUX и матрица GPIO отвечают за маршрутизацию сигналов от периферийных устройств к GPIO-площадкам. Вместе эти системы обеспечивают высоко настраиваемый ввод-вывод.

(Мой акцент выше).

А также есть таблица (таблица 25) в Приложении 2 спецификации ESP32 для матрицы GPIO.

Многие небольшие микросхемы, такие как микросхемы серии PIC16F, не имеют внутренней маршрутизации для периферийных устройств, за исключением решения, какую из одной или двух специальных функций использовать, а не каналы GPIO и АЦП. Большинство AVR - чипов серии ATtiny и ATmega, которых нет в сериях 0 и 1, этого не делают. Серии 1 и 0, а также некоторые более старые части серии (например, ATTiny841) дают вам фиксированное число (обычно два) предопределенных мест назначения для некоторых периферийных устройств.

Такие вещи становятся более гибкими по мере того, как вы попадаете в более крупные чипы, но наличие этой функции "матрицы", которая позволяет выбирать более свободно, сравнительно редко. Некоторые чипы с надписью Cypress "PSoC" имеют такую особенность.

,

2

При использовании arduino и ядра esp32 любой PIN-код может быть назначен встроенному контроллеру TWAI.

Если вы используете библиотеку esp32_can https://github.com/collin80/esp32_can вы можете изменить назначение PINа в следующем файле:

C:\Users\USER\Documents\Arduino\libraries\esp32_can-master\src\esp32_can.cpp

//Установите их на соответствующие контакты для вашей платы. По умолчанию установлено значение correct для EVTV ESP32-Due
//rxpin txpin
ESP32CAN атрибут((слабый)) CAN0(GPIO_NUM_16, GPIO_NUM_17) ;

//Выберите и раскомментируйте нужный модуль, подключенный через SPI
//CS, INT
АтрибутMCP2517FD((слабый)) CAN1(5, 27) ;
//АтрибутMCP2515((слабый)) CAN1(5, 27) ;

,