PIClist RUS
микроконтроллеры PIC и интерфейсы
техническая документация
статьи и разработки на русском языке

PIC24H - 18.0 Улучшенный модуль CAN (ECAN)

« назад на главную страницу

Оригинал: PIC24H Family Data Sheet

Перевод с английского © piclist.ru по заказу chip-nn.ru


Примечание: в данном техническом описании собрана информация о возможностях устройств только группы PIC24H. Этот документ не является всеобъемлющим источником информации. Дополнить содержащиеся здесь сведения вы сможете, обратившись к документу "Справочное руководство по семейству dsPIC30F" ("dsPIC30F Family Reference Manual" - DS70046).

Примечание: В описаниях модулей ECAN в даташитах на микроконтроллеры PIC довольно часто попадаются ошибки, зачастую являющиеся последствием копирования информации из описаний более ранних версий микроконтроллеров или модуля CAN. Этот раздел в даташите на PIC24H не стал исключением. Обнаруженные ошибки исправлены, к некоторым исправлениям имеются пояснения в сносках. Но, возможно, не все ошибки обнаружены, так что будьте внимательны! - прим. пер.


18.1 Краткий обзор модуля

Улучшенный модуль CAN1 (Enhanced Controller Area Network - ECAN) - это последовательный интерфейс, используемый для взаимодействия с другими модулями CAN или микроконтроллерными устройствами. Этот интерфейс/протокол был разработан для обеспечения связи в среде с помехами. Устройства PIC24H содержат до двух модулей ECAN.

Модуль CAN - это коммуникационный контроллер, реализующий протокол CAN 2.0A/B согласно спецификации BOSCH. Модуль поддерживает следующие версии протокола: CAN 1.2, CAN 2.0A, CAN 2.0B пассивный и CAN 2.0B активный. Исполнение модуля - это полная система CAN2.

Модуль обладает следующими функциональными возможностями:
- реализация протокола CAN версий CAN 1.2, CAN 2.0A и CAN 2.0B;
- стандартные и расширенные кадры данных;
- длина данных от 0 до 8 байтов;
- программируемая скорость до 1 Мбит/с;
- автоматический ответ на удалённый запрос передачи;
- до 8 передающих буферов с задаваемой программно системой приоритетов и возможностью отмены сообщений (каждый буфер может содержать до 8 байтов данных);
- до 32 приёмных буферов (каждый буфер может содержать до 8 байтов данных);
- до 16 полных (стандартный/расширенный идентификатор) приёмных фильтров;
- три полных приёмных маски;
- поддержка адресации DeviceNet;
- программируемая функциональная возможность пробуждения со встроенным фильтром нижних частот;
- задаваемый программно режим петли для осуществления самоконтроля;
- сигнализация обо всех ошибках приёма и передачи CAN с помощью прерываний;
- программируемый источник тактовой частоты;
- программируемая связь с входом модуля захвата (IC2 для обоих модулей CAN1 и CAN2) для метки времени и сетевой синхронизации;
- режимы низкого энергопотребления Sleep и Idle.

Модуль CAN состоит из ядра протокола и системы буферизации/управления сообщением. Ядро протокола CAN управляет всеми функциями приёма и передачи сообщений по шине CAN. Для передачи сообщения сначала необходимо загрузить соответствующие регистры данных. Состояние и наличие ошибок можно проверить, прочитав соответствующие регистры. Любое сообщение, обнаруженное на шине CAN проверяется на ошибки, а затем на соответствие фильтрам, чтобы понять, следует ли его принимать и сохранять в один из приёмных буферов.

Блок-схема модуля ECAN. Нажмите для увеличения
Примечание: i = 1 или 2 и обозначает конкретный модуль ECAN1 или ECAN2

Рис. 18-1. Блок-схема модуля ECAN

1 CAN - Controller Area Network - локальная сеть контроллеров - прим. пер.
2 Спецификация CAN не рассматривается в данном техническом описании. За более подробной информацией читатель может обратиться к спецификации CAN от BOSCH.

18.2 Типы кадров

Модуль CAN передаёт различные типы кадров, которые включают сообщения с данными, удалённые запросы передачи, а также другие кадры, автоматически генерируемые для служебных целей. Поддерживаются следующие типы кадров:

1) Стандартный кадр данных - генерируется узлом, когда узел желает передать данные. Он содержит 11-битный стандартный идентификатор (SID).

2) Расширенный кадр данных - подобен стандартному кадру данных, содержит 11-битный стандартный идентификатор (SID), а также 18-битный расширенный идентификатор (EID).

3) Кадр удалённого запроса передачи. Узел-получатель может запросить данные у узла-источника. Для этих целей узел-получатель посылает кадр удалённого запроса передачи с идентификатором, который соответствует идентификатору кадра запрашиваемых данных. После этого соответствующий узел-источник в ответ на этот удалённый запрос вышлет кадр данных.

4) Кадр ошибки - генерируется любым узлом, который обнаруживает ошибку на шине. Кадр ошибки состоит из двух полей: поле флага ошибки и поле разделителя ошибки.

5) Кадр перегрузки - может генерироваться узлом в результате двух условий. Первое - узел обнаружил доминантный бит во время межкадрового интервала, что является недопустимым условием. Второе - из-за внутренних условий узел всё ещё не способен начать приём очередного сообщения. Узел может сгенерировать максимум 2 последовательных кадра перегрузки, чтобы задержать начало следующего сообщения.

6) Межкадровый интервал - отделяет текущий кадр (любого типа) от следующего кадра данных или кадра удалённого запроса.

18.3 Режимы работы

Модуль CAN может работать в одном из нескольких режимов, выбираемых пользователем:
1) Режим настройки;
2) Выключенный режим (модуль выключен);
3) Нормальный режим работы;
4) Режим прослушивания;
5) Режим прослушивания всех сообщений;
6) Режим петли.

Режим запрашивается установкой битов REQOP<2:0> (CiCTRL1<10:8>). Вход в указанный режим подтверждается наблюдением за битами OPMODE<2:0>(CiCTRL1<7:5>). Состояние модуля и, соответственно, битов OPMODE не изменится до тех пор, пока изменение режима неприемлемо. Как правило, переход в другой режим осуществляется во время простоя шины, который определяется наличием на шине последовательности минимум из 11 рецессивных битов.

18.3.1 Режим настройки

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

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

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

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

В этом режиме модуль не передаёт и не принимает сообщения. Модуль имеет возможность установить бит WAKIF при обнаружении активности на шине, однако любые ожидающие прерывания останутся, и счётчики ошибок сохранят свои значения.

