Что такое "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); //ОТПРАВИТЬ СООБЩЕНИЕ
}
//******АКТИВАЦИЯ МОЖЕТ*****ЗАВЕРШАЕТСЯ****//

, 👍2

Обсуждение

не могли бы вы также указать, какие файлы .h включены в начало этого скетча?, @oh.dae.su

Из [Re: Отправка нескольких сообщений по CAN с помощью sparkfun can bus shield](https://forum.arduino.cc/index.php?topic=505462.msg3450848#msg3450848): #include <Canbus.h> среди прочего ., @Greenonline


2 ответа


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

2

tCAN будет struct, который определяет структуру отправляемого сообщения CAN. Имя tCAN не является стандартным и будет выбрано автором используемой вами библиотеки. Предположительно, он использует вариант венгерской нотации, а префикс t означает type, так что, вероятно, он был typedef из структуры в имя типа.

Я не знаком с CAN, но если есть стандартные форматы сообщений, эта структура будет соответствовать одному из них. Вы можете найти фактическую структуру в заголовочном файле для выбранной вами библиотеки (или, может быть, в самом примере кода скетча?).

,

Спасибо вам за разъяснение., @Spring


2

tCAN представляет собой struct, определяющую кадр CAN для отправки по сети.

https://en.m.wikipedia.org/wiki/CAN_bus#Frames

Существует несколько типов фреймов: стандартные, расширенные и FD (гибкие данные).

Таблицы в связанной статье Википедии описывают физический протокол. В структуре не будет соответствующего поля для каждого раздела протокола, потому что библиотека позаботится об установке постоянных или вычисляемых вещей, таких как CRC и End of Frame. Вам просто нужно установить соответствующие детали, такие как идентификатор, (возможно) длину данных и сами данные.

Если у вас возникли проблемы, проверьте скорость передачи данных и убедитесь, что вы отправляете кадр ожидаемого типа. Большинство любителей будут использовать стандартные рамы, но многие части оборудования промышленного класса будут использовать рамы Extended или FD.

,