Модуль ECAN для dsPIC. Типичная сеть ECAN. 16 приемных фильтров для фильтрования сообщения, страница 11

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

5.5. Зацикленный режим (Согласно ERRATA использовать не нужно в dsPIC).

Зацикленный режим используется для самотестирования позволяя ECAN модулю принимать свои собственные сообщения. В этом режиме ECAN линия передатчика внутренне соединяется с линией приема. Предусмотрено «слепое» подтверждение, и таким образом исключается необходимость в подтверждающем бите от другого узла.

5.6. Выключенный режим.

Выключенный режим используется для гарантирования надежного выключения перед введением устройства в спящий режим или режим бездействия. Таким образом ECAN  контроллер ожидает пока шина освободится (11 recessive битов) перед изменением режима. Когда модуль находится в выключенном режиме, он останавливает свои такты, не оказывает влияние на CPU или другие модули. Модуль пробуждается, когда на шине происходит активация или когда CPU устанавливает OPMODE<2:0> в «000».

Состояние вывода CiTX остается в режиме чтения пока модуль находится в выключенном режиме.

6. ПЕРЕДАЧА ECAN СООБЩЕНИЙ.

Узел создает сообщение и передает это сообщение. Узел ждёт пока шина перейдёт в режим простоя или проиграет арбитраж, после чего отправляет сообщения. Рисунок 8 показывает типичный процесс передачи в ECAN.

Рисунок 8. Передача ECAN

Буферы сообщений 0-7 (Расположенные в DMA RAM) конфигурируются для передачи или приема CAN сообщений используя бит выбора TX/RX буфера (TXENn) в соответствии с ECAN TX/RX буфером m регистра управления (CiTRmnCON<7>). Если бит TXENn установлен – буфер сообщений конфигурируется для передачи.

Смотрите Раздел2 «Форматы CAN сообщений» для размещения стандартного или расширенного кадра в буфере сообщений и состояний битов IDE, SRR, RTR, RB0 и RB1 для стандартных данных, расширенных данных, стандартного запроса, расширенного запроса в соответствии с CAN протоколом .

6.1. Последовательность передачи сообщения.

Для передачи сообщений посредством CAN шины пользователь сначала должен выполнить следующие задачи:

- Сконфигурировать буфер сообщений для передачи и назначит приоритет буфера.

- Записать CAN сообщения в буфер сообщений расположенный в DMA RAM.

- Установить бит запроса передачи для буфера, чтобы инициализировать передачу сообщения.

Передача сообщения инициализируется установкой бита TXREQm  в регистре управления CiTRmnCON<3>. Бит TXREQm  очищается автоматически после передачи сообщения. Перед отправлением  SOF (Start Of Frame) все буферы готовые для передачи, определяют кто имеет наивысший приоритет. Передающий буфер с наивысшим приоритетом передает первый.

Каждому из буферов передающих сообщение пользователь может назначить любой из четырех уровней приоритета использую биты TWnPRI регистра CiTRmnCON.

TXnPRI выбор приоритета для передоваемого сообщения сообщению:

11 = наивысший приоритет передаваемого сообщения.

10 = высокий приоритет передаваемого сообщения.

01 = низкий приоритет передаваемого сообщения.

00 = самый низкий приоритет передаваемого сообщения.

Буферы сообщений имеют приоритеты по умолчанию. Буфер сообщений 7 имеет более высокий приоритет по умолчанию. Приоритет определяемый пользователем имеет большую силу чем приоритет по умолчанию.

Пример 1 иллюстрирует программный код, для передачи стандартного фрейма, используя буфер сообщения 0.

Пример 1. Программный код для отправки стандартного фрейма

/* Назначаем буфер сообщения 32x8слов для ECAN1 в DMARAM */

unsigned int ecan1MsgBuf[32][8] __attribute__(space(dma));

DMA1STA = __builtin_dmaoffset(ecan1MsgBuf);

/* Конфигурируем буфер сообщения 0 для передачи, а также назначаем приоритет */

C1TR01CONbits.TXEN0 = 0x1;

C1TR01CONbits.TX0PRI = 0x3;