Если биты REQOP<2:0>(CiCTRL1<10:8>) = 001, модуль перейдёт в выключенный режим. Если модуль активен, то сначала он будет ждать 11 рецессивных битов на шине CAN (условие простоя шины), а затем примет команду отключения модуля. Если биты OPMODE<2:0>(CiCTRL1<7:5>) = 001, это указывает, что модуль успешно перешёл в отключенный режим. Когда модуль находится в выключенном состоянии, выводы ввода/вывода возвращаются к функционированию в обычном режиме порта ввода/вывода.

Модуль можно запрограммировать на применение функции низкочастотного фильтра на входной линии CiRX, когда модуль или ЦПУ находятся в режиме Sleep. Бит WAKFIL (CiCFG2<14>) включает или отключает фильтр.

Примечание: как правило, если модулю CAN в установленном режиме работы разрешено передавать сообщения, и передача запрашивается сразу же после перехода модуля в этот режим, то перед началом передачи модуль будет ожидать появления 11 последовательных рецессивных битов на шине. Если пользователь переключит модуль в выключенный режим в течение этого 11-битного периода, тогда эта передача отменяется, соответствующий бит TXABT устанавливается, а бит TXREQ сбрасывается.

18.3.3 Нормальный режим работы

Нормальный режим работы выбран, если REQOP<2:0> = 000. В этом режиме модуль активен, а выводы ввода/вывода принимают на себя функции шины CAN. Модуль будет передавать и принимать сообщения CAN через выводы CiTX и CiRX.

18.3.4 Режим прослушивания

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

18.3.5 Режим прослушивания всех сообщений

Модуль можно настроить на игнорирование всех ошибок и приём любых сообщений. Этот режим активируется установкой битов REQOP<2:0> = "111". В этом режиме данные, находившиеся в буфере сборки сообщения до возникновения ошибки, копируются в приёмный буфер и могут быть считаны через интерфейс ЦПУ.

18.3.6 Режим петли

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

18.4 Приём сообщений

18.4.1 Приёмные буферы

Модуль CAN имеет 32 приёмных буфера, размещённых в DMA RAM. Первые 8 буферов необходимо настраивать как приёмные сбросом соответствующих битов выбора TX/RX буфера (TXENn) в регистре XiTRmnCON. Полный (суммарный) размер области буферов CAN в DMA RAM выбирается пользователем и определяется битами DMABS<2:0>(CiFCTRL<15:13>). Первые 16 буферов могут назначаться в качестве приёмных буферов, остальные же можно использовать только в качестве FIFO-буфера.

Также имеется дополнительный буфер, предназначенный исключительно для наблюдения за входящими сообщениями шины. Этот буфер называется буфером сборки сообщения (Message Assembly Buffer - MAB).

Все сообщения, собираемые в MAB, передаются в буферы только в том случае, если они соответствуют критерию приёмного фильтра. Когда сообщение принято, устанавливается флаг RBIF (CiINTF<1>). После этого пользователь должен проверить регистр CiVEC и/или CiRXFUL1, чтобы определить, какие именно фильтр и буфер вызвали прерывание. Бит RBIF может устанавливаться только модулем при приёме сообщения. Бит сбрасывается пользовательской программой, после того как она завершила обработку сообщения в буфере. Если установлен бит RBIE, то при получении сообщения будет генерироваться прерывание.

18.4.2 Режим FIFO-буфера

Модуль ECAN работает в режиме FIFO-буфера, если указатель буфера для фильтра имеет значение "1111". В этом режиме в результате попадания сообщения в буфер будет записываться следующая доступная буферная ячейка внутри FIFO.

Размер FIFO задаётся в регистре CiFCTRL. Биты FSA<4:0> в этом регистре определяют начало FIFO-буфера. Конец FIFO-буфера определяется битами DMABS<2:0>, если включен DMA. Таким образом, FIFO может иметь размер до 32 буферных ячеек.

18.4.3 Приёмные фильтры сообщений

Приёмные фильтры сообщений и маски используются для определения, нужно ли сообщение из буфера сборки загружать в один из приёмных буферов. Как только в MAB принято допустимое сообщение, поля идентификатора сообщения сравниваются со значениями фильтра. Если имеется соответствие критерию фильтра, сообщение будет загружено в соответствующий приёмный буфер. Каждый фильтр ассоциируется с буферным указателем (FnBP<3:0>), который используется для связи фильтра с одним из 16 приёмных буферов.

Приёмный фильтр проверяет бит IDE (CiTRBnSID<0>) входящего сообщения, чтобы определить, как сравнивать идентификаторы. Если бит IDE сброшен, сообщение представляет собой стандартный кадр и сравнивается только с фильтрами, у которых сброшен бит EXIDE (CiRXFnSID). Если бит IDE установлен, сообщение является расширенным кадром и сравнивается только с теми фильтрами, где бит EXIDE установлен.

18.4.4 Маски фильтров принимаемых сообщений

Биты маски определяют, к каким битам идентификатора применять фильтр. Если какой-нибудь бит маски установлен в ноль, тогда этот бит автоматически принимается независимо от значения бита фильтра.

Имеется три программируемых приёмных маски, связанных с приёмными буферами. Любая из этих масок может быть привязана к любому фильтру выбором желаемой маски с помощью битов FnMSK<1:0> в соответствующем регистре CiFMSKSELn.

18.4.5 Ошибки приёма

Модуль CAN обнаруживает следующие ошибки приёма:
1) ошибка CRC;
2) ошибка битового наполнения;
3) приём неправильного сообщения.

Эти ошибки приёма не генерируют прерываний. Тем не менее, в случае возникновения одной из этих ошибок, счётчик ошибок приёма увеличивается на единицу. Если счётчик ошибок приёма достигает предела предупреждения ЦПУ, равного 96, бит RXWAR (CiINTF<9>) устанавливается и генерируется прерывание.

18.4.6 Прерывания по приёму

Прерывания по приёму можно разделить на 3 основные группы, каждая из которых включает различные условия, генерирующие прерывание:

1) Прерывания по приёму - если сообщение было успешно принято и загружено в один из приёмных буферов. Это прерывание активируется сразу же после приёма поля конца кадра (End-of-Frame - EOF). В этом случае установится флаг прерывания RBIF (CiINTF<1>), а чтение битов ICODE<6:0> (CiVEC<6:0>)1 укажет, который из приёмных буферов вызвал прерывание.

2) Прерывание по пробуждению - модуль CAN может быть пробуждён из выключенного режима, либо устройство может быть пробуждено из режима Sleep.

