Предыдущая Следующая

1. Содержимое регистра начального адреса стандартного индивидуального фрейма (SFF_sa) должно быть больше или равным удвоенному количеству идентификаторов, для которых производится автоматический прием и запись в память сообщений. Кроме того, содержимое регистра SFF_sa должно быть кратно четырем.

2. Содержимое регистра конца таблиц приемного фильтра (EndOfTable) должно быть меньше или равно значению 0x800 минус 6-кратное значение регистра SFF_sa, чтобы обеспечивать возможность хранения в памяти двенадцати байтов данных сообщения для каждого идентификатора, для которого производится автоматический прием и хранение.

Когда эти условия выполняются и программно устанавливается бит eFCAN в регистре AFMR, то происходит следующее.

Область между началом оперативной памяти приемного фильтра и адресом, содержащимся в SFF_sa, используется для хранения особой таблицы индивидуальных стандартных идентификаторов и идентификаторов CAN-контролле-ров/шин. Входы CAN в этой области располагаются в порядке возрастания в формате, представленном на Рис. 14.1а. Входы CAN в этой таблице могут быть помечены как «запрещенные», как и в других стандартных таблицах. Если в этой таблице содержится нечетное число «FullCA^-идентификаторов, то, как минимум, один вход CAN должен быть помечен как «запрещенный».

Для первого идентификатора, в отношении которого действует автоматическое сохранение сообщения, назначается значение индекса ID, равное (SFF_sa)/2, где (SFF_sa) — содержимое регистра SFF_sa. Таким образом, значения индексов ID, сохраняемых в регистре состояния принятого фрейма CANRFS, при установленном бите eFCAN регистра AFMR увеличиваются на (SFF_sa)/2 по сравнению со значениями, которые бы они имели при сброшенном бите eFCAN.

Когда принимается стандартный идентификатор, приемный фильтр осуществляет поиск и сравнение в указанной выше особой таблице до осуществления поиска и сравнения в стандартных индивидуальных и групповых таблицах.

Если, для принятого сообщения, в этой особой таблице имеет место совпадение идентификаторов, то приемный фильтр читает принятое сообщение из CAN-контроллера и сохраняет его в области своей оперативной памяти, начинающейся с адреса [(EndOfTable) + IDindex х12], где (EndOfTable) — содержимое регистра EndOfTable, a IDindex — индекс идентификатора принятого сообщения. Формат таких автоматически сохраняемых сообщений показан на Рис. 14.3.

Адрес

31

 

I I I

|24

23I I I

I I Мб

151 I I I

Ml leM 1.....о

00

F F

R Т R

0000

SEM

0000

DLC

00000

ID

+4

RxData4

RxData3

Rx Data 2

Rx Data 1

+8

RxData8

RxData.7

RxData6

RxData5

Puc. 14.3. Формат сообщения, автоматически сохраняемого при приеме в режиме «fullCAN»

286 ■ Глава 14. Контроллеры CAN и приемные фильтры

Поля сообщения FF, RTR и DLC находятся в регистре CANRFS, битовая структура которого приведена в Табл. 14.13. В поле SEM аппаратно записывается значение 01b, когда начинается обновление (аппаратный прием) сообщения, и значение 1 lb, когда обновление заканчивается. Чтобы получить доступ к сообщению, пользовательская программа должна записать в поле SEM значение 00Ь. При программном обращении ко всем трем словам, составляющим сообщение, необходимо убедиться, что все три прочитанных программой слова относятся к одному и тому же сообщению. Представленная на Рис. 14.4 блок-схема алгоритма программного чтения автоматически сохраненного сообщения показывает, каким образом следует использовать поле SEM для обеспечения такой гарантии.


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_182.html on line 233

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_182.html on line 233

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_182.html on line 233