Контроллеры коммуникационных каналов SCС, страница 6

Изменение состояния сигнала на линии CD регистрируется в бите CD. Но для того, чтобы узнать новое состояние CD -сигнала, пользователь должен прочитать содержимое регистра статуса SCCS.

Изменение состояния на линии приема RXD, т. е. идет прием данных или идет прием IDLE-последовательностей холостого хода, регистрируется в би­те IDL. Но для того, чтобы узнать новое состояние сигналов на линии RXD, пользователь должен прочитать содержимое регистра статуса SCCS.

Событие приема по линии RXD BREAK символа будет зарегистрировано в бите BRK регистра событий SCCE. Событие начала приема по линии RXD BREAK последовательности будет зарегистрировано в бите BRKs регистра событий SCCE. Это событие регистрирует начало приема последовательно­сти, но не регистрирует начало каждого нового BREAK-символа в последо­вательности. Событие обнаружения на линии RXD конца BREAK-последовательности будет зарегистрировано в бите BRKe регистра событий SCCE. Этот бит устанавливается при получении первого "1" бита после BREAK-последовательности.

Если во время передачи данных в SCC-канале возникла ошибка или потери CTS -сигнала, или незаполнения буфера (underrun), то это событие регист­рируется в бите ТХЕ:=1. V.110- и Transparent-контроллеры регистрируют только возникновение ошибки underrun. Для SPI-контроллера ошибка under-run регистрируется только в slave-режиме работы.

UART-контроллер проверяет, является ли каждый принимаемый символ контрольным служебным символом. При проверке формат символа сравнивается с заданными форматами служебных символов. Если некоторый символ распознан как контрольный, и в ячейке таблицы служебных символов для него установлен, бит R=1, то символ не сохраняется в буфере памяти, а только записывается в регистре временного хранения RCCR, и это событие регистрируется в бите CCR.

В BISYNC-контроллере прием по каналу связи одного из заранее определенных служебных символов, который записывается в буфер данных в памяти, регистрируется в регистре событий установкой бита RCH. В Transparent-контроллере в этом бите регистрируется событие приема одного сим­вола данных.

Если корректный символ данных был принят во внутренний регистр SCC-канала, но RISC-контроллер не обнаружил свободного буфера BD для пере­дачи в него данных, то регистрируется состояние занятости и устанавлива­ется бит события BSY:=1. При приеме символа в UART-контроллере сво­бодный буфер должен быть подготовлен не позднее середины приема стоп-бита, иначе принятый символ будет отброшен из-за возникшего состояния занятости. Приемник при этом переходит в режим поиска следующего кадра данных (режим "охоты").

Если при приеме данных текущий буфер заполнился, то устанавливается бит RX=1 в регистре SCCE и текущий буфер закрывается. Регистрация этого события происходит в UART-контроллере и в UART SMC-контроллере не раньше середины приема первого стоп-бита последнего символа в буфере. В Transparent-контроллере событие регистрируется не раньше чем через 10 периодов тактового сигнала после приема последнего бита послед­него байта данных из текущего буфера.

Событие завершения приема полного кадра данных регистрируется установ­кой бита RXF. В контроллерах HDLC и ASYNC HDLC этот бит устанавли­вается не раньше чем через 2 периода тактового сигнала после окончания приема последнего бита закрывающего флага кадра. Событие приема одного из буферов данных (но не полного кадра или не полного законченного сообщения в DDCMP-контроллере) регистрируется установкой бита RXB в регистре событий, обычно это имеет место, если в слове состояния дескриптора текущего буфера приема установлен, бит I=1 (Interrupt), т. е. пользователь настроил контроллер на прерывание после приема этого буфера данных. В контроллерах SPI и I2C это событие регист­рируется, когда последний символ записан в буфер приемника, и этот буфер закрыт.