3) Прерывание по ошибкам приёма - будет указано битом ERRIF. Этот бит показывает, что возникло условие ошибки. Источник ошибки можно определить проверкой битов в регистре флагов прерываний CAN CiINTF:

- приём неправильного сообщения. Ошибка любого типа, возникшая во время приёма последнего сообщения, будет индицироваться битом IVRIF.

- переполнение приёмного буфера. Бит RBOVIF (CiINTF<2>) указывает, что произошло переполнение приёмного буфера.

- предупреждение приёмника. Бит RXWAR указывает, что счётчик ошибок приёма (RERRCNT<7:0>) достиг предела предупреждения, равного 96.

- пассивная ошибка приёма. Бит RXEP указывает, что счётчик ошибок приёма превысил пассивный лимит в 127, и модуль перешёл в состояние пассивной ошибки.

1 В оригинале было написано: "Reading the RXnIF flag..." ("Чтение флага RXnIF..."), но в регистрах модуля ECAN PIC24H нет таких флагов! Есть единственный флаг RBIF (CiINTF<1>), указывающий, что произошло прерывание от приёмного буфера, а определить, от какого именно, можно с помощью битов ICODE<6:0> (CiVEC<6:0>), либо регистров CiRXFUL1 и CiRXFUL2. Кстати, об этом упоминается выше - в разделе "18.4.1 Приёмные буферы". - прим. пер.

18.5 Передача сообщения

18.5.1 Передающие буферы

Модуль CAN имеет до восьми передающих буферов, размещённых в DMA RAM. Эти 8 буферов нужно настраивать как передающие установкой соответствующих битов выбора буфера TX/RX (TXENn или TXENm) в регистре CiTRmnCON. Полный размер области буферов CAN в DMA RAM выбирается пользователем и задаётся битами DMABS<2:0> (CiFCTRL<15:13>).

Каждый передающий буфер занимает 14 байтов данных. Восемь из этих байтов отведены для поля данных сообщения (его максимальная длина составляет 8 байтов). Пять байтов содержат стандартный и расширенный идентификаторы и другую арбитражную информацию сообщения. Последний байт не используется.

18.5.2 Приоритет передаваемого сообщения

Приоритет передачи - это система приоритетов для ожидающих передачи сообщений внутри каждого узла. Имеется четыре уровня приоритетов передачи. Если биты TXnPRI<1:0> (в регистре CiTRmnCON) для конкретного буфера сообщения установлены в "11", этот буфер имеет наивысший приоритет. Если биты TXnPRI<1:0> для конкретного буфера сообщения установлены в "10" или "01", этот буфер имеет промежуточный приоритет. Если же биты TXnPRI<1:0> установлены в "00", этот буфер имеет низший приоритет. Если два или более ожидающих сообщения имеют одинаковый приоритет, сообщения передаются в порядке убывания индекса буфера1.

1 Т.е. чем большее значение имеет индекс буфера, тем выше его приоритет. - прим. пер.

18.5.3 Последовательность передачи

Чтобы инициировать передачу сообщения, нужно установить бит TXREQn (в регистре CiTRmnCON). Модуль CAN решает любой конфликт синхронизации между установкой бита TXREQn и началом кадра (Start-of-Frame - SOF), гарантируя корректное разрешение ситуации, если до возникновения SOF происходит изменение приоритета. Когда TXREQn устанавливается, биты флагов TXABTn, TXLARBn и TXERRn автоматически сбрасываются.

Установка бита TXREQn просто помечает буфер сообщения, указывая, что тот установлен в очередь на передачу. Когда модуль обнаруживает, что шина доступна, он начинает передачу сообщения с наивысшим приоритетом.

Если передача завершается успешно с первой попытки, бит TXREQn автоматически сбрасывается и, если установлен бит TBIE (CiINTE<0>)1, генерируется прерывание.

Если передача сообщения терпит неудачу, установится один из флагов ошибок, а бит TXREQn останется установленным, указывая, что сообщение по-прежнему ожидает передачи.

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

1 В оригинале указан "TXnIE" - это неверно, т.к. прерывания по передаче разрешаются единственным битом TBIE (CiINTE<0>). - прим. пер.

18.5.4 Автоматическая обработка удалённого запроса передачи

Если бит RTRENn (в регистре CiTRmnCON) для данного передающего буфера установлен, аппаратная часть модуля автоматически передаст данные из этого буфера в ответ на удалённый запрос передачи, соответствующий фильтру, указывающему именно на этот буфер. В этом случае пользователю не нужно вручную инициировать передачу.

18.5.5 Отмена передачи сообщения

Система может отменить сообщение сбросом соответствующего бита TXREQ, имеющегося у каждого буфера сообщений. Установка бита ABAT (CiCTRL1<12>) запросит отмену всех ожидающих сообщений. Если передача сообщения ещё не начата, либо если передача начата, но прервана потерей арбитража или ошибкой, сообщение будет отменено. Модуль сообщает о произведённой отмене установкой бита TXABT, флаг TBIF (CiINTF<0>)1 при этом установлен не будет.

1 В оригинале указан флаг "TXnIF". См. текст предыдущей сноски. - прим. пер.

18.5.6 Ошибки передачи

Модуль CAN обнаруживает следующие ошибки передачи:
1) ошибка подтверждения;
2) ошибка формата кадра;
3) битовая ошибка.

Эти ошибки не обязательно генерируют прерывание, но индицируются счётчиком ошибок передачи: каждая из этих ошибок заставляет его увеличиваться на единицу. Как только значение счётчика ошибок превысит 96, сгенерируется прерывание, и установятся биты ERRIF (CiINTF<5>) и TXWAR (CiINTF<10>).

18.5.7 Прерывания по передаче

Прерывания по передаче можно разделить на две основные группы, каждая из которых включает различные условия, генерирующие прерывание:

1) Прерывание по передаче - если хотя бы один из восьми передающих буферов успешно передал сообщение и теперь пуст и может быть загружен новым сообщением и установлен в очередь на передачу. В этом случае установится флаг прерывания TBIF (CiINTF<0>), а чтение битов ICODE<6:0> (CiVEC<6:0>)1 укажет, который из передающих буферов доступен и вызвал прерывание.

2) Прерывание по ошибке передачи - будет указано флагом ERRIF. Этот флаг показывает, что возникло условие ошибки. Источник ошибки можно определить проверкой флагов ошибок в регистре флагов прерываний CAN CiINTF. Флаги в этом регистре относятся к ошибкам приёма и передачи. К передатчику относятся следующие флаги ошибок:

- прерывание по предупреждению передачи. Бит TXWAR указывает, что счётчик ошибок передачи достиг предела предупреждения ЦПУ, равного 96.

