Если буфер сообщений выбран как передающий с установленным битом CiTRmnCON<RTRENn>, и приемный фильтр указывающий на этот буфер определяет сообщение, буфер сообщения будет обрабатывать с RTR, а не сохранять сообщение. Это только в случае когда указатель буфера приемного фильтра (FnBP) указывает на буфер сообщений сконфигурированный для передачи (TXENn=1).
7.2.4 Прием сообщений в буферы сообщений 8-14
Буферы сообщений 8-14 это приемные буферы. Указатель буфера фильтра (FnBP) определяет какой буфер сообщений используется.
7.2.3 Прием сообщений в буферы сообщений 15-31
Буферы сообщений 15-31 это приемные буферы и они только используются только как FIFO буферы, потому что биты указателя буфера приемного фильтра (FnBP) могут указывать только на 16 адресов. Когда FnBP<3:0>=1111, результат какого ни будь фильтра будет записан в следующий доступный буфер расположенный в FIFO.
7.2.5 Биты статуса приемного буфера
Приемный буфер содержит два сатус-бита, флаг заполнения буфера сообщения (RXFULn) и флаг переполнения буфера сообщений (RXOVFn). Эти статус-биты сгруппированы в регистре состояния заполнения буферов и состояния переполнения буферов.
CiRXFUL1<RXFULn>: приёмный буфер сообщения 0-15 полон
CiRXFUL2<RXFULn>: Приёмный буфер сообщения 16-31 полон
CiRXOVF1<RXOVFn>: Приёмный буфер сообщения 0-15 переполнен
CiRXOVF1<RXOVFn>: Приёмный буфер сообщения 16-31 переполнен
Когда принятое сообщение сохранено в буфер сообщений, соответствующий наполнений буфера (RXFULn) устанавливается, и генерируется прерывание приемного буфера (CiINTF<RBIF>). Если входящее сообщение принято фильтром, и буфер сообщений назначенный фильтру полон (т.е. RXFULn бит соответствующего буфера установлен в «1»), то устанавливается соответствующий бит переполнения RXOVFn (где «n» номер буфера сообщений связанного с этим буфером) и сгенерируется прерывание «приемный буфер переполнен» (CiINT<RBOVIF>). Сообщение будет утеряно.
Примечание: Если несколько фильтров соответствуют идентификатору принятого сообщения, и все буферы сообщений назначенные всем сравнивающим фильтрам полны, то установится бит RXOVFn соответствующего сравнивающего фильтра с наименьшим номером.
7.3 Функционирование буфера FIFO.
Модуль ECAN поддерживает до 32 приемных буферов. Пользователь может использовать биты Buffer Size DMA (DMABS<2:0>) в регистре управления ECAN FIFO (CiFCTRL) назначая 4, 6, 8, 12, 16, или32 буфера сообщений. Бит начала области FIFO (FSA<4:0>) CiFCTRL<4:0> используются, чтобы определить начало FIFO в приделах буферной области. Конец FIFO основывается на количестве буферов сообщений определенного битами DMABS<2:0>.
Пользователь не должен располагать в области FIFO передающие буферы. Если всё же пользователь назначил в области FIFO передающий буфер, то модуль пытается указать на передающий буфер, но когда сообщение получено в этот буфер, то произойдёт переполнение буфера и сообщение будет потеряно.
Рисунок 14 показывает как один из приемных фильтров настроен для того, чтобы принимать сообщения в FIFO (FnBP=1111). Начало FIFO установлено на буфер сообщений 5 (CiFCTRL<FSA>=00101), а конец FIFO установлен на буфер сообщений 11 (CiFCTRL<DMABS>=011) распределяя 12 буферов сообщения
Рисунок 14. Приём сообщений в FIFO
1 – Указатель буфера приёмного фильтра «FnBP» должен быть «111», чтобы сохранить полученное сообщение в FIFO
2 – Стартовый адрес FIFO оределён в CIFCTRL <FSA>. В вышеупомянутом примере FSA <4:0> = “00101”
3 – Конечный адрес FIFO задаётся CiFCTRL <DMABS>. В вышеупомянутом примере DMABS<2:0>=”011”
7.3.1 Приём сообщения в буфер FIFO
Приемные фильтры помещают принятые сообщения в буфер FIFO когда FnBP<3:0>=1111. Это достигается при помощи простого указателя буфера, начинающегося с начала FIFO как определено выше, и последовательно инкрементируясь через набор буферов в пределах области FIFO. Когда достигнут конец буфер, то указатель снова переходит на стартовый буфер области FIFO.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.