Формат второго регистра состояния контроллера SCI представлен на рис. 4.67. Регистр SCxSR2 содержит всего один бит RAF. Этот бит автоматически устанавливается в 1 в то время, когда в сдвиговом регистре приемника продолжается формирование очередного принимаемого байта данных.
Рис. 4.67.
Формат регистра состояния SCxSR2Формат двух 8-разрядных регистров данных контроллера SCI представлен на рис. 4.68. Регистр SCxDRL используется, если контроллер SCI настроен на обмен данными в 8-разрядном формате (10-битовый формат кадра). Тогда по адресу регистра SCxDRL записываются данные для передачи, и из этого же регистра считываются принятые данные. Если контроллер SCI настроен на обмен данными в 9-разрядном формате (11-битовый формат кадра), то старший бит для передачи записывается под управлением программы в разряд T8 регистра SCxDRH, а при приеме из разряда R8 считывается старший 9-ый бит принятого слова. Младшие восемь разрядов при передаче и при приеме, как и в случае 8-разрядного слова данных, находятся в регистре SCxDRL.
Рис. 4.68.
Формат регистра данных SCxDRH/SCxDRL1. Каково различие между битами TDRE и RDRF?
Ответ:
Оба бита являются флагами, которые отражают состояние контроллера SCI. Флаг TDRE устанавливается в 1, когда регистр данных передатчика автоматически переписывается в сдвиговый регистр. В этом случае говорят, что регистр данных передатчика пуст. Флаг RDRF устанавливается в 1, когда процесс приема данных в сдвиговый регистр приемника закончен, и очередное слово данных готовы к считыванию.2. Каково назначение флага PF? Почему он чрезвычайно важен при обмене информацией в последовательном коде?
Ответ:
Флаг нарушения паритета кадра PF устанавливается, когда произошла ошибка в приеме одного или нескольких бит одного кадра. Прикладная программа контролирует бит PF, как индикатор неверного приема, и должна повторить обмен.3. Опишите события, которые могут генерировать прерывания от модуля SCI.
Ответ:
Четыре источника прерываний ассоциируются с модулем SCI:• Прерывание по флагу TDRE, когда регистр данных приемника пуст. Это прерывание разрешается битом TIE в регистре управления SCxCR2;
• Прерывание по флагу TC, когда передача слова закончена. Это прерывание разрешается битом TCIE в регистре управления SCxCR2;
• Прерывание по флагу RDRF, когда прием очередного слова завершен. Это прерывание разрешается битом RIE в регистре управления SCxCR2;
• Прерывание по флагу IDLE, когда приемник находится в неактивном состоянии. Это прерывание разрешается битом ILIE в регистре управления SCxCR2.
4.18.4. Алгоритмы программного обслуживания контроллера SCI
Три относительно независимых последовательности действий должна выполнить прикладная программы в процессе использования контроллера асинхронного обмена SCI:
• Инициализацию приемника и передатчика контроллера;
• Управление процессом передачи информации;
• Управление процессом приема информации.
Обобщенные блок-схемы алгоритмов управления программно-доступными ресурсами контроллера SCI для каждого из перечисленных действий приведены на рис. 4.69.
Рис. 4.69.
Блок-схемы алгоритмов программного обслуживания контроллера асинхронного обмена SCIИнициализация контроллера SCI. Инициализацию контроллера SCI рекомендуется проводить в следующем порядке:
• Установить скорость обмена;
• Выбрать формат кадра обмена: 8 или 9 бит данных;
• Назначить параметры приема и передачи в регистрах управления SCxCR1 и SCxCR2;
• Очистить флаг TDRE. Для этого сначала считать регистр состояния SCxSR1, а затем выполнить операцию записи в регистр данных SCxRD.
Следует заметить, что аппаратные средства модуля SCI предполагают, что и прием, и передача информации могут происходить только с одинаковой скоростью, с одинаковым форматом кадра и одинаковой логикой паритета.
Управление процессом передачи информации.
Для того чтобы передать один байт информации с использованием передатчика контроллера SCI, следует сначала проверить состояние флага TDRE. Если этот флаг установлен в 1, то регистр данных передатчика пуст, и в него может быть записан новый байт для передачи. Далее данные загружаются в один регистр данных SCxDRL, если обмен происходит в 8-разрядном формате, или в два регистра данных SCxDRH:SCxDRL, если обмен производится в 9-разрядном формате. Коды из регистра данных загружаются в сдвиговый регистр передатчика автоматически, после чего начинается собственно процесс передачи. О завершении передачи информирует бит TC, который установится в 1, когда все разряды регистра сдвига будут последовательно выданы на выход TxD. Флаги TDRE и TC могут генерировать запросы на прерывания, если соответствующие биты разрешения прерывания установлены.