- переход передатчика в состояние пассивной ошибки. Бит TXEP (CiINTF<12>) указывает, что счётчик ошибок передачи превысил предел пассивной ошибки, равный 127, и модуль перешёл в состояние пассивной ошибки.

- отключение от шины. Бит TXBO (CiINTF) указывает, что счётчик ошибок передачи превысил значение 255, и модуль перешёл в состояние "отключен от шины".

Примечание: оба модуля, ECAN1 и ECAN2, могут переключать передачи DMA. Если в качестве источника DMA IRQ выбран C1TX, C1RX, C2TX или C2RX, передачи DMA происходят, когда бит C1TXIF, C1RXIF, C2TXIF или C2RXIF устанавливается как результат приёма или передачи ECAN1, или ECAN2.

1 В оригинале было написано: "Reading the TXnIF flags..." ("Чтение флагов TXnIF..."). Здесь ошибка аналогична той, что допущена в описании прерывания по передаче (см. текст соответствующей сноски). В модуле ECAN PIC24 имеется единственный флаг TBIF (CiINTF<0>), указывающий, что произошло прерывание от передающего буфера. А чтобы определить, от какого именно, нужно проанализировать биты ICODE<6:0> (CiVEC<6:0>). - прим. пер.

18.6 Настройка скорости передачи

Все узлы на любой отдельно взятой шине CAN должны иметь одинаковую номинальную скорость передачи битов. Для того чтобы настроить скорость передачи, необходимо проинициализировать следующие параметры:
1) ширина перехода синхронизации;
2) предделитель скорости передачи;
3) фазовые сегменты;
4) определение длины фазового сегмента 2;
5) точка выборки;
6) биты сегмента распространения.

18.6.1 Битовая синхронизация

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

Номинальное время передачи бита можно представить разделённым на отдельные не перекрывающиеся сегменты времени. Эти сегменты показаны на Рис.18-2:
1) Сегмент синхронизации (Sync Seg);
2) Сегмент времени распространения (Prop Seg);
3) Фазовый сегмент 1 (Phase1 Seg);
4) Фазовый сегмент 2 (Phase2 Seg).

Битовая синхронизация модуля ECAN

Рис. 18-2. Битовая синхронизация модуля ECAN

Временные сегменты, а также номинальное время передачи бита состоят из целых единиц времени, называемых квантами времени (TQ - time quantum). По определению, номинальное время передачи бита состоит из минимум 8TQ и максимум 25TQ. Также, по определению, минимальное номинальное время передачи бита составляет 1 мкс, что соответствует максимальной скорости передачи 1 МГц (1 Мбит/с).

18.6.2 Настройка предделителя

В дополнение к фиксированному "делению на два" для генерации тактовых импульсов, также имеется ещё и программируемый предделитель с диапазоном целочисленных значений от 1 до 64. Квант времени (TQ) - это фиксированная единица времени, получаемая от периода генератора и задаваемая Формулой 18-1.

Примечание: FCAN не должна превышать 40 МГц. Если CANCKS = 0, тогда FCY не должна превышать 20 МГц.

Формула 18-1. Расчёт кванта времени в зависимости от FCAN.

TQ = 2 (BRP<5:0> + 1) / FCAN

18.6.7 Сегмент распространения

Эта часть битового интервала используется для компенсации времён физических задержек внутри сети. Эти задержки состоят из времени задержки сигнала на линии шины и времени внутренней задержки в узлах. Длину Prop Seg можно запрограммировать от 1 TQ до 8 TQ установкой битов PRSEG<2:0> (CiCFG2<2:0>).

18.6.4 Фазовые сегменты

Фазовые сегменты используются для оптимального размещения точки выборки принимаемого бита внутри битового интервала. Точка выборки располагается между Phase1 Seg и Phase2 Seg. Эти сегменты удлиняются или укорачиваются при ресинхронизации (синхронизация с восстановлением тактовых интервалов). Конец Phase1 Seg определяет точку выборки внутри битового периода. Длина сегмента программируется от 1 TQ до 8TQ. Phase2 Seg обеспечивает задержку перед следующим переходом передаваемых данных. Сегмент программируется от 1TQ до 8TQ, либо может задаваться как наибольшее из двух значений - Phase1 Seg и времени обработки информации (равно 2TQ). Phase1 Seg инициализируется установкой битов SEG1PH<2:0> (CiCFG2<5:3>), а Phase2 Seg инициализируется установкой SEG2PH<2:0> (CiCFG2<10:8>).

При установке длины фазовых сегментов необходимо соблюдать следующее условие:

Prop Seg + Phase1 Seg ≥ Phase2 Seg

18.6.5 Точка выборки

Точка выборки - это точка времени, в которой уровень шины считывается и интерпретируется в качестве значения передаваемого бита. Она размещается в конце Phase1 Seg. Если битовая синхронизация медленная и содержит много TQ, существует возможность задать множественную выборку. В этом случае значение бита определяется по преобладающему значению уровня шины из трёх измеренных. Выборка происходит в точке выборки и дважды до неё с расстоянием в TQ/2. Модуль CAN позволяет пользователю выбирать между троекратной и однократной выборкой установкой или сбросом бита SAM (CiCFG2<6>). Как правило, в зависимости от параметров системы, выборка бита происходит примерно в 60-70% от начала битового интервала.

18.6.6 Синхронизация

Чтобы компенсировать сдвиги фазы между частотами генераторов различных узлов шины, каждый контроллер CAN должен уметь синхронизироваться по значимому фронту входящего сигнала. Когда в передаваемых данных обнаруживается фронт, логика сравнивает размещение фронта с ожидаемым временем его появления (сегмент синхронизации). Затем схема откорректирует значения Phase1 Seg и Phase2 Seg. Существует два механизма синхронизации.

18.6.6.1 Аппаратная синхронизация

Аппаратная синхронизация происходит, когда во время простоя шины возникает переход с рецессивного состояния на доминантное, обозначая начало сообщения. После неё счётчики битового интервала перезапускаются, начинаясь с SyncSeg. Аппаратная синхронизация принудительно помещает вызвавший её фронт внутрь сегмента синхронизации перезапущенного битового интервала. Если произошла аппаратная синхронизация, то внутри данного битового интервала ресинхронизации не будет.

18.6.6.2 Ресинхронизация

В результате ресинхронизации может быть удлинён Phase1 Seg, либо укорочен Phase2 Seg. Величина удлинения или укорочения сегмента фазового буфера имеет верхнюю границу, известную как ширина перехода синхронизации (synchronization jump width - SJW), и определяется битами SJW<1:0> (CiCFG1<7:6>). Значение ширины перехода синхронизации будет добавлено к Phase1 Seg, либо вычтено из Phase2 Seg. Ширина перехода ресинхронизации программируется от 1TQ до 4Q.

