Режим чтения всех сообщений используется для системной отладки. В основном все сообщения принимаются независимо от их идентификаторов, даже когда они с ошибками. Если режим чтения всех сообщения активирован, передача и прием происходят так же как и при нормальном режиме, исключая то что сообщения принятые с ошибкой также помещаются в буфер сообщений.
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;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.