Я создал простой тестовый код для CAN с использованием PIC18F4580. Который состоит из 2 узлов, отправляющих данные между собой. Использует 11-битный стандартный идентификатор для связи. Узлу-1 присвоен идентификатор 10, а узлу-2 - идентификатор 20. Я попытался отобразить регистры, такие как COMSTAT
, TXB0CON
, RXB0CON
, на ЖК-дисплее вот содержимое регистра.
COMSTAT = 0x00
TXB0CON = 0x00
RXB0CON = 0x01
- При нажатии клавиши сначала будет последовательно отображаться содержимое COMSTAT, TXB0CON и RXB0CON на ЖК-дисплее.
- Затем в конце будет помещено сообщение ID кадра = XX, Данные = NDx на шине CAN
- Узел-1 помещает ND2 в поле данных D0 (N), D1 (D) и D2 (2) с DL C, равным 3, и ID = 20.
- Точно так же Node-2 помещает ND1 в поле данных D0 (N), D1 (D) и D2 (1) с DL C, равным 3 и ID = 10 (см. Приведенный Тестовый код , данный).
Оба узла отправляют данные, но Узел-1 только получает. И показывая ID = 00 вместо 10, а полученные данные отображаются на ЖК-дисплее в виде некоторого мусора.
Ссылка на тестовый код