При установке битов SJW<1:0> должны соблюдаться следующие требования.

Phase2 Seg > SJW

Регистры модуля ECAN

Примечание: в описаниях регистров, приведённых ниже "i" в названии регистра обозначает один из модулей (ECAN1 или ECAN2); "n" обозначает номер буфера, фильтра или маски; "m" обозначает номер слова внутри конкретного поля данных CAN.

Примечание: в изображениях регистров приняты следующие обозначения:
R = читаемый бит
W = записываемый бит
U = бит не реализован, читается как "0"
-n = значение при POR:
   "1" = бит установлен
   "0" = бит сброшен
   "x" = значение бита неизвестно

Регистр 18-1. CiCTRL1 - первый управляющий регистр модуля ECAN

CiCTRL1 - первый управляющий регистр модуля ECAN

Биты 15-14Не реализованы, читаются как "0"
 
Бит 13CSIDL - бит останова в режиме Idle
1 = останавливать работу модуля, если устройство входит в режим Idle
0 = в режиме Idle модуль продолжает работу
 
Бит 12ABAT - бит отмены всех ожидающих передачи сообщений
Сигнализирует всем передающим буферам отменить передачу. Модуль сбросит этот бит, когда все передачи будут отменены.
 
Бит 11CANCKS - бит выбора главного тактового генератора CAN
1 = тактовая частота CAN FCAN - это FCY
0 = тактовая частота CAN FCAN - это FOSC
 
Биты 10-8REQOP<2:0> - биты запроса режима работы
000 = Установить нормальный режим работы
001 = Установить выключенный режим
010 = Установить режим петли
011 = Установить режим прослушивания
100 = Установить режим настройки
101 = Зарезервировано - не используйте
110 = Зарезервировано - не используйте
111 = Установить режим прослушивания всех сообщений
 
Биты 7-5OPMODE<2:0> - биты текущего режима работы
000 = Модуль в нормальном режиме работы
001 = Модуль выключен
010 = Модуль в режиме петли
011 = Модуль в режиме прослушивания
100 = Модуль в режиме настройки
101 = Зарезервировано
110 = Зарезервировано
111 = Модуль в режиме прослушивания всех сообщений
 
Бит 4Не реализован, читается как "0"
 
Бит 3CANCAP - бит включения события захвата таймера по приёму сообщения CAN
1 = Включить вход захвата по приёму сообщения CAN
0 = Отключить захват CAN
 
Бит 2-1Не реализован, читается как "0"
 
Бит 0WIN - бит выбора окна отображения SFR
1 = Использовать окно фильтров
0 = Использовать окно буферов

Регистр 18-2. CiCTRL2 - второй управляющий регистр модуля ECAN

CiCTRL2 - второй управляющий регистр модуля ECAN

Биты 15-5Не реализованы, читаются как "0"
  
Биты 4-0DNCNT<4:0> - биты номера битового фильтра DeviceNet
 10010 - 11111 = неправильный выбор
10001 = Сравнивать до байта данных 3, бит 6 с EID<17>
.....
00001 = Сравнивать до байта данных 1, бит 7 с EID<0>
00000 = Не сравнивать байты данных

Регистр 18-3. CiVEC - регистр кода прерывания модуля ECAN

CiVEC - регистр кода прерывания модуля ECAN

Биты 15-13Не реализованы, читаются как "0"
  
Биты 12-8FILHIT<4:0> - биты номера сработавшего фильтра
 10000 - 11111 = Зарезервированы
01111 = Фильтр 15
.....
00001 = Фильтр 1
00000 = Фильтр 0
  
Бит 7Не реализован, читается как "0"
 ICODE<6:0> - биты кода флагов прерывания
 1000101 - 1111111 = зарезервированы
1000100 = Прерывание по почти заполненному FIFO
1000011 = Прерывание по переполнению при приёме сообщений
1000010 = Прерывание по пробуждению
1000001 = Прерывание по ошибке
1000000 = Нет прерывания
0010000 - 0111111 = Зарезервировано
0001111 = Прерывание от приёмного буфера RB15
.......
0001001 = Прерывание от приёмного буфера RB9
0001000 = Прерывание от приёмного буфера RB8
0000111 = Прерывание от буфера TRB7
0000110 = Прерывание от буфера TRB6
0000101 = Прерывание от буфера TRB5
0000100 = Прерывание от буфера TRB4
0000011 = Прерывание от буфера TRB3
0000010 = Прерывание от буфера TRB2
0000001 = Прерывание от буфера TRB1
0000000 = Прерывание от буфера TRB0

Регистр 18-4. CiFCTRL - регистр управления FIFO модуля ECAN

CiFCTRL - регистр управления FIFO модуля ECAN

Бит 15-13DMABS<2:0> - биты размера DMA-буфера
 111 = зарезервировано
110 = 32 буфера в DMA RAM
101 = 24 буфера в DMA RAM
100 = 16 буферов в DMA RAM
011 = 12 буферов в DMA RAM
010 = 8 буферов в DMA RAM
001 = 6 буферов в DMA RAM
000 = 4 буфера в DMA RAM
  
Биты 12-5Не реализованы, читаются как "0"
  
Биты 4-0FSA<4:0> - биты начала области FIFO
 11111 = буфер RB31
11110 = буфер RB30
.....
00001 = буфер TRB1
00000 = буфер TRB0

Регистр 18-5. CiFIFO - регистр состояния FIFO-буфера модуля ECAN

CiFIFO - регистр состояния FIFO-буфера модуля ECAN

Биты 15-14Не реализованы, читаются как "0"
  
Биты 13-8FBP<5:0> - биты указателя записи для FIFO-буфера
 011111 = буфер RB31
011110 = буфер RB30
......
000001 = буфер TRB1
000000 = буфер TRB0
  
Биты 7-6Не реализованы, читаются как "0"
  
Биты 5-0FNRB<5:0> - биты указателя чтения для FIFO-буфера
 011111 = буфер RB31
011110 = буфер RB30
......
000001 = буфер TRB1
000000 = буфер TRB0

Регистр 18-6. CiINTF - регистр флагов прерываний модуля ECAN

CiINTF - регистр флагов прерываний модуля ECAN

Биты 15-14Не реализованы, читаются как "0"
  
Бит 13TXBO - бит отключения передатчика от шины из-за переполнения счётчика ошибок
  
Бит 12TXBP - бит состояния пассивной ошибки передатчика
  
