Регистры данных передачи SAI (TXO, RX1, ТХ2)
Регистры данных передачи (ТХО, ТХ1, ТХ2) являются 24-битными регистрами. Данные, которые следует передать, записываются в эти регистры и одновременно передаются в соответствующие регистры сдвига после того, как выдвинут последний бит. Регистры данных приема следует записывать попеременно по правому и левому каналам. После разрешения работы соответствующего передатчика в первую очередь должны появиться данные для левого канала.
Особенности программирования SAI
Работа SAI во время останова.
Работа SAI не может быть продолжена, когда DSP находится в состоянии останова, поскольку DSP не активизирует тактовый сигнал. Входящие последовательные данные будут проигнорированы. Пока DSP находится в состоянии останова, секции SAI будут оставаться в состоянии индивидуального сброса, а биты статуса регистров RCS и TCS будут сброшены. Управляющие биты в этом процессе не задействованы. Рекомендуется запретить работу SAI перед вхождением в состояние останова.
Инициализация сеанса передачи.
Рекомендуемым методом инициализации сеанса передачи является запись в регистры данных передачи действительных данных и затем разрешение выполнения операции передачи. Данные при этом будут передаваться после разрешения работы передатчиков (при работе в режиме ведущего) или после события выбора слова для слова передачи слева на выводе WST (при работе в режиме ведомого). Отметим, что, хотя флаги статуса TRDE и TLDE всегда сбрасываются, пока секция передатчика находится в состоянии индивидуального сброса, регистры данных передачи в этом состоянии могут записываться. Данные останутся в регистрах данных передачи, пока секция передатчика будет находиться в состоянии индивидуального сброса, и будут передаваться в сдвиговые регистры передачи только после разрешения работы соответствующего передатчика и когда произойдет передача слова слева непосредственно для режима ведущего или в соответствии с WST для режима ведомого.
Использование прерывания для обслуживания секций приемника и передатчика. Допускается использовать одну процедуру обработки прерываний для обслуживания двух секций (приемника и передатчика), если эти секции полностью синхронизированы. Для того чтобы обеспечить полную синхронизацию, обе секции должны работать с одним протоколом и одним источником тактового сигнала. Следует разрешить выполнение прерываний приема (RXIE = 1). При возникновении условия прерывания приема та же самая процедура обслуживания прерывания может использоваться для чтения данных из секции приемника и записи в секцию передатчика.
При работе в режиме ведущего рекомендуется выполнение следующей процедуры инициализации:
1)запись слова данных слева в регистры данных передачи;
2)разрешение работы приемников SAI, если RXIE = 1 (в регистре RCS);
3)разрешение работы приемников SAI, если TXIE = 0 (в регистре TCS); разрешение
работы передатчиков обеспечит передачу слова данных слева из регистров данных пе
редачи в сдвиговые регистры;
4)опрос бита статуса TRDE в регистре TCS для того, чтобы определить, когда в реги
стры данных передачи можно загрузить слово данных справа; запись слова данных справа
в регистры данных передачи, если бит TRDE установлен;
5)момент прерывания приема следует использовать для обслуживания и приемников
и передатчиков; когда генерируется прерывание приема по левому каналу, в процедуре
обслуживания прерывания следует осуществить запись слов данных слева в передатчики
и прочитать полученные слова данных слева из приемников (повторить эту процедуру для
приемников/передатчиков правого канала).
Машинное состояние SAI.
Когда SAI работает в режиме ведущего, а битовый тактовый сигнал и входы выбора слова неожиданно меняются, то результат может быть непредсказуемым. В частности, это может произойти, когда SCKR (SCKT) запущен, a WSR/ WST-передачи выполняются раньше или позже, чем ожидается (в соответствии с полным циклом битового тактового сигнала). Реакция SAI на подобное условие определяется через машинное состояние SAI.
После выполнения передачи слова данных (или вплоть до осуществления индивидуального останова) SAI ищет отдельные передачи WSR/WST для того, чтобы отслеживать правую/левую ориентацию следующего ожидаемого слова. Например, после выполнения передачи слова данных справа или вплоть до осуществления индивидуального останова SAI ищет передачи WSR/WST, которые определяют начало передачи слова данных слева. Аналогично этому после выполнения передачи слова данных слева SAI ищет передачи WSR/WST, которые определяют начало передачи слова данных справа. Если определено, что передача верна, то SAI начинает вдвигать данные (прием) или выдвигать данные (передача) по одному сдвигу за один цикл битового тактового сигнала. Передача слова данных завершается, когда число поступающих в SCKR (SCKT) битовых тактовых сигналов во время определения корректности передачи WSR/WST достигает заранее запрограммированного значения длины слова данных. Во время передачи слова данных (т. е. перед завершением) все переходы в WSR/WST игнорируются. После завершения передачи слова данных SAI останавливает сдвиг данных в любом направлении до появления следующей корректной передачи. Таким образом, когда передача WSR/ WST появляется раньше чем ожидалось, она игнорируется, и следующая пара слов данных (правое и левое) теряется. Подобно этому, когда передача WSR/WST появляется позже, чем ожидалось, в период времени между завершением предыдущего слова и появлением опоздавшей передачи WSR/WST, получаемые биты данных игнорируется; данные в этом случае не передаются.
Кроме того, запрещение приема или передачи ненужных слов данных может осуществляться с помощью задержки запуска SCKR(SCKT) и задержки WSR/WST на определенное число циклов битового тактового сигнала.