Что такое "tCAN" в кодах CAN-шины?
Я новичок в Arduino и шине CAN. Я изучаю некоторые примеры кода, которые содержат «сообщение tCAN». Я предполагаю, что он определяет класс для сообщений CAN. Я много искал, но не нашел никакой информации, кроме примеров кодов. Может кто-нибудь мне помочь. Спасибо!
Некоторые коды из примера проекта:
void activateCAN()
{
//***ПОДГОТОВИТЬ СООБЩЕНИЕ***//
tCAN message_act;
message_act.id = 0x750;
message_act.header.rtr = 0;
message_act.header.length = 8;
message_act.data[0] = 0x00;
message_act.data[1] = 0x00;
message_act.data[2] = 0x00;
message_act.data[3] = 0x00;
message_act.data[4] = 0x00;
message_act.data[5] = 0x00;
message_act.data[6] = 0x00;
message_act.data[7] = 0x00;
mcp2515_bit_modify(CANCTRL, (1 << REQOP2) | (1 << REQOP1) | (1 << REQOP0), 0);
mcp2515_send_message(&message_act); //ОТПРАВИТЬ СООБЩЕНИЕ
}
//******АКТИВАЦИЯ МОЖЕТ*****ЗАВЕРШАЕТСЯ****//
@Spring, 👍2
Обсуждение2 ответа
Лучший ответ:
tCAN
будет struct
, который определяет структуру отправляемого сообщения CAN. Имя tCAN
не является стандартным и будет выбрано автором используемой вами библиотеки. Предположительно, он использует вариант венгерской нотации, а префикс t
означает type
, так что, вероятно, он был typedef
из структуры в имя типа.
Я не знаком с CAN, но если есть стандартные форматы сообщений, эта структура будет соответствовать одному из них. Вы можете найти фактическую структуру в заголовочном файле для выбранной вами библиотеки (или, может быть, в самом примере кода скетча?).
Спасибо вам за разъяснение., @Spring
tCAN
представляет собой struct
, определяющую кадр CAN для отправки по сети.
https://en.m.wikipedia.org/wiki/CAN_bus#Frames
Существует несколько типов фреймов: стандартные, расширенные и FD (гибкие данные).
Таблицы в связанной статье Википедии описывают физический протокол. В структуре не будет соответствующего поля для каждого раздела протокола, потому что библиотека позаботится об установке постоянных или вычисляемых вещей, таких как CRC и End of Frame. Вам просто нужно установить соответствующие детали, такие как идентификатор, (возможно) длину данных и сами данные.
Если у вас возникли проблемы, проверьте скорость передачи данных и убедитесь, что вы отправляете кадр ожидаемого типа. Большинство любителей будут использовать стандартные рамы, но многие части оборудования промышленного класса будут использовать рамы Extended или FD.
- 5 В MCP2515 в 3.3V Teensy. Как уменьшить напряжение MISO
- Sparkfun CAN Shield BMW OBD2 чтение
- Изменение режима работы CAN- трансивера
- Подключите Arduino к ПЛК (обмен данными)
- Конфликт SPI с двумя экранами - IOREF?
- CAN-шина MCP2515 с Arduino
- Что может привести к тому, что данные будут напечатаны правильно, затем неправильно, а затем повторятся? CAN-шина/общая передача
- Конструкция устройства слежения за транспортным средством
не могли бы вы также указать, какие файлы .h включены в начало этого скетча?, @oh.dae.su
Из [Re: Отправка нескольких сообщений по CAN с помощью sparkfun can bus shield](https://forum.arduino.cc/index.php?topic=505462.msg3450848#msg3450848):
#include <Canbus.h>
среди прочего ., @Greenonline