Бит 11RXBP - бит состояния пассивной ошибки приёмника
  
Бит 10TXWAR - бит состояния предупреждения передатчика
  
Бит 9RXWAR - бит состояния предупреждения приёмника
  
Бит 8EWARN - бит состояния предупреждения передатчика или приёмника
  
Бит 7IVRIF - бит флага прерывания по приёму неправильного сообщения
  
Бит 6WAKIF - бит флага прерывания по пробуждению при обнаружении активности на шине
  
Бит 5ERRIF - бит флага прерывания по ошибке (множество источников, указаны в регистре CiINTF<13:8>)
  
Бит 4Не реализован, читается как "0"
  
Бит 3FIFOIF - бит флага прерывания по почти полному FIFO
  
Бит 2RBOVIF - флаг прерывания по переполнению приёмного буфера
  
Бит 1RBIF - флаг прерывания от приёмного (RX) буфера
  
Бит 0TBIF - флаг прерывания от передающего (TX) буфера

Регистр 18-7. CiINTE - регистр разрешения прерываний модуля ECAN

CiINTE - регистр разрешения прерываний модуля ECAN

Биты 15-8Не реализованы, читаются как "0"
  
Бит 7IVRIE - бит разрешения прерывания по приёму недействительного сообщения
  
Бит 6WAKIE - бит разрешения прерывания по пробуждению при обнаружении активности на шине
  
Бит 5ERRIE - бит разрешения прерывания по ошибке
  
Бит 4Не реализован, читается как "0"
  
Бит 3FIFOIE - бит разрешения прерывания по почти полному FIFO
  
Бит 2RBOVIE - бит разрешения прерывания по переполнению приёмного буфера RX
  
Бит 1RBIE - бит разрешения прерывания от приёмного буфера RX
  
Бит 0TBIE - бит разрешения прерывания от передающего буфера TX

Регистр 18-8. CiEC - регистр счётчика ошибок приёма/передачи модуля ECAN

CiEC - регистр счётчика ошибок приёма/передачи модуля ECAN

Биты 15-8TERRCNT<7:0> - биты счётчика ошибок передачи
  
Биты 7-0RERRCNT<7:0> - биты счётчика ошибок приёма

Регистр 18-9. CiCFG1 - первый регистр настройки скорости передачи модуля ECAN

CiCFG1 - первый регистр настройки скорости передачи модуля ECAN

Биты 15-8Не реализованы, читаются как "0"
  
Биты 7-6SJW<1:0> - биты ширины перехода синхронизации
 11 = 4TQ
10 = 3TQ
01 = 2TQ
00 = 1TQ
  
Биты 5-0BRP<5:0> - биты предделителя скорости передачи
 111111 = TQ = 2 x 64 x 1/FCAN
......
000010 = TQ = 2 x 3 x 1/FCAN
000001 = TQ = 2 x 2 x 1/FCAN
000000 = TQ = 2 x 1 x 1/FCAN

Регистр 18-10. CiCFG2 - второй регистр настройки скорости передачи модуля ECAN

CiCFG2 - второй регистр настройки скорости передачи модуля ECAN

Бит 15Не реализован, читается как "0"
  
Бит 14WAKFIL - бит включения линейного фильтра шины CAN для пробуждения
 1 = Использовать линейный фильтр шины CAN для пробуждения
0 = Не использовать линейный фильтр шины CAN для пробуждения
  
Биты 13-11Не реализованы, читаются как "0"
  
Биты 10-8SEG2PH<2:0> - биты фазового сегмента 2
 111 = 8TQ
...
000 = 1TQ
  
Бит 7SEG2PHTS - биты выбора способа установки времени фазового сегмента 2
 1 = свободное программирование
0 = используется наибольшее значение из SEG1PH и времени обработки информации (IPT)
  
Бит 6SAM - бит способа выборки уровня на шине CAN
 1 = Уровень шины CAN измеряется трижды в точке выборки
0 = Уровень шины CAN измеряется один раз в точке выборки
  
Биты 5-3SEG1PH<2:0> - биты фазового сегмента 1
 111 = 8TQ
...
000 = 1TQ
  
Биты 2-0PRSEG<2:0> - биты сегмента распространения
 111 = 8TQ
...
000 = 1TQ

Регистр 18-11. CiFEN1 - регистр включения приёмных фильтров модуля ECAN

CiFEN1 - регистр включения приёмных фильтров модуля ECAN

Биты 15-0FLTENn - бит включения фильтра n для принимаемых сообщений
 1 = Включить фильтр n
0 = Выключить фильтр n

Регистр 18-12. CiBUFPNT1 - первый регистр указателя буфера фильтров 0-3 модуля ECAN

CiBUFPNT1 - первый регистр указателя буфера фильтров 0-3 модуля ECAN

Биты 15-12F3BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 3
  
Биты 11-8F2BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 2
  
Биты 7-4F1BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 1
  
Биты 3-0F0BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 0
  
 Для всех групп битов:
1111 = сообщение, прошедшее фильтр, попало в буфер RX FIFO
1110 = сообщение, прошедшее фильтр, попало в буфер RX 14
....
0001 = сообщение, прошедшее фильтр, попало в буфер RX 1
0000 = сообщение, прошедшее фильтр, попало в буфер RX 0

Регистр 18-13. CiBUFPNT2 - второй регистр указателя буфера фильтров 4-7 модуля ECAN

CiBUFPNT2 - второй регистр указателя буфера фильтров 4-7 модуля ECAN

Биты 15-12F7BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 7
  
Биты 11-8F6BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 6
  
Биты 7-4F5BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 5
  
Биты 3-0F4BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 4
  
 Для всех групп битов:
1111 = сообщение, прошедшее фильтр, попало в буфер RX FIFO
1110 = сообщение, прошедшее фильтр, попало в буфер RX 14
....
0001 = сообщение, прошедшее фильтр, попало в буфер RX 1
0000 = сообщение, прошедшее фильтр, попало в буфер RX 0

Регистр 18-14. CiBUFPNT3 - третий регистр указателя буфера фильтров 8-11 модуля ECAN

CiBUFPNT3 - третий регистр указателя буфера фильтров 8-11 модуля ECAN

Биты 15-12F11BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 11
  
Биты 11-8F10BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 10
  
Биты 7-4F9BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 9
  
Биты 3-0F8BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 8
  
 Для всех групп битов:
1111 = сообщение, прошедшее фильтр, попало в буфер RX FIFO
1110 = сообщение, прошедшее фильтр, попало в буфер RX 14
....
0001 = сообщение, прошедшее фильтр, попало в буфер RX 1
0000 = сообщение, прошедшее фильтр, попало в буфер RX 0

