Оригинал: 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 проверяется на ошибки, а затем на соответствие фильтрам, чтобы понять, следует ли его принимать и сохранять в один из приёмных буферов.
Примечание: 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).
Рис. 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
| Биты 15-14 | Не реализованы, читаются как "0" |
| |
| Бит 13 | CSIDL - бит останова в режиме Idle |
| 1 = останавливать работу модуля, если устройство входит в режим Idle 0 = в режиме Idle модуль продолжает работу |
| |
| Бит 12 | ABAT - бит отмены всех ожидающих передачи сообщений |
| Сигнализирует всем передающим буферам отменить передачу. Модуль сбросит этот бит, когда все передачи будут отменены. |
| |
| Бит 11 | CANCKS - бит выбора главного тактового генератора CAN |
| 1 = тактовая частота CAN FCAN - это FCY 0 = тактовая частота CAN FCAN - это FOSC |
| |
| Биты 10-8 | REQOP<2:0> - биты запроса режима работы |
| 000 = Установить нормальный режим работы 001 = Установить выключенный режим 010 = Установить режим петли 011 = Установить режим прослушивания 100 = Установить режим настройки 101 = Зарезервировано - не используйте 110 = Зарезервировано - не используйте 111 = Установить режим прослушивания всех сообщений |
| |
| Биты 7-5 | OPMODE<2:0> - биты текущего режима работы |
| 000 = Модуль в нормальном режиме работы 001 = Модуль выключен 010 = Модуль в режиме петли 011 = Модуль в режиме прослушивания 100 = Модуль в режиме настройки 101 = Зарезервировано 110 = Зарезервировано 111 = Модуль в режиме прослушивания всех сообщений |
| |
| Бит 4 | Не реализован, читается как "0" |
| |
| Бит 3 | CANCAP - бит включения события захвата таймера по приёму сообщения CAN |
| 1 = Включить вход захвата по приёму сообщения CAN 0 = Отключить захват CAN |
| |
| Бит 2-1 | Не реализован, читается как "0" |
| |
| Бит 0 | WIN - бит выбора окна отображения SFR |
| 1 = Использовать окно фильтров 0 = Использовать окно буферов |
Регистр 18-2. CiCTRL2 - второй управляющий регистр модуля ECAN
| Биты 15-5 | Не реализованы, читаются как "0" |
| | |
| Биты 4-0 | DNCNT<4:0> - биты номера битового фильтра DeviceNet |
| | 10010 - 11111 = неправильный выбор 10001 = Сравнивать до байта данных 3, бит 6 с EID<17> ..... 00001 = Сравнивать до байта данных 1, бит 7 с EID<0> 00000 = Не сравнивать байты данных |
Регистр 18-3. CiVEC - регистр кода прерывания модуля ECAN
| Биты 15-13 | Не реализованы, читаются как "0" |
| | |
| Биты 12-8 | FILHIT<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
| Бит 15-13 | DMABS<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-0 | FSA<4:0> - биты начала области FIFO |
| | 11111 = буфер RB31 11110 = буфер RB30 ..... 00001 = буфер TRB1 00000 = буфер TRB0 |
Регистр 18-5. CiFIFO - регистр состояния FIFO-буфера модуля ECAN
| Биты 15-14 | Не реализованы, читаются как "0" |
| | |
| Биты 13-8 | FBP<5:0> - биты указателя записи для FIFO-буфера |
| | 011111 = буфер RB31 011110 = буфер RB30 ...... 000001 = буфер TRB1 000000 = буфер TRB0 |
| | |
| Биты 7-6 | Не реализованы, читаются как "0" |
| | |
| Биты 5-0 | FNRB<5:0> - биты указателя чтения для FIFO-буфера |
| | 011111 = буфер RB31 011110 = буфер RB30 ...... 000001 = буфер TRB1 000000 = буфер TRB0 |
Регистр 18-6. CiINTF - регистр флагов прерываний модуля ECAN
| Биты 15-14 | Не реализованы, читаются как "0" |
| | |
| Бит 13 | TXBO - бит отключения передатчика от шины из-за переполнения счётчика ошибок |
| | |
| Бит 12 | TXBP - бит состояния пассивной ошибки передатчика |
| | |
| Бит 11 | RXBP - бит состояния пассивной ошибки приёмника |
| | |
| Бит 10 | TXWAR - бит состояния предупреждения передатчика |
| | |
| Бит 9 | RXWAR - бит состояния предупреждения приёмника |
| | |
| Бит 8 | EWARN - бит состояния предупреждения передатчика или приёмника |
| | |
| Бит 7 | IVRIF - бит флага прерывания по приёму неправильного сообщения |
| | |
| Бит 6 | WAKIF - бит флага прерывания по пробуждению при обнаружении активности на шине |
| | |
| Бит 5 | ERRIF - бит флага прерывания по ошибке (множество источников, указаны в регистре CiINTF<13:8>) |
| | |
| Бит 4 | Не реализован, читается как "0" |
| | |
| Бит 3 | FIFOIF - бит флага прерывания по почти полному FIFO |
| | |
| Бит 2 | RBOVIF - флаг прерывания по переполнению приёмного буфера |
| | |
| Бит 1 | RBIF - флаг прерывания от приёмного (RX) буфера |
| | |
| Бит 0 | TBIF - флаг прерывания от передающего (TX) буфера |
Регистр 18-7. CiINTE - регистр разрешения прерываний модуля ECAN
| Биты 15-8 | Не реализованы, читаются как "0" |
| | |
| Бит 7 | IVRIE - бит разрешения прерывания по приёму недействительного сообщения |
| | |
| Бит 6 | WAKIE - бит разрешения прерывания по пробуждению при обнаружении активности на шине |
| | |
| Бит 5 | ERRIE - бит разрешения прерывания по ошибке |
| | |
| Бит 4 | Не реализован, читается как "0" |
| | |
| Бит 3 | FIFOIE - бит разрешения прерывания по почти полному FIFO |
| | |
| Бит 2 | RBOVIE - бит разрешения прерывания по переполнению приёмного буфера RX |
| | |
| Бит 1 | RBIE - бит разрешения прерывания от приёмного буфера RX |
| | |
| Бит 0 | TBIE - бит разрешения прерывания от передающего буфера TX |
Регистр 18-8. CiEC - регистр счётчика ошибок приёма/передачи модуля ECAN
| Биты 15-8 | TERRCNT<7:0> - биты счётчика ошибок передачи |
| | |
| Биты 7-0 | RERRCNT<7:0> - биты счётчика ошибок приёма |
Регистр 18-9. CiCFG1 - первый регистр настройки скорости передачи модуля ECAN
| Биты 15-8 | Не реализованы, читаются как "0" |
| | |
| Биты 7-6 | SJW<1:0> - биты ширины перехода синхронизации |
| | 11 = 4TQ 10 = 3TQ 01 = 2TQ 00 = 1TQ |
| | |
| Биты 5-0 | BRP<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
| Бит 15 | Не реализован, читается как "0" |
| | |
| Бит 14 | WAKFIL - бит включения линейного фильтра шины CAN для пробуждения |
| | 1 = Использовать линейный фильтр шины CAN для пробуждения 0 = Не использовать линейный фильтр шины CAN для пробуждения |
| | |
| Биты 13-11 | Не реализованы, читаются как "0" |
| | |
| Биты 10-8 | SEG2PH<2:0> - биты фазового сегмента 2 |
| | 111 = 8TQ ... 000 = 1TQ |
| | |
| Бит 7 | SEG2PHTS - биты выбора способа установки времени фазового сегмента 2 |
| | 1 = свободное программирование 0 = используется наибольшее значение из SEG1PH и времени обработки информации (IPT) |
| | |
| Бит 6 | SAM - бит способа выборки уровня на шине CAN |
| | 1 = Уровень шины CAN измеряется трижды в точке выборки 0 = Уровень шины CAN измеряется один раз в точке выборки |
| | |
| Биты 5-3 | SEG1PH<2:0> - биты фазового сегмента 1 |
| | 111 = 8TQ ... 000 = 1TQ |
| | |
| Биты 2-0 | PRSEG<2:0> - биты сегмента распространения |
| | 111 = 8TQ ... 000 = 1TQ |
Регистр 18-11. CiFEN1 - регистр включения приёмных фильтров модуля ECAN
| Биты 15-0 | FLTENn - бит включения фильтра n для принимаемых сообщений |
| | 1 = Включить фильтр n 0 = Выключить фильтр n |
Регистр 18-12. CiBUFPNT1 - первый регистр указателя буфера фильтров 0-3 модуля ECAN
| Биты 15-12 | F3BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 3 |
| | |
| Биты 11-8 | F2BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 2 |
| | |
| Биты 7-4 | F1BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 1 |
| | |
| Биты 3-0 | F0BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 0 |
| | |
| | Для всех групп битов: 1111 = сообщение, прошедшее фильтр, попало в буфер RX FIFO 1110 = сообщение, прошедшее фильтр, попало в буфер RX 14 .... 0001 = сообщение, прошедшее фильтр, попало в буфер RX 1 0000 = сообщение, прошедшее фильтр, попало в буфер RX 0 |
Регистр 18-13. CiBUFPNT2 - второй регистр указателя буфера фильтров 4-7 модуля ECAN
| Биты 15-12 | F7BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 7 |
| | |
| Биты 11-8 | F6BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 6 |
| | |
| Биты 7-4 | F5BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 5 |
| | |
| Биты 3-0 | F4BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 4 |
| | |
| | Для всех групп битов: 1111 = сообщение, прошедшее фильтр, попало в буфер RX FIFO 1110 = сообщение, прошедшее фильтр, попало в буфер RX 14 .... 0001 = сообщение, прошедшее фильтр, попало в буфер RX 1 0000 = сообщение, прошедшее фильтр, попало в буфер RX 0 |
Регистр 18-14. CiBUFPNT3 - третий регистр указателя буфера фильтров 8-11 модуля ECAN
| Биты 15-12 | F11BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 11 |
| | |
| Биты 11-8 | F10BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 10 |
| | |
| Биты 7-4 | F9BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 9 |
| | |
| Биты 3-0 | F8BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 8 |
| | |
| | Для всех групп битов: 1111 = сообщение, прошедшее фильтр, попало в буфер RX FIFO 1110 = сообщение, прошедшее фильтр, попало в буфер RX 14 .... 0001 = сообщение, прошедшее фильтр, попало в буфер RX 1 0000 = сообщение, прошедшее фильтр, попало в буфер RX 0 |
Регистр 18-15. CiBUFPNT4 - четвёртый регистр указателя буфера фильтров 12-15 модуля ECAN
| Биты 15-12 | F15BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 15 |
| | |
| Биты 11-8 | F14BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 14 |
| | |
| Биты 7-4 | F13BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 13 |
| | |
| Биты 3-0 | F12BP<3:0> - биты, указывающие, в какой буфер попало сообщение, прошедшее фильтр 12 |
| | |
| | Для всех групп битов: 1111 = сообщение, прошедшее фильтр, попало в буфер RX FIFO 1110 = сообщение, прошедшее фильтр, попало в буфер RX 14 .... 0001 = сообщение, прошедшее фильтр, попало в буфер RX 1 0000 = сообщение, прошедшее фильтр, попало в буфер RX 0 |
Регистр 18-16. CiRXFnSID - стандартный идентификатор приёмного фильтра n модуля CAN (n = 0, 1, ..., 15)
| Биты 15-5 | SID<10:0> - биты стандартного идентификатора |
| | 1 = Бит SIDx идентификатора сообщения должен быть "1", чтобы совпасть с фильтром 0 = Бит SIDx идентификатора сообщения должен быть "0", чтобы совпасть с фильтром |
| | |
| Бит 4 | Не реализован, читается как "0" |
| | |
| Бит 3 | EXIDE - бит включения расширенного идентификатора |
| | Если MIDE = 1, тогда: 1 = Принимать только сообщения с расширенным идентификатором 0 = Принимать только сообщения со стандартным идентификатором Если MIDE = 0, тогда бит EXIDE игнорируется. |
| | |
| Бит 2 | Не реализуется, читается как "0" |
| | |
| Бит 1-0 | EID<17:16> - биты расширенного идентификатора |
| | 1 = Бит EIDx идентификатора сообщения должен быть "1", чтобы совпасть с фильтром 0 = Бит EIDx идентификатора сообщения должен быть "0", чтобы совпасть с фильтром |
Регистр 18-17. CiRXFnEID - расширенный идентификатор приёмного фильтра n модуля CAN (n = 0, 1, ..., 15)
| Биты 15-0 | EID<15:0> - биты расширенного идентификатора |
| | 1 = Бит EIDx адреса сообщения должен быть "1", чтобы совпасть с фильтром 0 = Бит EIDx адреса сообщения должен быть "0", чтобы совпасть с фильтром |
Регистр 18-18. CiFMSKSEL1 - регистр выбора маски для фильтров 7-0 модуля ECAN
| Биты 15-14 | F7MSK<1:0> - биты выбора маски для фильтра 7 |
| | |
| Биты 13-12 | F6MSK<1:0> - биты выбора маски для фильтра 6 |
| | |
| Биты 11-10 | F5MSK<1:0> - биты выбора маски для фильтра 5 |
| | |
| Биты 9-8 | F4MSK<1:0> - биты выбора маски для фильтра 4 |
| | |
| Биты 7-6 | F3MSK<1:0> - биты выбора маски для фильтра 3 |
| | |
| Биты 5-4 | F2MSK<1:0> - биты выбора маски для фильтра 2 |
| | |
| Биты 3-2 | F1MSK<1:0> - биты выбора маски для фильтра 1 |
| | |
| Биты 1-0 | F0MSK<1:0> - биты выбора маски для фильтра 0 |
| | |
| | Для всех групп битов: 11 = Нет маски 10 = Приёмная маска 2 01 = Приёмная маска 1 00 = Приёмная маска 0 |
Регистр 18-18-2. CiFMSKSEL1 - регистр выбора маски для фильтров 7-0 модуля ECAN1
| Биты 15-14 | F15MSK<1:0> - биты выбора маски для фильтра 15 |
| | |
| Биты 13-12 | F14MSK<1:0> - биты выбора маски для фильтра 14 |
| | |
| Биты 11-10 | F13MSK<1:0> - биты выбора маски для фильтра 13 |
| | |
| Биты 9-8 | F12MSK<1:0> - биты выбора маски для фильтра 12 |
| | |
| Биты 7-6 | F11MSK<1:0> - биты выбора маски для фильтра 11 |
| | |
| Биты 5-4 | F10MSK<1:0> - биты выбора маски для фильтра 10 |
| | |
| Биты 3-2 | F9MSK<1:0> - биты выбора маски для фильтра 9 |
| | |
| Биты 1-0 | F8MSK<1:0> - биты выбора маски для фильтра 8 |
| | |
| | Для всех групп битов: 11 = Нет маски 10 = Приёмная маска 2 01 = Приёмная маска 1 00 = Приёмная маска 0 |
1 В исходном документе про этот регистр забыли. Обозначим его "Регистр 18-18-2", чтобы сохранить нумерацию. - прим. пер.
Регистр 18-19. CiRXMnSID - стандартный идентификатор маски n приёмных фильтров модуля ECAN
| Биты 15-5 | SID<10:0> - биты стандартного идентификатора |
| | 1 = Включать бит фильтра SIDx в сравнение 0 = Бит фильтра SIDx не участвует в сравнении |
| | |
| Бит 4 | Не реализован, читается как "0" |
| | |
| Бит 3 | MIDE - бит режима приёма идентификатора |
| | 1 = Принимать только те типы сообщений, которые соответствуют биту EXIDE фильтра (т. е. либо только стандартные, либо только расширенные, в зависимости от значения бита EXIDE) 0 = Принимать и стандартные, и расширенные сообщения, если они соответствуют фильтру (т. е. если SID фильтра = SID сообщения, либо SID/EID фильтра = SID/EID сообщения) |
| | |
| Бит 2 | Не реализован, читается как "0" |
| | |
| Биты 1-0 | EID<17:16> - биты расширенного идентификатора |
| | 1 = Включать бит фильтра EIDx в сравнение 0 = Бит фильтра EIDx не участвует в сравнении |
Регистр 18-20. CiRXMnEID - расширенный идентификатор маски n приёмных фильтров модуля ECAN
| Биты 15-0 | EID<15:0> - биты расширенного идентификатора |
| | 1 = Включать бит фильтра EIDx в сравнение 0 = Бит фильтра EIDx не участвует в сравнении |
Регистр 18-21. CiRXFUL1 - первый регистр состояния заполнения приёмных буферов модуля ECAN
| Биты 15-0 | RXFUL<15:0> - биты заполнения приёмных буферов n |
| | 1 = Буфер полон (устанавливается модулем) 0 = Буфер пуст (сбрасывается программно) |
Регистр 18-22. CiRXFUL2 - второй регистр состояния заполнения приёмных буферов модуля ECAN
| Биты 15-0 | RXFUL<31:16> - биты заполнения приёмных буферов n |
| | 1 = Буфер полон (устанавливается модулем) 0 = Буфер пуст (сбрасывается программно) |
Регистр 18-23. CiRXOVF1 - первый регистр переполнения приёмных буферов модуля ECAN
| Биты 15-0 | RXOVF<15:0> - биты переполнения приёмных буферов n |
| | 1 = Попытка модуля выполнить запись в полный буфер (устанавливается модулем) 0 = Переполнение очищено (сбрасывается программно) |
Регистр 18-24. CiRXOVF2 - второй регистр переполнения приёмных буферов модуля ECAN
| Биты 15-0 | RXOVF<31:16> - биты переполнения приёмных буферов n |
| | 1 = Попытка модуля выполнить запись в полный буфер (устанавливается модулем) 0 = Переполнение очищено (сбрасывается программно) |
Регистр 18-25. CiTRmnCON - управляющий регистр буферов TX/RX m модуля ECAN (m = 0, 2, 4, 6; n = 1, 3, 5, 7)
| Биты 15-8 | Управляют буферами n, см. определение для битов 7-0 |
| | |
| Бит 7 | TXENm - бит выбора буфера TX/RX |
| | 1 = Буфер TRBm используется как передающий буфер 0 = Буфер TRBm используется как приёмный буфер |
| | |
| Бит 6 | TXABTm - бит отмены сообщения(1) |
| | 1 = Сообщение было отменено 0 = Сообщение успешно завершило передачу |
| | |
| Бит 5 | TXLARBm - бит потери арбитража сообщением(1) |
| | 1 = Сообщение при отправке потеряло арбитраж 0 = Сообщение не теряло арбитраж во время отправки |
| | |
| Бит 4 | TXERRm - бит обнаружения ошибки во время передачи сообщения(1) |
| | 1 = Во время отправки сообщения на шине возникла ошибка 0 = Во время отправки сообщения ошибок на шине не возникало |
| | |
| Бит 3 | TXREQm - бит запроса отправки сообщения |
| | Установка этого бита в "1" запросит отправку сообщения. Бит будет автоматически сброшен после успешной отправки сообщения. Сброс этого бита в "0", когда он установлен, запросит отмену сообщения. |
| | |
| Бит 2 | RTRENm - бит включения автоматической передачи по удалённому запросу |
| | 1 = При получении удалённого запроса передачи бит TXREQ автоматически установится 0 = При получении удалённого запроса передачи бит TXREQ останется без изменений |
| | |
| Биты 1-0 | TXmPRI<1:0> - биты приоритета передачи сообщения |
| | 11 = наивысший приоритет сообщения 10 = высокий приоритет сообщения 01 = низкий приоритет сообщения 00 = низший приоритет сообщения |
Примечание:
1) Этот бит сбрасывается, когда устанавливается TXREQ.
Примечание: буферы (SID, EID, DLC, поле данных) и регистры состояния приёма хранятся в DMA RAM. Они не являются регистрами специального назначения.
Регистр 18-26. CiTRBnSID - стандартный идентификатор буфера n модуля ECAN (n = 0, 1, ..., 31)
| Бит 15-13 | Не реализованы, читаются как "0" |
| | |
| Бит 12-2 | SID<10:0> - биты стандартного идентификатора |
| | |
| Бит 1 | SRR - бит-заменитель удалённого запроса |
| | 1 = Это сообщение запросит удалённую передачу 0 = Обычное сообщение |
| | |
| Бит 0 | IDE - бит использования расширенного идентификатора |
| | 1 = Сообщение будет передано с расширенным идентификатором 0 = Сообщение будет передано со стандартным идентификатором |
Регистр 18-27. CiTRBnEID - расширенный идентификатор буфера n модуля ECAN (n = 0, 1, ..., 31)
| Бит 15-12 | Не реализованы, читаются как "0" |
| | |
| Бит 11-0 | EID<17:6> - биты расширенного идентификатора |
Регистр 18-28. CiTRBnDLC - регистр длины данных буфера n модуля ECAN (n = 0, 1, ..., 31)
| Биты 15-10 | EID<5:0> - биты расширенного идентификатора |
| | |
| Бит 9 | RTR - бит удалённого запроса передачи |
| | 1 = Сообщение запросит удалённую передачу 0 = Обычное сообщение |
| | |
| Бит 8 | RB1 - зарезервированный бит 1 |
| | Согласно протоколу CAN пользователь должен установить этот бит в 0 |
| | |
| Биты 7-5 | Не реализованы, читаются как "0" |
| | |
| Бит 4 | RB0 - зарезервированный бит 0 |
| | Согласно протоколу CAN пользователь должен установить этот бит в 0 |
| | |
| Биты 3-0 | DLC<3:0> - биты кода длины сообщения |
Регистр 18-29. CiTRBnDm - байт m поля данных буфера n модуля ECAN (n = 0, 1, ..., 31; m = 0, 1, ..., 7)(1)
| Биты 7-0 | TRnDm<7:0> - биты байта "m" поля данных буфера "n" |
Примечание:
1) Самый старший байт содержит (m + 1) байт буфера.
Регистр 18-30. CiTRBnSTAT - регистр состояния приёмного буфера n модуля ECAN (n = 0, 1, ..., 31)
| Биты 15-13 | Не реализованы, читаются как "0" |
| | |
| Бит 12-8 | FILHIT<4:0> - Биты кода фильтра (записываются модулем только для приёмных буферов, для передающих буферов не используется). Кодируют номер фильтра, в результате совпадения с которым сообщение записалось в этот буфер. |
| | |
| Биты 7-0 | Не реализованы, читаются как "0" |
© PIClist-RUS (piclist.ru), 2009 г.