Регистр 18-15. CiBUFPNT4 - четвёртый регистр указателя буфера фильтров 12-15 модуля ECAN

CiBUFPNT4 - четвёртый регистр указателя буфера фильтров 12-15 модуля ECAN

Биты 15-12F15BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 15
  
Биты 11-8F14BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 14
  
Биты 7-4F13BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 13
  
Биты 3-0F12BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 12
  
 Для всех групп битов:
1111 = сообщение, прошедшее фильтр, попало в буфер RX FIFO
1110 = сообщение, прошедшее фильтр, попало в буфер RX 14
....
0001 = сообщение, прошедшее фильтр, попало в буфер RX 1
0000 = сообщение, прошедшее фильтр, попало в буфер RX 0

Регистр 18-16. CiRXFnSID - стандартный идентификатор приёмного фильтра n модуля CAN (n = 0, 1, ..., 15)

CiRXFnSID - стандартный идентификатор приёмного фильтра n модуля CAN (n = 0, 1, ..., 15)

Биты 15-5SID<10:0> - биты стандартного идентификатора
 1 = Бит SIDx идентификатора сообщения должен быть "1", чтобы совпасть с фильтром
0 = Бит SIDx идентификатора сообщения должен быть "0", чтобы совпасть с фильтром
  
Бит 4Не реализован, читается как "0"
  
Бит 3EXIDE - бит включения расширенного идентификатора
 Если MIDE = 1, тогда:
1 = Принимать только сообщения с расширенным идентификатором
0 = Принимать только сообщения со стандартным идентификатором
Если MIDE = 0, тогда бит EXIDE игнорируется.
  
Бит 2Не реализуется, читается как "0"
  
Бит 1-0EID<17:16> - биты расширенного идентификатора
 1 = Бит EIDx идентификатора сообщения должен быть "1", чтобы совпасть с фильтром
0 = Бит EIDx идентификатора сообщения должен быть "0", чтобы совпасть с фильтром

Регистр 18-17. CiRXFnEID - расширенный идентификатор приёмного фильтра n модуля CAN (n = 0, 1, ..., 15)

CiRXFnEID - расширенный идентификатор приёмного фильтра n модуля CAN (n = 0, 1, ..., 15)

Биты 15-0EID<15:0> - биты расширенного идентификатора
 1 = Бит EIDx адреса сообщения должен быть "1", чтобы совпасть с фильтром
0 = Бит EIDx адреса сообщения должен быть "0", чтобы совпасть с фильтром

Регистр 18-18. CiFMSKSEL1 - регистр выбора маски для фильтров 7-0 модуля ECAN

CiFMSKSEL1 - регистр выбора маски для фильтров 7-0 модуля ECAN

Биты 15-14F7MSK<1:0> - биты выбора маски для фильтра 7
  
Биты 13-12F6MSK<1:0> - биты выбора маски для фильтра 6
  
Биты 11-10F5MSK<1:0> - биты выбора маски для фильтра 5
  
Биты 9-8F4MSK<1:0> - биты выбора маски для фильтра 4
  
Биты 7-6F3MSK<1:0> - биты выбора маски для фильтра 3
  
Биты 5-4F2MSK<1:0> - биты выбора маски для фильтра 2
  
Биты 3-2F1MSK<1:0> - биты выбора маски для фильтра 1
  
Биты 1-0F0MSK<1:0> - биты выбора маски для фильтра 0
  
 Для всех групп битов:
11 = Нет маски
10 = Приёмная маска 2
01 = Приёмная маска 1
00 = Приёмная маска 0

Регистр 18-18-2. CiFMSKSEL1 - регистр выбора маски для фильтров 7-0 модуля ECAN1

CiFMSKSEL1 - регистр выбора маски для фильтров 7-0 модуля ECAN

Биты 15-14F15MSK<1:0> - биты выбора маски для фильтра 15
  
Биты 13-12F14MSK<1:0> - биты выбора маски для фильтра 14
  
Биты 11-10F13MSK<1:0> - биты выбора маски для фильтра 13
  
Биты 9-8F12MSK<1:0> - биты выбора маски для фильтра 12
  
Биты 7-6F11MSK<1:0> - биты выбора маски для фильтра 11
  
Биты 5-4F10MSK<1:0> - биты выбора маски для фильтра 10
  
Биты 3-2F9MSK<1:0> - биты выбора маски для фильтра 9
  
Биты 1-0F8MSK<1:0> - биты выбора маски для фильтра 8
  
 Для всех групп битов:
11 = Нет маски
10 = Приёмная маска 2
01 = Приёмная маска 1
00 = Приёмная маска 0

1 В исходном документе про этот регистр забыли. Обозначим его "Регистр 18-18-2", чтобы сохранить нумерацию. - прим. пер.

Регистр 18-19. CiRXMnSID - стандартный идентификатор маски n приёмных фильтров модуля ECAN

CiRXMnSID - стандартный идентификатор маски n приёмных фильтров модуля ECAN

Биты 15-5SID<10:0> - биты стандартного идентификатора
 1 = Включать бит фильтра SIDx в сравнение
0 = Бит фильтра SIDx не участвует в сравнении
  
Бит 4Не реализован, читается как "0"
  
Бит 3MIDE - бит режима приёма идентификатора
 1 = Принимать только те типы сообщений, которые соответствуют биту EXIDE фильтра (т. е. либо только стандартные, либо только расширенные, в зависимости от значения бита EXIDE)
0 = Принимать и стандартные, и расширенные сообщения, если они соответствуют фильтру (т. е. если SID фильтра = SID сообщения, либо SID/EID фильтра = SID/EID сообщения)
  
Бит 2Не реализован, читается как "0"
  
Биты 1-0EID<17:16> - биты расширенного идентификатора
 1 = Включать бит фильтра EIDx в сравнение
0 = Бит фильтра EIDx не участвует в сравнении

Регистр 18-20. CiRXMnEID - расширенный идентификатор маски n приёмных фильтров модуля ECAN

CiRXMnEID - расширенный идентификатор маски n приёмных фильтров модуля ECAN

Биты 15-0EID<15:0> - биты расширенного идентификатора
 1 = Включать бит фильтра EIDx в сравнение
0 = Бит фильтра EIDx не участвует в сравнении

Регистр 18-21. CiRXFUL1 - первый регистр состояния заполнения приёмных буферов модуля ECAN

CiRXFUL1 - первый регистр состояния заполнения приёмных буферов модуля ECAN

Биты 15-0RXFUL<15:0> - биты заполнения приёмных буферов n
 1 = Буфер полон (устанавливается модулем)
0 = Буфер пуст (сбрасывается программно)

Регистр 18-22. CiRXFUL2 - второй регистр состояния заполнения приёмных буферов модуля ECAN

CiRXFUL2 - второй регистр состояния заполнения приёмных буферов модуля ECAN

Биты 15-0RXFUL<31:16> - биты заполнения приёмных буферов n
 1 = Буфер полон (устанавливается модулем)
0 = Буфер пуст (сбрасывается программно)

Регистр 18-23. CiRXOVF1 - первый регистр переполнения приёмных буферов модуля ECAN

CiRXOVF1 - первый регистр переполнения приёмных буферов модуля ECAN

Биты 15-0RXOVF<15:0> - биты переполнения приёмных буферов n
 1 = Попытка модуля выполнить запись в полный буфер (устанавливается модулем)
0 = Переполнение очищено (сбрасывается программно)

Регистр 18-24. CiRXOVF2 - второй регистр переполнения приёмных буферов модуля ECAN

CiRXOVF2 - второй регистр переполнения приёмных буферов модуля ECAN

Биты 15-0RXOVF<31:16> - биты переполнения приёмных буферов n
 1 = Попытка модуля выполнить запись в полный буфер (устанавливается модулем)
0 = Переполнение очищено (сбрасывается программно)

Регистр 18-25. CiTRmnCON - управляющий регистр буферов TX/RX m модуля ECAN (m = 0, 2, 4, 6; n = 1, 3, 5, 7)

CiTRmnCON - управляющий регистр буферов TX/RX m модуля ECAN (m = 0, 2, 4, 6; n = 1, 3, 5, 7)

Биты 15-8Управляют буферами n, см. определение для битов 7-0
  
Бит 7TXENm - бит выбора буфера TX/RX
 1 = Буфер TRBm используется как передающий буфер
0 = Буфер TRBm используется как приёмный буфер
  
Бит 6TXABTm - бит отмены сообщения(1)
 1 = Сообщение было отменено
0 = Сообщение успешно завершило передачу
  
Бит 5TXLARBm - бит потери арбитража сообщением(1)
 1 = Сообщение при отправке потеряло арбитраж
0 = Сообщение не теряло арбитраж во время отправки
  
Бит 4TXERRm - бит обнаружения ошибки во время передачи сообщения(1)
 1 = Во время отправки сообщения на шине возникла ошибка
0 = Во время отправки сообщения ошибок на шине не возникало
  
Бит 3TXREQm - бит запроса отправки сообщения
 Установка этого бита в "1" запросит отправку сообщения. Бит будет автоматически сброшен после успешной отправки сообщения. Сброс этого бита в "0", когда он установлен, запросит отмену сообщения.
  
Бит 2RTRENm - бит включения автоматической передачи по удалённому запросу
 1 = При получении удалённого запроса передачи бит TXREQ автоматически установится
0 = При получении удалённого запроса передачи бит TXREQ останется без изменений
  
Биты 1-0TXmPRI<1:0> - биты приоритета передачи сообщения
 11 = наивысший приоритет сообщения
10 = высокий приоритет сообщения
01 = низкий приоритет сообщения
00 = низший приоритет сообщения

Примечание:
1) Этот бит сбрасывается, когда устанавливается TXREQ.

Примечание: буферы (SID, EID, DLC, поле данных) и регистры состояния приёма хранятся в DMA RAM. Они не являются регистрами специального назначения.

Регистр 18-26. CiTRBnSID - стандартный идентификатор буфера n модуля ECAN (n = 0, 1, ..., 31)

CiTRBnSID - стандартный идентификатор буфера n модуля ECAN (n = 0, 1, ..., 31)

Бит 15-13Не реализованы, читаются как "0"
  
Бит 12-2SID<10:0> - биты стандартного идентификатора
  
Бит 1SRR - бит-заменитель удалённого запроса
 1 = Это сообщение запросит удалённую передачу
0 = Обычное сообщение
  
Бит 0IDE - бит использования расширенного идентификатора
 1 = Сообщение будет передано с расширенным идентификатором
0 = Сообщение будет передано со стандартным идентификатором

Регистр 18-27. CiTRBnEID - расширенный идентификатор буфера n модуля ECAN (n = 0, 1, ..., 31)

CiTRBnEID - расширенный идентификатор буфера n модуля ECAN (n = 0, 1, ..., 31)

Бит 15-12Не реализованы, читаются как "0"
  
Бит 11-0EID<17:6> - биты расширенного идентификатора

Регистр 18-28. CiTRBnDLC - регистр длины данных буфера n модуля ECAN (n = 0, 1, ..., 31)

CiTRBnDLC - регистр длины данных буфера n модуля ECAN (n = 0, 1, ..., 31)

Биты 15-10EID<5:0> - биты расширенного идентификатора
  
Бит 9RTR - бит удалённого запроса передачи
 1 = Сообщение запросит удалённую передачу
0 = Обычное сообщение
  
Бит 8RB1 - зарезервированный бит 1
 Согласно протоколу CAN пользователь должен установить этот бит в 0
  
Биты 7-5Не реализованы, читаются как "0"
  
Бит 4RB0 - зарезервированный бит 0
 Согласно протоколу CAN пользователь должен установить этот бит в 0
  
Биты 3-0DLC<3:0> - биты кода длины сообщения

Регистр 18-29. CiTRBnDm - байт m поля данных буфера n модуля ECAN (n = 0, 1, ..., 31; m = 0, 1, ..., 7)(1)

CiTRBnDm - байт m поля данных буфера n модуля ECAN (n = 0, 1, ..., 31; m = 0, 1, ..., 7)

Биты 7-0TRnDm<7:0> - биты байта "m" поля данных буфера "n"

Примечание:
1) Самый старший байт содержит (m + 1) байт буфера.

Регистр 18-30. CiTRBnSTAT - регистр состояния приёмного буфера n модуля ECAN (n = 0, 1, ..., 31)

CiTRBnSTAT - регистр состояния приёмного буфера n модуля ECAN (n = 0, 1, ..., 31)

Биты 15-13Не реализованы, читаются как "0"
  
Бит 12-8FILHIT<4:0> - Биты кода фильтра (записываются модулем только для приёмных буферов, для передающих буферов не используется). Кодируют номер фильтра, в результате совпадения с которым сообщение записалось в этот буфер.
  
Биты 7-0Не реализованы, читаются как "0"


© PIClist-RUS (piclist.ru), 2009 г.

PIClist RUS (piclist.ru) © 2009
все права сохранены. перепечатка статей и переводов с данного сайта запрещена.